public function load($pkValue)
 {
     $filter = new CustomDataFilter($this->position);
     $filter->condition($this->position->getPrimaryKey(), $pkValue);
     $filter->limit(1);
     return $filter->retrieveTo($this);
 }
 public function activate()
 {
     $this->header();
     $filter = new CustomDataFilter($this->page->getPosition());
     $filter->field('title');
     $filter->condition('published', 0);
     $filter->orderBy('date');
     $this->page->overview($this->getTemplateFile('/Cms/admin/data_categories'), Config::get('pagination.admin'), $filter);
     $this->footer();
 }
 public function top()
 {
     $this->breadcrumb->add('Rating');
     $this->header();
     $filter = new CustomDataFilter($this->flightPage->getPosition());
     $filter->fieldForeign('categories', 'name', 'airlineName');
     $filter->fieldForeign('categories', 'id', 'airlineId');
     $filter->fieldCalculation('rating', '(AVG(vdr_rating)+AVG(bord_rating)+AVG(service_rating))/3');
     $filter->join('categories', 'id', 'airline');
     $filter->condition('published', 1);
     $filter->orderBy('rating', false);
     $filter->groupBy('airline');
     $this->flightPage->overview('/Airlines/top', 0, $filter);
     $this->footer();
 }
 public static function getAverageFields(CustomDataPosition $pos, array $params = array())
 {
     $filter = new CustomDataFilter($pos);
     $filter->field(null);
     $fields = $pos->getFieldsForClassPath(self::$classPath);
     foreach ($fields as $field) {
         $fieldName = Sanitize::saveDb($field->getFieldName());
         $filter->fieldCalculation($fieldName, "AVG({$fieldName})");
     }
     foreach ($params as $field => $value) {
         $filter->condition($field, $value);
     }
     $result = $filter->execute();
     if ($result) {
         $data = new CustomData($pos);
         $row = Database::getObject()->fetchAssoc($result);
         if ($row) {
             $data = new CustomData($pos);
             $data->set($row, true, $fields);
             return $data->getFields(array_keys($fields));
         }
     }
     return array();
 }
 public function overview($tpl = null, $pagination = 0, CustomDataFilter $filter = null)
 {
     if ($filter === null) {
         $filter = new CustomDataFilter($this->position);
         foreach ($this->mainFields as $field) {
             $filter->field($field);
         }
         $filter->orderBy(reset($this->mainFields));
     }
     $pages = '';
     if ($pagination > 0) {
         $pg = new Pagination($pagination, $filter->getAmount());
         $pg->setUri($this->baseUri);
         $pg->parsePage();
         $filter->limit($pg->getPerPage(), $pg->getOffset());
         $pages = $pg->build();
     }
     $tpl = Response::getObject()->appendTemplate($tpl ? $tpl : "/Cms/fields/data_categories");
     $tpl->assign('pages', $pages, false);
     $tpl->assign('list', $filter->retrieveList(), false);
     $tpl->assign('baseUri', $this->baseUri);
     $tpl->output();
 }