Your IP : 3.21.12.244


Current Path : /home/bitrix/ext_www/easy-comfort.com.ua/bitrix/components/bitrix/main.interface.form/
Upload File :
Current File : /home/bitrix/ext_www/easy-comfort.com.ua/bitrix/components/bitrix/main.interface.form/component.php

<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage main
 * @copyright 2001-2013 Bitrix
 */

/**
 * Bitrix vars
 *
 * @var array $arParams
 * @var array $arResult
 * @var CBitrixComponent $this
 * @global CMain $APPLICATION
 * @global CUser $USER
 */

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

if(!is_array($arParams["TABS"]))
	$arParams["TABS"] = array();

if($arParams["CAN_EXPAND_TABS"] !== 'N' && $arParams["CAN_EXPAND_TABS"] !== false)
	$arParams["CAN_EXPAND_TABS"] = true;
else
	$arParams["CAN_EXPAND_TABS"] = false;

if($arParams["SHOW_FORM_TAG"] !== 'N' && $arParams["SHOW_FORM_TAG"] !== false)
	$arParams["SHOW_FORM_TAG"] = true;
else
	$arParams["SHOW_FORM_TAG"] = false;

if($arParams["SHOW_SETTINGS"] !== 'N' && $arParams["SHOW_SETTINGS"] !== false)
	$arParams["SHOW_SETTINGS"] = true;
else
	$arParams["SHOW_SETTINGS"] = false;

if($arParams["USE_THEMES"] !== 'N' && $arParams["USE_THEMES"] !== false && CPageOption::GetOptionString("main.interface", "use_themes", "Y") !== "N")
	$arParams["USE_THEMES"] = true;
else
	$arParams["USE_THEMES"] = false;

if($arParams["MAX_FILE_SIZE"] == '')
	$arParams["MAX_FILE_SIZE"] = 102400;

$arParams["FORM_ID"] = preg_replace("/[^a-z0-9_]/i", "", $arParams["FORM_ID"]);

//*********************
//get saved options
//*********************
$aOptions = CUserOptions::GetOption("main.interface.form", $arParams["FORM_ID"], array());

if(!is_array($aOptions["tabs"]))
	$aOptions["tabs"] = array();

if($arParams["USE_THEMES"] && $arParams["THEME_GRID_ID"] <> '')
{
	$aGridOptions = CUserOptions::GetOption("main.interface.grid", $arParams["THEME_GRID_ID"], array());
	if($aGridOptions["theme"] <> '')
		$aOptions["theme"] = $aGridOptions["theme"];
}

$arResult["OPTIONS"] = $aOptions;

$arResult["GLOBAL_OPTIONS"] = CUserOptions::GetOption("main.interface", "global", array(), 0);

if($arParams["USE_THEMES"])
{
	if($arResult["GLOBAL_OPTIONS"]["theme_template"][SITE_TEMPLATE_ID] <> '')
		$arResult["GLOBAL_OPTIONS"]["theme"] = $arResult["GLOBAL_OPTIONS"]["theme_template"][SITE_TEMPLATE_ID];

	if($arResult["OPTIONS"]["theme"] == '')
		$arResult["OPTIONS"]["theme"] = $arResult["GLOBAL_OPTIONS"]["theme"];

	$arResult["OPTIONS"]["theme"] = preg_replace("/[^a-z0-9_.-]/i", "", $arResult["OPTIONS"]["theme"]);
}
else
{
	$arResult["OPTIONS"]["theme"] = '';
}

//Admin can change common settings
$arResult["IS_ADMIN"] = $USER->CanDoOperation('edit_other_settings');

//*********************
// Tabs manipulating
//*********************

$arAllFields = array();
$arPersistentFields = array();
$arResult["TABS"] = array();
foreach($arParams["TABS"] as $tab)
{
	$tabId = $tab["id"];
	$arResult["TABS"][$tabId] = $tab;
	$aFields = array();
	if(is_array($tab["fields"]))
	{
		foreach($tab["fields"] as $field)
		{
			$id = $field["id"];
			$arAllFields[$id] = $aFields[$id] = $field;

			if((isset($field["required"]) && $field["required"])
				|| (isset($field["persistent"]) && $field["persistent"]))
			{
				$arPersistentFields[$id] = array("tabId" => $tabId, "field" => $field);
			}
		}
	}
	$arResult["TABS"][$tab["id"]]["fields"] = $aFields;
}

