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 = null) { if(isset($id)){ $this->_id = $this->setId($id); } else if(empty($this->_id)){ $this->setIdByRequest(); } 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 = VmConfig::getCache('com_virtuemart_orderby_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 = JFactory::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, JHtml::_('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 = JFactory::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 && $view == 'manufacturer') { $where[] .= ' `m`.`virtuemart_manufacturercategories_id` = '. $virtuemart_manufacturercategories_id; } $joinedTables = ' FROM `#__virtuemart_manufacturers` as m'; $select = ' `m`.*'; if ( $search && $search != 'true' && $view == 'manufacturer') { $fields = self::joinLangLikeField('mf_name','"%'.$search.'%"'); if (!empty($fields)) { $where[] = '(' . implode (' OR ', $fields) . ')'; } } $ordering = $this->_getOrdering(); $langFields = array('mf_name','mf_email','mf_desc','mf_url','slug'); $select .= ', '.implode(', ',self::joinLangSelectFields($langFields)); $joinedTables .= implode(' ',self::joinLangTables($this->_maintable,'m','virtuemart_manufacturer_id')); $select .= ', mc.`mf_category_name`'; $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){ //if($mlang){ $useFb = vmLanguage::getUseLangFallback(); $useFb2 = vmLanguage::getUseLangFallbackSecondary(); if($useFb2){ $prefix = 'ljd'; } else if($useFb){ $prefix = 'ld'; } else { $prefix = 'l'; } $query = 'SELECT DISTINCT '; $langFields = array('virtuemart_manufacturer_id','mf_name'); $query .= ' '.implode(', ',self::joinLangSelectFields($langFields)); $query .= ' '.implode(' ',self::joinLangTables('#__virtuemart_manufacturers','m','virtuemart_manufacturer_id','FROM')); $query .= ' INNER JOIN `#__virtuemart_product_manufacturers` AS pm ON pm.`virtuemart_manufacturer_id` = '.$prefix.'.`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 pc ON pc.`virtuemart_product_id` = pm.`virtuemart_product_id` '; } $query .= ' WHERE p.`published` = "1"'; if ($virtuemart_category_id) { $query .= ' AND pc.`virtuemart_category_id` = "' . (int)$virtuemart_category_id.'"'; } $query .= ' ORDER BY `mf_name`'; $db = JFactory::getDBO(); $db->setQuery ($query); $r = $db->loadObjectList (); return $r; } } // pure php no closing tag