Ejemplo n.º 1
0
 public function index()
 {
     // get filter to select manufacturers of active products only
     $rootCat = Category::getRootNode();
     $f = new ARSelectFilter();
     $productFilter = new ProductFilter($rootCat, $f);
     $ids = $counts = array();
     foreach (ActiveRecordModel::getDataBySQL('SELECT DISTINCT(manufacturerID), COUNT(*) AS cnt FROM Product ' . $f->createString() . ' GROUP BY manufacturerID') as $row) {
         $ids[] = $row['manufacturerID'];
         $counts[$row['manufacturerID']] = $row['cnt'];
     }
     $f = new ARSelectFilter(new InCond(new ARFieldHandle('Manufacturer', 'ID'), $ids));
     $f->mergeCondition(new NotEqualsCond(new ARFieldHandle('Manufacturer', 'name'), ''));
     $f->setOrder(new ARFieldHandle('Manufacturer', 'name'));
     $manufacturers = ActiveRecordModel::getRecordSetArray('Manufacturer', $f);
     foreach ($manufacturers as &$manufacturer) {
         $manufacturer['url'] = $this->getManufacturerFilterUrl($manufacturer);
     }
     $this->addBreadCrumb($this->translate('_manufacturers'), '');
     $response = new ActionResponse();
     $response->setReference('manufacturers', $manufacturers);
     $response->set('counts', $counts);
     $response->set('rootCat', $rootCat->toArray());
     return $response;
 }
Ejemplo n.º 2
0
 public function index()
 {
     /*
     MANUFACTURER_PAGE_LIST_STYLE
     	MANPAGE_STYLE_ALL_IN_ONE_PAGE
     	MANPAGE_STYLE_GROUP_BY_FIRST_LETTER
     MANUFACTURER_PAGE_NUMBER_OF_COLUMNS
     MANUFACTURER_PAGE_PER_PAGE
     */
     $config = $this->getApplication()->getConfig();
     $request = $this->getRequest();
     $listStyle = $config->get('MANUFACTURER_PAGE_LIST_STYLE');
     $currentLetter = $listStyle == 'MANPAGE_STYLE_GROUP_BY_FIRST_LETTER' ? $request->get('letter') : null;
     $letters = Manufacturer::getActiveProductManufacturerFirstLetters();
     if (!$currentLetter) {
         $currentLetter = reset($letters);
     }
     // pagination
     $page = $request->get('page', 1);
     extract(Manufacturer::getActiveProductManufacturers(array('currentPage' => $page, 'startingWith' => $currentLetter)));
     // creates $manufacturers, $count, $counts
     foreach ($manufacturers as &$manufacturer) {
         $manufacturer['url'] = $this->getManufacturerFilterUrl($manufacturer);
     }
     $this->addBreadCrumb($this->translate('_manufacturers'), '');
     $response = new ActionResponse();
     $response->setReference('manufacturers', $manufacturers);
     $response->set('counts', $counts);
     // product count
     $response->set('count', $count);
     // manufacturers count
     $response->set('rootCat', Category::getRootNode()->toArray());
     $response->set('currentPage', $page);
     $response->set('perPage', $config->get('MANUFACTURER_PAGE_PER_PAGE'));
     $paginateUrlParams = array('controller' => 'manufacturers', 'action' => 'index', 'query' => array('page' => '_000_'));
     if ($listStyle == 'MANPAGE_STYLE_GROUP_BY_FIRST_LETTER') {
         $paginateUrlParams['query']['letter'] = $currentLetter;
     }
     $response->set('url', $this->router->createURL($paginateUrlParams, true));
     if ($listStyle == 'MANPAGE_STYLE_GROUP_BY_FIRST_LETTER') {
         $response->set('currentLetter', $currentLetter);
         $response->set('letters', $letters);
     }
     return $response;
 }