Your IP : 3.147.53.17


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/mobile.menu.ext/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/mobile.menu.ext/.mobile_menu.php

<?php
use Bitrix\Main\Localization\Loc;

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

global $USER;

/**
 * @var CAllUser $USER
 */

$allowedFeatures = array();
if (CModule::IncludeModule("socialnetwork"))
{
	$arUserActiveFeatures = CSocNetFeatures::getActiveFeatures(SONET_ENTITY_USER, $USER->getId());
	$arSocNetFeaturesSettings = CSocNetAllowed::getAllowedFeatures();

	$allowedFeatures = array();
	foreach (array("tasks", "files", "calendar") as $feature)
	{
		if (in_array($feature, array('calendar')))
		{
			$allowedFeatures[$feature] =
				array_key_exists($feature, $arSocNetFeaturesSettings) &&
				array_key_exists("allowed", $arSocNetFeaturesSettings[$feature]) &&
				(
					(
						in_array(SONET_ENTITY_USER, $arSocNetFeaturesSettings[$feature]["allowed"]) &&
						is_array($arUserActiveFeatures) &&
						in_array($feature, $arUserActiveFeatures)
					)
					|| in_array(SONET_ENTITY_GROUP, $arSocNetFeaturesSettings[$feature]["allowed"])
				)
			;
		}
		else
		{
			$allowedFeatures[$feature] =
				array_key_exists($feature, $arSocNetFeaturesSettings) &&
				array_key_exists("allowed", $arSocNetFeaturesSettings[$feature]) &&
				in_array(SONET_ENTITY_USER, $arSocNetFeaturesSettings[$feature]["allowed"]) &&
				is_array($arUserActiveFeatures) &&
				in_array($feature, $arUserActiveFeatures)
			;
		}
	}
}

$isExtranetUser = (\CModule::includeModule("extranet") && !\CExtranet::isIntranetUser());
$diskEnabled = \Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::includeModule('disk');

$menuStructure = array(
	array(
		"name"=>Loc::getMessage("MB_SEC_FAVORITE"),
		"hidden"=>false,
		"sort"=>100,
		"items"=> array(
			array(
				"name"=>Loc::getMessage("MB_LIVE_FEED"),
				"attrs"=>array(
					"data-url"=> SITE_DIR."mobile/",
					"data-modern-style"=>"Y",
					"data-name"=> Loc::getMessage("MB_LIVE_FEED"),
					"data-page-id"=>"main_feed",
					"id"=>"main_feed",
				),
				"counter"=>array(
					"id"=>"menu-counter-live-feed",
				),
				"hidden"=>false,
				"css_class"=> "menu-icon-lenta",
			),
			array(
				"name"=>Loc::getMessage("MB_CHAT_AND_CALLS"),
				"hidden"=>false,
				"attrs"=>array(
					"onclick"=> "BXIM.openRecentList();",
				),
				"counter"=>array(
					"id"=>"menu-counter-im-message",
				),
				"css_class"=> "menu-icon-msg",
			),
			array(
				"name"=>Loc::getMessage("MB_TASKS_MAIN_MENU_ITEM"),
				"attrs"=>array(
					"data-url"=> SITE_DIR."mobile/tasks/snmrouter/?routePage=roles",
					"data-name"=> Loc::getMessage("MB_TASKS_MAIN_MENU_ITEM"),
					"data-modern-style"=>"Y",
					"data-page-id"=>"tasks_list",
					"id"=>"tasks_list",
				),
				"counter"=>array(
					"id"=>"menu-counter-tasks_total",
				),
				"hidden"=>!(\Bitrix\Main\ModuleManager::isModuleInstalled('tasks') && $allowedFeatures["tasks"]),
				"css_class"=> "menu-icon-tasks",
			),
			array(
				"name"=>Loc::getMessage("MB_BP_MAIN_MENU_ITEM"),
				"attrs"=>array(
					"data-url"=> SITE_DIR."mobile/bp/?USER_STATUS=0",
					"data-name"=> Loc::getMessage("MB_BP_MAIN_MENU_ITEM"),
					"data-modern-style"=>"Y",
					"data-page-id"=>"bp_list",
					"id"=>"bp_list",
				),
				"counter"=>array(
					"id"=>"menu-counter-bp_tasks",
				),

				"hidden"=> ($isExtranetUser || !\Bitrix\Main\ModuleManager::isModuleInstalled("bizproc")),
				"css_class"=> "menu-icon-bizproc",
			),
			array(
				"name"=>Loc::getMessage("MB_CALENDAR_LIST"),
				"attrs"=>array(
					"onclick"=>"MobileMenu.calendarList(". $USER->GetID().");",
					"id"=>"calendar_list",
				),
				"css_class"=> "menu-icon-calendar",
				"hidden"=>!(\Bitrix\Main\ModuleManager::isModuleInstalled('calendar') && $allowedFeatures["calendar"]),
			),

			array(
				"name"=>Loc::getMessage("MB_CURRENT_USER_FILES_MAIN_MENU_ITEM_NEW"),
				"attrs"=>array(
					"onclick"=>"MobileMenu.diskList({type: 'user', entityId:".$USER->GetID()."}, '/');",
					"id"=>"doc_user",
				),
				"hidden"=> !$diskEnabled || !$allowedFeatures["files"],
				"id"=>"doc_user",
				"css_class"=> "menu-icon-disk",
			),
			array(
				"name"=>Loc::getMessage("MB_CURRENT_USER_FILES_MAIN_MENU_ITEM_NEW"),
				"attrs"=>array(
					"onclick"=>"MobileMenu.webdavList('user/".$USER->GetID()."/');",
					"id"=>"doc_user",
				),
				"hidden"=> $diskEnabled || !$allowedFeatures["files"],
				"css_class"=> "menu-icon-disk",
			),
			array(
				"name"=>Loc::getMessage($isExtranetUser ? "MB_CONTACTS" : "MB_COMPANY"),
				"attrs"=>array(
					"onclick"=>"MobileMenu.userList(".($isExtranetUser?"true":"false").");",
				),
				"css_class"=> "menu-icon-employees",
			),
			array(
				"name"=>Loc::getMessage("MB_SHARED_FILES_MAIN_MENU_ITEM_NEW"),
				"attrs"=>array(
					"onclick"=>"MobileMenu.diskList({type: 'common', entityId:'shared_files_s1'}, '/');",
					"id"=>"doc_shared",
				),
				"hidden"=> !$diskEnabled || $isExtranetUser || !$allowedFeatures["files"],

				"css_class"=> "menu-icon-files",
			),
			array(
				"name"=>Loc::getMessage("MB_SHARED_FILES_MAIN_MENU_ITEM_NEW"),
				"attrs"=>array(
					"onclick"=>"MobileMenu.webdavList('shared/');",
					"id"=>"doc_shared",
				),
				"hidden"=> $diskEnabled || $isExtranetUser || !$allowedFeatures["files"],

				"css_class"=> "menu-icon-files",
			),
		)
	)
);

