Esempio n. 1
0
 /**
  * Создать ленту
  *
  * @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');
 }
Esempio n. 2
0
 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;
 }