forked from HighTechnologiesCenter/fotoramabx
/
class.php
125 lines (113 loc) · 3.56 KB
/
class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
class CFotoramaComponent extends CBitrixComponent
{
/**
* Константы
*/
const SOURCE_TYPE_MEDIALIBRARY_COLLECTION = 'medialibrary_collection';
const SOURCE_TYPE_IBLOCK_SECTION = 'iblock_section';
const FULLSCREEN_MODE_DISABLED = 'false';
const FULLSCREEN_MODE_NATIVE = 'native';
const FULLSCREEN_MODE_ENABLED = 'true';
const NAVIGATION_STYLE_DOTS = 'dots';
const NAVIGATION_STYLE_THUMBS = 'thumbs';
const NAVIGATION_STYLE_DISABLED = 'false';
const NAVIGATION_POSITION_BOTTOM = 'bottom';
const NAVIGATION_POSITION_TOP = 'top';
const CACHE_TIME_DEFAULT = 3600;
const TRANSITION_EFFECT_SLIDE = 'slide';
const TRANSITION_EFFECT_CROSSFADE = 'crossfade';
const TRANSITION_EFFECT_DISSOLVE = 'dissolve';
/**
* Получает все изображения коллекции медиабиблиотеки
* @param $medialibraryCollectionId
* @return array
*/
public function getImagesFromMedialibraryCollection($medialibraryCollectionId)
{
$images = array();
CMedialib::Init(); //Классы медиабиблиотеки недоступны до ее инициализации
$items = CMedialibItem::GetList(array(
'arCollections' => array(
$medialibraryCollectionId,
)
));
/**
* В CMedialibItem::GetList нет возможности фильтрации по типу элемента коллекции,
* поэтому придется выбрать изображения вручную
*/
foreach ($items as $item)
{
if ($item['TYPE'] === 'image')
{
$image = array(
'HEIGHT' => $item['HEIGHT'],
'WIDTH' => $item['WIDTH'],
'PATH' => $item['PATH'],
'THUMB_PATH' => $item['THUMB_PATH'],
'DESCRIPTION' => $item['DESCRIPTION'],
);
$images[] = $image;
}
}
return $images;
}
/**
* Получает все изображения (анонса и детальные) элементов одного раздела инфоблока
* @param $sectionId
* @return array
*/
public function getImagesFromIblockSection($sectionId)
{
$images = array();
$iblockElements = CIBlockElement::GetList(
array(
'SORT' => 'ASC',
'ID' => 'ASC',
),
array(
'SECTION_ID' => $sectionId,
'ACTIVE' => 'Y',
'>PREVIEW_PICTURE' => 0, //фильтруем по обязательному наличию изображения анонса
'>DETAIL_PICTURE' => 0 //и по обязательному наличию детального изображения
),
false,
false,
array(
'ID',
'NAME',
'PREVIEW_PICTURE',
'DETAIL_PICTURE',
'PREVIEW_TEXT',
'DETAIL_TEXT',
)
);
while ($iblockElement = $iblockElements->GetNext())
{
$path = CFile::GetPath($iblockElement['DETAIL_PICTURE']); //CFile::GetByID не возвращает полного пути до изображения
$thumbPath = CFile::GetPath($iblockElement['PREVIEW_PICTURE']);
$detailPictureInfo = CFile::GetByID($iblockElement['DETAIL_PICTURE'])->Fetch();
$description = $detailPictureInfo['DESCRIPTION'];
if (empty($description))
{
if (!empty($iblockElement['DETAIL_TEXT']))
{
$description = $iblockElement['DETAIL_TEXT'];
}
else
{
$description = $iblockElement['PREVIEW_TEXT'];
}
}
$image = array(
'HEIGHT' => $detailPictureInfo['HEIGHT'],
'WIDTH' => $detailPictureInfo['WIDTH'],
'PATH' => $path,
'THUMB_PATH' => $thumbPath,
'DESCRIPTION' => $description,
);
$images[] = $image;
}
return $images;
}
}