示例#1
0
function addValueToList($field, $entity, $props)
{
    $raw = CUserTypeEntity::GetList(array($by => $order), array('FIELD_NAME' => $field, 'ENTITY_ID' => $entity))->Fetch();
    $fields = array();
    $enum = CUserFieldEnum::GetList(array(), array("USER_FIELD_ID" => $raw['ID']));
    while ($el = $enum->GetNext()) {
        $fields[$el['XML_ID']] = $el;
    }
    if (!isset($fields[$props['XML_ID']])) {
        $obEnum = new CUserFieldEnum();
        $obEnum->SetEnumValues($raw['ID'], array("n0" => $props));
    }
}
示例#2
0
 function InstallDBUserFields()
 {
     $ImportantUserFields = $this->GetIdeaUserFields();
     foreach ($ImportantUserFields as $UserFieldName => $Exists) {
         if (!$Exists) {
             $UserType = new CUserTypeEntity();
             switch ($UserFieldName) {
                 case "UF_CATEGORY_CODE":
                     $UserType->Add(array("ENTITY_ID" => "BLOG_POST", "FIELD_NAME" => $UserFieldName, "USER_TYPE_ID" => "string", "IS_SEARCHABLE" => "N", "EDIT_FORM_LABEL" => array(LANGUAGE_ID => GetMessage("IDEA_UF_CATEGORY_CODE_DESCRIPTION"))));
                     break;
                 case "UF_ANSWER_ID":
                     $UserType->Add(array("ENTITY_ID" => "BLOG_POST", "FIELD_NAME" => $UserFieldName, "USER_TYPE_ID" => "integer", "IS_SEARCHABLE" => "N", "MULTIPLE" => "Y", "EDIT_FORM_LABEL" => array(LANGUAGE_ID => GetMessage("IDEA_UF_ANSWER_ID_DESCRIPTION"))));
                     break;
                 case "UF_ORIGINAL_ID":
                     $UserType->Add(array("ENTITY_ID" => "BLOG_POST", "FIELD_NAME" => $UserFieldName, "USER_TYPE_ID" => "string", "IS_SEARCHABLE" => "N", "EDIT_FORM_LABEL" => array(LANGUAGE_ID => GetMessage("IDEA_UF_ORIGINAL_ID_DESCRIPTION"))));
                     break;
                 case "UF_STATUS":
                     $ID = $UserType->Add(array("ENTITY_ID" => "BLOG_POST", "FIELD_NAME" => $UserFieldName, "USER_TYPE_ID" => "enumeration", "IS_SEARCHABLE" => "N", "EDIT_FORM_LABEL" => array(LANGUAGE_ID => GetMessage("IDEA_UF_STATUS_DESCRIPTION"))));
                     if (intval($ID) > 0) {
                         $UserTypeEnum = new CUserFieldEnum();
                         $UserTypeEnum->SetEnumValues($ID, array("n0" => array("SORT" => 100, "XML_ID" => "NEW", "VALUE" => GetMessage("IDEA_UF_STATUS_NEW_TITLE"), "DEF" => "Y"), "n1" => array("SORT" => 200, "XML_ID" => "PROCESSING", "VALUE" => GetMessage("IDEA_UF_STATUS_PROCESSING_TITLE"), "DEF" => "N"), "n2" => array("SORT" => 300, "XML_ID" => "COMPLETED", "VALUE" => GetMessage("IDEA_UF_STATUS_COMPLETED_TITLE"), "DEF" => "N")));
                     }
                     break;
             }
         }
     }
 }
示例#3
0
文件: Uf.php 项目: marvin255/bxar
 /**
  * Возвращает список значений поля типа список
  * @return array
  */
 public static function getUserFieldEnum($entity)
 {
     if (!isset(self::$_uf_enum[$entity])) {
         self::$_uf_enum[$entity] = array();
         $array = array();
         $rsData = \CUserFieldEnum::GetList(array(), ['USER_FIELD_ID' => $entity]);
         while ($ob = $rsData->Fetch()) {
             self::$_uf_enum[$entity][] = $ob;
         }
     }
     return self::$_uf_enum[$entity];
 }
foreach ($arResult['ITEMS'] as &$arItem) {
    if (is_array($arItem['PREVIEW_PICTURE'])) {
        $file = CFile::ResizeImageGet($arItem['PREVIEW_PICTURE'], array('width' => 124, 'height' => 167), BX_RESIZE_IMAGE_EXACT, true);
        $arItem['RESIZE_PICTURE'] = array_change_key_case($file, CASE_UPPER);
        $arItem['HAS_PIC'] = 'Y';
    }
    $hlblock = \Bitrix\Highloadblock\HighloadBlockTable::getList(array("filter" => array('TABLE_NAME' => $arItem['PROPERTIES']['BG']['USER_TYPE_SETTINGS']['TABLE_NAME'])))->fetch();
    if (!isset($hlblock['ID'])) {
        continue;
    }
    $entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock);
    $entity_data_class = $entity->getDataClass();
    $rsPropEnums = $entity_data_class::getList(array('select' => array('ID', 'UF_NAME', 'UF_FILE', 'UF_TYPE'), 'filter' => array('UF_XML_ID' => $arItem['PROPERTIES']['BG']['VALUE']), 'order' => array('ID' => 'ASC'), 'limit' => 100));
    while ($arEnum = $rsPropEnums->fetch()) {
        if ($arEnum["UF_TYPE"]) {
            $rsGender = CUserFieldEnum::GetList(array(), array("ID" => $arEnum["UF_TYPE"]));
            if ($arGender = $rsGender->GetNext()) {
                $arItem['BG_TYPE'] = $arGender["XML_ID"];
            }
        }
        $arItem['PROPERTIES']['BG']['BG_SRC'] = CFile::GetPath($arEnum['UF_FILE']);
    }
    $arResult['ACTION_END'][$arItem['ID']] = $arItem["DATE_ACTIVE_TO"];
    $seconds = strtotime($arItem["DATE_ACTIVE_TO"]) - time();
    if ($seconds > 0) {
        $dt = new DateTime('@' . $seconds, new DateTimeZone('UTC'));
        $arItem['ACTION_END'] = $dt->format('z');
    }
}
$cp = $this->__component;
if (is_object($cp)) {
示例#5
0
 public static function GetDocument($documentId)
 {
     $arDocumentID = self::GetDocumentInfo($documentId);
     if (empty($arDocumentID)) {
         throw new CBPArgumentNullException('documentId');
     }
     $arResult = null;
     switch ($arDocumentID['TYPE']) {
         case 'CONTACT':
             $dbDocumentList = CCrmContact::GetListEx(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), false, false, array('*', 'UF_*'));
             break;
         case 'COMPANY':
             $dbDocumentList = CCrmCompany::GetListEx(array(), array('ID' => $arDocumentID['ID'], 'CHECK_PERMISSIONS' => 'N'), false, false, array('*', 'UF_*'));
             break;
         case 'DEAL':
             $dbDocumentList = CCrmDeal::GetListEx(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), false, false, array('*', 'UF_*'));
             break;
         case 'LEAD':
             $dbDocumentList = CCrmLead::GetListEx(array(), array('ID' => $arDocumentID['ID'], "CHECK_PERMISSIONS" => "N"), false, false, array('*', 'UF_*'));
             break;
     }
     if (($objDocument = $dbDocumentList->Fetch()) !== false) {
         $assignedByID = isset($objDocument['ASSIGNED_BY_ID']) ? intval($objDocument['ASSIGNED_BY_ID']) : 0;
         if ($assignedByID > 0) {
             $dbUsers = CUser::GetList($sortBy = 'id', $sortOrder = 'asc', array('ID' => $assignedByID), array('SELECT' => array('EMAIL')));
             $arUser = is_object($dbUsers) ? $dbUsers->Fetch() : null;
             $objDocument['ASSIGNED_BY_EMAIL'] = is_array($arUser) ? $arUser['EMAIL'] : '';
         }
         $arUserField = array('CREATED_BY', 'CREATED_BY_ID', 'MODIFY_BY', 'MODIFY_BY_ID', 'ASSIGNED_BY', 'ASSIGNED_BY_ID');
         foreach ($arUserField as $sField) {
             if (isset($objDocument[$sField])) {
                 $objDocument[$sField] = 'user_' . $objDocument[$sField];
             }
         }
         if (COption::GetOptionString('crm', 'bp_version', 2) == 2) {
             $userFieldsList = null;
             switch ($arDocumentID['TYPE']) {
                 case 'CONTACT':
                     $userFieldsList = CCrmContact::GetUserFields();
                     break;
                 case 'COMPANY':
                     $userFieldsList = CCrmCompany::GetUserFields();
                     break;
                 case 'DEAL':
                     $userFieldsList = CCrmDeal::GetUserFields();
                     break;
                 case 'LEAD':
                     $userFieldsList = CCrmLead::GetUserFields();
                     break;
             }
             if (is_array($userFieldsList)) {
                 foreach ($userFieldsList as $userFieldName => $userFieldParams) {
                     if (!isset($objDocument[$userFieldName])) {
                         $objDocument[$userFieldName] = $objDocument[$userFieldName . '_PRINTABLE'] = '';
                         continue;
                     }
                     $fieldValue = $objDocument[$userFieldName];
                     $fieldTypeID = isset($userFieldParams['USER_TYPE']) ? $userFieldParams['USER_TYPE']['USER_TYPE_ID'] : '';
                     $isFieldMultiple = isset($userFieldParams['MULTIPLE']) && $userFieldParams['MULTIPLE'] === 'Y';
                     $fieldSettings = isset($userFieldParams['SETTINGS']) ? $userFieldParams['SETTINGS'] : array();
                     if ($fieldTypeID == 'employee') {
                         if (!$isFieldMultiple) {
                             $objDocument[$userFieldName] = 'user_' . $fieldValue;
                         } else {
                             $objDocument[$userFieldName] = array();
                             foreach ($fieldValue as $value) {
                                 $objDocument[$userFieldName][] = 'user_' . $value;
                             }
                         }
                     } elseif ($fieldTypeID == 'crm') {
                         $defaultTypeName = '';
                         foreach ($fieldSettings as $typeName => $flag) {
                             if ($flag === 'Y') {
                                 $defaultTypeName = $typeName;
                                 break;
                             }
                         }
                         if (!$isFieldMultiple) {
                             $objDocument[$userFieldName . '_PRINTABLE'] = self::PrepareCrmUserTypeValueView($fieldValue, $defaultTypeName);
                         } else {
                             $views = array();
                             foreach ($fieldValue as $value) {
                                 $views[] = self::PrepareCrmUserTypeValueView($value, $defaultTypeName);
                             }
                             $objDocument[$userFieldName . '_PRINTABLE'] = $views;
                         }
                     } elseif ($fieldTypeID == 'enumeration') {
                         $valueInfos = array();
                         if (!empty($fieldValue)) {
                             $dbRes = CUserFieldEnum::GetList(array(), array('ID' => $fieldValue));
                             while ($valueData = $dbRes->Fetch()) {
                                 $valueInfos[] = array('NAME' => $valueData['XML_ID'], 'LABEL' => $valueData['VALUE']);
                             }
                         }
                         $valueInfoQty = count($valueInfos);
                         if ($valueInfoQty === 0) {
                             $objDocument[$userFieldName] = $objDocument[$userFieldName . '_PRINTABLE'] = '';
                         } elseif ($valueInfoQty === 1) {
                             $valueInfo = $valueInfos[0];
                             $objDocument[$userFieldName] = $valueInfo['NAME'];
                             $objDocument[$userFieldName . '_PRINTABLE'] = $valueInfo['LABEL'];
                         } else {
                             $names = array();
                             $labels = array();
                             foreach ($valueInfos as &$valueInfo) {
                                 $names[] = $valueInfo['NAME'];
                                 $labels[] = $valueInfo['LABEL'];
                             }
                             unset($valueInfo);
                             $objDocument[$userFieldName] = $names;
                             $objDocument[$userFieldName . '_PRINTABLE'] = implode(', ', $labels);
                         }
                     } elseif ($fieldTypeID === 'boolean') {
                         //Convert UF boolean values (1/0) in to bizproc boolean values (Y/N) is display type checkbox
                         if (isset($fieldSettings['DISPLAY']) && $fieldSettings['DISPLAY'] === 'CHECKBOX') {
                             $objDocument[$userFieldName] = $fieldValue > 0 ? 'Y' : 'N';
                         }
                         $objDocument[$userFieldName . '_PRINTABLE'] = GetMessage($fieldValue > 0 ? 'MAIN_YES' : 'MAIN_NO');
                     }
                 }
             }
         }
         $res = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $arDocumentID['TYPE'], 'ELEMENT_ID' => $arDocumentID['ID']));
         while ($ar = $res->Fetch()) {
             if (!isset($objDocument[$ar['TYPE_ID']])) {
                 $objDocument[$ar['TYPE_ID']] = array();
             }
             $objDocument[$ar['TYPE_ID']]['n0' . $ar['ID']] = array('VALUE' => $ar['VALUE'], 'VALUE_TYPE' => $ar['VALUE_TYPE']);
             if (!isset($objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE']])) {
                 $objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE']] = array();
             }
             $objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE']][] = $ar['VALUE'];
             if (!isset($objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE'] . "_PRINTABLE"])) {
                 $objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE'] . "_PRINTABLE"] = "";
             }
             $objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE'] . "_PRINTABLE"] .= (strlen($objDocument[$ar['TYPE_ID'] . "_" . $ar['VALUE_TYPE'] . "_PRINTABLE"]) > 0 ? ", " : "") . $ar['VALUE'];
             if (!isset($objDocument[$ar['TYPE_ID'] . "_PRINTABLE"])) {
                 $objDocument[$ar['TYPE_ID'] . "_PRINTABLE"] = "";
             }
             $objDocument[$ar['TYPE_ID'] . "_PRINTABLE"] .= (strlen($objDocument[$ar['TYPE_ID'] . "_PRINTABLE"]) > 0 ? ", " : "") . $ar['VALUE'];
         }
         $multiFieldTypes = CCrmFieldMulti::GetEntityTypeList();
         foreach ($multiFieldTypes as $typeId => $arFields) {
             if (!isset($objDocument[$typeId])) {
                 $objDocument[$typeId] = array();
             }
             $printableFieldName = $typeId . '_PRINTABLE';
             if (!isset($objDocument[$printableFieldName])) {
                 $objDocument[$printableFieldName] = '';
             }
             foreach ($arFields as $valueType => $valueName) {
                 $fieldName = $typeId . '_' . $valueType;
                 if (!isset($objDocument[$fieldName])) {
                     $objDocument[$fieldName] = array('');
                 }
                 $printableFieldName = $fieldName . '_PRINTABLE';
                 if (!isset($objDocument[$printableFieldName])) {
                     $objDocument[$printableFieldName] = '';
                 }
             }
         }
         // Preparation of user names -->
         $nameFormat = CSite::GetNameFormat(false);
         if (isset($objDocument['ASSIGNED_BY_ID'])) {
             $objDocument['ASSIGNED_BY_PRINTABLE'] = CUser::FormatName($nameFormat, array('LOGIN' => isset($objDocument['ASSIGNED_BY_LOGIN']) ? $objDocument['ASSIGNED_BY_LOGIN'] : '', 'NAME' => isset($objDocument['ASSIGNED_BY_NAME']) ? $objDocument['ASSIGNED_BY_NAME'] : '', 'LAST_NAME' => isset($objDocument['ASSIGNED_BY_LAST_NAME']) ? $objDocument['ASSIGNED_BY_LAST_NAME'] : '', 'SECOND_NAME' => isset($objDocument['ASSIGNED_BY_SECOND_NAME']) ? $objDocument['ASSIGNED_BY_SECOND_NAME'] : ''), true, false);
         }
         if (isset($objDocument['CREATED_BY_ID'])) {
             $objDocument['CREATED_BY_PRINTABLE'] = CUser::FormatName($nameFormat, array('LOGIN' => isset($objDocument['CREATED_BY_LOGIN']) ? $objDocument['CREATED_BY_LOGIN'] : '', 'NAME' => isset($objDocument['CREATED_BY_NAME']) ? $objDocument['CREATED_BY_NAME'] : '', 'LAST_NAME' => isset($objDocument['CREATED_BY_LAST_NAME']) ? $objDocument['CREATED_BY_LAST_NAME'] : '', 'SECOND_NAME' => isset($objDocument['CREATED_BY_SECOND_NAME']) ? $objDocument['CREATED_BY_SECOND_NAME'] : ''), true, false);
         }
         // <-- Preparation of user names
         switch ($arDocumentID['TYPE']) {
             case 'DEAL':
                 CCrmDocumentDeal::PrepareDocument($objDocument);
                 break;
             case 'LEAD':
                 CCrmDocumentLead::PrepareDocument($objDocument);
                 break;
             case 'CONTACT':
                 CCrmDocumentContact::PrepareDocument($objDocument);
                 break;
         }
         return $objDocument;
     }
     return null;
 }
