/** * Заполним ссылки на посты и, если передан параметр exists, удалим элементы, для которых нет постов. */ protected function fillTimeLineItem(LibItemDb $libItem, TimeLineItem $tlItem, ArrayAdapter $params) { $post = BlogManager::inst()->getPostByIdent($libItem->getIdent(), false); if ($post) { $tlItem->setLink(BlogManager::inst()->postUrl($post)); } return !$params->bool('exists') || !!$post; }
/** * Метод конвертирует запись в базе для сущности библиотеки в элемент хронологической шкалы. * Если элемент не должен отображаться на временной шкале * (не задано начало события или метод фильтрации исключил данное событие), вернётся null. * * @return TimeLineItem */ private function convertLibItemDb2TimeLineItem(LibItemDb $libItem, ArrayAdapter $params) { if (!$libItem->getDtStart()) { //Если нет даты начала - событие не стоит брать return null; } $tlItem = TimeLineItem::inst($libItem->getName(), $libItem->getIdent(), $libItem->getDtStart(), $libItem->getDtStop()); //Обложка $tlItem->setImage($this->getCover($libItem->getIdent(), TimeLineManager::COVERS_DIM)); //Контент $tlItem->setContent($libItem->getContent()); //Заполним данными if ($this->fillTimeLineItem($libItem, $tlItem, $params)) { return $tlItem; } return null; }
protected function buildComposition(ArrayAdapter $params) { $items = array(); /* @var $pp PostsProcessor */ foreach (Handlers::getInstance()->getPostsProcessors() as $pp) { foreach ($pp->getPosts() as $post) { $items[] = $post; } } $events = array(); /* @var $post Post */ foreach ($items as $post) { $postType = $post->getPostType(); $pp = Handlers::getInstance()->getPostsProcessorByPostType($postType); $dt_start = DatesTools::inst()->uts2dateInCurTZ($post->getDtPublication(), 'Y-m-d'); $rec = TimeLineItem::inst($post->getName(), IdHelper::ident($post), $dt_start); $rec->setImage($pp->getCoverDi($post->getIdent(), TimeLineManager::COVERS_DIM)); $rec->setLink($pp->postUrl($post->getId())); switch ($postType) { case POST_TYPE_ISSUE: $rec->setColorSchema(TimeLineItem::COLOR_SCHEMA_GREEN); break; case POST_TYPE_BLOG: $rec->setColorSchema(TimeLineItem::COLOR_SCHEMA_BLUE); break; case POST_TYPE_TRAINING: $rec->setColorSchema(TimeLineItem::COLOR_SCHEMA_RED); break; } $rec->setContent($pp->getPostContentProvider($post->getId())->getPostContentShowcase()->getContent()); $events[] = $rec; } $composite = new TimeLineItemsComposite($events); $composite->colorOneByOne(); return $composite; }