/**
 * Marketplace apps
 */

if (CModule::IncludeModule("rest"))
{
	$arMenuApps = array();
	$arUserGroupCode = $USER->GetAccessCodes();
	$numLocalApps = 0;

	$dbApps = \Bitrix\Rest\AppTable::getList(array(
		'order' => array("ID" => "ASC"),
		'filter' => array(
			"=ACTIVE" => \Bitrix\Rest\AppTable::ACTIVE,
			"=MOBILE" => \Bitrix\Rest\AppTable::ACTIVE
		),
		'select' => array(
			'ID', 'STATUS', 'ACCESS', 'MENU_NAME' => 'LANG.MENU_NAME', 'MENU_NAME_DEFAULT' => 'LANG_DEFAULT.MENU_NAME', 'MENU_NAME_LICENSE' => 'LANG_LICENSE.MENU_NAME'
		)
	));

	while ($arApp = $dbApps->fetch())
	{
		if ($arApp["STATUS"] == \Bitrix\Rest\AppTable::STATUS_LOCAL)
		{
			$numLocalApps++;
		}

		$lang = in_array(LANGUAGE_ID, array("ru", "en", "de")) ? LANGUAGE_ID : LangSubst(LANGUAGE_ID);
		if ($arApp["MENU_NAME"] <> '' || $arApp['MENU_NAME_DEFAULT'] <> '' || $arApp['MENU_NAME_LICENSE'] <> '')
		{
			$appRightAvailable = false;
			if (\CRestUtil::isAdmin())
			{
				$appRightAvailable = true;
			}
			elseif (!empty($arApp["ACCESS"]))
			{
				$rights = explode(",", $arApp["ACCESS"]);
				foreach ($rights as $rightID)
				{
					if (in_array($rightID, $arUserGroupCode))
					{
						$appRightAvailable = true;
						break;
					}
				}
			}
			else
			{
				$appRightAvailable = true;
			}

			if ($appRightAvailable)
			{
				$appName = $arApp["MENU_NAME"];

				if ($appName == '')
				{
					$appName = $arApp['MENU_NAME_DEFAULT'];
				}
				if ($appName == '')
				{
					$appName = $arApp['MENU_NAME_LICENSE'];
				}

				$arMenuApps[] = Array(
					"name" => htmlspecialcharsbx($appName),
					"attrs"=>array(
						"id" => $arApp["ID"],
						"data-mp-app-id"=>$arApp["ID"],
						"data-mp-app"=>"Y",
						"data-mp-app-name"=>htmlspecialcharsbx($appName),
						"data-url" => "/mobile/marketplace/?id=" . $arApp["ID"],
					)
				);
			}
		}
	}

	if(count($arMenuApps) > 0)
	{
		$menuStructure[] = array(
			"name"=>Loc::getMessage("MB_MARKETPLACE_GROUP_TITLE"),
			"sort"=>110,
			"hidden"=>CMobile::getInstance()->getApiVersion()<=15,
			"items"=> $arMenuApps
		);
	}
}

