1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
gadget.php
См. документацию.
1<?php
2
4
6{
7 public static function GetGadgetContent(&$arGadget, $arParams)
8 {
9 global $APPLICATION, $USER;
10
11 CComponentUtil::__IncludeLang($arGadget["PATH_SITEROOT"], "/index.php");
12
13 $arGadgetParams = $arGadget["SETTINGS"];
14 $id = $arGadget["ID"];
15
16 ob_start();
17 include($arGadget["PATH"]."/index.php");
18 return ob_get_clean();
19 }
20
21 public static function GetList($bWithParameters = false, $arAllCurrentValues = false)
22 {
23 $arGadgets = [];
24
25 $folders = [
26 "/bitrix/gadgets",
27 "/local/gadgets",
28 ];
29
30 foreach ($folders as $folder)
31 {
32 // Find all namespaces of gadgets
33 $arGdNS = static::getNamespaces($_SERVER["DOCUMENT_ROOT"] . $folder);
34
35 // Find all gadgets
36 foreach ($arGdNS as $NS)
37 {
38 $gdDir = $_SERVER["DOCUMENT_ROOT"].$folder."/".$NS;
39 if (is_dir($gdDir) && ($handle = opendir($gdDir)))
40 {
41 while (false !== ($file = readdir($handle)))
42 {
43 if ($file=="." || $file=="..")
44 continue;
45 $arGadgetParams = BXGadget::GetById($NS."/".$file, $bWithParameters, $arAllCurrentValues);
46 if ($arGadgetParams)
47 $arGadgets[$file] = $arGadgetParams;
48 else
49 unset($arGadgets[$file]);
50 }
51 closedir($handle);
52 }
53 }
54 }
55
56 uasort($arGadgets, ["BXGadget", "_sort"]);
57
58 return $arGadgets;
59 }
60
61 protected static function getNamespaces($gdDir)
62 {
63 $arGdNS = ["bitrix"];
64 if (is_dir($gdDir) && ($handle = opendir($gdDir)))
65 {
66 while (($item = readdir($handle)) !== false)
67 {
68 if (is_dir($gdDir . "/" . $item) && $item != "." && $item != ".." && $item != "bitrix")
69 {
70 $arGdNS[] = $item;
71 }
72 }
73 closedir($handle);
74 }
75 return $arGdNS;
76 }
77
78 public static function _sort($ar1, $ar2)
79 {
80 return strcmp($ar1["NAME"], $ar2["NAME"]);
81 }
82
83 public static function GetById($id, $bWithParameters = false, $arAllCurrentValues = false)
84 {
85 $id = _normalizePath(mb_strtolower($id));
86
87 $folders = [
88 "/bitrix/gadgets",
89 "/local/gadgets",
90 ];
91
92 $namespace = '';
93 if (($p = mb_strpos($id, "/")) > 0)
94 {
95 //specific namespace
96 $namespace = mb_substr($id, 0, $p);
97 $id = mb_substr($id, $p + 1);
98 }
99
100 // Find all gadgets
101 $arGadget = false;
102 foreach ($folders as $folder)
103 {
104 // Find all namespaces of gadgets
105 if ($namespace != '')
106 {
107 $arGdNS = [$namespace];
108 }
109 else
110 {
111 $arGdNS = static::getNamespaces($_SERVER["DOCUMENT_ROOT"] . $folder);
112 }
113
114 foreach ($arGdNS as $NS)
115 {
116 $gdDir = $_SERVER["DOCUMENT_ROOT"].$folder."/".$NS;
117 $gdDirSiteRoot = $folder."/".$NS;
118 if (is_dir($gdDir."/".$id))
119 {
120 $arDescription = [];
121
122 CComponentUtil::__IncludeLang($gdDirSiteRoot."/".$id, "/.description.php");
123
124 if (!file_exists($gdDir."/".$id."/.description.php"))
125 continue;
126
127 if (!@include($gdDir."/".$id."/.description.php"))
128 {
129 $arGadget = false;
130 continue;
131 }
132
133 if (isset($arDescription["LANG_ONLY"]) && $arDescription["LANG_ONLY"]!=LANGUAGE_ID)
134 {
135 $arGadget = false;
136 continue;
137 }
138
139 if ($bWithParameters)
140 {
141 $arCurrentValues = [];
142 if (is_array($arAllCurrentValues))
143 {
144 foreach ($arAllCurrentValues as $k => $v)
145 {
146 $pref = "G_".mb_strtoupper($id)."_";
147 if(str_starts_with($k, $pref))
148 $arCurrentValues[substr($k, strlen($pref))] = $v;
149 else
150 {
151 $pref = "GU_".mb_strtoupper($id)."_";
152 if(str_starts_with($k, $pref))
153 $arCurrentValues[substr($k, strlen($pref))] = $v;
154 }
155 }
156 }
157
158 CComponentUtil::__IncludeLang($gdDirSiteRoot."/".$id, "/.parameters.php");
159
160 $arParameters = [];
161
162 if (file_exists($gdDir."/".$id."/.parameters.php"))
163 {
164 include($gdDir."/".$id."/.parameters.php");
165 }
166 $arDescription["PARAMETERS"] = $arParameters["PARAMETERS"] ?? [];
167 $arDescription["USER_PARAMETERS"] = array(
168 "TITLE_STD" => array(
169 "NAME" => GetMessage("CMDESKTOP_UP_TITLE_STD"),
170 "TYPE" => "STRING",
171 "DEFAULT" => ""
172 )
173 );
174 if (isset($arParameters["USER_PARAMETERS"]) && is_array($arParameters["USER_PARAMETERS"]))
175 {
176 $arDescription["USER_PARAMETERS"] = array_merge($arDescription["USER_PARAMETERS"], $arParameters["USER_PARAMETERS"]);
177 }
178 }
179 $arDescription["PATH"] = $gdDir."/".$id;
180 $arDescription["PATH_SITEROOT"] = $gdDirSiteRoot."/".$id;
181
182 $arDescription["ID"] = mb_strtoupper($id);
183 if ($arDescription["ICON"] && !str_starts_with($arDescription["ICON"], "/"))
184 $arDescription["ICON"] = "/bitrix/gadgets/".$NS."/".$id."/".$arDescription["ICON"];
185
186 unset($arDescription["NOPARAMS"]);
187
188 $arGadget = $arDescription;
189 }
190 }
191 }
192 return $arGadget;
193 }
194
195 public static function SavePositions($arParams, $positions)
196 {
197 $allOptions = static::readSettings($arParams);
198
199 $arUserOptions = ($arParams["MULTIPLE"] == "Y" ? $allOptions[$arParams["DESKTOP_PAGE"]] : $allOptions);
200
201 $arNewUserOptions = ["GADGETS" => []];
202
203 if (isset($arUserOptions["COLS"]))
204 {
205 $arNewUserOptions["COLS"] = $arUserOptions["COLS"];
206 }
207 if (isset($arUserOptions["arCOLUMN_WIDTH"]))
208 {
209 $arNewUserOptions["arCOLUMN_WIDTH"] = $arUserOptions["arCOLUMN_WIDTH"];
210 }
211 if (isset($arUserOptions["NAME"]))
212 {
213 $arNewUserOptions["NAME"] = $arUserOptions["NAME"];
214 }
215
216 foreach ($positions as $col => $items)
217 {
218 foreach ($items as $row => $gdId)
219 {
220 if(mb_substr($gdId, -2, 2) == "*H")
221 {
222 $gdId = mb_substr($gdId, 0, -2);
223 $hidden = true;
224 }
225 else
226 {
227 $hidden = false;
228 }
229
230 $arNewUserOptions["GADGETS"][$gdId] = $arUserOptions["GADGETS"][$gdId] ?? [];
231 $arNewUserOptions["GADGETS"][$gdId]["COLUMN"] = $col;
232 $arNewUserOptions["GADGETS"][$gdId]["ROW"] = $row;
233 $arNewUserOptions["GADGETS"][$gdId]["HIDE"] = ($hidden? "Y" : "N");
234 }
235 }
236
237 if ($arParams["MULTIPLE"] == "Y")
238 {
239 $allOptions[$arParams["DESKTOP_PAGE"]] = $arNewUserOptions;
240 }
241 else
242 {
243 $allOptions = $arNewUserOptions;
244 }
245
246 static::writeSettings($allOptions, $arParams);
247 }
248
249 public static function writeSettings(array $options, array $arParams): void
250 {
251 $userId = ($arParams["DEFAULT_ID"] ? 0 : false);
252
253 CUserOptions::SetOption("intranet", "~gadgets_".$arParams["ID"], $options, false, $userId);
254 }
255
256 public static function readSettings(array $arParams): array
257 {
258 global $APPLICATION;
259
260 if ($arParams["DEFAULT_ID"])
261 {
262 $user_option_id = 0;
263 $arUserOptionsDefault = CUserOptions::GetOption("intranet", "~gadgets_".$arParams["DEFAULT_ID"], false, $user_option_id);
264 }
265 else
266 {
267 $user_option_id = false;
268 $arUserOptionsDefault = false;
269 }
270
271 $arUserOptions = CUserOptions::GetOption("intranet", "~gadgets_".$arParams["ID"], $arUserOptionsDefault, $user_option_id);
272
273 if (!$arUserOptions)
274 {
275 $desktopId = false;
276 $page = $APPLICATION->GetCurPage();
277 if (in_array($page, array(SITE_DIR."index.php", SITE_DIR, "/")))
278 {
279 $desktopId = "mainpage";
280 }
281 elseif (in_array($page, array(SITE_DIR."desktop.php", "/desktop.php")))
282 {
283 $desktopId = "dashboard";
284 }
285
286 if ($desktopId !== false)
287 {
288 $arUserOptions = CUserOptions::GetOption("intranet", "~gadgets_".$desktopId);
289 }
290 }
291
292 if (!is_array($arUserOptions))
293 {
294 $arUserOptions = [];
295 }
296
297 return $arUserOptions;
298 }
299
300 public static function getGadgetSettings($id, $arParams)
301 {
302 $arUserOptions = static::readSettings($arParams);
303
304 if ($arParams["MULTIPLE"] == "Y")
305 {
306 $arUserOptions = $arUserOptions[$arParams["DESKTOP_PAGE"]];
307 }
308
309 return $arUserOptions["GADGETS"][$id]["SETTINGS"] ?? [];
310 }
311
312 public static function getDesktopParams($arParams)
313 {
314 return [
315 "DEFAULT_ID" => ($arParams["DEFAULT_ID"] ?: ''),
316 "ID" => $arParams["ID"],
317 "MULTIPLE" => $arParams["MULTIPLE"] ?? null,
318 "DESKTOP_PAGE" => (int)($arParams["DESKTOP_PAGE"] ?? 0),
319 ];
320 }
321}
$arParams
Определения access_dialog.php:21
$positions
Определения access_edit.php:237
global $APPLICATION
Определения include.php:80
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
Определения gadget.php:6
static getGadgetSettings($id, $arParams)
Определения gadget.php:300
static readSettings(array $arParams)
Определения gadget.php:256
static getNamespaces($gdDir)
Определения gadget.php:61
static _sort($ar1, $ar2)
Определения gadget.php:78
static GetList($bWithParameters=false, $arAllCurrentValues=false)
Определения gadget.php:21
static getDesktopParams($arParams)
Определения gadget.php:312
static GetGadgetContent(&$arGadget, $arParams)
Определения gadget.php:7
static SavePositions($arParams, $positions)
Определения gadget.php:195
static writeSettings(array $options, array $arParams)
Определения gadget.php:249
static GetById($id, $bWithParameters=false, $arAllCurrentValues=false)
Определения gadget.php:83
static __IncludeLang($filePath, $fileName, $lang=false)
Определения component_util.php:13
$options
Определения commerceml2.php:49
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$handle
Определения include.php:55
$p
Определения group_list_element_edit.php:23
while($row=$res->fetch()) $allOptions[]
Определения options.php:111
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $USER
Определения csv_new_run.php:40
const SITE_DIR(!defined('LANG'))
Определения include.php:72
if(!defined('NOT_CHECK_PERMISSIONS')) $NS
Определения backup.php:24
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
_normalizePath($strPath)
Определения tools.php:3341
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$page
Определения order_form.php:33
$items
Определения template.php:224
$k
Определения template_pdf.php:567