Работа с элементами и коллекциями медиабиблиотеки продуктов 1С-Битрикс осуществляется с помощью двух классов функций - CMedialibItem и CMedialibCollection, но сначала необходимо инициализировать медиабиблиотеку с помощью функции CMedialib::Init:[spoiler]
CModule::IncludeModule("fileman");
CMedialib::Init();
|
Работа с коллекциями медиабиблиотекиПолучение списка коллекций
CModule::IncludeModule("fileman");
CMedialib::Init();
// получим список всех коллекций
$arCollections = CMedialibCollection::GetList(array('arOrder'=>Array('NAME'=>'ASC'),'arFilter' => array('ACTIVE' => 'Y')));
|
Если же нужно получить дерево коллеций, т.е. массив, отсортированный в соответствии с вложенностью, то можно воспользоваться следующей функцией, которая работает рекурсивно:
class MedialibCollectionTools {
function GetRecursive($collection_id=0,&$arCollections,$arOrder,$arFilter) {
$arFilterTmp=$arFilter;
$arFilterTmp["PARENT_ID"] = $collection_id;
$rsCollections = CMedialibCollection::GetList(array('arOrder'=>$arOrder,'arFilter' => $arFilterTmp));
foreach($rsCollections as $arCollection) {
$arCollections[] = $arCollection;
self::GetRecursive($arCollection["ID"],&$arCollections,$arOrder,$arFilter);
}
}
}
$arCollections = Array();
$collection_id = 0; // ID основной коллекции, для полного дерева коллекций указываем 0
MedialibCollectionTools::GetRecursive($collection_id,$arCollections,Array('NAME'=>'ASC'),Array('ACTIVE' => 'Y'));
// Теперь в масиве arCollections находится дерево коллекций
|
Добавление или обновление коллекции
CModule::IncludeModule("fileman");
CMedialib::Init();
$arFields = Array (
"arFields" =>
Array (
"ID" => 0, // ID коллекции для обновления, 0 для добавления новой
"NAME" => "Название коллекции", // название
"DESCRIPTION" => "Описание коллекции", // описание
"OWNER_ID" => "1", // ID пользователя
"PARENT_ID" => 1, // ID родительской коллекции
"KEYWORDS" => "Слово 1, Слово 2", // ключевые слова
"ACTIVE" => "Y", // активность
"ML_TYPE" => "1", // тип коллекции, по умолчанию: 1 - изображения, 2 - видео, 3 - аудио
),
);
$COLLECTION_ID = CMedialibCollection::Edit($arFields); // функция возвращает ID коллекции
|
Работа с элементами (файлами) медиабиблиотекиПолучение списка элементов
CModule::IncludeModule("fileman");
CMedialib::Init();
// получим все элементы коллекции с идентификатором 1
$arItems = CMedialibItem::GetList(array('arCollections' => array("0" => 1)));
|
Добавление или обновление элемента
CModule::IncludeModule("fileman");
CMedialib::Init();
$arFields = array (
"file" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/preview_picture_5.jpg"), // файл
"path" => false, // путь
"arFields" =>
Array (
"ID" => 0, // ID элемента для обновления, 0 для добавления
"NAME" => "preview_picture_5.jpg", // название файла
"DESCRIPTION" => "Описание картинки", // описание файла
"KEYWORDS" => "Слово 1, Слово 2", // ключевые слова
),
"arCollections" => Array (1,2), // коллекции, которым принадлежит файл
);
$arItem = CMedialibItem::Edit($arFields); // функция возвращает массив, описывающий элемент коллекции
|
Пример массива, возвращаемого функцией CMedialib::Edit в случае успешного добавления элемента
Array
(
[ID] => 8
[TIMESTAMP_X] => 11.06.2013 00:01:52
[MODULE_ID] => fileman
[HEIGHT] => 130
[WIDTH] => 354
[FILE_SIZE] => 45197
[CONTENT_TYPE] => image/jpeg
[SUBDIR] => medialibrary/c7a
[FILE_NAME] => 2shop_2.jpg
[ORIGINAL_NAME] => 2shop_2.jpg
[DESCRIPTION] => Описание картинки
[HANDLER_ID] =>
[~src] =>
[THUMB_PATH] => /upload/resize_cache/medialibrary/c7a/140_105_1/2shop_2.jpg
[TYPE] => image
[PATH] => /upload/medialibrary/c7a/2shop_2.jpg
[NAME] => preview_picture_5.jpg
[KEYWORDS] => Слово 1, Слово 2
[~DATE_UPDATE] => now()
[SEARCHABLE_CONTENT] => {PREVIEW}{PICTUR}{JPG}{ОПИСАН}{КАРТИНК}{СЛОВ}
[SOURCE_ID] => 10
[~DATE_CREATE] => now()
)
|
Работа с типами содержимого медиабиблиотекиПолучение всех типов содержимого
CModule::IncludeModule("fileman");
$arTypes = CMedialib::GetTypes();
|
Если типы содержимого не изменялись в настройках модуля "Управление структурой", то функция вернет следующее:
Array
(
[0] => Array
(
[id] => 1
[code] => image
[name] => Изображения
[ext] => jpg,jpeg,gif,png
[system] => 1
[desc] => Фотографии, картинки, иконки, рисунки и другие графические файлы
[type_icon] => /bitrix/images/fileman/medialib/type_image.gif
[empty] =>
)
[1] => Array
(
[id] => 2
[code] => video
[name] => Видео
[ext] => flv,mp4,wmv
[system] => 1
[desc] => Видеофайлы
[type_icon] => /bitrix/images/fileman/medialib/type_video.gif
[empty] => 1
)
[2] => Array
(
[id] => 3
[code] => sound
[name] => Аудио
[ext] => mp3,wma,aac
[system] => 1
[desc] => Аудиофайлы
[type_icon] => /bitrix/images/fileman/medialib/type_sound.gif
[empty] => 1
)
)
|
07.11.201315:0907.11.2013 15:09:28
its cool