/** * Gets the result from the query * @param zibo\library\orm\model\Model $model * @param zibo\library\orm\query\ModelQuery $query * @param joppa\content\model\ContentProperties $properties * @return array Array with Content objects */ private function getResult(ContentProperties $contentProperties, $model, $query) { $data = $query->queryFirst(); if (!$data) { return $data; } $meta = $model->getMeta(); $modelTable = $meta->getModelTable(); $dataFormatter = $meta->getDataFormatter(); $titleFormat = $contentProperties->getContentTitleFormat(); if (!$titleFormat && $modelTable->hasDataFormat(DataFormatter::FORMAT_TITLE)) { $titleFormat = $modelTable->getDataFormat(DataFormatter::FORMAT_TITLE)->getFormat(); } $teaserFormat = $contentProperties->getContentTeaserFormat(); if (!$teaserFormat && $modelTable->hasDataFormat(DataFormatter::FORMAT_TEASER)) { $teaserFormat = $modelTable->getDataFormat(DataFormatter::FORMAT_TEASER)->getFormat(); } $imageFormat = $modelTable->getDataFormat(DataFormatter::FORMAT_IMAGE, false); if ($imageFormat) { $imageFormat = $imageFormat->getFormat(); } $dateFormat = $modelTable->getDataFormat(DataFormatter::FORMAT_DATE, false); if ($dateFormat) { $dateFormat = $dateFormat->getFormat(); } try { $mapper = ContentFacade::getInstance()->getMapper($model->getName()); } catch (ZiboException $e) { $mapper = null; } $title = $dataFormatter->formatData($data, $titleFormat); $url = null; $teaser = null; $image = null; $date = null; if ($teaserFormat) { $teaser = $dataFormatter->formatData($data, $teaserFormat); } if ($imageFormat) { $image = $dataFormatter->formatData($data, $imageFormat); } if ($dateFormat) { $date = $dataFormatter->formatData($data, $dateFormat); } if ($mapper) { $url = $mapper->getUrl($data); } $content = new Content($title, $url, $teaser, $image, $date, $data); return $content; }
/** * Gets a title for the view * @param mixed $data The data which is being displayed, used only with the form view * @return string */ protected function getViewTitle($data = null) { $meta = $this->model->getMeta(); if ($this->translationTitle) { $title = $this->getTranslator()->translate($this->translationTitle); } else { $title = $meta->getName(); } if ($data && $data->id) { $title .= ': ' . $meta->formatData($data); } return $title; }
/** * Gets the model query * @param zibo\library\orm\model\Model $model * @param joppa\content\model\ContentProperties $contentProperties * @param string $locale Code of the locale * @param integer $page Page number * @return zibo\library\orm\query\ModelQuery */ public function getModelQuery($model, ContentProperties $contentProperties, $locale, $page = 1) { $includeUnlocalizedData = $contentProperties->getIncludeUnlocalized(); $query = $model->createQuery($contentProperties->getRecursiveDepth(), $locale, $includeUnlocalizedData); $modelFields = $contentProperties->getModelFields(); if ($modelFields) { foreach ($modelFields as $fieldName) { $query->addFields('{' . $fieldName . '}'); } } $condition = $contentProperties->getCondition(); if ($condition) { $query->addCondition($condition); } $order = $contentProperties->getOrder(); if ($order) { $query->addOrderBy($order); } if ($contentProperties->isPaginationEnabled()) { $paginationOffset = $contentProperties->getPaginationOffset(); $rows = $contentProperties->getPaginationRows(); $offset = ($page - 1) * $rows; if ($paginationOffset) { $offset += $paginationOffset; } $query->setLimit($rows, $offset); } return $query; }