示例#6
0
    foreach ($arUserFields as $arFields) {
        $dbRes = CUserTypeEntity::GetList(array(), array("ENTITY_ID" => $arFields["ENTITY_ID"], "FIELD_NAME" => $arFields["FIELD_NAME"]));
        if ($dbRes->Fetch()) {
            continue;
        }
        $arLabelNames = array();
        foreach ($arLanguages as $languageID) {
            WizardServices::IncludeServiceLang("references.php", $languageID);
            $arLabelNames[$languageID] = GetMessage($arFields["FIELD_NAME"]);
        }
        $arFields["EDIT_FORM_LABEL"] = $arLabelNames;
        $arFields["LIST_COLUMN_LABEL"] = $arLabelNames;
        $arFields["LIST_FILTER_LABEL"] = $arLabelNames;
        $ID_USER_FIELD = $obUserField->Add($arFields);
        if ($arFields['FIELD_NAME'] == 'UF_TYPE') {
            $obEnum = new CUserFieldEnum();
            $obEnum->SetEnumValues($ID_USER_FIELD, array('n0' => array('VALUE' => GetMessage('UF_TYPE_sv'), 'USER_FIELD_ID' => $ID_USER_FIELD, 'DEF' => 'N', 'SORT' => 100, 'XML_ID' => 'sv'), 'n1' => array('VALUE' => GetMessage('UF_TYPE_tm'), 'USER_FIELD_ID' => $ID_USER_FIELD, 'DEF' => 'N', 'SORT' => 200, 'XML_ID' => 'tm')));
        }
    }
}
$dbHblock = HL\HighloadBlockTable::getList(array("filter" => array("TABLE_NAME" => "backgrounddet")));
$br = $dbHblock->Fetch();
if (!$br) {
    $data = array('NAME' => 'BackgroundDet', 'TABLE_NAME' => 'backgrounddet');
    $result = HL\HighloadBlockTable::add($data);
    $ID = $result->getId();
    $_SESSION["YOUSTORE_HBLOCK_DBACK_ID"] = $ID;
    $hldata = HL\HighloadBlockTable::getById($ID)->fetch();
    $hlentity = HL\HighloadBlockTable::compileEntity($hldata);
    //adding user fields
    $arUserFields = array(array('ENTITY_ID' => 'HLBLOCK_' . $ID, 'FIELD_NAME' => 'UF_NAME', 'USER_TYPE_ID' => 'string', 'XML_ID' => 'UF_DBACK_NAME', 'SORT' => '100', 'MULTIPLE' => 'N', 'MANDATORY' => 'N', 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'Y', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'Y'), array('ENTITY_ID' => 'HLBLOCK_' . $ID, 'FIELD_NAME' => 'UF_FILE', 'USER_TYPE_ID' => 'file', 'XML_ID' => 'UF_DBACK_FILE', 'SORT' => '200', 'MULTIPLE' => 'N', 'MANDATORY' => 'N', 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'Y', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'Y'), array('ENTITY_ID' => 'HLBLOCK_' . $ID, 'FIELD_NAME' => 'UF_LINK', 'USER_TYPE_ID' => 'string', 'XML_ID' => 'UF_DBACK_LINK', 'SORT' => '300', 'MULTIPLE' => 'N', 'MANDATORY' => 'N', 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'Y', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'Y'), array('ENTITY_ID' => 'HLBLOCK_' . $ID, 'FIELD_NAME' => 'UF_DESCRIPTION', 'USER_TYPE_ID' => 'string', 'XML_ID' => 'UF_DBACK_DESCR', 'SORT' => '400', 'MULTIPLE' => 'N', 'MANDATORY' => 'N', 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'Y', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'Y'), array('ENTITY_ID' => 'HLBLOCK_' . $ID, 'FIELD_NAME' => 'UF_FULL_DESCRIPTION', 'USER_TYPE_ID' => 'string', 'XML_ID' => 'UF_DBACK_FULL_DESCR', 'SORT' => '500', 'MULTIPLE' => 'N', 'MANDATORY' => 'N', 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'Y', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'Y'), array('ENTITY_ID' => 'HLBLOCK_' . $ID, 'FIELD_NAME' => 'UF_SORT', 'USER_TYPE_ID' => 'double', 'XML_ID' => 'UF_DBACK_SORT', 'SORT' => '600', 'MULTIPLE' => 'N', 'MANDATORY' => 'N', 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'Y', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'N'), array('ENTITY_ID' => 'HLBLOCK_' . $ID, 'FIELD_NAME' => 'UF_EXTERNAL_CODE', 'USER_TYPE_ID' => 'string', 'XML_ID' => 'UF_DBACK_EXTERNAL_CODE', 'SORT' => '700', 'MULTIPLE' => 'N', 'MANDATORY' => 'N', 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'Y', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'N'), array('ENTITY_ID' => 'HLBLOCK_' . $ID, 'FIELD_NAME' => 'UF_XML_ID', 'USER_TYPE_ID' => 'string', 'XML_ID' => 'UF_DBACK_XML_ID', 'SORT' => '800', 'MULTIPLE' => 'N', 'MANDATORY' => 'Y', 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'Y', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'N'));
示例#7
0
文件: cml2.php 项目: nycmic/bittest
 function ExportEnum($arUserField, $value)
 {
     static $cache = array();
     if (!isset($cache[$value])) {
         $obEnum = new CUserFieldEnum();
         $rsEnum = $obEnum->GetList(array(), array("USER_FIELD_ID" => $arUserField["ID"], "ID" => $value));
         $cache[$value] = $rsEnum->Fetch();
     }
     return $cache[$value]["XML_ID"];
 }
示例#8
0
	/**
	 * Функция удаляет пользовательское свойство и все его значения.
	 *
	 * <p>Сначала удаляются метаданные свойства.</p>
	 * <p>Затем из таблички вида <b>b_utm_[ENTITY_ID]</b> удаляются все значения множественных свойств.</p>
	 * <p>После чего у таблички вида <b>b_uts_[ENTITY_ID]</b> дропается колонка.</p>
	 * <p>И если это было "последнее" свойство для сущности, то дропаются сами таблички хранившие значения.</p>
	 * @param array $ID идентификатор свойства
	 * @return CDBResult - результат выполнения последнего запроса функции.
	 */
	function Delete($ID)
	{
		global $DB, $CACHE_MANAGER, $USER_FIELD_MANAGER, $APPLICATION;
		$ID = intval($ID);

		$rs = $this->GetList(array(), array("ID"=>$ID));
		if($arField = $rs->Fetch())
		{
			/**
			 * events
			 * PROVIDE_STORAGE - use own uf subsystem to store data (uts/utm tables)
			 */
			$commonEventResult = array('PROVIDE_STORAGE' => true);

			foreach (GetModuleEvents("main", "OnBeforeUserTypeDelete", true) as $arEvent)
			{
				$eventResult = ExecuteModuleEventEx($arEvent, array(&$arField));

				if ($eventResult ===false)
				{
					if($e = $APPLICATION->GetException())
					{
						return false;
					}

					$aMsg = array();
					$aMsg[] = array(
						"id"=>"FIELD_NAME",
						"text"=>GetMessage("USER_TYPE_DELETE_ERROR", array(
							"#FIELD_NAME#"=>htmlspecialcharsbx($arField["FIELD_NAME"]),
							"#ENTITY_ID#"=>htmlspecialcharsbx($arField["ENTITY_ID"]),
						))
					);

					$e = new CAdminException($aMsg);
					$APPLICATION->ThrowException($e);

					return false;
				}
				elseif (is_array($eventResult))
				{
					$commonEventResult = array_merge($commonEventResult, $eventResult);
				}
			}

			if(is_object($USER_FIELD_MANAGER))
				$USER_FIELD_MANAGER->CleanCache();

			$arType = $USER_FIELD_MANAGER->GetUserType($arField["USER_TYPE_ID"]);
			//We need special handling of file type properties
			if($arType)
			{
				if($arType["BASE_TYPE"]=="file" && $commonEventResult['PROVIDE_STORAGE'])
				{
					// only if we store values
					if($arField["MULTIPLE"] == "Y")
						$strSql = "SELECT VALUE_INT VALUE FROM b_utm_".strtolower($arField["ENTITY_ID"])." WHERE FIELD_ID=".$arField["ID"];
					else
						$strSql = "SELECT ".$arField["FIELD_NAME"]." VALUE FROM b_uts_".strtolower($arField["ENTITY_ID"]);
					$rsFile = $DB->Query($strSql, false, "FILE: ".__FILE__."<br>LINE: ".__LINE__);
					while($arFile = $rsFile->Fetch())
					{
						CFile::Delete($arFile["VALUE"]);
					}
				}
				elseif($arType["BASE_TYPE"]=="enum")
				{
					$obEnum = new CUserFieldEnum;
					$obEnum->DeleteFieldEnum($arField["ID"]);
				}
			}

			if(CACHED_b_user_field!==false) $CACHE_MANAGER->CleanDir("b_user_field");
			$rs = $DB->Query("DELETE FROM b_user_field_lang WHERE USER_FIELD_ID = ".$ID, false, "FILE: ".__FILE__."<br>LINE: ".__LINE__);
			if($rs)
				$rs = $DB->Query("DELETE FROM b_user_field WHERE ID = ".$ID, false, "FILE: ".__FILE__."<br>LINE: ".__LINE__);

			if($rs && $commonEventResult['PROVIDE_STORAGE'])
			{
				// only if we store values
				$rs = $this->GetList(array(), array("ENTITY_ID" => $arField["ENTITY_ID"]));
				if($rs->Fetch()) // more than one
				{
					foreach($this->DropColumnSQL("b_uts_".strtolower($arField["ENTITY_ID"]), array($arField["FIELD_NAME"])) as $strSql)
						$DB->Query($strSql, false, "FILE: ".__FILE__."<br>LINE: ".__LINE__);
					$rs = $DB->Query("DELETE FROM b_utm_".strtolower($arField["ENTITY_ID"])." WHERE FIELD_ID = '".$ID."'", false, "FILE: ".__FILE__."<br>LINE: ".__LINE__);
				}
				else
				{
					$DB->Query("DROP SEQUENCE SQ_B_UTM_".$arField["ENTITY_ID"], true);
					$DB->Query("DROP TABLE b_uts_".strtolower($arField["ENTITY_ID"]), false, "FILE: ".__FILE__."<br>LINE: ".__LINE__);
					$rs = $DB->Query("DROP TABLE b_utm_".strtolower($arField["ENTITY_ID"]), false, "FILE: ".__FILE__."<br>LINE: ".__LINE__);
				}
			}
		}
		return $rs;
	}
示例#9
0
    if (is_array($arCategory["ID"]) && !empty($arCategory["ID"])) {
        //UF value for filter
        $arParams["EXT_FILTER"][CIdeaManagment::UFCategroryCodeField] = $arCategory["CODE"];
    } else {
        CHTTP::SetStatus("404 Not Found");
        ShowError(GetMessage("IDEA_CATEGORY_NOT_EXISTS"));
        return;
    }
    unset($arParams["EXT_FILTER"]["IDEA_PARENT_CATEGORY_CODE"]);
} elseif (array_key_exists("IDEA_CATEGORY_CODE", $arParams["EXT_FILTER"]) && strlen($arParams["EXT_FILTER"]["IDEA_CATEGORY_CODE"]) > 0) {
    $arParams["EXT_FILTER"][CIdeaManagment::UFCategroryCodeField] = $arParams["EXT_FILTER"]["IDEA_CATEGORY_CODE"];
}
//end prepare ExtFilter
//prepare ExtFilter - Child|Total ::@Idea
if (array_key_exists("IDEA_STATUS", $arParams["EXT_FILTER"]) && strlen($arParams["EXT_FILTER"]["IDEA_STATUS"]) > 0) {
    if ($arStatusField = CUserFieldEnum::GetList(array(), array("USER_FIELD_NAME" => CIdeaManagment::UFStatusField, "XML_ID" => $arParams["EXT_FILTER"]["IDEA_STATUS"]))->Fetch()) {
        //UF value for filter
        $arParams["EXT_FILTER"][CIdeaManagment::UFStatusField] = $arStatusField["ID"];
    } else {
        CHTTP::SetStatus("404 Not Found");
        ShowError(GetMessage("IDEA_STATUS_NOT_EXISTS"));
        return;
    }
}
$arParams["MESSAGE_COUNT"] = IntVal($arParams["MESSAGE_COUNT"]) > 0 ? IntVal($arParams["MESSAGE_COUNT"]) : 20;
$arParams["SORT_BY1"] = strlen($arParams["SORT_BY1"]) > 0 ? $arParams["SORT_BY1"] : "DATE_PUBLISH";
$arParams["SORT_ORDER1"] = strlen($arParams["SORT_ORDER1"]) > 0 ? $arParams["SORT_ORDER1"] : "DESC";
$arParams["SORT_BY2"] = strlen($arParams["SORT_BY2"]) > 0 ? $arParams["SORT_BY2"] : "ID";
$arParams["SORT_ORDER2"] = strlen($arParams["SORT_ORDER2"]) > 0 ? $arParams["SORT_ORDER2"] : "DESC";
$arParams["BLOG_URL"] = preg_replace("/[^a-zA-Z0-9_-]/is", "", Trim($arParams["BLOG_URL"]));
$arParams["YEAR"] = IntVal($arParams["YEAR"]) > 0 ? IntVal($arParams["YEAR"]) : false;
示例#10
0
        $editable = $enableInstantEdit && isset($arUserField['EDIT_IN_LIST']) && $arUserField['EDIT_IN_LIST'] === 'Y';
        if ($arUserField['MULTIPLE'] === 'Y') {
            continue;
        }
        $userTypeID = $arUserField['USER_TYPE']['USER_TYPE_ID'];
        $value = isset($arUserField['VALUE']) ? $arUserField['VALUE'] : '';
        $caption = isset($formFieldNames[$fieldName]) ? $formFieldNames[$fieldName] : '';
        if ($caption === '') {
            $caption = isset($arUserField['EDIT_FORM_LABEL']) ? $arUserField['EDIT_FORM_LABEL'] : $fieldName;
        }
        if ($userTypeID === 'string' || $userTypeID === 'integer' || $userTypeID === 'double' || $userTypeID === 'datetime') {
            $entityData[$fieldName] = array('type' => $userTypeID === 'datetime' ? 'datetime' : 'text', 'editable' => $editable, 'caption' => $caption, 'data' => array('text' => $value, 'multiline' => $userTypeID === 'string'));
        } elseif ($userTypeID === 'enumeration') {
            $text = "";
            $enums = array();
            $enumEntity = new CUserFieldEnum();
            $dbResultEnum = $enumEntity->GetList(array('SORT' => 'ASC'), array('USER_FIELD_ID' => $arUserField['ID']));
            while ($enum = $dbResultEnum->Fetch()) {
                $enums[] = array('ID' => $enum['ID'], 'VALUE' => $enum['VALUE']);
                if ($text === '' && $value !== '' && $value === $enum['ID']) {
                    $text = $enum['VALUE'];
                }
            }
            $entityData[$fieldName] = array('type' => 'enumeration', 'editable' => $editable, 'caption' => $caption, 'data' => array('value' => $value, 'text' => $text, 'items' => $enums));
        } elseif ($userTypeID === 'boolean') {
            $entityData[$fieldName] = array('type' => 'boolean', 'editable' => $editable, 'caption' => $caption, 'data' => array('baseType' => 'int', 'value' => $value));
        }
    }
    unset($arUserField);
}
$arResult['ENTITY_DATA'] = $entityData;
示例#11
0
 public static function GetIBUF($BID, $CODE = false)
 {
     global $USER_FIELD_MANAGER, $APPLICATION;
     $arReturn = array();
     $arUserFields = $USER_FIELD_MANAGER->GetUserFields(CASDiblock::$UF_IBLOCK, $BID, LANGUAGE_ID);
     foreach ($arUserFields as $FIELD_NAME => $arUserField) {
         if ($arUserField['USER_TYPE_ID'] == 'enumeration') {
             $arValue = array();
             $rsSecEnum = CUserFieldEnum::GetList(array('SORT' => 'ASC', 'ID' => 'ASC'), array('USER_FIELD_ID' => $arUserField['ID'], 'ID' => $arUserField['VALUE']));
             while ($arSecEnum = $rsSecEnum->Fetch()) {
                 $arValue[$arSecEnum['ID']] = $arSecEnum['VALUE'];
             }
             $arReturn[$FIELD_NAME] = $arValue;
         } else {
             $arReturn[$FIELD_NAME] = $arUserField['VALUE'];
         }
     }
     return $CODE === false ? $arReturn : $arReturn[$CODE];
 }
