24 if ($paresedUrl !==
false)
26 $pathInfo = pathinfo($paresedUrl[
"path"]);
29 "URL" =>
"'%" . $pathInfo[
"basename"] .
"%'",
30 "MENU_FOR_USER" =>
$USER->GetID(),
31 "LANGUAGE_ID" => LANGUAGE_ID,
33 while ($arFav = $dbFav->Fetch())
57 " .
$DB->DateToCharFunction(
"F.TIMESTAMP_X") .
" as TIMESTAMP_X,
58 " .
$DB->DateToCharFunction(
"F.DATE_CREATE") .
" as DATE_CREATE
71 $aMsg[] = [
"id" =>
"NAME",
"text" =>
GetMessage(
"fav_general_err_name")];
75 $aMsg[] = [
"id" =>
"URL",
"text" =>
GetMessage(
"fav_general_err_url")];
84 $aMsg[] = [
"id" =>
"USER_ID",
"text" =>
GetMessage(
"fav_general_err_user")];
89 $aMsg[] = [
"id" =>
"USER_ID",
"text" =>
GetMessage(
"fav_general_err_user1")];
99 $aMsg[] = [
"id" =>
"LANGUAGE_ID",
"text" =>
GetMessage(
"fav_general_err_lang")];
104 $aMsg[] = [
"id" =>
"LANGUAGE_ID",
"text" =>
GetMessage(
"fav_general_err_lang1")];
128 $strSql =
"SELECT MENU_ID, URL, ID FROM b_favorite WHERE ( ";
132 $strSql .=
"MENU_ID = '" .
$DB->ForSql(
$arFields[
"MENU_ID"]) .
"' AND ";
137 $strSql .=
"URL = '" .
$DB->ForSql(
$arFields[
"URL"]) .
"' AND ";
142 $strSql .=
"NAME = '" .
$DB->ForSql(
$arFields[
"NAME"]) .
"' AND ";
145 $strSql .=
"( USER_ID=" .
$uid .
" OR COMMON='Y' ))";
147 $dbFav =
$DB->Query($strSql);
149 while ($arFav = $dbFav->GetNext())
181 $codeID = $codes->
Add([
182 "CODE" =>
"location.href='" .
$arFields[
"URL"] .
"';",
184 "COMMENTS" =>
"FAVORITES",
187 $codes->Update($codeID, [
188 "CLASS_NAME" =>
"FAV-" . $codeID,
189 "TITLE_OBJ" =>
"FAV-" . $codeID,
209 $strUpdate =
$DB->PrepareUpdate(
"b_favorite",
$arFields);
210 if ($strUpdate !=
"")
212 $strSql =
"UPDATE b_favorite SET " . $strUpdate .
" WHERE ID=" .
$ID;
213 if (!
$DB->Query($strSql))
229 while ($arFav =
$res->Fetch())
231 $codes->Delete($arFav[
"CODE_ID"]);
234 return $DB->Query(
"DELETE FROM b_favorite WHERE ID='" . intval(
$ID) .
"'");
240 return $DB->Query(
"DELETE FROM b_favorite WHERE USER_ID=" . intval($user_id));
246 return $DB->Query(
"DELETE FROM b_favorite WHERE LANGUAGE_ID='" .
$DB->ForSQL($language_id, 2) .
"'");
257 if ((
string)
$val ==
'' ||
$val ==
"NOT_REF")
261 switch (mb_strtoupper(
$key))
267 $arSqlSearch[] =
"F.USER_ID = " . intval(
$val);
269 case "MENU_FOR_USER":
270 $arSqlSearch[] =
"(F.USER_ID=" . intval(
$val) .
" OR F.COMMON='Y')";
273 $arSqlSearch[] =
"F.COMMON = '" .
$DB->ForSql(
$val, 1) .
"'";
276 $arSqlSearch[] =
"F.LANGUAGE_ID = '" .
$DB->ForSql(
$val, 2) .
"'";
279 $arSqlSearch[] =
"F.TIMESTAMP_X >= FROM_UNIXTIME('" .
MkDateTime(
FmtDate(
$val,
"D.M.Y"),
"d.m.Y") .
"')";
282 $arSqlSearch[] =
"F.TIMESTAMP_X <= FROM_UNIXTIME('" .
MkDateTime(
FmtDate(
$val,
"D.M.Y") .
" 23:59:59",
"d.m.Y") .
"')";
288 $arSqlSearch[] =
"F.MODIFIED_BY = " . intval(
$val);
294 $arSqlSearch[] =
"F.CREATED_BY = " . intval(
$val);
306 $arSqlSearch[] =
"F.MODULE_ID='" .
$DB->ForSql(
$val, 50) .
"'";
309 $arSqlSearch[] =
"F.MENU_ID='" .
$DB->ForSql(
$val, 255) .
"'";
318 $ord = (mb_strtoupper(
$val) <>
"ASC" ?
"DESC" :
"ASC");
319 switch (mb_strtoupper(
$key))
322 $sOrder .=
", F.ID " . $ord;
325 $sOrder .=
", F.LANGUAGE_ID " . $ord;
328 $sOrder .=
", F.COMMON " . $ord;
331 $sOrder .=
", F.USER_ID " . $ord;
334 $sOrder .=
", F.TIMESTAMP_X " . $ord;
337 $sOrder .=
", F.MODIFIED_BY " . $ord;
340 $sOrder .=
", F.NAME " . $ord;
343 $sOrder .=
", F.URL " . $ord;
346 $sOrder .=
", F.C_SORT " . $ord;
349 $sOrder .=
", F.MODULE_ID " . $ord;
352 $sOrder .=
", F.MENU_ID " . $ord;
358 $sOrder =
"F.ID DESC";
360 $strSqlOrder =
" ORDER BY " . trim($sOrder,
", ");
365 F.ID, F.C_SORT, F.NAME, F.MENU_ID, F.URL, F.MODIFIED_BY, F.CREATED_BY, F.MODULE_ID, F.LANGUAGE_ID,
366 F.COMMENTS, F.COMMON, F.USER_ID, UM.LOGIN AS M_LOGIN, UC.LOGIN as C_LOGIN, U.LOGIN, F.CODE_ID,
367 " .
$DB->DateToCharFunction(
"F.TIMESTAMP_X") .
" TIMESTAMP_X,
368 " .
$DB->DateToCharFunction(
"F.DATE_CREATE") .
" DATE_CREATE,
369 " .
$DB->Concat(
$DB->IsNull(
"UM.NAME",
"''"),
"' '",
$DB->IsNull(
"UM.LAST_NAME",
"''")) .
" as M_USER_NAME,
370 " .
$DB->Concat(
$DB->IsNull(
"UC.NAME",
"''"),
"' '",
$DB->IsNull(
"UC.LAST_NAME",
"''")) .
" as C_USER_NAME,
371 " .
$DB->Concat(
$DB->IsNull(
"U.NAME",
"''"),
"' '",
$DB->IsNull(
"U.LAST_NAME",
"''")) .
" as USER_NAME
374 LEFT JOIN b_user UM ON (UM.ID = F.MODIFIED_BY)
375 LEFT JOIN b_user UC ON (UC.ID = F.CREATED_BY)
376 LEFT JOIN b_user U ON (U.ID = F.USER_ID)
378 " . $strSqlSearch .
"
389 private $arItems = [];
405 "MENU_FOR_USER" =>
$USER->GetID(),
406 "LANGUAGE_ID" => LANGUAGE_ID,
410 while ($arFav = $dbFav->GetNext())
412 if ($arFav[
"COMMON"] ==
"Y" && $arFav[
"MODULE_ID"] <>
"" &&
$APPLICATION->GetGroupRight($arFav[
"MODULE_ID"]) <
"R")
417 $this->arItems[] = $arFav;
430 if (isset($arItem[
"items_id"]) && $arItem[
"items_id"] == $itemsID)
436 if (is_array($arItem) && !empty($arItem))
438 $arFindItem = $this->
GetMenuItem($itemsID, $arItem);
440 if (is_array($arFindItem) && !empty($arFindItem))
455 $favOptions = CUserOptions::GetOption(
'favorite',
'favorite_menu', [
"stick" =>
"N"]);
459 foreach ($this->arItems as $arItem)
463 if ($arItem[
"MENU_ID"])
468 if (!$arItem[
"MENU_ID"] || !is_array($tmpMenu) || empty($tmpMenu))
471 "text" => $arItem[
"NAME"],
472 "url" => $arItem[
"URL"],
474 "items_id" =>
"menu_favorite_" . $arItem[
"ID"],
475 "title" => $arItem[
"NAME"],
476 "icon" =>
"fav_menu_icon",
477 "page_icon" =>
"fav_page_icon",
481 $tmpMenu[
"fav_id"] = $arItem[
"ID"];
482 $tmpMenu[
"parent_menu"] =
"global_menu_desktop";
484 if (!isset($tmpMenu[
'icon']) || $tmpMenu[
'icon'] ==
'')
486 $tmpMenu[
'icon'] =
'fav_menu_icon';
489 if ($this->CheckItemActivity($tmpMenu))
491 $tmpMenu[
"_active"] =
true;
494 if ((isset($tmpMenu[
"_active"]) && $tmpMenu[
"_active"] || $this->CheckSubItemActivity($tmpMenu)) &&
$favOptions[
"stick"] ==
"Y")
496 $GLOBALS[
"BX_FAVORITE_MENU_ACTIVE_ID"] =
true;
505 private function CheckSubItemActivity(
$arMenu)
512 foreach (
$arMenu[
"items"] as $menu)
514 if (!empty($menu[
"_active"]))
519 if ($this->CheckSubItemActivity($menu))
528 private function CheckItemActivity(
$arMenu)
530 if (!empty(
$arMenu[
"_active"]))
557 return $this->CheckFilterActivity($currentUrl, $menuUrl, $activeSectUrl);
560 private function CheckFilterActivity($currentUrl, $menuUrl, $activeSectUrl)
594 if (empty($menuItems))
602 echo
'<script bxrunfirst="true">BX.adminFav.setLastId(' . intval($id) .
');</script>';
605 foreach ($menuItems as $arItem)
610 echo
'<script>' . $menuScripts .
'</script>';
612 $buff .= ob_get_contents();
624<div class="adm-favorites-cap-text">
631 $favHintOptions = CUserOptions::GetOption(
'favorites_menu',
"hint", [
"hide" =>
"N"]);
633 if (!$IsMenuEmpty && $favHintOptions[
"hide"] ==
"Y")
639<div id="adm-favorites-cap-hint-block" class="adm-favorites-cap-hint-block">
640 <div class="adm-favorites-cap-hint-icon icon-1"></div>
641 <div class="adm-favorites-cap-hint-text">
644 <div class="adm-favorites-cap-hint-icon icon-2"></div>
645 <div class="adm-favorites-cap-hint-text">
652 <a class="adm-favorites-cap-remove" href="javascript:void(0);" onclick="BX.adminFav.closeHint(this);">' .
GetMessage(
"fav_main_menu_close_hint") .
'</a>';
667 public static function Compare($url1, $url2, $arReqVals = [], $arSkipVals = [])
669 if ($url1 ==
'' && $url2 ==
'')
689 if (isset($arUrl1[
"path"]) && isset($arUrl2[
"path"]) && $arUrl1[
"path"] != $arUrl2[
"path"])
691 $urlPath1 = pathinfo($arUrl1[
"path"]);
692 $urlPath2 = pathinfo($arUrl2[
"path"]);
695 isset($urlPath1[
"dirname"])
696 && $urlPath1[
"dirname"] !=
'.'
697 && isset($urlPath2[
"dirname"])
698 && $urlPath2[
"dirname"] !=
'.'
699 && $urlPath1[
"dirname"] != $urlPath2[
"dirname"]
705 if (isset($urlPath1[
"basename"]) && isset($urlPath2[
"basename"]) && $urlPath1[
"basename"] != $urlPath2[
"basename"])
711 if (isset($arUrl1[
"host"]) && isset($arUrl2[
"host"]) && $arUrl1[
"host"] != $arUrl2[
"host"])
716 if (isset($arUrl1[
"query"]) && isset($arUrl2[
"query"]) && $arUrl1[
"query"] == $arUrl2[
"query"])
721 if (is_array($arUrl1[
"ar_query"]) && is_array($arUrl2[
"ar_query"]))
723 foreach ($arUrl1[
"ar_query"] as $valName => $value)
725 if (!isset($arUrl2[
"ar_query"][$valName]) || $arUrl1[
"ar_query"][$valName] != $arUrl2[
"ar_query"][$valName])
727 if (!empty($arReqVals))
729 if (in_array($valName, $arReqVals))
736 if (!empty($arSkipVals))
738 if (in_array($valName, $arSkipVals))
750 if (!empty($arReqVals))
752 foreach ($arReqVals as $valName => $value)
754 if (isset($arUrl2[
"ar_query"][$valName]))
756 if (!isset($arUrl1[
"ar_query"][$valName]))
761 if ($arUrl1[
"ar_query"][$valName] != $arUrl2[
"ar_query"][$valName])
775 $parts = parse_url(
$url);
777 if (isset($parts[
'query']))
779 parse_str(urldecode($parts[
'query']), $parts[
'ar_query']);
789 if (isset($urlParams[
"ar_query"][self::FILTER_ID_VALUE]) && $urlParams[
"ar_query"][self::FILTER_ID_VALUE] !=
"")
791 return $urlParams[
"ar_query"][self::FILTER_ID_VALUE];
801 if (isset($urlParams[
"ar_query"][self::PRESET_ID_VALUE]) && $urlParams[
"ar_query"][self::PRESET_ID_VALUE] !=
"")
803 return $urlParams[
"ar_query"][self::PRESET_ID_VALUE];
static Compare($url1, $url2, $arReqVals=[], $arSkipVals=[])
static CheckFields($arFields)
static Add($arFields, $checkDuplicate=false)
static GetList($aSort=[], $arFilter=[])
static OnUserDelete($user_id)
static IsExistDuplicate($arFields)
static OnLanguageDelete($language_id)
static Update($ID, $arFields)
if(( $ACTION=='EXPORT_EDIT'||$ACTION=='EXPORT_COPY') &&$STEP==1) if($STEP > 1) if(( $ACTION=='EXPORT_EDIT'||$ACTION=='EXPORT_COPY') &&$STEP==2) if($STEP >2) $aMenu
htmlspecialcharsback($str)
FmtDate($str_date, $format=false, $site=false, $bSearchInSitesOnly=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
MkDateTime($strDT, $format="d.m.Y H:i:s")
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
$GLOBALS['_____370096793']