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 write($onlyCreate = false, $tpl = null) { $id = Request::get(1, VAR_INT); $isSent = Request::get(2, VAR_URI) == 'send'; $data = new CustomData($this->position); if ($id > 0 && $onlyCreate && Session::getObject()->getSetting('last_added') != $id) { CmsPage::error('Die Bearbeitungszeit ist abgelaufen. Bitte wenden Sie sich an den Administrator.'); } else { if ($id > 0 && !$data->load($id)) { CmsPage::error('Der gewählte Datensatz wurde leider nicht gefunden.'); } else { if ($id == 0) { $data->setToDefault(); } $fields = $data->getFields(); if ($isSent) { $options = array(); foreach ($fields as $field) { if ($field->canWrite()) { if ($field->getField() instanceof CustomExternalFields) { $options = array_merge($options, $field->getValidation()); } else { $options[$field->getFieldName()] = $field->getValidation(); } } } $result = Validator::checkRequest($options); foreach ($fields as $field) { if ($field->canWrite()) { $name = $field->getFieldName(); if (isset($result['data'][$name])) { $field->setData($result['data'][$name]); } } } if (count($result['error']) > 0) { CmsPage::error($result['error']); } else { $success = false; if ($id > 0) { $success = $data->edit($id); } else { $id = $data->add(); if ($onlyCreate) { Session::getObject()->setSetting('last_added', $id); } if ($id > 0) { $success = true; } else { $id = 0; $success = false; } } if ($success) { CmsPage::ok("Der Datensatz wurde erfolgreich gespeichert."); } else { CmsPage::error("Der Datensatz konnt leider nicht gespeichert werden."); } } } $html = array(); foreach ($fields as $field) { if ($field->canWrite()) { $html[] = array('field' => Sanitize::saveHTML($field->getFieldName()), 'name' => Sanitize::saveHTML($field->getName()), 'description' => Sanitize::saveHTML($field->getDescription()), 'code' => $field->getInputCode(), 'label' => !$field->noLabel()); } } $tpl = Response::getObject()->appendTemplate($tpl ? $tpl : '/Cms/fields/data_categories_write'); $tpl->assign('data', $data, false); $tpl->assign('fields', $html, false); $tpl->assign('id', $id); $tpl->assign('baseUri', $this->baseUri); $tpl->output(); } } }