示例#12
0
 function getEnumValues($fieldId)
 {
     $obj = new CUserFieldEnum();
     $list = $obj->GetList(array(), array("USER_FIELD_ID" => $fieldId));
     while ($el = $list->Fetch()) {
         $result[$el["ID"]] = $el;
     }
     return $result;
 }
示例#13
0
<?if($itemsCnt):?>
	<!-- noindex -->
	<div class="row filters-wrap">
		<?
		if($arResult['VARIABLES']['SECTION_ID']){
			$arSectiontmp = CIBlockSection::GetList(array(), array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ID' => $arResult['VARIABLES']['SECTION_ID']), false, array('ID',  'UF_VIEWTYPE'))->GetNext();
		}
		elseif($arResult['VARIABLES']['SECTION_CODE']){		 
			 $arSectiontmp = CIBlockSection::GetList(array(), array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'CODE' => $arResult['VARIABLES']['SECTION_CODE']), false, array('ID', 'UF_VIEWTYPE'))->GetNext();
		}
			
		if($_SESSION['UF_VIEWTYPE_'.$arParams['IBLOCK_ID']] === NULL){
			$arUserFieldViewType = CUserTypeEntity::GetList(array(), array('ENTITY_ID' => 'IBLOCK_'.$arParams['IBLOCK_ID'].'_SECTION', 'FIELD_NAME' => 'UF_VIEWTYPE'))->Fetch();
			$resUserFieldViewTypeEnum = CUserFieldEnum::GetList(array(), array('USER_FIELD_ID' => $arUserFieldViewType['ID']));
			while($arUserFieldViewTypeEnum = $resUserFieldViewTypeEnum->GetNext()){
				$_SESSION['UF_VIEWTYPE_'.$arParams['IBLOCK_ID']][$arUserFieldViewTypeEnum['ID']] = $arUserFieldViewTypeEnum['XML_ID'];
			}
		}
		
		$sort_default = $arParams['SORT_PROP_DEFAULT'] ? $arParams['SORT_PROP_DEFAULT'] : 'name';
		$order_default = $arParams['SORT_DIRECTION'] ? $arParams['SORT_DIRECTION'] : 'asc';
		
		$arAvailableSort = array(
			'name' => array(
				'SORT' => 'NAME',
				'ORDER_VALUES' => array(
					'asc' => GetMessage('sort_title').GetMessage('sort_name_asc'),
					'desc' => GetMessage('sort_title').GetMessage('sort_name_desc'),
				),
			),
			'sort' => array(
示例#14
0
 public function UpdateField($ID, $arField)
 {
     $obUserField = new CUserTypeEntity();
     $res = $obUserField->Update($ID, $arField);
     if ($res && $arField['USER_TYPE_ID'] == 'enumeration' && is_array($arField['LIST'])) {
         $obEnum = new CUserFieldEnum();
         $res = $obEnum->SetEnumValues($ID, $arField['LIST']);
     }
     $this->arUFList = $this->GetUserFields($this->sUFEntityID, 0, LANGUAGE_ID);
     return $res;
 }
 protected function migrateCustomElementProperties($iblockId, $entityNewName)
 {
     $iblockId = (int) $iblockId;
     $VERSION = \CIBlockElement::GetIBVersion($iblockId);
     if ($VERSION == 2) {
         $strTable = "b_iblock_element_prop_m" . $iblockId;
     } else {
         $strTable = "b_iblock_element_property";
     }
     $tableNameUf = "b_utm_" . strtolower($entityNewName);
     $tableNameSingleUf = "b_uts_" . strtolower($entityNewName);
     $sqlHelper = $this->connection->getSqlHelper();
     $listElementAll = array();
     $objectQuery = $this->connection->query("\n\t\t\tSELECT obj.ID, prop.VALUE, prop.IBLOCK_PROPERTY_ID\n\t\t\tFROM b_disk_object obj\n\t\t\tINNER JOIN {$strTable} prop ON obj.WEBDAV_ELEMENT_ID = prop.IBLOCK_ELEMENT_ID\n\t\t\tWHERE obj.WEBDAV_IBLOCK_ID = {$iblockId} AND obj.TYPE = 3\n\t\t");
     while ($listObject = $objectQuery->fetch()) {
         $listElementAll[$listObject['ID']][$listObject['IBLOCK_PROPERTY_ID']]['FIELD_VALUE'][] = $listObject['VALUE'];
     }
     $listElement = array();
     foreach ($this->getIblockProperties($iblockId) as $prop) {
         $propId = $prop['ID'];
         $mappedUfType = $this->mapTypeElementPropertyToUfType($prop);
         if (!$mappedUfType) {
             $this->log(array('Unknown property of element', $prop));
             continue;
         }
         $userTypeEntity = new \CUserTypeEntity();
         $symbolicName = empty($prop['CODE']) ? $propId : strtoupper($prop['CODE']);
         $xmlId = empty($prop['CODE']) ? $propId : $prop['CODE'];
         $fieldName = substr('UF_' . $symbolicName, 0, 20);
         if ($mappedUfType == 'iblock_section' || $mappedUfType == 'iblock_element') {
             $settingsArray = array('IBLOCK_ID' => $prop['LINK_IBLOCK_ID'], 'DISPLAY' => 'LIST');
         } else {
             $settingsArray = array();
         }
         $id = $userTypeEntity->add(array('ENTITY_ID' => $entityNewName, 'FIELD_NAME' => $fieldName, 'USER_TYPE_ID' => $mappedUfType, 'XML_ID' => 'PROPERTY_' . $xmlId, 'MULTIPLE' => $prop['MULTIPLE'], 'MANDATORY' => $prop['IS_REQUIRED'], 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => null, 'EDIT_IN_LIST' => null, 'IS_SEARCHABLE' => $prop['SEARCHABLE'], 'SETTINGS' => $settingsArray, 'EDIT_FORM_LABEL' => array('en' => $prop['NAME'], 'ru' => $prop['NAME'], 'de' => $prop['NAME'])));
         if ($id) {
             if ($mappedUfType == 'enumeration') {
                 $i = 0;
                 $enumValues = array();
                 $queryEnum = \CIBlockPropertyEnum::getlist(array("SORT" => "ASC", "VALUE" => "ASC"), array('PROPERTY_ID' => $propId));
                 while ($queryEnum && ($rowEnum = $queryEnum->fetch())) {
                     $enumValues['n' . $i] = array('SORT' => $rowEnum['SORT'], 'VALUE' => $rowEnum['VALUE'], 'XML_ID' => $rowEnum['XML_ID'], 'DEF' => $rowEnum['DEF']);
                     $i++;
                 }
                 $userTypeEnum = new \CUserFieldEnum();
                 $userTypeEnum->setEnumValues($id, $enumValues);
             }
             foreach ($listElementAll as $newId => $propArray) {
                 if (array_key_exists($propId, $propArray)) {
                     $listElement[$newId][$propId]['FIELD_VALUE'] = $listElementAll[$newId][$propId]['FIELD_VALUE'];
                     $listElement[$newId][$propId]['FIELD_NAME'] = $fieldName;
                     if ($prop['MULTIPLE'] == 'Y') {
                         $listElement[$newId][$propId]['FIELD_ID'] = $id;
                         $listElement[$newId][$propId]['PROPERTY_TYPE'] = $mappedUfType;
                     }
                 }
             }
         }
     }
     if (!empty($listElement)) {
         foreach ($listElement as $newId => $propArray) {
             $fieldArray = array();
             $valueArray = array();
             foreach ($propArray as $prop) {
                 $fieldArray[] = $prop['FIELD_NAME'];
                 if (count($prop['FIELD_VALUE']) > 1) {
                     $valueArray[] = "'" . $sqlHelper->forSql(serialize($prop['FIELD_VALUE'])) . "'";
                     foreach ($prop['FIELD_VALUE'] as $utmValue) {
                         if ($prop['PROPERTY_TYPE'] == 'integer') {
                             $utmValue = (int) $utmValue;
                             $this->connection->queryExecute("\n\t\t\t\t\t\t\t\t\tINSERT INTO {$tableNameUf} (VALUE_ID, FIELD_ID, VALUE_INT)\n\t\t\t\t\t\t\t\t\tVALUES ({$newId}, {$prop['FIELD_ID']}, {$utmValue})\n\t\t\t\t\t\t\t\t");
                         } else {
                             $utmValueStr = "'" . $sqlHelper->forSql($utmValue) . "'";
                             $this->connection->queryExecute("\n\t\t\t\t\t\t\t\t\tINSERT INTO {$tableNameUf} (VALUE_ID, FIELD_ID, VALUE)\n\t\t\t\t\t\t\t\t\tVALUES ({$newId}, {$prop['FIELD_ID']}, {$utmValueStr})\n\t\t\t\t\t\t\t\t");
                         }
                     }
                 } else {
                     $valueArray[] = "'" . $sqlHelper->forSql($prop['FIELD_VALUE'][0]) . "'";
                 }
             }
             if (!empty($fieldArray)) {
                 if ($this->isMysql) {
                     $sql = "\n\t\t\t\t\t\t\tINSERT IGNORE INTO {$tableNameSingleUf} (VALUE_ID, " . implode(', ', $fieldArray) . ")\n\t\t\t\t\t\t\tVALUES ({$newId}, " . implode(', ', $valueArray) . ")\n\t\t\t\t\t\t";
                 } elseif ($this->isOracle) {
                     $sql = "\n\t\t\t\t\t\t\tINSERT INTO {$tableNameSingleUf} (VALUE_ID, " . implode(', ', $fieldArray) . ")\n\t\t\t\t\t\t\tSELECT {$newId}, " . implode(', ', $valueArray) . " FROM dual\n\t\t\t\t\t\t\tWHERE NOT EXISTS(SELECT 'x' FROM {$tableNameSingleUf} WHERE VALUE_ID = {$newId})\n\t\t\t\t\t\t";
                 } elseif ($this->isMssql) {
                     $sql = "\n\t\t\t\t\t\t\tINSERT INTO {$tableNameSingleUf} (VALUE_ID, " . implode(', ', $fieldArray) . ")\n\t\t\t\t\t\t\tSELECT * FROM (SELECT {$newId}, " . implode(', ', $valueArray) . ") AS tmp\n\t\t\t\t\t\t\tWHERE NOT EXISTS(SELECT 'x' FROM {$tableNameSingleUf} WHERE VALUE_ID = {$newId})\n\t\t\t\t\t\t";
                 }
                 $this->connection->queryExecute($sql);
             }
         }
     }
 }
示例#16
0
        $arTasksForModule[$group] = array('ID' => $arTaskIDs[$letter]);
    }
    CGroup::SetTasksForModule('timeman', $arTasksForModule);
    if (CModule::IncludeModule('iblock')) {
        $fields_file = $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/timeman/install/fields.php";
        if (file_exists($fields_file)) {
            include $fields_file;
        }
        $dep = new CIBlockSection();
        if ($ib = COption::GetOptionInt('intranet', 'iblock_structure', false)) {
            $entity_id = 'IBLOCK_' . $ib . '_SECTION';
        }
        $arFields = array("UF_TM_TIME" => "16:00", "UF_TM_DAY" => 5);
        $entities = CUserTypeEntity::GetList(array(), array("ENTITY_ID" => $entity_id, "FIELD_NAME" => "UF_REPORT_PERIOD"));
        if ($arEntity = $entities->Fetch()) {
            $oStatus = CUserFieldEnum::GetList(array(), array("USER_FIELD_ID" => $arEntity["ID"]));
            while ($result = $oStatus->Fetch()) {
                if ($result["XML_ID"] == "WEEK") {
                    $period = $result["ID"];
                    break;
                }
            }
        }
        $arFields["UF_REPORT_PERIOD"] = $period;
        $dbsec = $dep->GetList(array("ID" => "asc"), array("IBLOCK_ID" => $ib, "SECTION_ID" => false));
        $root = $dbsec->Fetch();
        if ($root) {
            $dep->Update($root["ID"], $arFields);
        }
    }
}
示例#17
0
 public function UpdateField($ID, $arField)
 {
     $obUserField = new CUserTypeEntity();
     $res = $obUserField->Update($ID, $arField);
     if ($res) {
         UserFieldHistory::processModification(CCrmOwnerType::ResolveIDByUFEntityID($this->sUFEntityID), $ID);
     }
     if ($res && $arField['USER_TYPE_ID'] == 'enumeration' && is_array($arField['LIST'])) {
         $obEnum = new CUserFieldEnum();
         $res = $obEnum->SetEnumValues($ID, $arField['LIST']);
     }
     $this->arUFList = $this->GetUserFields($this->sUFEntityID, 0, LANGUAGE_ID);
     return $res;
 }
