Из текстовых файлов
Необходимо произвести импорт в указанный раздел всех *.TXT файлов.
Для этого нам понадобится
В классе необходимо указать идентификаторы сайта и родителя (site_id и pid).
Если не указано обратное, файлы ищутся в папке data, где расположен скрипт.
Имя файла будет заголовоком страницы, а его содержимое - контентом.
Для этого нам понадобится
<?php
set_time_limit(0);
require "../../loader.php";
$core = core::get_instance();
$imp = new text_importer();
$imp->import(dirname(__FILE__) . '/data');
class text_importer {
/**parent site*/
private $_site_id = 3;
private $_site;
/**parent node*/
private $_node_id = 1961;
private $_node;
private $_encoding = 'WINDOWS-1251';
/** @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($path) {
if (!is_dir($path)) {
throw new tf_exception('Not directory');
}
$files = fs::scan_dir_for_files($path, '\.txt);
natsort($files);
foreach ($files as $f) {
core::dprint(array('scan : %s', $f), core::E_DEBUG3);
$data = array(
'text' => $this->iconv(file_get_contents($f))
, 'title' => preg_replace('@^.*[\\\/]([^\\\/]+)\.\w+$@', '\\1', $f)
);
$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).
Если не указано обратное, файлы ищутся в папке data, где расположен скрипт.
Имя файла будет заголовоком страницы, а его содержимое - контентом.