Система управления SATCMS

Из RSS ленты

Необходимо произвести импорт в указанный раздел всех новостей из RSS канала.
Для этого нам понадобится


<?php set_time_limit(0); require "../../loader.php"; $core = core::get_instance(); $imp = new rss_importer(); $imp->import('http://feeds.newsru.com/com/www/news/big');  class rss_importer { /**parent site*/ private $_site_id = 3; private $_site; /**parent node*/ private $_node_id = 1961; private $_node; private $_encoding = 'UTF-8'; /** @var node_collection */ private $collection; /** @var tf_sat */ private $psat; function __construct() { $this->psat = core::module('sat'); $this->collection = $this->psat->get_node_handle(); if (!($this->_site = $this->psat->get_site($this->_site_id))) { throw new tf_exception('Bad site'); } if (!($this->_node = $this->psat->get_node($this->_node_id))) { throw new tf_exception('Bad node'); } } function iconv($t) { if ($this->_encoding != 'UTF-8') { $t = iconv($this->_encoding, 'UTF-8', $t); } return $t; } function import($url) { $response = file_get_contents($url); $xmldoc = new SimpleXMLElement($response); foreach ($xmldoc->channel->item as $item) { $data = array( 'text' => (string)$item->description , 'title' => (string)$item->title ); $this->create_item($data); } // upd.counters $this->psat->update_tree($this->_site_id, true); } /** * @param array $data initial * @param mixed $parent * @return node_collection */ function create_item($data) { $data['pid'] = $this->_node_id; $data['owner_uid'] = 1; $data['active'] = 1; $data['site_id'] = $this->_site_id; $id = $this->collection->create($data); return $this->collection->get_last_item(); } }

В классе необходимо указать идентификаторы сайта и родителя (site_id и pid).
При вызове ->import передается урл rss ленты.