示例#18
0
 private static function _GetTreeSettings()
 {
     global $USER_FIELD_MANAGER, $CACHE_MANAGER;
     self::$SECTIONS_SETTINGS_CACHE = array();
     $ibDept = COption::GetOptionInt('intranet', 'iblock_structure', false);
     $cache_id = 'timeman|structure_settings|' . $ibDept;
     if (CACHED_timeman_settings !== false && $CACHE_MANAGER->Read(CACHED_timeman_settings, $cache_id, "timeman_structure_" . $ibDept)) {
         self::$SECTIONS_SETTINGS_CACHE = $CACHE_MANAGER->Get($cache_id);
     } else {
         $arAllFields = $USER_FIELD_MANAGER->GetUserFields('IBLOCK_' . $ibDept . '_SECTION');
         $arUFValues = array();
         $arEnumFields = array('UF_TIMEMAN', 'UF_TM_REPORT_REQ', 'UF_TM_FREE', 'UF_REPORT_PERIOD');
         foreach ($arEnumFields as $fld) {
             $dbRes = CUserFieldEnum::GetList(array(), array('USER_FIELD_ID' => $arAllFields[$fld]['ID']));
             while ($arRes = $dbRes->Fetch()) {
                 $arUFValues[$arRes['ID']] = $arRes['XML_ID'];
             }
         }
         $arSettings = array('UF_TIMEMAN', 'UF_TM_MAX_START', 'UF_TM_MIN_FINISH', 'UF_TM_MIN_DURATION', 'UF_TM_REPORT_REQ', 'UF_TM_REPORT_TPL', 'UF_TM_FREE', 'UF_TM_REPORT_DATE', 'UF_TM_DAY', 'UF_REPORT_PERIOD', 'UF_TM_TIME', 'UF_TM_ALLOWED_DELTA');
         $arReportSettings = array('UF_TM_REPORT_DATE', 'UF_TM_DAY', 'UF_TM_TIME');
         $dbRes = CIBlockSection::GetList(array("LEFT_MARGIN" => "ASC"), array('IBLOCK_ID' => $ibDept, 'ACTIVE' => 'Y'), false, array('ID', 'IBLOCK_SECTION_ID', 'UF_TIMEMAN', 'UF_TM_MAX_START', 'UF_TM_MIN_FINISH', 'UF_TM_MIN_DURATION', 'UF_TM_REPORT_REQ', 'UF_TM_REPORT_TPL', 'UF_TM_FREE', 'UF_REPORT_PERIOD', 'UF_TM_REPORT_DATE', 'UF_TM_DAY', 'UF_TM_TIME', 'UF_TM_ALLOWED_DELTA'));
         while ($arRes = $dbRes->Fetch()) {
             $arSectionSettings = array();
             foreach ($arSettings as $key) {
                 $arSectionSettings[$key] = $arRes[$key] && $arRes[$key] != '00:00' ? isset($arUFValues[$arRes[$key]]) && !in_array($key, $arReportSettings) ? $arUFValues[$arRes[$key]] : (in_array($key, $arReportSettings) ? $arRes[$key] : (is_array($arRes[$key]) ? $arRes[$key] : self::MakeShortTS($arRes[$key]))) : ($arRes['IBLOCK_SECTION_ID'] > 0 ? '_PARENT_|' . $arRes['IBLOCK_SECTION_ID'] : '');
             }
             self::$SECTIONS_SETTINGS_CACHE[$arRes['ID']] = $arSectionSettings;
         }
         if (CACHED_timeman_settings !== false) {
             $CACHE_MANAGER->Set($cache_id, self::$SECTIONS_SETTINGS_CACHE);
         }
     }
 }
示例#19
0
 protected static function ExternalizeEnumerationField(array &$fields, $name)
 {
     $value = isset($fields[$name]) ? $fields[$name] : null;
     $valueInfos = array();
     if (!empty($value)) {
         $dbRes = CUserFieldEnum::GetList(array(), array('ID' => $value));
         while ($valueData = $dbRes->Fetch()) {
             $valueInfos[] = array('NAME' => $valueData['XML_ID'], 'LABEL' => $valueData['VALUE']);
         }
     }
     $valueInfoQty = count($valueInfos);
     if ($valueInfoQty === 0) {
         $fields[$name] = $fields["{$name}_PRINTABLE"] = '';
     } elseif ($valueInfoQty === 1) {
         $valueInfo = $valueInfos[0];
         $fields[$name] = $valueInfo['NAME'];
         $fields["{$name}_PRINTABLE"] = $valueInfo['LABEL'];
     } else {
         $names = array();
         $labels = array();
         foreach ($valueInfos as &$valueInfo) {
             $names[] = $valueInfo['NAME'];
             $labels[] = $valueInfo['LABEL'];
         }
         unset($valueInfo);
         $fields[$name] = $names;
         $fields["{$name}_PRINTABLE"] = implode(', ', $labels);
     }
 }
示例#20
0
 public static function addDocumentField($documentType, $fields)
 {
     $storageId = self::getStorageIdByType($documentType);
     if (!$storageId) {
         throw new CBPArgumentNullException('documentType');
     }
     if (strpos($fields['type'], static::getPrefixForCustomType()) === 0) {
         $fields['type'] = substr($fields['type'], 3);
     }
     $fieldsTmp = array('USER_TYPE_ID' => $fields['type'], 'FIELD_NAME' => 'UF_' . strtoupper($fields['code']), 'ENTITY_ID' => 'DISK_FILE_' . $storageId, 'SORT' => 150, 'MULTIPLE' => $fields['multiple'] == 'Y' ? 'Y' : 'N', 'MANDATORY' => $fields['required'] == 'Y' ? 'Y' : 'N', 'SHOW_FILTER' => 'E');
     $fieldsTmp['EDIT_FORM_LABEL'][LANGUAGE_ID] = $fields['name'];
     $fieldsTmp['LIST_COLUMN_LABEL'][LANGUAGE_ID] = $fields['name'];
     $fieldsTmp['LIST_FILTER_LABEL'][LANGUAGE_ID] = $fields['name'];
     switch ($fields['type']) {
         case 'select':
         case 'enumeration':
             $fieldsTmp['USER_TYPE_ID'] = 'enumeration';
             if (!is_array($fieldsTmp['LIST'])) {
                 $fieldsTmp['LIST'] = array();
             }
             $options = isset($fields['options']) && is_array($fields['options']) ? $fields['options'] : array();
             if (!empty($options)) {
                 $i = 10;
                 foreach ($options as $k => $v) {
                     $fieldsTmp['LIST']['n' . $i] = array('XML_ID' => $k, 'VALUE' => $v, 'DEF' => 'N', 'SORT' => $i);
                     $i = $i + 10;
                 }
             }
             break;
         case 'text':
             $fieldsTmp['USER_TYPE_ID'] = 'string';
             break;
     }
     $userField = new \CUserTypeEntity();
     $id = $userField->add($fieldsTmp);
     if ($id > 0) {
         if ($fieldsTmp['USER_TYPE_ID'] == 'enumeration' && is_array($fieldsTmp['LIST'])) {
             $enum = new \CUserFieldEnum();
             $res = $enum->setEnumValues($id, $fieldsTmp['LIST']);
         }
     }
     return $fieldsTmp['FIELD_NAME'];
 }