$arResult["TABS_META"] = array();
$arResult["AVAILABLE_FIELDS"] = array();

if($arParams["SHOW_SETTINGS"])
{
	if(!empty($aOptions["tabs"]))
	{
		$aTabs = array();
		$aUsedFields = array();
		foreach($aOptions["tabs"] as $tab)
		{
			$aTabs[$tab["id"]] = $tab;
			$aTabs[$tab["id"]]["icon"] = $arResult["TABS"][$tab["id"]]["icon"];
			$aFields = array();
			if(is_array($tab["fields"]))
			{
				foreach($tab["fields"] as $field)
				{
					$id = $field["id"];
					$fieldType = isset($field["type"]) ? $field["type"] : "";
					if(isset($arAllFields[$id]))
					{
						$aFields[$id] = $arAllFields[$id];
						$aFields[$id]["name"] = $field["name"];
						$aUsedFields[$id] = true;

						unset($arPersistentFields[$id]);

					}
					elseif($fieldType === "section" || $fieldType === "")
					{
						$aFields[$id] = $field;
						$aFields[$id]["type"] = "section";

						unset($arPersistentFields[$id]);
					}
				}
			}
			$aTabs[$tab["id"]]["fields"] = $aFields;
		}

		reset($aTabs);
		$firstTabId = key($aTabs);
		if($firstTabId !== null)
		{
			foreach($arPersistentFields as $id => $fieldInfo)
			{
				$tabId = $fieldInfo["tabId"];
				$field = $fieldInfo["field"];

				if(!isset($aTabs[$tabId]))
				{
					$tabId = $firstTabId;
				}

				$fields = $aTabs[$tabId]["fields"];
				$firstField = reset($fields);
				if(!is_array($firstField))
				{
					$aTabs[$tabId]["fields"] = array($id => $field);
				}
				elseif(isset($firstField["type"]) && $firstField["type"] === "section")
				{
					//Insert in to beginning of first section of tab
					$aTabs[$tabId]["fields"] = array_slice($aTabs[$tabId]["fields"], 0, 1, true)
						+ array($id => $field)
						+ array_slice($aTabs[$tabId]["fields"], 1, null, true);
				}
				else
				{
					//Insert in to beginning of tab
					$aTabs[$tabId]["fields"] = array_merge(array($id => $field), $aTabs[$tabId]["fields"]);
				}

			}
		}
		$arMeta = $aTabs;

		foreach($arAllFields as $id => $field)
			if(!array_key_exists($id, $aUsedFields))
				$arResult["AVAILABLE_FIELDS"][$id] = array("id"=>$id, "name"=>$field["name"], "type"=>$field["type"]);
	
		if($arResult["OPTIONS"]["settings_disabled"] <> "Y")
		{
			$arResult["TABS"] = $aTabs;
		}
	}
	else
	{
		$arMeta = $arResult["TABS"];
	}
	
	//tabs info for settings
	foreach($arMeta as $id=>$tab)
	{
		$arResult["TABS_META"][$id] = array('id'=>$id, 'name'=>$tab['name'], 'title'=>$tab['title']);
		foreach($tab['fields'] as $field)
			$arResult["TABS_META"][$id]['fields'][$field['id']] = array("id"=>$field["id"], "name"=>$field["name"], "type"=>$field["type"]);
	}
}


$hidden = $arParams["FORM_ID"]."_active_tab";
if(isset($_REQUEST[$hidden]) && array_key_exists($_REQUEST[$hidden], $arResult["TABS"]))
{
	$arResult["SELECTED_TAB"] = $_REQUEST[$hidden];
}
else
{
	foreach($arResult["TABS"] as $tab)
	{
		$arResult["SELECTED_TAB"] = $tab["id"];
		break;
	}
}

//*********************
// Self-explaining
//*********************

$this->IncludeComponentTemplate();