партнер компании 1с-битрикс
сайт фрилансера Сергея Эстрина
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Простой адаптивный форум - модуль для битрикс
Работа с элементами и коллекциями медиабиблиотеки продуктов 1С-Битрикс осуществляется с помощью двух классов функций - CMedialibItem и CMedialibCollection, но сначала необходимо инициализировать медиабиблиотеку с помощью функции CMedialib::Init:
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
        )

)

Чтобы оставить сообщение, авторизуйтесь, или войдите с помощью:
Главная   ·   Модули для 1С-Битрикс   ·   Типовые услуги   ·   Форум   ·   Блог   ·   Контакты
Рейтинг@Mail.ru