setMainTable('manufacturers'); $this->addvalidOrderingFieldName(array('m.virtuemart_manufacturer_id','mf_name','mf_desc','mf_category_name','mf_url')); $this->removevalidOrderingFieldName('virtuemart_manufacturer_id'); $this->_selectedOrdering = 'mf_name'; $this->_selectedOrderingDir = 'ASC'; } /** * Load a single manufacturer */ public function getManufacturer($id = 0) { if(!empty($id)) $this->_id = (int)$id; if(empty($this->_cache[$this->_id])){ $this->_cache[$this->_id] = $this->getTable('manufacturers'); $this->_cache[$this->_id]->load($this->_id); $xrefTable = $this->getTable('manufacturer_medias'); $this->_cache[$this->_id]->virtuemart_media_id = $xrefTable->load($this->_id); } return $this->_cache[$this->_id]; } /** * Bind the post data to the manufacturer table and save it * * @author Max Milbers * @return boolean True is the save was successful, false otherwise. */ public function store(&$data) { if(!vmAccess::manager('manufacturer.edit')){ vmWarn('Insufficient permission to store manufacturer'); return false; } else if( empty($data['virtuemart_manufacturer_id']) and !vmAccess::manager('manufacturer.create')){ vmWarn('Insufficient permission to create manufacturer'); return false; } // Setup some place holders $table = $this->getTable('manufacturers'); $table->bindChecknStore($data); // Process the images $mediaModel = VmModel::getModel('Media'); $mediaModel->storeMedia($data,'manufacturer'); $cache = vFactory::getCache('com_virtuemart_cat_manus','callback'); $cache->clean(); return $table->virtuemart_manufacturer_id; } function remove($ids){ if(!vmAccess::manager('manufacturer.delete')){ vmWarn('Insufficient permissions to delete manufacturer'); return false; } return parent::remove($ids); } /** * Returns a dropdown menu with manufacturers * @author Max Milbers * @return object List of manufacturer to build filter select box */ function getManufacturerDropdown() { $db = vFactory::getDbo(); $query = "SELECT `virtuemart_manufacturer_id` AS `value`, `mf_name` AS text, '' AS disable FROM `#__virtuemart_manufacturers_".VmConfig::$vmlang."` ORDER BY `mf_name` ASC"; $db->setQuery($query); $options = $db->loadObjectList(); array_unshift($options, vHtml::_('select.option', '0', '- '. vmText::_('COM_VIRTUEMART_SELECT_MANUFACTURER') .' -' )); return $options; } /** * Retireve a list of countries from the database. * * @param string $onlyPuiblished True to only retreive the publish countries, false otherwise * @param string $noLimit True if no record count limit is used, false otherwise * @return object List of manufacturer objects */ public function getManufacturers($onlyPublished=false, $noLimit=false, $getMedia=false) { $this->_noLimit = $noLimit; $app = vFactory::getApplication(); $option = 'com_virtuemart'; $view = vRequest::getCmd('view',''); $virtuemart_manufacturercategories_id = $app->getUserStateFromRequest( $option.'.'.$view.'.virtuemart_manufacturercategories_id', 'virtuemart_manufacturercategories_id', 0, 'int' ); $search = $app->getUserStateFromRequest( $option.'.'.$view.'.search', 'search', '', 'string' ); static $_manufacturers = array(); $hash = $search.json_encode($virtuemart_manufacturercategories_id).VmConfig::$vmlang.(int)$onlyPublished.(int)$this->_noLimit.(int)$getMedia; if (array_key_exists ($hash, $_manufacturers)) { vmdebug('Return cached getManufacturers'); return $_manufacturers[$hash]; } $where = array(); if ($virtuemart_manufacturercategories_id > 0) { $where[] .= ' `m`.`virtuemart_manufacturercategories_id` = '. $virtuemart_manufacturercategories_id; } $joinedTables = ' FROM `#__virtuemart_manufacturers` as m'; $select = ' `m`.*'; if ( $search && $search != 'true') { $db = vFactory::getDbo(); $search = '"%' . $db->escape( $search, true ) . '%"' ; //$search = $db->Quote($search, false); $where[] .= ' LOWER( `mf_name` ) LIKE '.$search; } $ordering = $this->_getOrdering(); //if ( $search && $search != 'true' or strpos($ordering,'mf_')!==FALSE or $ordering == 'm.virtuemart_manufacturer_id' ) { $select .= ',`#__virtuemart_manufacturers_'.VmConfig::$vmlang.'`.*, mc.`mf_category_name` '; $joinedTables .= ' INNER JOIN `#__virtuemart_manufacturers_'.VmConfig::$vmlang.'` USING (`virtuemart_manufacturer_id`) '; $joinedTables .= ' LEFT JOIN `#__virtuemart_manufacturercategories_'.VmConfig::$vmlang.'` AS mc on mc.`virtuemart_manufacturercategories_id`= `m`.`virtuemart_manufacturercategories_id` '; //} if ($onlyPublished) { $where[] .= ' `m`.`published` = 1'; } $groupBy=' '; if($getMedia){ $select .= ',mmex.virtuemart_media_id '; $joinedTables .= 'LEFT JOIN `#__virtuemart_manufacturer_medias` as mmex ON `m`.`virtuemart_manufacturer_id`= mmex.`virtuemart_manufacturer_id` '; $groupBy=' GROUP BY `m`.`virtuemart_manufacturer_id` '; } $whereString = ' '; if (count($where) > 0) $whereString = ' WHERE '.implode(' AND ', $where).' ' ; $_manufacturers[$hash] = $this->_data = $this->exeSortSearchListQuery(0,$select,$joinedTables,$whereString,$groupBy,$ordering ); return $_manufacturers[$hash]; } static function getManufacturersOfProductsInCategory($virtuemart_category_id,$vmlang,$mlang = false){ if($mlang){ $query = 'SELECT DISTINCT IFNULL(l.`mf_name`,ld.mf_name) as mf_name,IFNULL(l.`virtuemart_manufacturer_id`,ld.`virtuemart_manufacturer_id`) as virtuemart_manufacturer_id FROM `#__virtuemart_manufacturers_'.VmConfig::$defaultLang.'` as ld LEFT JOIN `#__virtuemart_manufacturers_'.$vmlang.'` as l using (`virtuemart_manufacturer_id`)'; vmdebug('getManufacturersOfProductsInCategory use language fallback'); } else { $query = 'SELECT DISTINCT l.`mf_name`,l.`virtuemart_manufacturer_id` FROM `#__virtuemart_manufacturers_' . $vmlang . '` as l'; } // if ($mf_virtuemart_product_ids) { $query .= ' INNER JOIN `#__virtuemart_product_manufacturers` AS pm using (`virtuemart_manufacturer_id`)'; $query .= ' INNER JOIN `#__virtuemart_products` as p ON p.`virtuemart_product_id` = pm.`virtuemart_product_id` '; if ($virtuemart_category_id) { $query .= ' INNER JOIN `#__virtuemart_product_categories` as c ON c.`virtuemart_product_id` = pm.`virtuemart_product_id` '; } $query .= ' WHERE p.`published` =1'; if ($virtuemart_category_id) { $query .= ' AND c.`virtuemart_category_id` =' . (int)$virtuemart_category_id; } $query .= ' ORDER BY `mf_name`'; $db = vFactory::getDbo(); $db->setQuery ($query); return $db->loadObjectList (); } } // pure php no closing tag