protected function initPosts($shortname, $page) { $class_name = SwatDBClassMap::get('BlorgTag'); $tag = new $class_name(); $tag->setDatabase($this->app->db); if (!$tag->loadByShortname($shortname, $this->app->getInstance())) { throw new SiteNotFoundException('Page not found.'); } $this->tag = $tag; $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 id in (select post from BlorgPostTagBinding where tag = %s)', $this->app->db->quote(true, 'boolean'), $this->app->db->quote($tag->id, 'integer'))); $this->loader->setOrderByClause('publish_date desc'); $offset = ($page - 1) * self::MAX_POSTS; $this->loader->setRange(self::MAX_POSTS, $offset); $this->posts = $this->loader->getPosts(); if (count($this->posts) == 0) { throw new SiteNotFoundException('Page not found.'); } }
protected function initPostLoader($page) { $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('extended_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', $this->app->db->quote(true, 'boolean'))); $this->loader->setOrderByClause('publish_date desc'); $offset = ($page - 1) * $this->getPageSize(); $this->loader->setRange($this->getPageSize(), $offset); }
protected function initPosts($page) { $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('extended_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', $this->app->db->quote(true, 'boolean'))); $this->loader->setOrderByClause('publish_date desc'); $offset = ($page - 1) * self::MAX_POSTS; $this->loader->setRange(self::MAX_POSTS, $offset); $this->posts = $this->loader->getPosts(); if (count($this->posts) == 0) { throw new SiteNotFoundException('Page not found.'); } }
protected function initMonths($year, $page) { // Date parsed from URL is in locale time. $date = new SwatDate(); $date->setTZ($this->app->default_time_zone); $date->setDate($year, 1, 1); $date->setTime(0, 0, 0); $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->setWhereClause(sprintf('enabled = %s and date_trunc(\'year\', convertTZ(publish_date, %s)) = date_trunc(\'year\', 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'))); $this->loader->setOrderByClause('publish_date desc'); $offset = ($page - 1) * self::MAX_POSTS; $this->loader->setRange(self::MAX_POSTS, $offset); $posts = $this->loader->getPosts(); foreach ($posts as $post) { $publish_date = clone $post->publish_date; $publish_date->convertTZ($this->app->default_time_zone); $month = $publish_date->getMonth(); if (!array_key_exists($month, $this->months)) { $this->months[$month] = array(); } $this->months[$month][] = $post; } if (count($this->months) == 0) { throw new SiteNotFoundException('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(); }