Из RSS ленты
Необходимо произвести импорт в указанный раздел всех новостей из RSS канала.
Для этого нам понадобится
В классе необходимо указать идентификаторы сайта и родителя (site_id и pid).
При вызове ->import передается урл 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 ленты.