/** * Создать ленту * * @param array $rows * @param array $parameters * * @return sfFeed */ private function buildFeed(array $rows, array $parameters) { // default parameters $parameters = array_merge(sfConfig::get('app_feeds_default_parameters', array()), $parameters); $feed = sfFeed::newInstance($parameters['feed_type']); $feed->setTitle($parameters['title']); $feed->setLink($parameters['link']); $feed->setAuthorName($parameters['author_name']); if (isset($parameters['author_email'])) { $feed->setAuthorEmail($parameters['author_email']); } foreach ($rows as $row) { $item = new sfFeedItem(); $item->setTitle($row['title']); $item->setAuthorName($row['author_name']); if (isset($parameters['permalink_url'])) { $item->setLink(sprintf('@%s?%s=%s', $parameters['permalink_url'], $parameters['permalink_param_name'], $row[$parameters['permalink_param_column']])); } if (isset($row['author_email'])) { $item->setAuthorEmail($row['author_email']); } $item->setPubdate(strtotime($row['created_at']) - date('Z', strtotime($row['created_at']))); $item->setUniqueId($row['id']); $item->setDescription($row['description']); $feed->addItem($item); } $this->feed = $feed; $this->getContext()->getResponse()->setContentType($feed->getContentType()); $this->setTemplate('feed'); }
public function executeQuestion() { $question = QuestionPeer::getQuestionFromTitle($this->getRequestParameter('stripped_title')); $this->forward404Unless($question); // answers $c = new Criteria(); $c->add(AnswerPeer::QUESTION_ID, $question->getId()); $c->addDescendingOrderByColumn(AnswerPeer::CREATED_AT); $c->setLimit(sfConfig::get('app_feed_max_questions')); $answers = AnswerPeer::doSelect($c); $feed = sfFeed::newInstance('rss201rev2'); // channel $feed->setTitle($question->getTitle() . ' feed'); $feed->setLink('@question?stripped_title=' . $question->getStrippedTitle()); $feed->setFeedUrl('@feed_question?stripped_title=' . $question->getStrippedTitle()); $feed->setDescription('Latest answers to the question: ' . $question->getTitle()); // items $feed->setItems($answers); $this->feed = $feed; }