Pop\Feed\Format\Php::parse PHP Метод

parse() публичный Метод

Method to parse a PHP feed object
public parse ( ) : void
Результат void
    public function parse()
    {
        if (is_array($this->obj)) {
            $this->feed = new \ArrayObject($this->obj, \ArrayObject::ARRAY_AS_PROPS);
        } else {
            $this->feed = $this->obj;
        }
        $key = null;
        $items = array();
        // Attempt to find the main feed and its entries
        if (isset($this->feed['item']) && is_array($this->feed['item'])) {
            $key = 'item';
        } else {
            if (isset($this->feed['items']) && is_array($this->feed['items'])) {
                $key = 'items';
            } else {
                if (isset($this->feed['entry']) && is_array($this->feed['entry'])) {
                    $key = 'entry';
                } else {
                    if (isset($this->feed['entries']) && is_array($this->feed['entries'])) {
                        $key = 'entries';
                    }
                }
            }
        }
        // Attempt to parse standard feed data from the data
        if (null !== $key) {
            $count = count($this->feed[$key]);
            $limit = $this->limit > 0 && $this->limit <= $count ? $this->limit : $count;
            for ($i = 0; $i < $limit; $i++) {
                if (is_array($this->feed[$key][$i])) {
                    $itm = (array) $this->feed[$key][$i];
                    $title = null;
                    $content = null;
                    $link = null;
                    $date = null;
                    $time = null;
                    if (isset($itm['title'])) {
                        $title = $itm['title'];
                        unset($itm['title']);
                    }
                    if (isset($itm['description'])) {
                        $content = $itm['description'];
                        unset($itm['description']);
                    }
                    if (isset($itm['link'])) {
                        $link = $itm['link'];
                        unset($itm['link']);
                    } else {
                        if (isset($itm['url'])) {
                            $link = $itm['url'];
                            unset($itm['url']);
                        }
                    }
                    foreach ($itm as $k => $v) {
                        if (stripos($k, 'date') !== false) {
                            $date = $v;
                            unset($itm[$k]);
                        }
                    }
                    if (null !== $date) {
                        $time = self::calculateTime($date);
                    }
                    $newItem = array('title' => $title, 'content' => $content, 'link' => $link, 'published' => $date, 'time' => $time);
                    $item = new \ArrayObject(array_merge($newItem, $itm), \ArrayObject::ARRAY_AS_PROPS);
                } else {
                    $item = $this->feed[$key][$i];
                }
                $items[] = $item;
            }
            $this->feed[$key] = $items;
        }
    }

Usage Example

Пример #1
0
 /**
  * Method to parse Flickr Php feed object
  *
  * @return void
  */
 public function parse()
 {
     parent::parse();
     if (!isset($this->feed['author']) || null === $this->feed['author']) {
         $this->feed['author'] = str_replace('Uploads from ', '', $this->feed['title']);
     }
     if (!isset($this->feed['date']) || null === $this->feed['date']) {
         $this->feed['date'] = date('D, d M Y H:i:s O', $this->feed['pub_date']);
     }
     if (!isset($this->feed['generator']) || null === $this->feed['generator']) {
         $this->feed['generator'] = 'Flickr';
     }
     $items = $this->feed['items'];
     foreach ($items as $key => $item) {
         $items[$key]['image_thumb'] = $item['t_url'];
         $items[$key]['image_medium'] = $item['m_url'];
         $items[$key]['image_large'] = $item['l_url'];
         $items[$key]['image_orig'] = $item['photo_url'];
     }
     $this->feed['items'] = $items;
 }