示例#1
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();
 }