%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/search.page/templates/icons/ |
Current File : /home/bitrix/www/bitrix/components/bitrix/search.page/templates/icons/result_modifier.php |
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); //You may customize user card fields to display $arResult['USER_PROPERTY'] = array( "UF_DEPARTMENT", "PERSONAL_PHOTO", ); //Code below searches for appropriate icon for search index item. //All filenames should be lowercase. //1 //Check if index item is information block element with property DOC_TYPE set. //This property should be type list and we'll take it's values XML_ID as parameter //iblock_doc_type_<xml_id>.gif //2 //When no such fle found we'll check for section attributes //iblock_section_<code>.gif //iblock_section_<id>.gif //iblock_section_<xml_id>.gif //3 //Next we'll try to detect icon by "extention". //where extension is all a-z between dot and end of title //iblock_type_<iblock type id>_<extension>.gif //4 //If we still failed. Try to match information block attributes. //iblock_iblock_<code>.gif //iblock_iblock_<id>.gif //iblock_iblock_<xml_id>.gif //5 //If indexed item is section when checkj for //iblock_section.gif //If it is an element when chek for //iblock_element.gif //6 //If item belongs to main module (static file) //when check is done by it's extention //main_<extention>.gif //7 //For blog module we'll check if icon for post or user exists //blog_post.gif //blog_user.gif //8, 9 and 10 //forum_message.gif //intranet_user.gif //socialnetwork_group.gif //11 //In case we still failed to find an icon //<module_id>_default.gif //12 //default.gif if (IsModuleInstalled('socialnetwork')) { if (strlen(trim($arParams["NAME_TEMPLATE"])) <= 0) $arParams["NAME_TEMPLATE"] = CSite::GetNameFormat(); $arParams['SHOW_LOGIN'] = $arParams['SHOW_LOGIN'] != "N" ? "Y" : "N"; $arParams["PATH_TO_SONET_MESSAGES_CHAT"] = trim($arParams["PATH_TO_SONET_MESSAGES_CHAT"]); if (strlen($arParams["PATH_TO_SONET_MESSAGES_CHAT"]) <= 0) $arParams["PATH_TO_SONET_MESSAGES_CHAT"] = "/company/personal/messages/chat/#USER_ID#/"; if (IsModuleInstalled('intranet')) { $arParams["PATH_TO_CONPANY_DEPARTMENT"] = trim($arParams["PATH_TO_CONPANY_DEPARTMENT"]); if (strlen($arParams["PATH_TO_CONPANY_DEPARTMENT"]) <= 0) $arParams["PATH_TO_CONPANY_DEPARTMENT"] = "/company/structure.php?set_filter_structure=Y&structure_UF_DEPARTMENT=#ID#"; } if (IsModuleInstalled('video')) { $arParams["PATH_TO_VIDEO_CALL"] = trim($arParams["PATH_TO_VIDEO_CALL"]); if (strlen($arParams["PATH_TO_VIDEO_CALL"]) <= 0) $arParams["PATH_TO_VIDEO_CALL"] = "/company/personal/video/#USER_ID#/"; } } $arIBlocks = array(); $image_path = $this->GetFolder()."/images/"; $abs_path = $_SERVER["DOCUMENT_ROOT"].$image_path; foreach($arResult["SEARCH"] as $i=>$arItem) { $file = false; switch($arItem["MODULE_ID"]) { case "socialnetwork": case "iblock": if(substr($arItem["ITEM_ID"], 0, 1) === "G") { if(file_exists($abs_path."socialnetwork_group.gif")) $file = "socialnetwork_group.gif"; } elseif(CModule::IncludeModule('iblock')) { if(!array_key_exists($arItem["PARAM2"], $arIBlocks)) $arIBlocks[$arItem["PARAM2"]] = CIBlock::GetArrayByID($arItem["PARAM2"]); //section /element if(substr($arItem["ITEM_ID"], 0, 1) !== "S") { //Try to find gif by element proprety value xml id $rsElement = CIBlockElement::GetList(array(), array( "=ID" => $arItem["ITEM_ID"], "IBLOCK_ID" => $arItem["PARAM2"], ), false, false, array( "ID", "IBLOCK_ID", "CODE", "XML_ID", "PROPERTY_DOC_TYPE", ) ); $arElement = $rsElement->Fetch(); if($arElement && strlen($arElement["PROPERTY_DOC_TYPE_ENUM_ID"]) > 0) { $arEnum = CIBlockPropertyEnum::GetByID($arElement["PROPERTY_DOC_TYPE_ENUM_ID"]); if($arEnum && $arEnum["XML_ID"]) { if(file_exists($abs_path."iblock_doc_type_".strtolower($arEnum["XML_ID"]).".gif")) $file = "iblock_doc_type_".strtolower($arEnum["XML_ID"]).".gif"; } } //We failed. next try should be element section if(!$file) { $rsSection = CIBlockElement::GetElementGroups($arItem["ITEM_ID"], true); $arSection = $rsSection->Fetch(); if($arSection) $SECTION_ID = $arSection["ID"]; } else { $SECTION_ID = false; } } else { $SECTION_ID = $arItem["ITEM_ID"]; } //If no element icon was found. We'll take chances with section if(!$file && $SECTION_ID) { $rsSection = CIBlockSection::GetList(array(), array( "=ID" => $SECTION_ID, "IBLOCK_ID" => $arItem["PARAM2"], ) ); if($arSection = $rsSection->Fetch()) { if(strlen($arSection["CODE"]) && file_exists($abs_path."iblock_section_".strtolower($arSection["CODE"]).".gif")) $file = "iblock_section_".strtolower($arSection["CODE"]).".gif"; elseif(file_exists($abs_path."iblock_section_".strtolower($arSection["ID"]).".gif")) $file = "iblock_section_".strtolower($arSection["ID"]).".gif"; elseif(strlen($arSection["XML_ID"]) && file_exists($abs_path."iblock_section_".strtolower($arSection["XML_ID"]).".gif")) $file = "iblock_section_".strtolower($arSection["XML_ID"]).".gif"; } } //Try to detect by "extension" $match = array(); if(!$file && preg_match("/\\.([a-z]+?)$/i", $arItem["TITLE"], $match)) { if(file_exists($abs_path."iblock_type_".strtolower($arIBlocks[$arItem["PARAM2"]]["IBLOCK_TYPE_ID"])."_".$match[1].".gif")) $file = "iblock_type_".strtolower($arIBlocks[$arItem["PARAM2"]]["IBLOCK_TYPE_ID"])."_".$match[1].".gif"; } //We still failed to find icon? Try iblock itself if(!$file) { if(strlen($arIBlocks[$arItem["PARAM2"]]["CODE"]) && file_exists($abs_path."iblock_iblock_".strtolower($arIBlocks[$arItem["PARAM2"]]["CODE"]).".gif")) $file = "iblock_iblock_".strtolower($arIBlocks[$arItem["PARAM2"]]["CODE"]).".gif"; elseif(file_exists($abs_path."iblock_iblock_".strtolower($arIBlocks[$arItem["PARAM2"]]["ID"]).".gif")) $file = "iblock_iblock_".strtolower($arIBlocks[$arItem["PARAM2"]]["ID"]).".gif"; elseif(strlen($arIBlocks[$arItem["PARAM2"]]["XML_ID"]) && file_exists($abs_path."iblock_iblock_".strtolower($arIBlocks[$arItem["PARAM2"]]["XML_ID"]).".gif")) $file = "iblock_iblock_".strtolower($arIBlocks[$arItem["PARAM2"]]["XML_ID"]).".gif"; elseif(file_exists($abs_path."iblock_type_".strtolower($arIBlocks[$arItem["PARAM2"]]["IBLOCK_TYPE_ID"]).".gif")) $file = "iblock_type_".strtolower($arIBlocks[$arItem["PARAM2"]]["IBLOCK_TYPE_ID"]).".gif"; } if(!$file) { if(substr($arItem["ITEM_ID"], 0, 1) !== "S") { if(file_exists($abs_path."iblock_element.gif")) $file = "iblock_element.gif"; } else { if(file_exists($abs_path."iblock_section.gif")) $file = "iblock_section.gif"; } } } break; case "main": $ext = end(explode('.', $arItem["ITEM_ID"])); if(file_exists($abs_path."main_".strtolower($ext).".gif")) $file = "main_".strtolower($ext).".gif"; break; case "blog": if(substr($arItem["ITEM_ID"], 0, 1) === "P" && file_exists($abs_path."blog_post.gif")) $file = "blog_post.gif"; elseif(substr($arItem["ITEM_ID"], 0, 1) === "U" && file_exists($abs_path."blog_user.gif")) $file = "blog_user.gif"; break; case "forum": if(file_exists($abs_path."forum_message.gif")) $file = "forum_message.gif"; break; case "intranet": if(substr($arItem["ITEM_ID"], 0, 1) === "U" && file_exists($abs_path."intranet_user.gif")) $file = "intranet_user.gif"; break; } if(!$file) { if(file_exists($abs_path.$arItem["MODULE_ID"]."_default.gif")) $file = $arItem["MODULE_ID"]."_default.gif"; else $file = "default.gif"; } $arResult["SEARCH"][$i]["ICON"] = $image_path.$file; } if(CModule::IncludeModule('intranet')) { $arResult["STRUCTURE_PAGE"] = ""; $structure_iblock_id = COption::GetOptionInt("intranet", "iblock_structure", 0); if($structure_iblock_id > 0) { $arIBlock = CIBlock::GetArrayByID($structure_iblock_id); if($arIBlock) $arResult["STRUCTURE_PAGE"] = CIBlock::ReplaceDetailURL($arIBlock["LIST_PAGE_URL"], $arIBlock, true); } $arResult["STRUCTURE_FILTER"] = trim($arParams["STRUCTURE_FILTER"]); if(strlen($arResult["STRUCTURE_FILTER"]) <= 0) $arResult["STRUCTURE_FILTER"] = "structure"; $bSoNet = CModule::IncludeModule('socialnetwork'); $arDepCache = array(); $arDepCacheValue = array(); foreach($arResult["SEARCH"] as $i=>$arItem) { if($arItem["MODULE_ID"] === "intranet" && substr($arItem["ITEM_ID"], 0, 1) === "U") { $rsUser = CUser::GetList(($by = ''), ($ord = ''), array("ID_EQUAL_EXACT" => substr($arItem["ITEM_ID"], 1), ), array('SELECT' => array('UF_*'))); $arUser = $rsUser->Fetch(); if($arUser) { if ($arUser['PERSONAL_PHOTO']) { $arImage = CIntranetUtils::InitImage($arUser['PERSONAL_PHOTO'], 100); $arUser['PERSONAL_PHOTO'] = $arImage['IMG']; } $arDep = array(); if (is_array($arUser['UF_DEPARTMENT']) && count($arUser['UF_DEPARTMENT']) > 0) { $arNewDep = array_diff($arUser['UF_DEPARTMENT'], $arDepCache); if (count($arNewDep) > 0) { $dbRes = CIBlockSection::GetList(array('SORT' => 'ASC'), array('ID' => $arNewDep)); while ($arSect = $dbRes->Fetch()) { $arDepCache[] = $arSect['ID']; $arDepCacheValue[$arSect['ID']] = $arSect['NAME']; } } foreach ($arUser['UF_DEPARTMENT'] as $key => $sect) { $arDep[$sect] = $arDepCacheValue[$sect]; } } $arUser['UF_DEPARTMENT'] = $arDep; $arUser["DETAIL_URL"] = $arItem["URL"]; $arUser['IS_ONLINE'] = $bSoNet && CSocNetUser::IsOnLine($arUser['ID']); if ($arUser['PERSONAL_BIRTHDAY']) { $arBirthDate = ParseDateTime($arUser['PERSONAL_BIRTHDAY'], CSite::GetDateFormat('SHORT')); $arUser['IS_BIRTHDAY'] = (intval($arBirthDate['MM']) == date('n')) && (intval($arBirthDate['DD']) == date('j')); } $arUser['IS_FEATURED'] = CIntranetUtils::IsUserHonoured($arUser['ID']); $arUser['IS_ABSENT'] = CIntranetUtils::IsUserAbsent($arUser['ID']); $arResult["SEARCH"][$i]["USER"] = $arUser; } } } $arResult['USER_PROP'] = array(); $arRes = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("USER", 0, LANGUAGE_ID); if (!empty($arRes)) { foreach ($arRes as $key => $val) { $arResult['USER_PROP'][$val["FIELD_NAME"]] = (strLen($val["EDIT_FORM_LABEL"]) > 0 ? $val["EDIT_FORM_LABEL"] : $val["FIELD_NAME"]); } } } ?>