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

Из текстовых файлов

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


<?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, где расположен скрипт.

Имя файла будет заголовоком страницы, а его содержимое - контентом.