protected function displayFooter() { echo '<div class="footer">'; $path = $this->app->config->blorg->path; $post_count = $this->loader->getPostCount(); $this->pager = new SwatPagination(); $this->pager->display_parts ^= SwatPagination::POSITION; $this->pager->total_records = $post_count; $this->pager->page_size = self::MAX_POSTS; $this->pager->setCurrentPage($this->getArgument('page')); /* These strings include a non-breaking space */ $this->pager->previous_label = Blorg::_('« Newer'); $this->pager->next_label = Blorg::_('Older »'); $this->pager->link = $path . 'page%s'; $this->pager->display(); echo '<div class="results-message">'; echo $this->pager->getResultsMessage(Blorg::_('post'), Blorg::_('posts')); echo '</div>'; echo '<div class="archive-link">'; $anchor_tag = new SwatHtmlTag('a'); $anchor_tag->href = $path . 'archive'; $anchor_tag->setContent(Blorg::_('Archive')); $anchor_tag->display(); echo '</div>'; echo '</div>'; }
protected function initComments($year, $month_name, $shortname, $page) { if (!array_key_exists($month_name, BlorgPageFactory::$months_by_name)) { throw new SiteNotFoundException(Blorg::_('Page not found.')); } // Date parsed from URL is in locale time. $date = new SwatDate(); $date->setTZ($this->app->default_time_zone); $date->setDate($year, BlorgPageFactory::$months_by_name[$month_name], 1); $date->setTime(0, 0, 0); $memcache = isset($this->app->memcache) ? $this->app->memcache : null; $loader = new BlorgPostLoader($this->app->db, $this->app->getInstance(), $memcache); $loader->addSelectField('title'); $loader->addSelectField('bodytext'); $loader->addSelectField('shortname'); $loader->addSelectField('publish_date'); $loader->addSelectField('author'); $loader->addSelectField('visible_comment_count'); $loader->setWhereClause(sprintf('enabled = %s', $this->app->db->quote(true, 'boolean'))); $this->post = $loader->getPostByDateAndShortname($date, $shortname); if ($this->post === null) { throw new SiteNotFoundException('Post not found.'); } $this->total_count = $this->post->getVisibleCommentCount(); $this->comments = false; if (isset($this->app->memcache)) { $key = $this->getCommentsCacheKey(); $this->comments = $this->app->memcache->getNs('posts', $key); } if ($this->comments === false) { $offset = ($page - 1) * $this->getPageSize(); $this->comments = $this->post->getVisibleComments($this->getPageSize(), $offset); if (isset($this->app->memcache)) { $this->app->memcache->setNs('posts', $key, $this->comments); } } else { $this->comments->setDatabase($this->app->db); } if ($page > 1 && count($this->comments) === 0) { throw new SiteNotFoundException(Blorg::_('Page not found.')); } }
protected function getAuthorPosts() { $memcache = isset($this->app->memcache) ? $this->app->memcache : null; $this->loader = new BlorgPostLoader($this->app->db, $this->app->getInstance(), $memcache); $this->loader->addSelectField('title'); $this->loader->addSelectField('bodytext'); $this->loader->addSelectField('shortname'); $this->loader->addSelectField('publish_date'); $this->loader->addSelectField('author'); $this->loader->addSelectField('comment_status'); $this->loader->addSelectField('visible_comment_count'); $this->loader->setLoadFiles(true); $this->loader->setLoadTags(true); $this->loader->setWhereClause(sprintf('enabled = %s and author = %s', $this->app->db->quote(true, 'boolean'), $this->app->db->quote($this->author->id, 'integer'))); $this->loader->setOrderByClause('publish_date desc'); $offset = ($this->getArgument('page') - 1) * self::MAX_POSTS; $this->loader->setRange(self::MAX_POSTS, $offset); return $this->loader->getPosts(); }
protected function getTotalCount() { return $this->loader->getPostCount(); }
protected function initPost($year, $month_name, $shortname) { if (!array_key_exists($month_name, BlorgPageFactory::$months_by_name)) { throw new SiteNotFoundException('Post not found.'); } // Date parsed from URL is in locale time. $date = new SwatDate(); $date->setTZ($this->app->default_time_zone); $date->setDate($year, BlorgPageFactory::$months_by_name[$month_name], 1); $date->setTime(0, 0, 0); $memcache = isset($this->app->memcache) ? $this->app->memcache : null; $loader = new BlorgPostLoader($this->app->db, $this->app->getInstance(), $memcache); $loader->addSelectField('title'); $loader->addSelectField('bodytext'); $loader->addSelectField('extended_bodytext'); $loader->addSelectField('shortname'); $loader->addSelectField('publish_date'); $loader->addSelectField('author'); $loader->addSelectField('comment_status'); $loader->addSelectField('visible_comment_count'); $loader->setLoadFiles(true); $loader->setLoadTags(true); $loader->setWhereClause(sprintf('enabled = %s', $this->app->db->quote(true, 'boolean'))); $this->post = $loader->getPostByDateAndShortname($date, $shortname); if ($this->post === null) { throw new SiteNotFoundException('Post not found.'); } }
protected function initPosts($year, $month_name) { if (!array_key_exists($month_name, BlorgPageFactory::$months_by_name)) { throw new SiteNotFoundException('Page not found.'); } // Date parsed from URL is in locale time. $month = BlorgPageFactory::$months_by_name[$month_name]; $date = new SwatDate(); $date->setTZ($this->app->default_time_zone); $date->setDate($year, $month, 1); $date->setTime(0, 0, 0); $memcache = isset($this->app->memcache) ? $this->app->memcache : null; $loader = new BlorgPostLoader($this->app->db, $this->app->getInstance(), $memcache); $loader->addSelectField('title'); $loader->addSelectField('bodytext'); $loader->addSelectField('shortname'); $loader->addSelectField('publish_date'); $loader->addSelectField('author'); $loader->addSelectField('comment_status'); $loader->addSelectField('visible_comment_count'); $loader->setLoadFiles(true); $loader->setLoadTags(true); $loader->setWhereClause(sprintf('enabled = %s and date_trunc(\'month\', convertTZ(publish_date, %s)) = date_trunc(\'month\', timestamp %s)', $this->app->db->quote(true, 'boolean'), $this->app->db->quote($this->app->default_time_zone->getName(), 'text'), $this->app->db->quote($date->getDate(), 'date'))); $loader->setOrderByClause('publish_date desc'); $this->posts = $loader->getPosts(); if (count($this->posts) == 0) { throw new SiteNotFoundException('Page not found.'); } }