AdvOntologyCSV
При передаче данных в любую сторону могут быть определены процедуры преобразования.
Ведется журнал выполненных операций.
Стратегии обмена данными
Расширение поддерживает четыре стратегии обмена данными:
- importOne – используется, если в таблицу AdvOntology загружаются данные из одного csv-файла. При повторном импорте таблица AdvOntology переинсталлируется, id обнуляется.
- importSum – используется, если в таблицу AdvOntology импортируются данные из многих csv-файлов (импорт можно отменить). При повторном импорте данные добавляются в таблицу за новыми id. Все csv-файлы, предназначенные для импорта в одну таблицу AdvOntology, хранятся в одноименной папке в директории _importSum.
- export TODO – используется для выгрузки данных из таблиц AdvOntology
- sync TODO – используется для полной синхронизации таблицы AdvOntology с единственным csv-файлом. Необходимо указать поле csv-файла, которое будет выполнять функцию ключа.
Пример
Инсталляция
Шаг 1
После инсталляции в директории sites/[mysite.ru]/data/AdvOntologyCSV автоматически создаются папки:
- _export хранилище csv-файлов, экспортированных из таблиц AdvOntology
- _importOne хранилище csv-файлов, предназначенных для импорта с перезаписью
- _importSum хранилище csv-файлов, предназначенные для импорта с добавлением
- myType1
- myType2
- _sync хранилище csv-файлов, синхронизированных с таблицами AdvOntology
- phpProcessor папка с php-процедурами преобразования данных
- config.php параметры обмена данными
Шаг 2
Опишите параметры обмена данными в файле config.php.
Опишите пользовательские процедуры преобразования данных и сохраните их в папке phpProcessor.
Шаг 3
На странице /Администрирование/Сервисы/AdvOntologyCSV располагаются экшены, помощью которых Вы сможете загружать и импортировать csv-файлы:
- adminuploadcsv для загрузки csv-файлов
- adminfilescsv для администрирования и импорта загруженных csv-файлов
- demoinstall для инсталляции демо-таблиц
Чтобы сразу увидеть AdvOntologyCSV в действии, проинсталлируйте демо-таблицы.
Журнал выполненных операций располагается на странице /Администрирование/Сервисы/AdvOntologyCSV/Log.
config.php
Структура конфигуратора и синтаксис стандартных процедур преобразования данных видны из примера:
<?php
$this->config = array (
"importOne" => array (
array("file1.csv", "Type1", array("header" => 0), array( // header - сколько строк пропустить
"field1" => 0, // is_int: значение из столбца 0
"field2" => "value", // is_string: текстовая константа
"field3" => "phpProcessor", // о процессоре см. ниже
"field4" => array("concat", "[2], д.[3], кв.[4]"), // склеивание столбцов 2,3 и 4
"field5" => array("substr", 3, $start, $length), // подстрока из столбца 3
"field6" => array("getId", 4, "NewType", "NewField")
// подстановка id, где значение в столбце 4 = NewType.NewField
) )
),
"importSum" => array (
array("", "Type2", array("header" => 0), array( ) )
// в importSum имя csv-файла не указывается
),
"export" => array (
),
"sync" => array (
)
);
?>
phpProcessor
В папке phpProcessor хранятся пользовательские процедуры преобразования данных. Для каждого поля необходимо создать отдельный php-файл с именем имя_типа.имя_поля.php.
PHP процессор получает на вход $data (нумерованный массив со значениями текущей строки csv-файла) и должен установить переменную $res (значение, которое будет записано в поле таблицы).
Если необходим доступ к сервисам, то он выполняется в контексте AdvOntologyCSV.
Пример файла DemoPerson.data.php Преобразует первое поле csv-файла вида «Иванов Иван Иванович» в «Иванов И.И.»
<?php
$arr = explode(" ", $data[0]);
$res = $arr[0]." ".substr($arr[1], 0, 1).".".substr($arr[0], 0, 1).".";
?>
actions
adminuploadcsv – загрузка CSV-файлов (для администратора)
{{adminuploadcsv oper="importOne|importSum|sync" [type="SciArticle"] }}
Name | default | Description |
---|---|---|
oper | Предполагаемое использование если ="importOne" или ="sync", при коллизии имен файл будет перезаписан поверх существующего если ="importSum", при коллизии имен загрузка блокируется, предлагается переименовать файл или удалить существующий. | |
type | Имя таблицы AdvOntology (только для oper="importSum") |
useruploadcsv – загрузка CSV-файлов (для пользователя)
После загрузки файлам автоматически присваивается имя имя_пользователя гггг-мм-дд чч:мм:сс.ext.
Из соображений безопасности три параметра определяются в теле файла:
$oper = 'userfiles'; // имя папки в директории data/AdvOntologyCSV/, куда будут загружаться файлы
$extensions = array('csv'); // допустимые расширения
$maxsize = 2000; // максимальный размер загружаемого файла в Кб
adminfilescsv – список CSV-файлов
{{adminuploadcsv oper="importOne|importSum|sync" [type="SciArticle"]}}
Name | default | Description |
---|---|---|
oper | Директория с файлами в соответствии с предполагаемым использованием. | |
type | Имя таблицы AdvOntology (только для oper="importSum"). |
Журнал
В журнале хранится служебная информация обо всех выполненных операциях обмена данными:
- тип операции; при отмене операции типу присваивается постфикс Undo, например importOneUndo
- имя таблицы AdvOntology;
- имя csv-файла;
- id записей, добавленных в таблицу в результате импорта; через :", например :1:2:3:4:5:"
- дата и id пользователя, совершившего операцию.