Экспорт определенных полей в csv файл

Материал из Umicms

Перейти к: навигация, поиск

В модуле "Обмен данными" экспорт происходит всех полей, которые есть у объектов. С помощью быстрого экспорта в модулях системы выгружаются не все поля. Система устроена так, что при экспорте данных в csv файл, в экспорт попадают только поля прописанные в родительском типе данных модуля, плюс также некоторые поля заблокированы для экспорта. Обойти все ограничения можно изменив системные настройки какого-либо пользователя, который будет осуществлять экспорт. Будем использовать такой php код для редактирования настроек:

<?php
header("Content-type: text/html; charset=utf-8");
include "standalone.php";
 
$type_id = umiObjectTypesCollection::getInstance()->getBaseType('users', 'user');
$type = umiObjectTypesCollection::getInstance()->getType($type_id);
$field_id_settings_data = (int) $type->getFieldId('user_settings_data');
 
$permissions = permissionsCollection::getInstance();
$objects = umiObjectsCollection::getInstance();
$user_id = 14;
$user = $objects->getObject($user_id);
if($user instanceof umiObject == false) {
throw new coreException("Can't get current user with id #{$user_id}");
}
 
$settings_data = $user->getValue("user_settings_data");
//print_r($settings_data);
echo "<br /><br />";
$settings_data_arr = unserialize($settings_data);
 
$key_catalog = 'tree-catalog-tree';
$key_news = 'tree-news-lists';
$tag = 'used-columns';
echo $settings_data_arr[$key_news][$tag]."<br />";
 
/*
$settings_data_arr[$key_news][$tag] = "publish_time[140px]|name[250px]|begin_time[100px]|end_time[100px]|anons_pic[100px]|content[100px]";
$settings_data_rec_1 = serialize($settings_data_arr);
$sql = "UPDATE cms3_object_content SET text_val = '{$settings_data_rec_1}' WHERE obj_id = '{$user_id}' AND field_id ='{$field_id_settings_data}'";
$result = l_mysql_query($sql);
if($result) echo "Запрос выполнен успешно";
*/
 
?>

данный код можно сохранить в файл csv.php и запустить через ваш домен: _http://домен/csv.php

В коде приведен пример изменения настроек пользователя с id = 14 (Супервайзер), для модуля новости. Для новостей необходимо изменить значения массива с индексами 'tree-news-lists' и 'used-columns', само значение получаем данным запросом:

$settings_data_arr[$key_news][$tag]

По умолчанию значение равно:

publish_time[140px]|name[250px]|begin_time[100px]|end_time[100px]

необходимо в него добавить дополнительные идентификаторы полей по аналогии с существующими, допустим для полей Анонс (anons) и Контент (content), необходимо добавить такую строку в закомментированной части кода:

|content[100px]|anons[100px]

Сделав нужные настройки, открываем закомментированную часть кода и снова запускам php скрипт, чтобы выполнился SQL запрос.

Данные ключи:

$key_catalog = 'tree-catalog-tree';
$key_news = 'tree-news-lists';

строятся по названию модуля и основного метода модуля, их можно увидеть в адресной строке, когда вы зашли на главную страницу модуля.

Личные инструменты