Ejemplo n.º 1
0
 /**
  * @param Channel $channel
  * @return string
  */
 public function build(Channel $channel)
 {
     $doc = new DOMDocument('1.0');
     $doc->formatOutput = true;
     $rss = $doc->createElement('rss');
     $doc->appendChild($rss);
     $rss->setAttribute('version', '2.0');
     $channelNode = $doc->createElement('channel');
     $rss->appendChild($channelNode);
     foreach (self::$channelFields as $field) {
         if ('item' === $field) {
             foreach ($channel->getItems() as $item) {
                 $itemNode = $doc->createElement('item');
                 foreach (self::$itemFields as $itemField) {
                     $valueItem = call_user_func(array($item, 'get' . ucfirst($itemField)));
                     if (null === $valueItem) {
                         continue;
                     }
                     switch ($itemField) {
                         case 'guid':
                             break;
                         case 'pubDate':
                             $valueItem = $valueItem->format(DATE_RSS);
                         default:
                             $itemNode->appendChild($this->createTextNode($doc, $itemField, $valueItem));
                     }
                 }
                 $channelNode->appendChild($itemNode);
             }
         } else {
             if ('category' === $field) {
                 /*
                 				foreach ($channel->getCategories() as $category)
                 				{
                 
                 				}*/
             } else {
                 if ('image' === $field) {
                     $this->appendImageNode($doc, $channelNode, $channel->getImage());
                 } else {
                     if ('skipHours' === $field) {
                     } else {
                         if ('skipDays' === $field) {
                         } else {
                             $value = call_user_func(array($channel, 'get' . ucfirst($field)));
                             if (null === $value) {
                                 continue;
                             }
                             if ('lastBuildDate' == $field || 'pubDate' == $field) {
                                 $value = $value->format(DATE_RSS);
                             }
                             $channelNode->appendChild($this->createTextNode($doc, $field, $value));
                         }
                     }
                 }
             }
         }
     }
     return $doc->saveXML();
 }
Ejemplo n.º 2
0
 protected function sortItems(Channel $channel)
 {
     $items = $channel->getItems();
     $channel = clone $channel;
     $channel->clearItems();
     $dates = array();
     foreach ($items as $item) {
         $dates[] = $item->getPubDate()->format('U');
     }
     array_multisort($dates, SORT_DESC, $items);
     $channel->addItems($items);
     return $channel;
 }