コード例 #1
0
 /**
  * @param filterType
  * @service filter read
  */
 public function getFilters($filterType)
 {
     $condition = new Gpf_SqlBuilder_CompoundWhereCondition();
     $condition->add('f.userid', '=', Gpf_Session::getAuthUser()->getUserId(), 'OR');
     $condition->add('f.userid', '=', null, 'OR');
     $condition->add('f.userid', '=', '', 'OR');
     $selectBuilder = new Gpf_SqlBuilder_SelectBuilder();
     $selectBuilder->select->add('f.filterid', 'id');
     $selectBuilder->select->add('f.name', 'name');
     $selectBuilder->select->add('c.fieldid', 'fieldid');
     $selectBuilder->select->add('c.sectioncode', 'sectioncode');
     $selectBuilder->select->add('c.code', 'code');
     $selectBuilder->select->add('c.operator', 'operator');
     $selectBuilder->select->add('c.value', 'value');
     $selectBuilder->from->add(Gpf_Db_Table_Filters::getName(), 'f');
     $selectBuilder->from->addLeftJoin(Gpf_Db_Table_FilterConditions::getName(), 'c', 'f.filterid=c.filterid');
     $selectBuilder->where->add('f.filtertype', '=', $filterType);
     $selectBuilder->where->addCondition($condition);
     $selectBuilder->orderBy->add('f.name');
     $selectBuilder->orderBy->add('f.filterid');
     $selectBuilder->orderBy->add('c.sectioncode');
     $response = new Gpf_Data_RecordSet();
     $response->load($selectBuilder);
     foreach ($response as $filter) {
         $filter->set('name', $this->_localize($filter->get('name')));
     }
     return $response;
 }
コード例 #2
0
    protected function buildFilter() {
        if ($this->filterId && $this->filterId != 'custom') {
            $sql = new Gpf_SqlBuilder_SelectBuilder();
            $sql->select->addAll(Gpf_Db_Table_FilterConditions::getInstance());
            $sql->from->add(Gpf_Db_Table_FilterConditions::getName());
            $sql->where->add('filterid', '=', $this->filterId);
            $conditions = $sql->getAllRows();

            foreach ($conditions as $condition) {
                $filterArray = array(
                Gpf_SqlBuilder_Filter::FILTER_CODE => $condition->get('code'),
                Gpf_SqlBuilder_Filter::FILTER_OPERATOR => $condition->get('operator'),
                Gpf_SqlBuilder_Filter::FILTER_VALUE => $condition->get('value'));

                $filter = new Gpf_SqlBuilder_Filter($filterArray);
                if (array_key_exists($filter->getCode(), $this->dataColumns)) {
                    $dataColumn = $this->dataColumns[$filter->getCode()];
                    $filter->setCode($dataColumn->getName());
                    $filter->addTo($this->_selectBuilder->where);
                } else {
                    $this->addFilter($filter);
                }
            }
        }
        if (!empty($this->recipients)) {
            $condition = new Gpf_SqlBuilder_CompoundWhereCondition();
            $condition->add('au.'.Gpf_Db_Table_AuthUsers::NOTIFICATION_EMAIL, 'IN', $this->recipients, 'OR');
            $condition->add('au.username', 'IN', $this->recipients, 'OR');
            $this->_selectBuilder->where->addCondition($condition);
        }
    }