/**
 * CRM menu
 */

if (
	!$bExtranet
	&& IsModuleInstalled('crm')
	&& CModule::IncludeModule('crm')
	&& CCrmPerms::IsAccessEnabled()
)
{
	$userPerms = CCrmPerms::GetCurrentUserPermissions();
	$menuStructure[] = array(
		"name"=>"CRM",
		"sort"=>120,
		"hidden"=>false,
		"items"=>array(
			array(
				"name"=>Loc::getMessage("MB_CRM_ACTIVITY"),
				"hidden"=>false,
				"attrs"=>array(
					"data-url"=> "/mobile/crm/activity/list.php",
					"data-modern-style"=>"N",
					"data-name"=>Loc::getMessage("MB_CRM_ACTIVITY"),
					"data-page-id"=>"crm_activity_list",
					"id"=>"crm_activity_list",
				),
				"css_class"=> "menu-icon-mybusiness",
			),
			array(
				"name"=>Loc::getMessage("MB_CRM_CONTACT"),
				"hidden"=>$userPerms->HavePerm('CONTACT', BX_CRM_PERM_NONE, 'READ'),
				"attrs"=>array(
					"data-url"=> "/mobile/crm/contact/",
					"data-modern-style"=>"Y",
					"data-name"=>Loc::getMessage("MB_CRM_CONTACT"),
					"data-page-id"=>"crm_contact_list",
					"id"=>"crm_contact_list",
				),
				"css_class"=> "menu-icon-contacts",
			),
			array(
				"name"=>Loc::getMessage("MB_CRM_COMPANY"),
				"hidden"=>$userPerms->HavePerm('COMPANY', BX_CRM_PERM_NONE, 'READ'),
				"attrs"=>array(
					"data-url"=> "/mobile/crm/company/",
					"data-modern-style"=>"Y",
					"data-name"=>Loc::getMessage("MB_CRM_COMPANY"),
					"data-page-id"=>"crm_company_list",
					"id"=>"crm_company_list",
				),
				"css_class"=> "menu-icon-company",
			),
			array(
				"name"=>Loc::getMessage("MB_CRM_DEAL"),
				"hidden"=>$userPerms->HavePerm('DEAL', BX_CRM_PERM_NONE, 'READ'),
				"attrs"=>array(
					"data-url"=> "/mobile/crm/deal/",
					"data-modern-style"=>"Y",
					"data-name"=>Loc::getMessage("MB_CRM_DEAL"),
					"data-page-id"=>"crm_deal_list",
					"id"=>"crm_deal_list",
				),
				"css_class"=> "menu-icon-deals",
			),
			array(
				"name"=>Loc::getMessage("MB_CRM_INVOICE"),
				"hidden"=>$userPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'READ'),
				"attrs"=>array(
					"data-url"=> "/mobile/crm/invoice/",
					"data-modern-style"=>"Y",
					"data-name"=>Loc::getMessage("MB_CRM_INVOICE"),
					"data-page-id"=>"crm_invoice_list",
					"id"=>"crm_invoice_list",
				),
				"css_class"=> "menu-icon-invoice",
			),
			array(
				"name"=>Loc::getMessage("MB_CRM_QUOTE"),
				"hidden"=>$userPerms->HavePerm('QUOTE', BX_CRM_PERM_NONE, 'READ'),
				"attrs"=>array(
					"data-url"=> "/mobile/crm/quote/",
					"data-modern-style"=>"Y",
					"data-name"=>Loc::getMessage("MB_CRM_QUOTE"),
					"data-page-id"=>"crm_quote_list",
					"id"=>"crm_quote_list",
				),
				"css_class"=> "menu-icon-quote",
			),
			array(
				"name"=>Loc::getMessage("MB_CRM_LEAD"),
				"hidden"=>$userPerms->HavePerm('LEAD', BX_CRM_PERM_NONE, 'READ'),
				"attrs"=>array(
					"data-url"=> "/mobile/crm/lead/",
					"data-modern-style"=>"Y",
					"data-name"=>Loc::getMessage("MB_CRM_LEAD"),
					"data-page-id"=>"crm_lead_list",
					"id"=>"crm_lead_list",
				),
				"css_class"=> "menu-icon-leads",
			),
			array(
				"name"=>Loc::getMessage("MB_CRM_PRODUCT"),
				"hidden"=> !$userPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'READ'),
				"attrs"=>array(
					"data-url"=> "/mobile/crm/product/",
					"data-modern-style"=>"Y",
					"data-name"=>Loc::getMessage("MB_CRM_PRODUCT"),
					"data-page-id"=>"crm_product_list",
					"id"=>"crm_product_list",
				),
				"css_class"=> "menu-icon-products",
			),
		)
	);
}


