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(); }
protected function airline($id) { $this->breadcrumb->resetUrl(); $this->header(); // Airline details $this->airlinePage->detail($id, '/Airlines/airline'); // Airline average ratings $avgFields = CustomRating::getAverageFields($this->flightPage->getPosition(), array('airline' => $id, 'published' => 1)); $tpl = Response::getObject()->appendTemplate('/Airlines/airline_avg'); $tpl->assign('data', $avgFields, false); $tpl->output(); // Evaluated flights $filter = new CustomDataFilter($this->flightPage->getPosition()); $filter->field('title'); $filter->fieldCalculation('rating', '(vdr_rating+bord_rating+service_rating)/3'); $filter->condition('airline', $id); $filter->condition('published', 1); $filter->orderBy('date'); $this->flightPage->overview('/Airlines/flights', Config::get('pagination.evaluations'), $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(); }