示例#21
0
    public static function OnBeforePrologHandler()
    {
        global $USER_FIELD_MANAGER;
        if (isset($_REQUEST['action_button']) && !isset($_REQUEST['action'])) {
            $_REQUEST['action'] = $_REQUEST['action_button'];
        }
        if (!isset($_REQUEST['action'])) {
            return;
        }
        $BID = isset($_REQUEST['ID']) ? (int) $_REQUEST['ID'] : 0;
        if ($_REQUEST['action'] == 'asd_prop_export' && $BID > 0 && check_bitrix_sessid() && CModule::IncludeModule('iblock') && CASDIblockRights::IsIBlockEdit($BID)) {
            $strPath = $_SERVER['DOCUMENT_ROOT'] . '/bitrix/tmp/asd.iblock/';
            $strName = 'asd_props_export_' . $BID . '_' . md5(LICENSE_KEY) . '.xml';
            CheckDirPath($strPath);
            if ($hdlOutput = fopen($strPath . $strName, 'wb')) {
                fwrite($hdlOutput, '<?xml version="1.0" encoding="' . SITE_CHARSET . '"?>' . "\n");
                fwrite($hdlOutput, '<asd_iblock_props>' . "\n");
                fwrite($hdlOutput, CASDiblockTools::ExportPropsToXML($BID, $_REQUEST['p']));
                if ($_REQUEST['forms'] == 'Y') {
                    fwrite($hdlOutput, CASDiblockTools::ExportSettingsToXML($BID, array('forms')));
                }
                fwrite($hdlOutput, '</asd_iblock_props>' . "\n");
                fclose($hdlOutput);
            }
            ?>
<script type="text/javascript">
				top.BX.closeWait(); top.BX.WindowManager.Get().AllowClose(); top.BX.WindowManager.Get().Close();
				window.location.href = '/bitrix/tools/asd.iblock/props_export.php?ID=<?php 
            echo $BID;
            ?>
';
			</script><?php 
            die;
        }
        if ($_REQUEST['action'] == 'asd_prop_import' && $BID > 0 && !$_FILES['xml_file']['error'] && check_bitrix_sessid() && CModule::IncludeModule('iblock') && CASDIblockRights::IsIBlockEdit($BID)) {
            CASDiblockTools::ImportPropsFromXML($BID, $_FILES['xml_file']['tmp_name'], $arOldNewID);
            CASDiblockTools::ImportFormsFromXML($BID, $_FILES['xml_file']['tmp_name'], $arOldNewID);
            LocalRedirect('/bitrix/admin/iblock_edit.php?type=' . $_REQUEST['type'] . '&tabControl_active_tab=edit2&lang=' . LANGUAGE_ID . '&ID=' . $BID . '&admin=Y');
        }
        $IBLOCK_ID = 0;
        if (isset($_REQUEST['IBLOCK_ID'])) {
            $IBLOCK_ID = (int) $_REQUEST['IBLOCK_ID'];
            if ($IBLOCK_ID < 0) {
                $IBLOCK_ID = 0;
            }
        }
        if ($_REQUEST['action'] == 'asd_reverse' && $IBLOCK_ID > 0 && check_bitrix_sessid() && CModule::IncludeModule('iblock') && CASDIblockRights::IsIBlockEdit($IBLOCK_ID)) {
            $LIST_MODE = CIBlock::GetArrayByID($IBLOCK_ID, 'LIST_MODE');
            if (!strlen($LIST_MODE)) {
                $LIST_MODE = COption::GetOptionString('iblock', 'combined_list_mode', 'N') == 'Y' ? 'C' : 'S';
            }
            $LIST_MODE = $LIST_MODE == 'C' ? 'S' : 'C';
            $ib = new CIBlock();
            $ib->Update($IBLOCK_ID, array('LIST_MODE' => $LIST_MODE));
            LocalRedirect('/bitrix/admin/' . ($LIST_MODE == 'S' ? 'iblock_element_admin' : 'iblock_list_admin') . '.php?IBLOCK_ID=' . $IBLOCK_ID . '&type=' . htmlspecialcharsbx($_REQUEST['type']) . '&find_section_section=' . intval($_REQUEST['find_section_section']) . '&lang=' . LANGUAGE_ID);
        }
        $strCurPage = $GLOBALS['APPLICATION']->GetCurPage();
        $bElemPage = $strCurPage == '/bitrix/admin/iblock_element_admin.php' || $strCurPage == '/bitrix/admin/cat_product_admin.php';
        $bSectPage = $strCurPage == '/bitrix/admin/iblock_section_admin.php' || $strCurPage == '/bitrix/admin/cat_section_admin.php';
        $bMixPage = $strCurPage == '/bitrix/admin/iblock_list_admin.php';
        $bRightPage = $bElemPage || $bSectPage || $bMixPage;
        $successRedirect = false;
        if ($bRightPage && $_REQUEST['action'] == 'asd_copy_in_list' && strlen($_REQUEST['ID']) > 0) {
            $bDoAction = true;
            $_REQUEST['action'] = 'asd_copy';
            $_REQUEST['asd_ib_dest'] = $IBLOCK_ID;
            $_REQUEST['ID'] = array($_REQUEST['ID']);
        } else {
            $bDoAction = false;
        }
        if ($bRightPage && check_bitrix_sessid() && !empty($_REQUEST['ID']) && ($_SERVER['REQUEST_METHOD'] == 'POST' || $bDoAction) && CModule::IncludeModule('iblock') && ($_REQUEST['action'] == 'asd_copy' || $_REQUEST['action'] == 'asd_move') && isset($_REQUEST['asd_ib_dest']) && (int) $_REQUEST['asd_ib_dest'] > 0 && CASDIblockRights::IsIBlockDisplay($_REQUEST['asd_ib_dest'])) {
            $intSrcIBlockID = $IBLOCK_ID;
            $intDestIBlockID = (int) $_REQUEST['asd_ib_dest'];
            $intSetSectID = 0;
            if (isset($_REQUEST['asd_sect_dest'])) {
                $intSetSectID = (int) $_REQUEST['asd_sect_dest'];
                if ($intSetSectID < 0) {
                    $intSetSectID = 0;
                }
            }
            $boolCreateElement = false;
            $boolCreateSection = false;
            if ($bElemPage || $bMixPage) {
                $boolCreateElement = CASDIblockRights::IsSectionElementCreate($intDestIBlockID, $intSetSectID);
            }
            if ($bSectPage || $bMixPage) {
                $boolCreateSection = CASDIblockRights::IsSectionSectionCreate($intDestIBlockID, $intSetSectID);
            }
            if ($boolCreateElement || $boolCreateSection) {
                $arPropListCache = array();
                $arOldPropListCache = array();
                $arNamePropListCache = array();
                $arOldNamePropListCache = array();
                $boolUFListCache = false;
                $arUFListCache = array();
                $arOldUFListCache = array();
                $arUFEnumCache = array();
                $arOldUFEnumCache = array();
                $arUFNameEnumCache = array();
                $arOldUFNameEnumCache = array();
                $arDestIBlock = CIBlock::GetArrayByID($intDestIBlockID);
                $arDestIBFields = $arDestIBlock['FIELDS'];
                $boolCodeUnique = false;
                if ($arDestIBFields['CODE']['DEFAULT_VALUE']['UNIQUE'] == 'Y') {
                    $boolCodeUnique = $intSrcIBlockID == $intDestIBlockID;
                }
                $boolSectCodeUnique = false;
                if ($arDestIBFields['SECTION_CODE']['DEFAULT_VALUE']['UNIQUE'] == 'Y') {
                    $boolSectCodeUnique = $intSrcIBlockID == $intDestIBlockID;
                }
                $boolCatalog = CModule::IncludeModule('catalog');
                $boolCopyCatalog = false;
                $boolNewCatalog = false;
                if ($boolCatalog) {
                    $boolCopyCatalog = is_array(CCatalog::GetByID($intDestIBlockID));
                    $boolNewCatalog = $boolCopyCatalog;
                    if ($boolCopyCatalog) {
                        $boolCopyCatalog = is_array(CCatalog::GetByID($intSrcIBlockID));
                    }
                }
                $el = new CIBlockElement();
                $sc = new CIBlockSection();
                $obEnum = new CUserFieldEnum();
                foreach ($_REQUEST['ID'] as $eID) {
                    $boolCopyElem = false;
                    $boolCopySect = false;
                    if ($bMixPage) {
                        if (substr($eID, 0, 1) != 'E') {
                            $boolCopySect = true;
                        } else {
                            $boolCopyElem = true;
                        }
                        $ID = (int) substr($eID, 1);
                    } else {
                        $boolCopyElem = $bElemPage;
                        $boolCopySect = $bSectPage;
                        $ID = (int) $eID;
                    }
                    if ($boolCreateElement && $boolCopyElem) {
                        if ($obSrc = CIBlockElement::GetByID($ID)->GetNextElement()) {
                            $arSrc = $obSrc->GetFields();
                            $arSrcPr = $obSrc->GetProperties(false, array('EMPTY' => 'N'));
                            $arSrc['PREVIEW_PICTURE'] = (int) $arSrc['PREVIEW_PICTURE'];
                            if ($arSrc['PREVIEW_PICTURE'] > 0) {
                                $arSrc['PREVIEW_PICTURE'] = CFile::MakeFileArray($arSrc['PREVIEW_PICTURE']);
                                if (empty($arSrc['PREVIEW_PICTURE'])) {
                                    $arSrc['PREVIEW_PICTURE'] = false;
                                } else {
                                    $arSrc['PREVIEW_PICTURE']['COPY_FILE'] = 'Y';
                                }
                            } else {
                                $arSrc['PREVIEW_PICTURE'] = false;
                            }
                            $arSrc['DETAIL_PICTURE'] = (int) $arSrc['DETAIL_PICTURE'];
                            if ($arSrc['DETAIL_PICTURE'] > 0) {
                                $arSrc['DETAIL_PICTURE'] = CFile::MakeFileArray($arSrc['DETAIL_PICTURE']);
                                if (empty($arSrc['DETAIL_PICTURE'])) {
                                    $arSrc['DETAIL_PICTURE'] = false;
                                } else {
                                    $arSrc['DETAIL_PICTURE']['COPY_FILE'] = 'Y';
                                }
                            } else {
                                $arSrc['DETAIL_PICTURE'] = false;
                            }
                            $arSrc = array('IBLOCK_ID' => $intDestIBlockID, 'ACTIVE' => $arSrc['ACTIVE'], 'ACTIVE_FROM' => $arSrc['ACTIVE_FROM'], 'ACTIVE_TO' => $arSrc['ACTIVE_TO'], 'SORT' => $arSrc['SORT'], 'NAME' => $arSrc['~NAME'], 'PREVIEW_PICTURE' => $arSrc['PREVIEW_PICTURE'], 'PREVIEW_TEXT' => $arSrc['~PREVIEW_TEXT'], 'PREVIEW_TEXT_TYPE' => $arSrc['PREVIEW_TEXT_TYPE'], 'DETAIL_TEXT' => $arSrc['~DETAIL_TEXT'], 'DETAIL_TEXT_TYPE' => $arSrc['DETAIL_TEXT_TYPE'], 'DETAIL_PICTURE' => $arSrc['DETAIL_PICTURE'], 'WF_STATUS_ID' => $arSrc['WF_STATUS_ID'], 'CODE' => $arSrc['~CODE'], 'TAGS' => $arSrc['~TAGS'], 'XML_ID' => $arSrc['~XML_ID'], 'PROPERTY_VALUES' => array());
                            if ($arDestIBFields['CODE']['IS_REQUIRED'] == 'Y') {
                                if (!strlen($arSrc['CODE'])) {
                                    $arSrc['CODE'] = mt_rand(100000, 1000000);
                                }
                            }
                            if ($arDestIBFields['CODE']['DEFAULT_VALUE']['UNIQUE'] == 'Y') {
                                $boolElCodeUnique = $boolCodeUnique;
                                if (!$boolCodeUnique) {
                                    $rsCheckItems = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $intDestIBlockID, '=CODE' => $arSrc['CODE'], 'CHECK_PERMISSIONS' => 'N'), false, array('nTopCount' => 1), array('ID', 'IBLOCK_ID'));
                                    if ($arCheck = $rsCheckItems->Fetch()) {
                                        $boolElCodeUnique = true;
                                    }
                                }
                                if ($boolElCodeUnique) {
                                    $arSrc['CODE'] .= mt_rand(100, 10000);
                                }
                            }
                            if ($intSetSectID > 0) {
                                $arSrc['IBLOCK_SECTION_ID'] = $intSetSectID;
                            } elseif ($intSrcIBlockID == $intDestIBlockID) {
                                $arSectionList = array();
                                $rsSections = CIBlockElement::GetElementGroups($ID, true);
                                while ($arSection = $rsSections->Fetch()) {
                                    $arSectionList[] = $arSection['ID'];
                                }
                                $arSrc['IBLOCK_SECTION'] = $arSectionList;
                            }
                            if ($intSrcIBlockID != $intDestIBlockID) {
                                if (empty($arPropListCache)) {
                                    $rsProps = CIBlockProperty::GetList(array(), array('IBLOCK_ID' => $intDestIBlockID, 'PROPERTY_TYPE' => 'L', 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N'));
                                    while ($arProp = $rsProps->Fetch()) {
                                        $arValueList = array();
                                        $arNameList = array();
                                        $rsValues = CIBlockProperty::GetPropertyEnum($arProp['ID']);
                                        while ($arValue = $rsValues->Fetch()) {
                                            $arValueList[$arValue['XML_ID']] = $arValue['ID'];
                                            $arNameList[$arValue['ID']] = trim($arValue['VALUE']);
                                        }
                                        if (!empty($arValueList)) {
                                            $arPropListCache[$arProp['CODE']] = $arValueList;
                                        }
                                        if (!empty($arNameList)) {
                                            $arNamePropListCache[$arProp['CODE']] = $arNameList;
                                        }
                                    }
                                }
                                if (empty($arOldPropListCache)) {
                                    $rsProps = CIBlockProperty::GetList(array(), array('IBLOCK_ID' => $intSrcIBlockID, 'PROPERTY_TYPE' => 'L', 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N'));
                                    while ($arProp = $rsProps->Fetch()) {
                                        $arValueList = array();
                                        $arNameList = array();
                                        $rsValues = CIBlockProperty::GetPropertyEnum($arProp['ID']);
                                        while ($arValue = $rsValues->Fetch()) {
                                            $arValueList[$arValue['ID']] = $arValue['XML_ID'];
                                            $arNameList[$arValue['ID']] = trim($arValue['VALUE']);
                                        }
                                        if (!empty($arValueList)) {
                                            $arOldPropListCache[$arProp['CODE']] = $arValueList;
                                        }
                                        if (!empty($arNameList)) {
                                            $arOldNamePropListCache[$arProp['CODE']] = $arNameList;
                                        }
                                    }
                                }
                            }
                            foreach ($arSrcPr as &$arProp) {
                                if ($arProp['USER_TYPE'] == 'HTML') {
                                    if (is_array($arProp['~VALUE'])) {
                                        if ($arProp['MULTIPLE'] == 'N') {
                                            $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = array('VALUE' => array('TEXT' => $arProp['~VALUE']['TEXT'], 'TYPE' => $arProp['~VALUE']['TYPE']));
                                            if ($arProp['WITH_DESCRIPTION'] == 'Y') {
                                                $arSrc['PROPERTY_VALUES'][$arProp['CODE']]['DESCRIPTION'] = $arProp['~DESCRIPTION'];
                                            }
                                        } else {
                                            if (!empty($arProp['~VALUE'])) {
                                                $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = array();
                                                foreach ($arProp['~VALUE'] as $propValueKey => $propValue) {
                                                    $oneNewValue = array('VALUE' => array('TEXT' => $propValue['TEXT'], 'TYPE' => $propValue['TYPE']));
                                                    if ($arProp['WITH_DESCRIPTION'] == 'Y') {
                                                        $oneNewValue['DESCRIPTION'] = $arProp['~DESCRIPTION'][$propValueKey];
                                                    }
                                                    $arSrc['PROPERTY_VALUES'][$arProp['CODE']][] = $oneNewValue;
                                                    unset($oneNewValue);
                                                }
                                                unset($propValue, $propValueKey);
                                            }
                                        }
                                    }
                                } elseif ($arProp['PROPERTY_TYPE'] == 'F') {
                                    if (is_array($arProp['VALUE'])) {
                                        $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = array();
                                        foreach ($arProp['VALUE'] as $propValueKey => $file) {
                                            if ($file > 0) {
                                                $tmpValue = CFile::MakeFileArray($file);
                                                if (!is_array($tmpValue)) {
                                                    continue;
                                                }
                                                if ($arProp['WITH_DESCRIPTION'] == 'Y') {
                                                    $tmpValue = array('VALUE' => $tmpValue, 'DESCRIPTION' => $arProp['~DESCRIPTION'][$propValueKey]);
                                                }
                                                $arSrc['PROPERTY_VALUES'][$arProp['CODE']][] = $tmpValue;
                                            }
                                        }
                                    } elseif ($arProp['VALUE'] > 0) {
                                        $tmpValue = CFile::MakeFileArray($arProp['VALUE']);
                                        if (is_array($tmpValue)) {
                                            if ($arProp['WITH_DESCRIPTION'] == 'Y') {
                                                $tmpValue = array('VALUE' => $tmpValue, 'DESCRIPTION' => $arProp['~DESCRIPTION']);
                                            }
                                            $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $tmpValue;
                                        }
                                    }
                                } elseif ($arProp['PROPERTY_TYPE'] == 'L') {
                                    if (!empty($arProp['VALUE_ENUM_ID'])) {
                                        if ($intSrcIBlockID == $arSrc['IBLOCK_ID']) {
                                            $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $arProp['VALUE_ENUM_ID'];
                                        } else {
                                            if (isset($arPropListCache[$arProp['CODE']]) && isset($arOldPropListCache[$arProp['CODE']])) {
                                                if (is_array($arProp['VALUE_ENUM_ID'])) {
                                                    $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = array();
                                                    foreach ($arProp['VALUE_ENUM_ID'] as &$intValueID) {
                                                        $strValueXmlID = $arOldPropListCache[$arProp['CODE']][$intValueID];
                                                        if (isset($arPropListCache[$arProp['CODE']][$strValueXmlID])) {
                                                            $arSrc['PROPERTY_VALUES'][$arProp['CODE']][] = $arPropListCache[$arProp['CODE']][$strValueXmlID];
                                                        } else {
                                                            $strValueName = $arOldNamePropListCache[$arProp['CODE']][$intValueID];
                                                            $intValueKey = array_search($strValueName, $arNamePropListCache[$arProp['CODE']]);
                                                            if ($intValueKey !== false) {
                                                                $arSrc['PROPERTY_VALUES'][$arProp['CODE']][] = $intValueKey;
                                                            }
                                                        }
                                                    }
                                                    if (isset($intValueID)) {
                                                        unset($intValueID);
                                                    }
                                                    if (empty($arSrc['PROPERTY_VALUES'][$arProp['CODE']])) {
                                                        unset($arSrc['PROPERTY_VALUES'][$arProp['CODE']]);
                                                    }
                                                } else {
                                                    $strValueXmlID = $arOldPropListCache[$arProp['CODE']][$arProp['VALUE_ENUM_ID']];
                                                    if (isset($arPropListCache[$arProp['CODE']][$strValueXmlID])) {
                                                        $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $arPropListCache[$arProp['CODE']][$strValueXmlID];
                                                    } else {
                                                        $strValueName = $arOldNamePropListCache[$arProp['CODE']][$arProp['VALUE_ENUM_ID']];
                                                        $intValueKey = array_search($strValueName, $arNamePropListCache[$arProp['CODE']]);
                                                        if ($intValueKey !== false) {
                                                            $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $intValueKey;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                } elseif ($arProp['PROPERTY_TYPE'] == 'S' || $arProp['PROPERTY_TYPE'] == 'N') {
                                    if ($arProp['MULTIPLE'] == 'Y') {
                                        if (is_array($arProp['~VALUE'])) {
                                            if ($arProp['WITH_DESCRIPTION'] == 'Y') {
                                                $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = array();
                                                foreach ($arProp['~VALUE'] as $propValueKey => $propValue) {
                                                    $arSrc['PROPERTY_VALUES'][$arProp['CODE']][] = array('VALUE' => $propValue, 'DESCRIPTION' => $arProp['~DESCRIPTION'][$propValueKey]);
                                                }
                                                unset($propValue, $propValueKey);
                                            } else {
                                                $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $arProp['~VALUE'];
                                            }
                                        }
                                    } else {
                                        $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $arProp['WITH_DESCRIPTION'] == 'Y' ? array('VALUE' => $arProp['~VALUE'], 'DESCRIPTION' => $arProp['~DESCRIPTION']) : $arProp['~VALUE'];
                                    }
                                } else {
                                    $arSrc['PROPERTY_VALUES'][$arProp['CODE']] = $arProp['~VALUE'];
                                }
                            }
                            if (isset($arProp)) {
                                unset($arProp);
                            }
                            AddMessage2Log($arSrc['PROPERTY_VALUES']);
                            $intNewID = $el->Add($arSrc, true, true, true);
                            if ($intNewID) {
                                if ($boolCatalog && $boolCopyCatalog) {
                                    $priceRes = CPrice::GetListEx(array(), array('PRODUCT_ID' => $ID), false, false, array('PRODUCT_ID', 'EXTRA_ID', 'CATALOG_GROUP_ID', 'PRICE', 'CURRENCY', 'QUANTITY_FROM', 'QUANTITY_TO'));
                                    while ($arPrice = $priceRes->Fetch()) {
                                        $arPrice['PRODUCT_ID'] = $intNewID;
                                        CPrice::Add($arPrice);
                                    }
                                }
                                if ($boolCatalog && $boolNewCatalog) {
                                    $arProduct = array('ID' => $intNewID);
                                    if ($boolCopyCatalog) {
                                        $productRes = CCatalogProduct::GetList(array(), array('ID' => $ID), false, false, array('QUANTITY', 'QUANTITY_TRACE_ORIG', 'CAN_BUY_ZERO_ORIG', 'NEGATIVE_AMOUNT_TRACE_ORIG', 'SUBSCRIBE_ORIG', 'WEIGHT', 'PRICE_TYPE', 'RECUR_SCHEME_TYPE', 'RECUR_SCHEME_LENGTH', 'TRIAL_PRICE_ID', 'WITHOUT_ORDER', 'SELECT_BEST_PRICE', 'VAT_ID', 'VAT_INCLUDED', 'WIDTH', 'LENGTH', 'HEIGHT', 'PURCHASING_PRICE', 'PURCHASING_CURRENCY', 'MEASURE'));
                                        if ($arCurProduct = $productRes->Fetch()) {
                                            $arProduct = $arCurProduct;
                                            $arProduct['ID'] = $intNewID;
                                            $arProduct['QUANTITY_TRACE'] = $arProduct['QUANTITY_TRACE_ORIG'];
                                            $arProduct['CAN_BUY_ZERO'] = $arProduct['CAN_BUY_ZERO_ORIG'];
                                            $arProduct['NEGATIVE_AMOUNT_TRACE'] = $arProduct['NEGATIVE_AMOUNT_TRACE_ORIG'];
                                            if (isset($arProduct['SUBSCRIBE_ORIG'])) {
                                                $arProduct['SUBSCRIBE'] = $arProduct['SUBSCRIBE_ORIG'];
                                            }
                                            foreach ($arProduct as $productKey => $productValue) {
                                                if ($productValue === null) {
                                                    unset($arProduct[$productKey]);
                                                }
                                            }
                                        }
                                    }
                                    CCatalogProduct::Add($arProduct, false);
                                }
                                if ($_REQUEST['action'] == 'asd_move') {
                                    if (CASDIblockRights::IsElementDelete($intSrcIBlockID, $ID)) {
                                        $el->Delete($ID);
                                    } else {
                                        CASDiblock::$error .= '[' . $ID . '] ' . GetMessage('ASD_ACTION_ERR_DELETE_ELEMENT_RIGHTS') . "\n";
                                    }
                                }
                            } else {
                                CASDiblock::$error .= '[' . $ID . '] ' . $el->LAST_ERROR . "\n";
                            }
                        }
                    }
                    if ($boolCreateSection && $boolCopySect) {
                        if ($_REQUEST['action'] == 'asd_move') {
                            continue;
                        }
                        $rsSections = CIBlockSection::GetList(array(), array('ID' => $ID, 'IBLOCK_ID' => $intSrcIBlockID), false, array('ID', 'NAME', 'XML_ID', 'CODE', 'IBLOCK_SECTION_ID', 'IBLOCK_ID', 'ACTIVE', 'SORT', 'PICTURE', 'DESCRIPTION', 'DESCRIPTION_TYPE', 'DETAIL_PICTURE', 'SOCNET_GROUP_ID', 'UF_*'));
                        if ($arSrcSect = $rsSections->Fetch()) {
                            $arDestSect = $arSrcSect;
                            unset($arDestSect['ID']);
                            $arDestSect['IBLOCK_ID'] = $intDestIBlockID;
                            if ($arDestIBFields['SECTION_CODE']['IS_REQUIRED'] == 'Y') {
                                if (!strlen($arDestSect['CODE'])) {
                                    $arDestSect['CODE'] = mt_rand(100000, 1000000);
                                }
                            }
                            if ($arDestIBFields['SECTION_CODE']['DEFAULT_VALUE']['UNIQUE'] == 'Y') {
                                $boolScCodeUnique = $boolSectCodeUnique;
                                if (!$boolSectCodeUnique) {
                                    $rsCheckItems = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $intDestIBlockID, '=CODE' => $arSrc['CODE'], 'CHECK_PERMISSIONS' => 'N'), false, array('nTopCount' => 1), array('ID', 'IBLOCK_ID'));
                                    if ($arCheck = $rsCheckItems->Fetch()) {
                                        $boolScCodeUnique = true;
                                    }
                                }
                                if ($boolScCodeUnique) {
                                    $arDestSect['CODE'] .= mt_rand(100, 10000);
                                }
                            }
                            if ($intSetSectID > 0) {
                                $arDestSect['IBLOCK_SECTION_ID'] = $intSetSectID;
                            } elseif ($intSrcIBlockID != $intDestIBlockID) {
                                $arDestSect['IBLOCK_SECTION_ID'] = 0;
                            }
                            $arDestSect['PICTURE'] = (int) $arDestSect['PICTURE'];
                            if ($arDestSect['PICTURE'] > 0) {
                                $arDestSect['PICTURE'] = CFile::MakeFileArray($arDestSect['PICTURE']);
                                if (empty($arDestSect['PICTURE'])) {
                                    $arDestSect['PICTURE'] = false;
                                } else {
                                    $arDestSect['PICTURE']['COPY_FILE'] = 'Y';
                                }
                            } else {
                                $arDestSect['PICTURE'] = false;
                            }
                            $arDestSect['DETAIL_PICTURE'] = (int) $arDestSect['DETAIL_PICTURE'];
                            if ($arDestSect['DETAIL_PICTURE'] > 0) {
                                $arDestSect['DETAIL_PICTURE'] = CFile::MakeFileArray($arDestSect['DETAIL_PICTURE']);
                                if (empty($arDestSect['DETAIL_PICTURE'])) {
                                    $arDestSect['DETAIL_PICTURE'] = false;
                                } else {
                                    $arDestSect['DETAIL_PICTURE']['COPY_FILE'] = 'Y';
                                }
                            } else {
                                $arDestSect['DETAIL_PICTURE'] = false;
                            }
                            if (!$boolUFListCache) {
                                $boolUFListCache = true;
                                $arUFListCache = $USER_FIELD_MANAGER->GetUserFields('IBLOCK_' . $intDestIBlockID . '_SECTION');
                                if (!empty($arUFListCache)) {
                                    if ($intSrcIBlockID != $intDestIBlockID) {
                                        $arOldUFListCache = $USER_FIELD_MANAGER->GetUserFields('IBLOCK_' . $intSrcIBlockID . '_SECTION');
                                        if (empty($arOldUFListCache)) {
                                            $arUFListCache = array();
                                        }
                                    } else {
                                        $arOldUFListCache = $arUFListCache;
                                    }
                                }
                                if (!empty($arUFListCache)) {
                                    if ($intSrcIBlockID != $intDestIBlockID) {
                                        foreach ($arUFListCache as &$arOneUserField) {
                                            if ('enum' == $arOneUserField['USER_TYPE']['BASE_TYPE']) {
                                                $arUFEnumCache[$arOneUserField['FIELD_NAME']] = array();
                                                $arUFNameEnumCache[$arOneUserField['FIELD_NAME']] = array();
                                                $rsEnum = $obEnum->GetList(array(), array('USER_FIELD_ID' => $arOneUserField['ID']));
                                                while ($arEnum = $rsEnum->Fetch()) {
                                                    $arUFEnumCache[$arOneUserField['FIELD_NAME']][$arEnum['XML_ID']] = $arEnum['ID'];
                                                    $arUFNameEnumCache[$arOneUserField['FIELD_NAME']][$arEnum['ID']] = trim($arEnum['VALUE']);
                                                }
                                            }
                                        }
                                        if (isset($arOneUserField)) {
                                            unset($arOneUserField);
                                        }
                                        foreach ($arOldUFListCache as &$arOneUserField) {
                                            if ($arOneUserField['USER_TYPE']['BASE_TYPE'] == 'enum') {
                                                $arOldUFEnumCache[$arOneUserField['FIELD_NAME']] = array();
                                                $arOldUFNameEnumCache[$arOneUserField['FIELD_NAME']] = array();
                                                $rsEnum = $obEnum->GetList(array(), array('USER_FIELD_ID' => $arOneUserField['ID']));
                                                while ($arEnum = $rsEnum->Fetch()) {
                                                    $arOldUFEnumCache[$arOneUserField['FIELD_NAME']][$arEnum['ID']] = $arEnum['XML_ID'];
                                                    $arOldUFNameEnumCache[$arOneUserField['FIELD_NAME']][$arEnum['ID']] = trim($arEnum['VALUE']);
                                                }
                                            }
                                        }
                                        if (isset($arOneUserField)) {
                                            unset($arOneUserField);
                                        }
                                    }
                                }
                            }
                            if (!empty($arUFListCache)) {
                                foreach ($arUFListCache as &$arOneUserField) {
                                    if (!isset($arDestSect[$arOneUserField['FIELD_NAME']])) {
                                        continue;
                                    }
                                    if ($arOneUserField['USER_TYPE']['BASE_TYPE'] == 'file') {
                                        if (!empty($arDestSect[$arOneUserField['FIELD_NAME']])) {
                                            if (is_array($arDestSect[$arOneUserField['FIELD_NAME']])) {
                                                $arNewFileList = array();
                                                foreach ($arDestSect[$arOneUserField['FIELD_NAME']] as &$intFileID) {
                                                    $arNewFile = false;
                                                    $intFileID = (int) $intFileID;
                                                    if ($intFileID > 0) {
                                                        $arNewFile = CFile::MakeFileArray($intFileID);
                                                    }
                                                    if (!empty($arNewFile)) {
                                                        $arNewFileList[] = $arNewFile;
                                                    }
                                                }
                                                if (isset($intFileID)) {
                                                    unset($intFileID);
                                                }
                                                $arDestSect[$arOneUserField['FIELD_NAME']] = !empty($arNewFileList) ? $arNewFileList : false;
                                            } else {
                                                $arNewFile = false;
                                                $intFileID = (int) $arDestSect[$arOneUserField['FIELD_NAME']];
                                                if ($intFileID > 0) {
                                                    $arNewFile = CFile::MakeFileArray($intFileID);
                                                }
                                                $arDestSect[$arOneUserField['FIELD_NAME']] = !empty($arNewFile) ? $arNewFile : false;
                                            }
                                        } else {
                                            $arDestSect[$arOneUserField['FIELD_NAME']] = false;
                                        }
                                    } elseif ($arOneUserField['USER_TYPE']['BASE_TYPE'] == 'enum') {
                                        if (!empty($arDestSect[$arOneUserField['FIELD_NAME']])) {
                                            if ($intSrcIBlockID != $intDestIBlockID) {
                                                if (array_key_exists($arOneUserField['FIELD_NAME'], $arUFEnumCache) && array_key_exists($arOneUserField['FIELD_NAME'], $arOldUFEnumCache)) {
                                                    if (is_array($arDestSect[$arOneUserField['FIELD_NAME']])) {
                                                        $arNewEnumList = array();
                                                        foreach ($arDestSect[$arOneUserField['FIELD_NAME']] as &$intValueID) {
                                                            $strValueXmlID = $arOldUFEnumCache[$arOneUserField['FIELD_NAME']][$intValueID];
                                                            if (array_key_exists($strValueXmlID, $arUFEnumCache[$arOneUserField['FIELD_NAME']])) {
                                                                $arNewEnumList[] = $arUFEnumCache[$arOneUserField['FIELD_NAME']][$strValueXmlID];
                                                            } else {
                                                                $strValueName = $arOldUFNameEnumCache[$arOneUserField['FIELD_NAME']][$intValueID];
                                                                $intValueKey = array_search($strValueName, $arUFNameEnumCache[$arOneUserField['FIELD_NAME']]);
                                                                if ($intValueKey !== false) {
                                                                    $arNewEnumList[] = $intValueKey;
                                                                }
                                                            }
                                                        }
                                                        if (isset($intValueID)) {
                                                            unset($intValueID);
                                                        }
                                                        if (!empty($arNewEnumList)) {
                                                            $arDestSect[$arOneUserField['FIELD_NAME']] = $arNewEnumList;
                                                        }
                                                    } else {
                                                        $strValueXmlID = $arOldUFEnumCache[$arOneUserField['FIELD_NAME']][$arDestSect[$arOneUserField['FIELD_NAME']]];
                                                        if (array_key_exists($strValueXmlID, $arUFEnumCache[$arOneUserField['FIELD_NAME']])) {
                                                            $arDestSect[$arOneUserField['FIELD_NAME']] = $arUFEnumCache[$arOneUserField['FIELD_NAME']][$strValueXmlID];
                                                        } else {
                                                            $strValueName = $arOldUFNameEnumCache[$arOneUserField['FIELD_NAME']][$arDestSect[$arOneUserField['FIELD_NAME']]];
                                                            $intValueKey = array_search($strValueName, $arUFNameEnumCache[$arOneUserField['FIELD_NAME']]);
                                                            if ($intValueKey !== false) {
                                                                $arDestSect[$arOneUserField['FIELD_NAME']] = $intValueKey;
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        } else {
                                            $arDestSect[$arOneUserField['FIELD_NAME']] = false;
                                        }
                                    }
                                }
                                if (isset($arOneUserField)) {
                                    unset($arOneUserField);
                                }
                            }
                            $intNewID = $sc->Add($arDestSect);
                            if (!$intNewID) {
                                CASDiblock::$error .= '[' . $ID . '] ' . $sc->LAST_ERROR . "\n";
                            }
                        }
                    }
                }
                $successRedirect = true;
            }
            unset($_REQUEST['action']);
            if (isset($_REQUEST['action_button'])) {
                unset($_REQUEST['action_button']);
            }
            if ($successRedirect) {
                LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam('', array('action', 'action_button', 'asd_ib_dest', 'asd_sect_dest', 'ID')));
            }
        }
        if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'asd_remove' && $IBLOCK_ID > 0 && isset($_REQUEST['find_section_section']) && check_bitrix_sessid() && CASDIblockRights::IsIBlockDisplay($IBLOCK_ID)) {
            $intSectionID = (int) $_REQUEST['find_section_section'];
            if ($intSectionID > 0) {
                $strCurPage = $GLOBALS['APPLICATION']->GetCurPage();
                $bElemPage = $strCurPage == '/bitrix/admin/iblock_element_admin.php' || $strCurPage == '/bitrix/admin/cat_product_admin.php';
                $bMixPage = $strCurPage == '/bitrix/admin/iblock_list_admin.php';
                if ($bElemPage || $bMixPage) {
                    foreach ($_REQUEST['ID'] as $eID) {
                        if ($bMixPage) {
                            if (substr($eID, 0, 1) != 'E') {
                                continue;
                            }
                            $ID = (int) substr($eID, 1);
                        } else {
                            $ID = (int) $eID;
                        }
                        if ($ID <= 0) {
                            continue;
                        }
                        if (CASDIblockRights::IsElementEdit($IBLOCK_ID, $ID)) {
                            $arSectionList = array();
                            $rsSections = CIBlockElement::GetElementGroups($ID, true);
                            while ($arSection = $rsSections->Fetch()) {
                                $arSection['ID'] = (int) $arSection['ID'];
                                if ($arSection['ID'] != $intSectionID) {
                                    $arSectionList[] = $arSection['ID'];
                                }
                            }
                            CIBlockElement::SetElementSection($ID, $arSectionList, false);
                            $successRedirect = true;
                        }
                    }
                }
            }
            unset($_REQUEST['action']);
            if (isset($_REQUEST['action_button'])) {
                unset($_REQUEST['action_button']);
            }
            if ($successRedirect) {
                LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam('', array('action', 'action_button')));
            }
        }
    }
示例#22
0
 function InstallUserFields()
 {
     $ImportantUserFields = $this->GetIdeaUserFields();
     $messages = array();
     $db_res = \Bitrix\Main\Localization\LanguageTable::getList(array('order' => array('SORT' => 'ASC')));
     while ($ar = $db_res->fetch()) {
         $messages[$ar["LID"]] = IncludeModuleLangFile(__FILE__, $ar["LID"], true);
     }
     foreach ($ImportantUserFields as $UserFieldName => $Exists) {
         if (!$Exists) {
             $EDIT_FORM_LABEL = array();
             foreach ($messages as $lid => $mess) {
                 $EDIT_FORM_LABEL[$lid] = $mess["IDEA_" . $UserFieldName . "_DESCRIPTION"];
             }
             $UserType = new CUserTypeEntity();
             switch ($UserFieldName) {
                 case "UF_CATEGORY_CODE":
                     GetMessage("IDEA_UF_CATEGORY_CODE_DESCRIPTION");
                     $UserType->Add(array("ENTITY_ID" => "BLOG_POST", "FIELD_NAME" => $UserFieldName, "USER_TYPE_ID" => "string", "IS_SEARCHABLE" => "N", "EDIT_FORM_LABEL" => $EDIT_FORM_LABEL));
                     break;
                 case "UF_ANSWER_ID":
                     GetMessage("IDEA_UF_ANSWER_ID_DESCRIPTION");
                     $UserType->Add(array("ENTITY_ID" => "BLOG_POST", "FIELD_NAME" => $UserFieldName, "USER_TYPE_ID" => "integer", "IS_SEARCHABLE" => "N", "MULTIPLE" => "Y", "EDIT_FORM_LABEL" => $EDIT_FORM_LABEL));
                     break;
                 case "UF_ORIGINAL_ID":
                     GetMessage("IDEA_UF_ORIGINAL_ID_DESCRIPTION");
                     $UserType->Add(array("ENTITY_ID" => "BLOG_POST", "FIELD_NAME" => $UserFieldName, "USER_TYPE_ID" => "string", "IS_SEARCHABLE" => "N", "EDIT_FORM_LABEL" => $EDIT_FORM_LABEL));
                     break;
                 case "UF_STATUS":
                     GetMessage("IDEA_UF_STATUS_DESCRIPTION");
                     $ID = $UserType->Add(array("ENTITY_ID" => "BLOG_POST", "FIELD_NAME" => $UserFieldName, "USER_TYPE_ID" => "enumeration", "IS_SEARCHABLE" => "N", "EDIT_FORM_LABEL" => $EDIT_FORM_LABEL));
                     if (intval($ID) > 0) {
                         $UserTypeEnum = new CUserFieldEnum();
                         $UserTypeEnum->SetEnumValues($ID, array("n0" => array("SORT" => 100, "XML_ID" => "NEW", "VALUE" => GetMessage("IDEA_UF_STATUS_NEW_TITLE"), "DEF" => "Y"), "n1" => array("SORT" => 200, "XML_ID" => "PROCESSING", "VALUE" => GetMessage("IDEA_UF_STATUS_PROCESSING_TITLE"), "DEF" => "N"), "n2" => array("SORT" => 300, "XML_ID" => "COMPLETED", "VALUE" => GetMessage("IDEA_UF_STATUS_COMPLETED_TITLE"), "DEF" => "N")));
                     }
                     break;
             }
         }
     }
 }
示例#23
0
 public function GetStatusList($XML_ID = false)
 {
     if (is_array($this->CacheStorage["STATUS_LIST"]) && array_key_exists(intval($XML_ID), $this->CacheStorage["STATUS_LIST"])) {
         return $this->CacheStorage["STATUS_LIST"][intval($XML_ID)];
     }
     $obCache = new CPHPCache();
     $life_time = 60 * 60 * 24 * 30;
     //over 1 month
     $cache_id = 'idea_status_list';
     //no need to keep unique all time, just caching for 1 day if no changes
     $cache_path = '/' . SITE_ID . '/idea/status_list/';
     $arStatus = array();
     if ($obCache->StartDataCache($life_time, $cache_id, $cache_path)) {
         $arStatusField = CUserTypeEntity::GetList(array(), array("ENTITY_ID" => "BLOG_POST", "FIELD_NAME" => CIdeaManagment::UFStatusField))->Fetch();
         if ($arStatusField) {
             $oStatus = CUserFieldEnum::GetList(array(), array("USER_FIELD_ID" => $arStatusField["ID"]));
             while ($r = $oStatus->Fetch()) {
                 $arStatus[$r["ID"]] = $r;
             }
             $obCache->EndDataCache($arStatus);
         } else {
             $obCache->AbortDataCache();
         }
     } else {
         $arStatus = $obCache->GetVars();
     }
     if ($XML_ID) {
         $arStatusXML = array();
         foreach ($arStatus as $Status) {
             $arStatusXML[$Status["XML_ID"]] = $Status;
         }
         $arStatus = $arStatusXML;
     }
     return $this->CacheStorage["STATUS_LIST"][intval($XML_ID)] = $arStatus;
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $file = $input->getArgument('file');
     if (!file_exists($file) || !($fh = fopen($file, 'r'))) {
         $output->writeln('<error>Can\'t read data from file</error>');
         return null;
     }
     //выбираем группу
     $group = 0;
     $res = \CGroup::GetList($by = '', $order = '', ['STRING_ID' => 'totaldict_chairman_experts']);
     if ($ob = $res->Fetch()) {
         $group = $ob['ID'];
     }
     //выбираем список статусов
     $statusList = [];
     $rsData = \CUserTypeEntity::GetList([], ['ENTITY_ID' => 'USER', 'FIELD_NAME' => 'UF_TD_ORG_STATUS']);
     if ($fob = $rsData->GetNext()) {
         $ar = ['newby' => 'НОВИЧКИ', 'pretty_boy' => 'КРАСАВЧИКИ', 'catching' => 'ДОГОНЯЮЩИЕ', 'redneck' => 'ДЕРЕВНИ'];
         $res = \CUserFieldEnum::GetList([], ['USER_FIELD_ID' => $fob['ID']]);
         while ($ob = $res->Fetch()) {
             if (empty($ar[$ob['XML_ID']])) {
                 continue;
             }
             $statusList[$ar[$ob['XML_ID']]] = $ob['ID'];
         }
     }
     //список стран для заполнения
     $countries = GetCountryArray();
     $countries = array_combine($countries['reference'], $countries['reference_id']);
     $currentStatus = null;
     while (($data = fgetcsv($fh)) !== false) {
         //если заполнена только вторая колонка то это статус
         if (empty($data[1]) && !empty($data[0]) && isset($statusList[$data[0]])) {
             $currentStatus = $statusList[$data[1]];
             continue;
         }
         //массив для загрузки данных пользователя
         $arLoad = ['ACTIVE' => 'Y', 'PERSONAL_COUNTRY' => isset($countries['Россия']) ? $countries['Россия'] : null, 'PERSONAL_CITY' => $data[0], 'LAST_NAME' => $data[1], 'WORK_POSITION' => $data[3], 'PERSONAL_MOBILE' => $data[4], 'PERSONAL_STREET' => $data[6], 'PERSONAL_WWW' => $data[8], 'PASSWORD' => 'Test,user,passwr0d', 'CONFIRM_PASSWORD' => 'Test,user,passwr0d', 'UF_TD_ORG_STATUS' => $currentStatus, 'GROUP_ID' => [2, $group]];
         //пробуем разбить email
         if (strpos($data[5], ',')) {
             $explode = array_map('trim', explode(',', $data[5]));
             $arLoad['EMAIL'] = $explode[0];
             unset($explode[0]);
             $arLoad['PERSONAL_NOTES'] = implode(', ', $explode);
         } elseif (strpos($data[5], 'и')) {
             $explode = array_map('trim', explode('и', $data[5]));
             $arLoad['EMAIL'] = $explode[0];
             unset($explode[0]);
             $arLoad['PERSONAL_NOTES'] = implode(', ', $explode);
         } elseif (strpos($data[5], ';')) {
             $explode = array_map('trim', explode(';', $data[5]));
             $arLoad['EMAIL'] = $explode[0];
             unset($explode[0]);
             $arLoad['PERSONAL_NOTES'] = implode(', ', $explode);
         } elseif (strpos($data[5], ' ')) {
             $explode = array_map('trim', explode(' ', $data[5]));
             $arLoad['EMAIL'] = $explode[0];
             unset($explode[0]);
             $arLoad['PERSONAL_NOTES'] = implode(', ', $explode);
         } else {
             $arLoad['EMAIL'] = trim($data[5]);
         }
         //пробуем разбить фамилию и имя
         if (strpos($data[2], ' ')) {
             $explode = explode(' ', trim($data[2]));
             $arLoad['NAME'] = $explode[0];
             $arLoad['SECOND_NAME'] = $explode[1];
         } else {
             $arLoad['NAME'] = trim($data[2]);
         }
         //пробуем завести дату в базу
         if (($time = strtotime($data[7])) !== false) {
             $arLoad['PERSONAL_BIRTHDAY'] = ConvertTimeStamp($time, 'SHORT', 'ru');
         }
         //пробуем найти страну, чтобы привязать пользователя к городу
         $country = \bxpimple\Locator::$item->get('countryFinder')->mergeFilterWith(['NAME' => 'Россия'])->one();
         if ($country) {
             //если нашли страну, то пробуем найти и город
             $city = \bxpimple\Locator::$item->get('cityFinder')->mergeFilterWith(['NAME' => trim($data[0]), 'PROPERTY_TOTALDICT_GEO_CITIES_COUNTRY' => $country->getAttribute('ID')->getValue()])->one();
             if ($city) {
                 //если нашли город, то привязываем пользователя
                 $arLoad['UF_TD_CITY_IB'] = $city->getAttribute('ID')->getValue();
             }
         }
         //задаем логин, по умолчанию используем email
         $arLoad['LOGIN'] = $arLoad['EMAIL'];
         //пробуем найти пользователя по его логину
         $user = new \CUser();
         $res = \CUser::GetList($by = '', $order = '', ['LOGIN_EQUAL' => $arLoad['LOGIN']]);
         if ($ob = $res->Fetch()) {
             $arGroups = \CUser::GetUserGroup($ob['ID']);
             if (is_array($arGroups)) {
                 $arLoad['GROUP_ID'] = array_unique(array_merge($arLoad['GROUP_ID'], $arGroups));
             }
             //обновляем
             if (!$user->Update($ob['ID'], $arLoad)) {
                 $output->writeln('<error>User ' . $arLoad['LOGIN'] . ' error: ' . $user->LAST_ERROR . '</error>');
             } else {
                 $output->writeln('<info>User ' . $arLoad['LOGIN'] . ' updated</info>');
             }
         } else {
             //создаем нового
             if (!$user->Add($arLoad)) {
                 $output->writeln('<error>User ' . $arLoad['LOGIN'] . ' error: ' . $user->LAST_ERROR . '</error>');
             } else {
                 $output->writeln('<info>New user ' . $arLoad['LOGIN'] . ' added</info>');
             }
         }
     }
     fclose($fh);
 }
示例#25
0
 function GetPeriodByID($ID, $ENTITY = "USER")
 {
     $entities = CUserTypeEntity::GetList(array(), array("ENTITY_ID" => $ENTITY, "FIELD_NAME" => "UF_REPORT_PERIOD"));
     if ($arEntity = $entities->Fetch()) {
         $oStatus = CUserFieldEnum::GetList(array(), array("USER_FIELD_ID" => $arEntity["ID"]));
         while ($result = $oStatus->Fetch()) {
             if ($ID == $result["ID"]) {
                 return $result["XML_ID"];
             }
         }
     }
     return false;
 }
示例#26
0
 public function ListAddEnumFieldsValue($arParams, &$arValue, &$arReplaceValue, $delimiter = '<br />', $textonly = false, $arOptions = array())
 {
     global $APPLICATION;
     $arUserFields = $this->GetUserFields($this->sEntityID, 0, LANGUAGE_ID);
     $bSecondLoop = false;
     $arValuePrepare = array();
     if (!is_array($arOptions)) {
         $arOptions = array();
     }
     // The first loop to collect all the data fields
     foreach ($arUserFields as $FIELD_NAME => &$arUserField) {
         foreach ($arValue as $ID => $data) {
             if (!isset($arValue[$ID][$FIELD_NAME]) && $arUserField['USER_TYPE']['USER_TYPE_ID'] != 'boolean') {
                 continue;
             }
             if ($arUserField['USER_TYPE']['USER_TYPE_ID'] == 'boolean') {
                 if (isset($arValue[$ID][$FIELD_NAME])) {
                     $arValue[$ID][$FIELD_NAME] == ($arValue[$ID][$FIELD_NAME] == 1 || $arValue[$ID][$FIELD_NAME] == 'Y' ? 'Y' : 'N');
                 }
                 $arVal = $arValue[$ID][$FIELD_NAME];
                 if (!is_array($arVal)) {
                     $arVal = array($arVal);
                 }
                 foreach ($arVal as $val) {
                     $val = (string) $val;
                     if (strlen($val) <= 0) {
                         //Empty value is always 'N' (not default field value)
                         $val = 'N';
                     }
                     $arReplaceValue[$ID][$FIELD_NAME] .= (!empty($arReplaceValue[$ID][$FIELD_NAME]) ? $delimiter : '') . ($val == 1 ? GetMessage('MAIN_YES') : GetMessage('MAIN_NO'));
                     if ($arUserField['MULTIPLE'] == 'Y') {
                         $arValue[$ID][$FIELD_NAME][] = $val == 1 || $val == 'Y' ? 'Y' : 'N';
                     } else {
                         $arValue[$ID][$FIELD_NAME] = $val == 1 || $val == 'Y' ? 'Y' : 'N';
                     }
                 }
             } elseif ($arUserField['USER_TYPE']['USER_TYPE_ID'] == 'crm_status') {
                 $ar = CCrmStatus::GetStatusList($arUserField['SETTINGS']['ENTITY_TYPE']);
                 $arReplaceValue[$ID][$FIELD_NAME] = isset($ar[$arValue[$ID][$FIELD_NAME]]) ? $ar[$arValue[$ID][$FIELD_NAME]] : '';
             } else {
                 if ($arUserField['USER_TYPE']['USER_TYPE_ID'] == 'crm') {
                     $arParams['CRM_ENTITY_TYPE'] = array();
                     if ($arUserField['SETTINGS']['LEAD'] == 'Y') {
                         $arParams['CRM_ENTITY_TYPE'][] = 'LEAD';
                     }
                     if ($arUserField['SETTINGS']['CONTACT'] == 'Y') {
                         $arParams['CRM_ENTITY_TYPE'][] = 'CONTACT';
                     }
                     if ($arUserField['SETTINGS']['COMPANY'] == 'Y') {
                         $arParams['CRM_ENTITY_TYPE'][] = 'COMPANY';
                     }
                     if ($arUserField['SETTINGS']['DEAL'] == 'Y') {
                         $arParams['CRM_ENTITY_TYPE'][] = 'DEAL';
                     }
                     $arParams['CRM_PREFIX'] = false;
                     if (count($arParams['CRM_ENTITY_TYPE']) > 1) {
                         $arParams['CRM_PREFIX'] = true;
                     }
                     $bSecondLoop = true;
                     $arVal = $arValue[$ID][$FIELD_NAME];
                     if (!is_array($arVal)) {
                         $arVal = array($arVal);
                     }
                     foreach ($arVal as $value) {
                         if ($arParams['CRM_PREFIX']) {
                             $ar = explode('_', $value);
                             $arValuePrepare[$arUserField['USER_TYPE']['USER_TYPE_ID']][CUserTypeCrm::GetLongEntityType($ar[0])][] = intval($ar[1]);
                             $arValuePrepare[$arUserField['USER_TYPE']['USER_TYPE_ID']]['FIELD'][$ID][$FIELD_NAME][CUserTypeCrm::GetLongEntityType($ar[0])][intval($ar[1])] = intval($ar[1]);
                         } else {
                             if (is_numeric($value)) {
                                 $arValuePrepare[$arUserField['USER_TYPE']['USER_TYPE_ID']][$arParams['CRM_ENTITY_TYPE'][0]][] = $value;
                                 $arValuePrepare[$arUserField['USER_TYPE']['USER_TYPE_ID']]['FIELD'][$ID][$FIELD_NAME][$arParams['CRM_ENTITY_TYPE'][0]][$value] = $value;
                             } else {
                                 $ar = explode('_', $value);
                                 $arValuePrepare[$arUserField['USER_TYPE']['USER_TYPE_ID']][CUserTypeCrm::GetLongEntityType($ar[0])][] = intval($ar[1]);
                                 $arValuePrepare[$arUserField['USER_TYPE']['USER_TYPE_ID']]['FIELD'][$ID][$FIELD_NAME][CUserTypeCrm::GetLongEntityType($ar[0])][intval($ar[1])] = intval($ar[1]);
                             }
                         }
                     }
                     $arReplaceValue[$ID][$FIELD_NAME] = '';
                 } else {
                     if ($arUserField['USER_TYPE']['USER_TYPE_ID'] == 'file' || $arUserField['USER_TYPE']['USER_TYPE_ID'] == 'employee' || $arUserField['USER_TYPE']['USER_TYPE_ID'] == 'iblock_element' || $arUserField['USER_TYPE']['USER_TYPE_ID'] == 'enumeration' || $arUserField['USER_TYPE']['USER_TYPE_ID'] == 'iblock_section') {
                         $bSecondLoop = true;
                         $arVal = $arValue[$ID][$FIELD_NAME];
                         $arReplaceValue[$ID][$FIELD_NAME] = '';
                         if (!is_array($arVal)) {
                             $arVal = array($arVal);
                         }
                         foreach ($arVal as $value) {
                             $arValuePrepare[$arUserField['USER_TYPE']['USER_TYPE_ID']]['FIELD'][$ID][$FIELD_NAME][$value] = $value;
                             $arValuePrepare[$arUserField['USER_TYPE']['USER_TYPE_ID']]['ID'][] = $value;
                         }
                     } else {
                         if ($arUserField['MULTIPLE'] == 'Y' && is_array($arValue[$ID][$FIELD_NAME])) {
                             array_walk($arValue[$ID][$FIELD_NAME], create_function('&$v', '$v = htmlspecialcharsbx($v);'));
                             $arReplaceValue[$ID][$FIELD_NAME] = implode($delimiter, $arValue[$ID][$FIELD_NAME]);
                         }
                     }
                 }
             }
         }
     }
     unset($arUserField);
     // The second loop for special field
     if ($bSecondLoop) {
         $arValueReplace = array();
         $arList = array();
         foreach ($arValuePrepare as $KEY => $VALUE) {
             // collect multi data
             if ($KEY == 'iblock_section') {
                 $dbRes = CIBlockSection::GetList(array('left_margin' => 'asc'), array('ID' => $VALUE['ID']), false);
                 while ($arRes = $dbRes->Fetch()) {
                     $arList[$KEY][$arRes['ID']] = $arRes;
                 }
             } elseif ($KEY == 'file') {
                 $dbRes = CFile::GetList(array(), array('@ID' => implode(',', $VALUE['ID'])));
                 while ($arRes = $dbRes->Fetch()) {
                     $arList[$KEY][$arRes['ID']] = $arRes;
                 }
             } elseif ($KEY == 'iblock_element') {
                 $dbRes = CIBlockElement::GetList(array('SORT' => 'DESC', 'NAME' => 'ASC'), array('ID' => $VALUE['ID']), false);
                 while ($arRes = $dbRes->Fetch()) {
                     $arList[$KEY][$arRes['ID']] = $arRes;
                 }
             } elseif ($KEY == 'employee') {
                 $dbRes = CUser::GetList($by = 'last_name', $order = 'asc', array('ID' => implode('|', $VALUE['ID'])));
                 while ($arRes = $dbRes->Fetch()) {
                     $arList[$KEY][$arRes['ID']] = $arRes;
                 }
             } elseif ($KEY == 'enumeration') {
                 foreach ($VALUE['ID'] as $___value) {
                     $rsEnum = CUserFieldEnum::GetList(array(), array('ID' => $___value));
                     while ($arRes = $rsEnum->Fetch()) {
                         $arList[$KEY][$arRes['ID']] = $arRes;
                     }
                 }
             } elseif ($KEY == 'crm') {
                 if (isset($VALUE['LEAD']) && !empty($VALUE['LEAD'])) {
                     $dbRes = CCrmLead::GetList(array('TITLE' => 'ASC', 'LAST_NAME' => 'ASC', 'NAME' => 'ASC'), array('ID' => $VALUE['LEAD']));
                     while ($arRes = $dbRes->Fetch()) {
                         $arList[$KEY]['LEAD'][$arRes['ID']] = $arRes;
                     }
                 }
                 if (isset($VALUE['CONTACT']) && !empty($VALUE['CONTACT'])) {
                     $dbRes = CCrmContact::GetList(array('LAST_NAME' => 'ASC', 'NAME' => 'ASC'), array('ID' => $VALUE['CONTACT']));
                     while ($arRes = $dbRes->Fetch()) {
                         $arList[$KEY]['CONTACT'][$arRes['ID']] = $arRes;
                     }
                 }
                 if (isset($VALUE['COMPANY']) && !empty($VALUE['COMPANY'])) {
                     $dbRes = CCrmCompany::GetList(array('TITLE' => 'ASC'), array('ID' => $VALUE['COMPANY']));
                     while ($arRes = $dbRes->Fetch()) {
                         $arList[$KEY]['COMPANY'][$arRes['ID']] = $arRes;
                     }
                 }
                 if (isset($VALUE['DEAL']) && !empty($VALUE['DEAL'])) {
                     $dbRes = CCrmDeal::GetList(array('TITLE' => 'ASC'), array('ID' => $VALUE['DEAL']));
                     while ($arRes = $dbRes->Fetch()) {
                         $arList[$KEY]['DEAL'][$arRes['ID']] = $arRes;
                     }
                 }
             }
             // assemble multi data
             foreach ($VALUE['FIELD'] as $ID => $arFIELD_NAME) {
                 foreach ($arFIELD_NAME as $FIELD_NAME => $FIELD_VALUE) {
                     foreach ($FIELD_VALUE as $FIELD_VALUE_NAME => $FIELD_VALUE_ID) {
                         if ($KEY == 'iblock_section') {
                             $sname = htmlspecialcharsbx($arList[$KEY][$FIELD_VALUE_ID]['NAME']);
                             $arReplaceValue[$ID][$FIELD_NAME] .= (!empty($arReplaceValue[$ID][$FIELD_NAME]) ? $delimiter : '') . $sname;
                         }
                         if ($KEY == 'iblock_element') {
                             $sname = htmlspecialcharsbx($arList[$KEY][$FIELD_VALUE_ID]['NAME']);
                             if (!$textonly) {
                                 $surl = GetIBlockElementLinkById($arList[$KEY][$FIELD_VALUE_ID]['ID']);
                                 if ($surl && strlen($surl) > 0) {
                                     $sname = '<a href="' . $surl . '">' . $sname . '</a>';
                                 }
                             }
                             $arReplaceValue[$ID][$FIELD_NAME] .= (!empty($arReplaceValue[$ID][$FIELD_NAME]) ? $delimiter : '') . $sname;
                         } else {
                             if ($KEY == 'employee') {
                                 $sname = CUser::FormatName(CSite::GetNameFormat(false), $arList[$KEY][$FIELD_VALUE_ID], false, true);
                                 if (!$textonly) {
                                     $ar['PATH_TO_USER_PROFILE'] = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_user_profile'), array('user_id' => $arList[$KEY][$FIELD_VALUE_ID]['ID']));
                                     $sname = '<a href="' . $ar['PATH_TO_USER_PROFILE'] . '" id="balloon_' . $arParams['GRID_ID'] . '_' . $arList[$KEY][$FIELD_VALUE_ID]['ID'] . '">' . $sname . '</a>' . '<script type="text/javascript">BX.tooltip(' . $arList[$KEY][$FIELD_VALUE_ID]['ID'] . ', "balloon_' . $arParams['GRID_ID'] . '_' . $arList[$KEY][$FIELD_VALUE_ID]['ID'] . '", "");</script>';
                                 }
                                 $arReplaceValue[$ID][$FIELD_NAME] .= (!empty($arReplaceValue[$ID][$FIELD_NAME]) ? $delimiter : '') . $sname;
                             } else {
                                 if ($KEY == 'enumeration') {
                                     $arReplaceValue[$ID][$FIELD_NAME] .= (!empty($arReplaceValue[$ID][$FIELD_NAME]) ? $delimiter : '') . htmlspecialcharsbx($arList[$KEY][$FIELD_VALUE_ID]['VALUE']);
                                 } else {
                                     if ($KEY == 'file') {
                                         $fileInfo = $arList[$KEY][$FIELD_VALUE_ID];
                                         if ($textonly) {
                                             $fileUrl = CFile::GetFileSRC($fileInfo);
                                         } else {
                                             $fileUrlTemplate = isset($arOptions['FILE_URL_TEMPLATE']) ? $arOptions['FILE_URL_TEMPLATE'] : '';
                                             $fileUrl = $fileUrlTemplate === '' ? CFile::GetFileSRC($fileInfo) : CComponentEngine::MakePathFromTemplate($fileUrlTemplate, array('owner_id' => $ID, 'field_name' => $FIELD_NAME, 'file_id' => $fileInfo['ID']));
                                         }
                                         $sname = $textonly ? $fileUrl : '<a href="' . htmlspecialcharsbx($fileUrl) . '" target="_blank">' . htmlspecialcharsbx($arList[$KEY][$FIELD_VALUE_ID]['FILE_NAME']) . '</a>';
                                         $arReplaceValue[$ID][$FIELD_NAME] .= (!empty($arReplaceValue[$ID][$FIELD_NAME]) ? $delimiter : '') . $sname;
                                     } else {
                                         if ($KEY == 'crm') {
                                             foreach ($FIELD_VALUE_ID as $CID) {
                                                 $link = '';
                                                 $title = '';
                                                 $prefix = '';
                                                 if ($FIELD_VALUE_NAME == 'LEAD') {
                                                     $link = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_show'), array('lead_id' => $CID));
                                                     $title = $arList[$KEY]['LEAD'][$CID]['TITLE'];
                                                     $prefix = 'L';
                                                 } elseif ($FIELD_VALUE_NAME == 'CONTACT') {
                                                     $link = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_contact_show'), array('contact_id' => $CID));
                                                     $title = CCrmContact::GetFullName($arList[$KEY]['CONTACT'][$CID], true);
                                                     $prefix = 'C';
                                                 } elseif ($FIELD_VALUE_NAME == 'COMPANY') {
                                                     $link = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_company_show'), array('company_id' => $CID));
                                                     $title = $arList[$KEY]['COMPANY'][$CID]['TITLE'];
                                                     $prefix = 'CO';
                                                 } elseif ($FIELD_VALUE_NAME == 'DEAL') {
                                                     $link = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_show'), array('deal_id' => $CID));
                                                     $title = $arList[$KEY]['DEAL'][$CID]['TITLE'];
                                                     $prefix = 'D';
                                                 }
                                                 $sname = htmlspecialcharsbx($title);
                                                 if (!$textonly) {
                                                     $tooltip = '<script type="text/javascript">BX.tooltip(' . $CID . ', "balloon_' . $ID . '_' . $FIELD_NAME . '_' . $FIELD_VALUE_NAME . '_' . $CID . '", "/bitrix/components/bitrix/crm.' . strtolower($FIELD_VALUE_NAME) . '.show/card.ajax.php", "crm_balloon' . ($FIELD_VALUE_NAME == 'LEAD' || $FIELD_VALUE_NAME == 'DEAL' || $FIELD_VALUE_NAME == 'QUOTE' ? '_no_photo' : '_' . strtolower($FIELD_VALUE_NAME)) . '", true);</script>';
                                                     $sname = '<a href="' . $link . '" target="_blank" id="balloon_' . $ID . '_' . $FIELD_NAME . '_' . $FIELD_VALUE_NAME . '_' . $CID . '">' . $sname . '</a>' . $tooltip;
                                                 } else {
                                                     $sname = "[{$prefix}]{$sname}";
                                                 }
                                                 $arReplaceValue[$ID][$FIELD_NAME] .= (!empty($arReplaceValue[$ID][$FIELD_NAME]) ? $delimiter : '') . $sname;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
示例#27
0
// arUserField VALUE- значение пользовательского свойства
// *****************************************************************************************
$arParams["bVarsFromForm"] = $arParams["bVarsFromForm"] ? true : false;
$arResult["VALUE"] = false;
// *****************************************************************************************
if ($arParams["arUserField"]["USER_TYPE"]) {
    $arResult["VALUE"] = $arParams["~arUserField"]["VALUE"];
    if (!is_array($arResult["VALUE"])) {
        $arResult["VALUE"] = array($arResult["VALUE"]);
    }
    if (empty($arResult["VALUE"])) {
        $arResult["VALUE"] = array(null);
    }
    $arResult["~VALUE"] = $arResult["VALUE"];
    if ($arParams["arUserField"]["USER_TYPE"]["BASE_TYPE"] == "enum") {
        $obEnum = new CUserFieldEnum();
        $rsEnum = $obEnum->GetList(array(), array("USER_FIELD_ID" => $arParams["arUserField"]["ID"]));
        $enum = array();
        while ($arEnum = $rsEnum->GetNext()) {
            $enum[$arEnum["ID"]] = $arEnum["VALUE"];
        }
        $arParams["arUserField"]["USER_TYPE"]["FIELDS"] = $enum;
    }
    foreach ($arResult["VALUE"] as $key => $res) {
        switch ($arParams["arUserField"]["USER_TYPE"]["BASE_TYPE"]) {
            case "double":
                if (strlen($res) > 0) {
                    $res = round(doubleval($res), $arParams["arUserField"]["SETTINGS"]["PRECISION"]);
                }
                break;
            case "int":
 /**
  * Synchronize source type fields with destination type fields.
  * Matches are searched by comparing field labels.
  * If a source field is not found in the destination type, it will be created there.
  * @static
  * @param int $srcEntityTypeID Source Entity Type ID
  * @param int $dstEntityTypeID Destination Entity Type ID
  * @param string $languageID Language
  * @return void
  */
 public static function synchronize($srcEntityTypeID, $dstEntityTypeID, $languageID = '')
 {
     /** @var \CAllMain $APPLICATION */
     global $APPLICATION;
     $entity = new \CUserTypeEntity();
     $entityID = \CCrmOwnerType::ResolveUserFieldEntityID($dstEntityTypeID);
     $fields = self::getSynchronizationFields($srcEntityTypeID, $dstEntityTypeID, $languageID, true);
     foreach ($fields as $field) {
         $srcField = $entity->GetByID($field['ID']);
         if (!is_array($srcField)) {
             continue;
         }
         $typeID = $srcField['USER_TYPE_ID'];
         do {
             $fieldName = 'UF_CRM_' . strtoupper(uniqid());
             $dbResult = $entity->GetList(array(), array('ENTITY_ID' => $entityID, 'FIELD_NAME' => $fieldName));
         } while (is_array($dbResult->Fetch()));
         $dstField = array('FIELD_NAME' => $fieldName, 'ENTITY_ID' => $entityID, 'USER_TYPE_ID' => $typeID, 'SORT' => isset($srcField['SORT']) ? $srcField['SORT'] : 100, 'MULTIPLE' => isset($srcField['MULTIPLE']) ? $srcField['MULTIPLE'] : 'N', 'MANDATORY' => isset($srcField['MANDATORY']) ? $srcField['MANDATORY'] : 'N', 'SHOW_FILTER' => isset($srcField['SHOW_FILTER']) ? $srcField['SHOW_FILTER'] : 'N', 'SHOW_IN_LIST' => isset($srcField['SHOW_IN_LIST']) ? $srcField['SHOW_IN_LIST'] : 'N');
         if (isset($srcField['SETTINGS'])) {
             $dstField['SETTINGS'] = $srcField['SETTINGS'];
         }
         if (isset($srcField['EDIT_FORM_LABEL'])) {
             $dstField['EDIT_FORM_LABEL'] = $srcField['EDIT_FORM_LABEL'];
         }
         if (isset($srcField['LIST_COLUMN_LABEL'])) {
             $dstField['LIST_COLUMN_LABEL'] = $srcField['LIST_COLUMN_LABEL'];
         }
         if (isset($srcField['LIST_FILTER_LABEL'])) {
             $dstField['LIST_FILTER_LABEL'] = $srcField['LIST_FILTER_LABEL'];
         }
         $ID = $entity->Add($dstField);
         if ($ID === false) {
             throw new UserFieldSynchronizationException($dstField, $APPLICATION->GetException(), UserFieldSynchronizationException::CREATE_FAILED, __FILE__, __LINE__);
         }
         if ($typeID === 'enumeration') {
             if (is_callable(array($field['USER_TYPE']['CLASS_NAME'], 'GetList'))) {
                 $enumList = array();
                 $enumQty = 0;
                 $enumResult = call_user_func_array(array($field['USER_TYPE']['CLASS_NAME'], 'GetList'), array($field));
                 while ($enum = $enumResult->GetNext()) {
                     unset($enum['ID']);
                     $enumList["n{$enumQty}"] = $enum;
                     $enumQty++;
                 }
                 $enumEntity = new \CUserFieldEnum();
                 $enumEntity->SetEnumValues($ID, $enumList);
             }
         }
     }
     $historyItem = self::getHistoryItem($srcEntityTypeID, $dstEntityTypeID);
     if ($historyItem === null) {
         $historyItem = array();
     }
     $historyItem['sync'] = new DateTime();
     $historyItem['check'] = new DateTime();
     $historyItem['required'] = false;
     self::setHistoryItem($srcEntityTypeID, $dstEntityTypeID, $historyItem);
 }
示例#29
0
                 $v = intval($matches[1][0]) + (strtolower($matches[3][0]) == 'pm' ? 12 : 0) . ':' . $matches[2][0];
             }
         }
         $arFields[$key] = $v;
     } else {
         $arFields[$key] = $_REQUEST[$key];
     }
 }
 if ($arFields['UF_TM_ALLOWED_DELTA']) {
     $arFields['UF_TM_ALLOWED_DELTA'] = CTimeMan::FormatTime($arFields['UF_TM_ALLOWED_DELTA'], true);
 }
 $arAllFields = $USER_FIELD_MANAGER->GetUserFields($source == 'department' ? 'IBLOCK_' . COption::GetOptionInt('intranet', 'iblock_structure') . '_SECTION' : 'USER');
 $arEnumFields = array('UF_TIMEMAN', 'UF_TM_REPORT_REQ', 'UF_TM_FREE');
 foreach ($arEnumFields as $fld) {
     if ($arFields[$fld]) {
         $dbRes = CUserFieldEnum::GetList(array(), array('USER_FIELD_ID' => $arAllFields[$fld]['ID'], 'XML_ID' => $arFields[$fld]));
         if ($arRes = $dbRes->Fetch()) {
             $arFields[$fld] = $arRes['ID'];
         }
     }
 }
 if ($source == 'department') {
     $obSection = new CIBlockSection();
     $obSection->Update($ID, $arFields);
     $CACHE_MANAGER->CleanDir("timeman_structure_" . COption::GetOptionInt('intranet', 'iblock_structure'));
     $res = array('ID' => $ID, 'SETTINGS' => CTimeMan::GetSectionPersonalSettings($ID, true, $arNeededSettings), 'SETTINGS_ALL' => CTimeMan::GetSectionSettings($ID, $arNeededSettings));
 } else {
     $obUser = new CUser();
     $obUser->Update($ID, $arFields);
     $CACHE_MANAGER->CleanDir("timeman_structure_" . COption::GetOptionInt('intranet', 'iblock_structure'));
     $TMUSER = new CTimeManUser($ID);
示例#30
0
 public static function OnSearchIndex($arUserField)
 {
     $res = '';
     if (is_array($arUserField["VALUE"])) {
         $val = $arUserField["VALUE"];
     } else {
         $val = array($arUserField["VALUE"]);
     }
     $val = array_filter($val, "strlen");
     if (count($val)) {
         $ob = new CUserFieldEnum();
         $rs = $ob->GetList(array(), array("USER_FIELD_ID" => $arUserField["ID"], "ID" => $val));
         while ($ar = $rs->Fetch()) {
             $res .= $ar["VALUE"] . "\r\n";
         }
     }
     return $res;
 }