/**
 * Groups
 */

$groups = array();
$extranetGroups = array();


if (CModule::IncludeModule("socialnetwork"))
{
	$strGroupSubjectLinkTemplate = SITE_DIR . "mobile/log/?group_id=#group_id#";
	$extGroupID = array();
	$arGroupFilterMy = array(
		"USER_ID" => $USER->GetID(),
		"<=ROLE" => SONET_ROLES_USER,
		"GROUP_ACTIVE" => "Y",
		"!GROUP_CLOSED" => "Y",
	);

	// Extranet group
	if (CModule::IncludeModule("extranet") && !CExtranet::IsExtranetSite())
	{
		$arGroupFilterMy["GROUP_SITE_ID"] = CExtranet::GetExtranetSiteID();
		$dbGroups = CSocNetUserToGroup::GetList(
			array("GROUP_NAME" => "ASC"),
			$arGroupFilterMy,
			false,
			false,
			array('ID', 'GROUP_ID', 'GROUP_NAME', 'GROUP_SITE_ID')
		);
		$arExtSGGroupTmp = array();
		while ($arGroups = $dbGroups->GetNext())
		{
			$arExtSGGroupTmp[$arGroups["GROUP_ID"]] = array(
				"name"=>$arGroups["GROUP_NAME"],
				"attrs"=>array(
					"data-name"=>$arGroups["GROUP_NAME"],
					"data-url"=>str_replace("#group_id#", $arGroups["GROUP_ID"], $strGroupSubjectLinkTemplate),
					"data-modern-style"=>"Y"
				),
				"counter"=>array(
					"id" => "SG" . $arGroups["GROUP_ID"]
				)
			);

			$extGroupID[] = $arGroups["GROUP_ID"];
		}
	}

	$arGroupIDCurrentSite = array();

	// Socialnetwork
	$arGroupFilterMy["GROUP_SITE_ID"] = SITE_ID;
	$dbGroups = CSocNetUserToGroup::GetList(
		array("GROUP_NAME" => "ASC"),
		$arGroupFilterMy,
		false,
		false,
		array('ID', 'GROUP_ID', 'GROUP_NAME', 'GROUP_SITE_ID')
	);

	while ($arGroups = $dbGroups->GetNext())
	{
		$arGroupIDCurrentSite[] = $arGroups['GROUP_ID'];

		if (in_array($arGroups['GROUP_ID'], $extGroupID))
		{
			continue;
		}

		$groups[] = array(
			"name"=>$arGroups["GROUP_NAME"],
			"attrs"=>array(
				"data-name"=>$arGroups["GROUP_NAME"],
				"data-url"=>str_replace("#group_id#", $arGroups["GROUP_ID"], $strGroupSubjectLinkTemplate),
				"data-modern-style"=>"Y"
			),
			"counter"=>array(
				"id" => "SG" . $arGroups["GROUP_ID"]
			)
		);
	}

	foreach ($arExtSGGroupTmp as $groupID => $arGroupItem)
	{
		if (in_array($groupID, $arGroupIDCurrentSite))
		{
			$extranetGroups[] = $arGroupItem;
		}
	}
}


if(!empty($groups))
{
	$menuStructure[] = array(
		"name"=> Loc::getMessage("MB_SEC_GROUPS"),
		"sort"=>130,
		"hidden"=>false,
		"css_style"=>"menu-section-groups",
		"items"=>$groups
	);
}

if(!empty($extranetGroups))
{
	$menuStructure[] = array(
		"name"=> Loc::getMessage("MB_SEC_EXTRANET"),
		"sort"=>140,
		"hidden"=>false,
		"css_style"=>"menu-section-groups",
		"items"=>$extranetGroups
	);
}



return $menuStructure;