Example #1
0
 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>';
 }
Example #2
0
 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.'));
     }
 }
Example #3
0
 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();
 }
Example #4
0
 protected function getTotalCount()
 {
     return $this->loader->getPostCount();
 }
Example #5
0
 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.');
        }
    }