コード例 #1
0
ファイル: Category.php プロジェクト: saiber/www
 public function getFilterSet()
 {
     if ($this->filterSetCache) {
         return $this->filterSetCache;
     }
     Classloader::import('application.model.filter.Filter');
     Classloader::import('application.model.filter.SelectorFilter');
     // get filter groups
     $groups = $this->getFilterGroupArray();
     $ids = array();
     $specFields = array();
     $filterGroups = array();
     foreach ($groups as $group) {
         if (in_array($group['SpecField']['type'], array(SpecField::TYPE_NUMBERS_SELECTOR, SpecField::TYPE_TEXT_SELECTOR))) {
             $specFields[] = $group['SpecField']['ID'];
             $filterGroups[$group['SpecField']['ID']] = $group['ID'];
             $ids[] = $group['ID'];
         } else {
             $ids[] = $group['ID'];
         }
     }
     $ret = array();
     if ($ids) {
         // get specification simple value filters
         $filterCond = new INCond(new ARFieldHandle('Filter', 'filterGroupID'), $ids);
         $filterFilter = new ARSelectFilter();
         $filterFilter->setCondition($filterCond);
         $filterFilter->setOrder(new ARFieldHandle('Filter', 'filterGroupID'));
         $filterFilter->setOrder(new ARFieldHandle('Filter', 'position'));
         $valueFilters = ActiveRecord::getRecordSet('Filter', $filterFilter, array('FilterGroup', 'SpecField'));
         foreach ($valueFilters as $filter) {
             $ret[] = $filter;
         }
     }
     // get specification selector value filters
     if ($specFields) {
         $selectFilter = new ARSelectFilter();
         $selectFilter->setCondition(new INCond(new ARFieldHandle('SpecFieldValue', 'specFieldID'), $specFields));
         $selectFilter->setOrder(new ARFieldHandle('SpecFieldValue', 'specFieldID'));
         $selectFilter->setOrder(new ARFieldHandle('SpecFieldValue', 'position'));
         $specFieldValues = ActiveRecord::getRecordSet('SpecFieldValue', $selectFilter);
         foreach ($specFieldValues as $value) {
             $ret[] = new SelectorFilter($value, FilterGroup::getInstanceByID($filterGroups[$value->specField->get()->getID()]));
         }
     }
     $this->filterSetCache = $ret;
     return $ret;
 }
コード例 #2
0
ファイル: FilterGroupController.php プロジェクト: saiber/www
 /**
  * Sort filter groups
  *
  * @role sort
  *
  * @return JSONResponse Status
  */
 public function sort()
 {
     foreach ($this->request->get($this->request->get('target'), array()) as $position => $key) {
         if (!empty($key)) {
             $group = FilterGroup::getInstanceByID((int) $key);
             $group->setFieldValue('position', (int) $position);
             $group->save();
         }
     }
     return new JSONResponse(false, 'success');
 }