/**
  * @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;
 }
 public static function getInstance()
 {
     if (self::$instance === null) {
         self::$instance = new self();
     }
     return self::$instance;
 }
Beispiel #3
0
 public function delete($filterId)
 {
     $this->set('filterid', $filterId);
     $this->load();
     if ($this->getPreset() == Gpf::YES) {
         throw new Gpf_Exception("You cannot delete preset filter!");
     }
     $conditionsTable = Gpf_Db_Table_FilterConditions::getInstance();
     $conditionsTable->deleteAll($filterId);
     return parent::delete();
 }
    private function saveFilterPresets(Gpf_Rpc_Form $form, $filterId) {
        $filterConditionsTable = Gpf_Db_Table_FilterConditions::getInstance();
        $filterConditionsTable->deleteAll($filterId);

        $presets = new Gpf_Data_RecordSet();
        $presets->loadFromArray($form->getFieldValue("presets"));

        foreach ($presets as $preset) {
            $filterCondition = new Gpf_Db_FilterCondition();
            $filterCondition->setFilterId($filterId);
            $filterCondition->fillFromRecord($preset);
            $filterCondition->save();
        }
    }
    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);
        }
    }
 function init()
 {
     $this->setTable(Gpf_Db_Table_FilterConditions::getInstance());
     parent::init();
 }