$result = $matches[0]; } return $result; } $arResult["GRID_ID"] = "bizproc_loggrid_" . $arWorkflowState["WORKFLOW_TEMPLATE_ID"]; $gridOptions = new CGridOptions($arResult["GRID_ID"]); $gridColumns = $gridOptions->GetVisibleColumns(); $gridSort = $gridOptions->GetSorting(array("sort" => array("ID" => "desc"))); $arResult["SORT"] = $gridSort["sort"]; $arResult["FILTER"] = array(); if ($arParams["INLINE_MODE"] != "Y") { $arResult["FILTER"] = array(array("id" => "MODIFIED", "name" => GetMessage("CBBWL_C_MODIFIED"), "type" => "date"), array("id" => "TYPE", "name" => GetMessage("CBBWL_C_TYPE"), "type" => "list", "items" => array("" => GetMessage("BPWC_WLC_NOT_SET"), 6 => GetMessage("BPABL_TYPE_7"), 5 => GetMessage("BPABL_TYPE_5"), 1 => GetMessage("BPABL_TYPE_1"), 2 => GetMessage("BPABL_TYPE_2"), 3 => GetMessage("BPABL_TYPE_3"), 4 => GetMessage("BPABL_TYPE_4"))), array("id" => "ADMIN_MODE", "name" => GetMessage("CBBWL_C_ADMIN_MODE"), "type" => "checkbox")); } $arResult["AdminMode"] = false; $arFilter = array("WORKFLOW_ID" => $arWorkflowState["ID"]); $gridFilter = $gridOptions->GetFilter($arResult["FILTER"]); foreach ($gridFilter as $key => $value) { if ($key == "ADMIN_MODE") { $arResult["AdminMode"] = $value == "Y" ? true : false; continue; } if (substr($key, -5) == "_from") { $op = ">="; $newKey = substr($key, 0, -5); } elseif (substr($key, -3) == "_to") { $op = "<="; $newKey = substr($key, 0, -3); } else { $op = ""; $newKey = $key; }
$arResult["GLOBAL_OPTIONS"]["theme"] = $arResult["GLOBAL_OPTIONS"]["theme_template"][SITE_TEMPLATE_ID]; } if ($arResult["OPTIONS"]["theme"] == '') { $arResult["OPTIONS"]["theme"] = $arResult["GLOBAL_OPTIONS"]["theme"]; } } else { $arResult["OPTIONS"]["theme"] = ''; } //********************* // Filter //********************* if (is_array($arParams["FILTER_PRESETS"]) && !empty($arParams["FILTER_PRESETS"])) { $arResult["OPTIONS"]["filters"] = array_merge($arParams["FILTER_PRESETS"], $aOptions["filters"]); } $grid_options = new CGridOptions($arParams["GRID_ID"]); $arResult["FILTER"] = $grid_options->GetFilter($arParams["FILTER"]); $aVisRows = array(); $aFilterTmp = explode(",", $aOptions["filter_rows"]); foreach ($aFilterTmp as $field) { if (($f = trim($field)) != "") { $aVisRows[$f] = $f; } } $arResult["FILTER_ROWS"] = array(); foreach ($arParams["FILTER"] as $field) { if ($field["filtered"] == true) { $arResult["FILTER_ROWS"][$field["id"]] = true; continue; } if (isset($arResult["FILTER"][$field["id"] . "_from"])) { $flt = $arResult["FILTER"][$field["id"] . "_from"];
while ($ar_enum = $prop_enums->Fetch()) { $items[$ar_enum["ID"]] = $ar_enum["VALUE"]; } $arResult["FILTER"][$i] = array("id" => $FIELD_ID, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "list", "items" => $items, "params" => array("size" => 5, "multiple" => "multiple"), "valign" => "top"); $arFilterable[$FIELD_ID] = ""; } elseif (in_array($arField["TYPE"], array("S", "S:HTML", "NAME", "DETAIL_TEXT", "PREVIEW_TEXT"))) { $arResult["FILTER"][$i] = array("id" => $FIELD_ID, "name" => htmlspecialcharsex($arField["NAME"])); $arFilterable[$FIELD_ID] = "?"; } else { $arResult["FILTER"][$i] = array("id" => $FIELD_ID, "name" => htmlspecialcharsex($arField["NAME"]), "fieldsType" => $arField["TYPE"]); $arFilterable[$FIELD_ID] = ""; } $i++; } $arFilter = array(); $arResult["GRID_FILTER"] = $grid_filter = $grid_options->GetFilter($arResult["FILTER"]); foreach ($grid_filter as $key => $value) { if (substr($key, -5) == "_from") { $op = ">="; $new_key = substr($key, 0, -5); } elseif (substr($key, -3) == "_to") { $op = "<="; $new_key = substr($key, 0, -3); if (array_key_exists($new_key, $arDateFilter)) { if (!preg_match("/\\d\\d:\\d\\d:\\d\\d\$/", $value)) { $value .= " 23:59:59"; } } } else { $op = ""; $new_key = $key;
protected function createDataExcel() { $obList = new CList($this->arIBlock["ID"]); $gridOptions = new CGridOptions($this->arResult["GRID_ID"]); $gridColumns = $gridOptions->GetVisibleColumns(); $gridSort = $gridOptions->GetSorting(array("sort" => array("name" => "asc"))); $this->arResult["ELEMENTS_HEADERS"] = array(); $arSelect = array("ID", "IBLOCK_ID"); $arProperties = array(); $this->arResult["FIELDS"] = $arListFields = $obList->GetFields(); foreach ($arListFields as $fieldId => $arField) { if (!count($gridColumns) || in_array($fieldId, $gridColumns)) { if (substr($fieldId, 0, 9) == "PROPERTY_") { $arProperties[] = $fieldId; } else { $arSelect[] = $fieldId; } } if ($fieldId == "CREATED_BY") { $arSelect[] = "CREATED_USER_NAME"; } if ($fieldId == "MODIFIED_BY") { $arSelect[] = "USER_NAME"; } $this->arResult["ELEMENTS_HEADERS"][$fieldId] = array("name" => htmlspecialcharsex($arField["NAME"]), "default" => true, "sort" => $arField["MULTIPLE"] == "Y" ? "" : $fieldId); } if (!count($gridColumns) || in_array("IBLOCK_SECTION_ID", $gridColumns)) { $arSelect[] = "IBLOCK_SECTION_ID"; } $this->arResult["ELEMENTS_HEADERS"]["IBLOCK_SECTION_ID"] = array("name" => Loc::getMessage("CC_BLL_COLUMN_SECTION"), "default" => true, "sort" => false); /* FILTER */ $sections = array(); foreach ($this->arResult["LIST_SECTIONS"] as $id => $name) { $sections[$id] = $name; } $this->arResult["FILTER"] = array(array("id" => "list_section_id", "type" => "list", "items" => $sections, "filtered" => $this->arResult["SECTION_ID"] !== false, "filter_value" => $this->arResult["SECTION_ID"], "value" => $this->arResult["SECTION_ID"])); $i = 1; $arFilterable = array(); $arDateFilter = array(); foreach ($arListFields as $fieldId => $arField) { if ($arField["TYPE"] == "ACTIVE_FROM" || $arField["TYPE"] == "ACTIVE_TO") { $this->arResult["FILTER"][$i] = array("id" => "DATE_" . $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "date"); $arFilterable["DATE_" . $fieldId] = ""; $arDateFilter["DATE_" . $fieldId] = true; } elseif ($arField["TYPE"] == "DATE_CREATE" || $arField["TYPE"] == "TIMESTAMP_X") { $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "date"); $arFilterable[$fieldId] = ""; $arDateFilter[$fieldId] = true; } elseif (is_array($arField["PROPERTY_USER_TYPE"]) && array_key_exists("GetPublicFilterHTML", $arField["PROPERTY_USER_TYPE"])) { $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "custom", "enable_settings" => false, "value" => call_user_func_array($arField["PROPERTY_USER_TYPE"]["GetPublicFilterHTML"], array($arField, array("VALUE" => $fieldId, "FORM_NAME" => "filter_" . $this->arResult["GRID_ID"], "GRID_ID" => $this->arResult["GRID_ID"])))); $arFilterable[$fieldId] = ""; } elseif ($arField["TYPE"] == "SORT" || $arField["TYPE"] == "N") { $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "number"); $arFilterable[$fieldId] = ""; } elseif ($arField["TYPE"] == "G") { $items = array(); $prop_secs = CIBlockSection::GetList(array("left_margin" => "asc"), array("IBLOCK_ID" => $arField["LINK_IBLOCK_ID"])); while ($ar_sec = $prop_secs->Fetch()) { $items[$ar_sec["ID"]] = str_repeat(". ", $ar_sec["DEPTH_LEVEL"] - 1) . $ar_sec["NAME"]; } $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "list", "items" => $items, "params" => array("size" => 5, "multiple" => "multiple"), "valign" => "top"); $arFilterable[$fieldId] = ""; } elseif ($arField["TYPE"] == "E") { //Should be handled in template $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "E", "value" => $arField); $arFilterable[$fieldId] = ""; } elseif ($arField["TYPE"] == "L") { $items = array(); $propEnums = CIBlockProperty::GetPropertyEnum($arField["ID"]); while ($arEnum = $propEnums->Fetch()) { $items[$arEnum["ID"]] = $arEnum["VALUE"]; } $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "list", "items" => $items, "params" => array("size" => 5, "multiple" => "multiple"), "valign" => "top"); $arFilterable[$fieldId] = ""; } elseif (in_array($arField["TYPE"], array("S", "S:HTML", "NAME", "DETAIL_TEXT", "PREVIEW_TEXT"))) { $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"])); $arFilterable[$fieldId] = "?"; } else { $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"])); $arFilterable[$fieldId] = ""; } $i++; } $arFilter = array(); $gridFilter = $gridOptions->GetFilter($this->arResult["FILTER"]); foreach ($gridFilter as $key => $value) { if (substr($key, -5) == "_from") { $op = ">="; $newKey = substr($key, 0, -5); } elseif (substr($key, -3) == "_to") { $op = "<="; $newKey = substr($key, 0, -3); if (array_key_exists($newKey, $arDateFilter)) { if (!preg_match("/\\d\\d:\\d\\d:\\d\\d\$/", $value)) { $value .= " 23:59:59"; } } } else { $op = ""; $newKey = $key; } if (array_key_exists($newKey, $arFilterable)) { if ($op == "") { $op = $arFilterable[$newKey]; } $arFilter[$op . $newKey] = $value; } } $arFilter["IBLOCK_ID"] = $this->arIBlock["ID"]; if (!$this->arResult["ANY_SECTION"]) { $arFilter["SECTION_ID"] = $this->arResult["SECTION_ID"]; } $rsElements = CIBlockElement::GetList($gridSort["sort"], $arFilter, false, false, $arSelect); $this->arResult["EXCEL_COLUMN_NAME"] = array(); $this->arResult["EXCEL_CELL_VALUE"] = array(); $count = 0; while ($obElement = $rsElements->GetNextElement()) { $data = $obElement->GetFields(); $propertyArray = $obElement->GetProperties(); if (!empty($arProperties)) { foreach ($propertyArray as $arProp) { $fieldId = "PROPERTY_" . $arProp["ID"]; if (in_array($fieldId, $arProperties)) { $arField = $this->arResult["FIELDS"][$fieldId]; if (is_array($arField["PROPERTY_USER_TYPE"]) && is_array($arField["PROPERTY_USER_TYPE"]["GetPublicViewHTML"])) { if (is_array($arProp["~VALUE"])) { foreach ($arProp["~VALUE"] as $propValue) { $data[$fieldId][] = call_user_func_array($arField["PROPERTY_USER_TYPE"]["GetPublicViewHTML"], array($arField, array("VALUE" => $propValue), array())); } } else { $data[$fieldId] = call_user_func_array($arField["PROPERTY_USER_TYPE"]["GetPublicViewHTML"], array($arField, array("VALUE" => $arProp["~VALUE"]), array())); } } elseif ($arField["PROPERTY_TYPE"] == "L") { $data[$fieldId] = htmlspecialcharsex($arProp["VALUE_ENUM"]); } elseif ($arField["PROPERTY_TYPE"] == "F") { $files = is_array($arProp["VALUE"]) ? $arProp["VALUE"] : array($arProp["VALUE"]); foreach ($files as $file) { $value = CFile::MakeFileArray($file); $data[$fieldId] .= $value["name"] . "\r\n"; } } else { $data[$fieldId] = htmlspecialcharsex($arProp["VALUE"]); } } } if (!empty($data["IBLOCK_SECTION_ID"])) { if (array_key_exists($data["IBLOCK_SECTION_ID"], $this->arResult["SECTIONS"])) { $data["IBLOCK_SECTION_ID"] = $this->arResult["SECTIONS"][$data["IBLOCK_SECTION_ID"]]["NAME"]; } } if (in_array("BIZPROC", $gridColumns)) { $data["BIZPROC"] = $this->getArrayBizproc($data); } } if (isset($data["CREATED_BY"])) { $data["CREATED_BY"] = "[" . $data["CREATED_BY"] . "] " . $data["CREATED_USER_NAME"]; } if (isset($data["MODIFIED_BY"])) { $data["MODIFIED_BY"] = "[" . $data["MODIFIED_BY"] . "] " . $data["USER_NAME"]; } if (isset($data["ACTIVE_FROM"])) { $data['ACTIVE_FROM'] = FormatDateFromDB($data['ACTIVE_FROM']); } if (isset($data["ACTIVE_TO"])) { $data['ACTIVE_TO'] = FormatDateFromDB($data['ACTIVE_TO']); } if (isset($data["DATE_CREATE"])) { $data['DATE_CREATE'] = FormatDateFromDB($data['DATE_CREATE']); } if (isset($data["TIMESTAMP_X"])) { $data['TIMESTAMP_X'] = FormatDateFromDB($data['TIMESTAMP_X']); } foreach ($gridColumns as $position => $id) { $this->arResult["EXCEL_CELL_VALUE"][$count][$position] = is_array($data[$id]) ? implode('/', $data[$id]) : $data[$id]; $this->arResult["EXCEL_COLUMN_NAME"][$position] = $this->arResult["ELEMENTS_HEADERS"][$id]["name"]; } $count++; } }
array("id"=>"LAMP", "name"=>GetMessage('SUP_F_LAMP'), "type"=>"list", "params"=>array("size"=>4, "multiple"=>"multiple"), "valign"=>"top", "items"=>array( 'red' => GetMessage('SUP_RED'), 'green' => GetMessage('SUP_GREEN'), 'grey' => GetMessage('SUP_GREY') )), array("id"=>"CLOSE", "name"=>GetMessage('SUP_F_CLOSE'), "type" => "list", "items" => array( "" => GetMessage('SUP_ALL'), 'Y' => GetMessage('SUP_CLOSED'),'N' => GetMessage('SUP_OPENED') )), array("id"=>"MESSAGE", "name"=>GetMessage('SUP_F_MESSAGE_TITLE')) ); $arParams["TICKETS_PER_PAGE"] = (intval($arParams["TICKETS_PER_PAGE"]) <= 0 ? 50 : intval($arParams["TICKETS_PER_PAGE"])); $grid_options = new CGridOptions($arResult["GRID_ID"]); $aSort = $grid_options->GetSorting(array("sort"=>array("id"=>"desc"), "vars"=>array("by"=>"by", "order"=>"order"))); $aNav = $grid_options->GetNavParams(array("nPageSize"=>$arParams["TICKETS_PER_PAGE"])); $aSortArg = each($aSort["sort"]); $aFilter = $grid_options->GetFilter($arResult["FILTER"]); $aSortVal = $aSort['sort']; $sort_order = current($aSortVal); $sort_by = key($aSortVal); if (strlen($arParams["SITE_ID"]) > 0) $aFilter["LID"] = $arParams["SITE_ID"]; $rsTickets = CTicket::GetList( $sort_by, $sort_order, $aFilter, $is_filtered, $check_rights = "Y",
protected function createDataExcel() { $obList = new CList($this->arIBlock["ID"]); $gridOptions = new CGridOptions($this->arResult["GRID_ID"]); $gridColumns = $gridOptions->GetVisibleColumns(); $gridSort = $gridOptions->GetSorting(array("sort" => array("name" => "asc"))); $this->arResult["ELEMENTS_HEADERS"] = array(); $arSelect = array("ID", "IBLOCK_ID"); $arProperties = array(); $this->arResult["FIELDS"] = $arListFields = $obList->GetFields(); foreach ($arListFields as $fieldId => $arField) { if (!count($gridColumns) || in_array($fieldId, $gridColumns)) { if (substr($fieldId, 0, 9) == "PROPERTY_") { $arProperties[] = $fieldId; } else { $arSelect[] = $fieldId; } } if ($fieldId == "CREATED_BY") { $arSelect[] = "CREATED_USER_NAME"; } if ($fieldId == "MODIFIED_BY") { $arSelect[] = "USER_NAME"; } $this->arResult["ELEMENTS_HEADERS"][$fieldId] = $arField["NAME"]; } if (!count($gridColumns) || in_array("IBLOCK_SECTION_ID", $gridColumns)) { $arSelect[] = "IBLOCK_SECTION_ID"; } $this->arResult["ELEMENTS_HEADERS"]["IBLOCK_SECTION_ID"] = Loc::getMessage("CC_BLL_COLUMN_SECTION"); /* FILTER */ $sections = array(); foreach ($this->arResult["LIST_SECTIONS"] as $id => $name) { $sections[$id] = $name; } $this->arResult["FILTER"] = array(array("id" => "list_section_id", "type" => "list", "items" => $sections, "filtered" => $this->arResult["SECTION_ID"] !== false, "filter_value" => $this->arResult["SECTION_ID"], "value" => $this->arResult["SECTION_ID"])); $i = 1; $arFilterable = array(); $arCustomFilter = array(); $arDateFilter = array(); foreach ($arListFields as $fieldId => $arField) { if ($arField["TYPE"] == "ACTIVE_FROM" || $arField["TYPE"] == "ACTIVE_TO") { $this->arResult["FILTER"][$i] = array("id" => "DATE_" . $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "date"); $arFilterable["DATE_" . $fieldId] = ""; $arDateFilter["DATE_" . $fieldId] = true; } elseif ($arField["TYPE"] == "DATE_CREATE" || $arField["TYPE"] == "TIMESTAMP_X") { $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "date"); $arFilterable[$fieldId] = ""; $arDateFilter[$fieldId] = true; } elseif (is_array($arField["PROPERTY_USER_TYPE"]) && array_key_exists("GetPublicFilterHTML", $arField["PROPERTY_USER_TYPE"])) { $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "custom", "fieldsType" => $arField["TYPE"], "enable_settings" => false, "value" => call_user_func_array($arField["PROPERTY_USER_TYPE"]["GetPublicFilterHTML"], array($arField, array("VALUE" => $fieldId, "FORM_NAME" => "filter_" . $this->arResult["GRID_ID"], "GRID_ID" => $this->arResult["GRID_ID"])))); $arFilterable[$fieldId] = ""; if (array_key_exists("AddFilterFields", $arField["PROPERTY_USER_TYPE"])) { $arCustomFilter[$fieldId] = array("callback" => $arField["PROPERTY_USER_TYPE"]["AddFilterFields"], "filter" => &$this->arResult["FILTER"][$i]); } } elseif ($arField["TYPE"] == "SORT" || $arField["TYPE"] == "N") { $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "number"); $arFilterable[$fieldId] = ""; } elseif ($arField["TYPE"] == "G") { $items = array(); $prop_secs = CIBlockSection::GetList(array("left_margin" => "asc"), array("IBLOCK_ID" => $arField["LINK_IBLOCK_ID"])); while ($ar_sec = $prop_secs->Fetch()) { $items[$ar_sec["ID"]] = str_repeat(". ", $ar_sec["DEPTH_LEVEL"] - 1) . $ar_sec["NAME"]; } $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "list", "items" => $items, "params" => array("size" => 5, "multiple" => "multiple"), "valign" => "top"); $arFilterable[$fieldId] = ""; } elseif ($arField["TYPE"] == "E") { //Should be handled in template $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "E", "value" => $arField); $arFilterable[$fieldId] = ""; } elseif ($arField["TYPE"] == "L") { $items = array(); $propEnums = CIBlockProperty::GetPropertyEnum($arField["ID"]); while ($arEnum = $propEnums->Fetch()) { $items[$arEnum["ID"]] = $arEnum["VALUE"]; } $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "type" => "list", "items" => $items, "params" => array("size" => 5, "multiple" => "multiple"), "valign" => "top"); $arFilterable[$fieldId] = ""; } elseif (in_array($arField["TYPE"], array("S", "S:HTML", "NAME", "DETAIL_TEXT", "PREVIEW_TEXT"))) { $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"])); $arFilterable[$fieldId] = "?"; } else { $this->arResult["FILTER"][$i] = array("id" => $fieldId, "name" => htmlspecialcharsex($arField["NAME"]), "fieldsType" => $arField["TYPE"]); $arFilterable[$fieldId] = ""; } $i++; } $arFilter = array(); $gridFilter = $gridOptions->GetFilter($this->arResult["FILTER"]); foreach ($gridFilter as $key => $value) { if (substr($key, -5) == "_from") { $op = ">="; $newKey = substr($key, 0, -5); } elseif (substr($key, -3) == "_to") { $op = "<="; $newKey = substr($key, 0, -3); if (array_key_exists($newKey, $arDateFilter)) { if (!preg_match("/\\d\\d:\\d\\d:\\d\\d\$/", $value)) { $value .= " 23:59:59"; } } } else { $op = ""; $newKey = $key; } if (array_key_exists($newKey, $arFilterable)) { if ($op == "") { $op = $arFilterable[$newKey]; } $arFilter[$op . $newKey] = $value; } } foreach ($arCustomFilter as $fieldId => $arCallback) { $filtered = false; call_user_func_array($arCallback["callback"], array($arListFields[$fieldId], array("VALUE" => $fieldId, "GRID_ID" => $this->arResult["GRID_ID"]), &$arFilter, &$filtered)); } $arFilter["IBLOCK_ID"] = $this->arIBlock["ID"]; $arFilter["CHECK_PERMISSIONS"] = $this->listsPerm >= CListPermissions::CAN_READ ? "N" : "Y"; if (!$this->arResult["ANY_SECTION"]) { $arFilter["SECTION_ID"] = $this->arResult["SECTION_ID"]; } $rsElements = CIBlockElement::GetList($gridSort["sort"], $arFilter, false, false, $arSelect); $this->arResult["EXCEL_COLUMN_NAME"] = array(); $this->arResult["EXCEL_CELL_VALUE"] = array(); $count = 0; $comments = false; if (in_array("COMMENTS", $gridColumns) && CModule::includeModule("forum")) { $comments = true; } while ($obElement = $rsElements->GetNextElement()) { $data = $obElement->GetFields(); $propertyArray = $obElement->GetProperties(); if (!empty($arProperties)) { foreach ($propertyArray as $arProp) { $fieldId = "PROPERTY_" . $arProp["ID"]; if (in_array($fieldId, $arProperties)) { $arField = $this->arResult["FIELDS"][$fieldId]; if (is_array($arField["PROPERTY_USER_TYPE"]) && is_array($arField["PROPERTY_USER_TYPE"]["GetPublicViewHTML"])) { if ($arProp["USER_TYPE"] == "map_yandex") { $data[$fieldId] = !empty($arProp["VALUE"]) ? $arProp["VALUE"] : ''; continue; } elseif ($arProp["USER_TYPE"] == "DiskFile") { if (!empty($arProp["VALUE"]) && $this->arResult["DISK"]) { $listValue = current($arProp["VALUE"]); if (!is_array($listValue)) { $listValue = $arProp["VALUE"]; } $number = 0; $countFiles = count($listValue); foreach ($listValue as $idAttached) { $number++; list($type, $realId) = Bitrix\Disk\Uf\FileUserType::detectType($idAttached); if ($type == Bitrix\Disk\Uf\FileUserType::TYPE_ALREADY_ATTACHED) { $attachedModel = Bitrix\Disk\AttachedObject::loadById($realId); if (!$attachedModel) { continue; } $fileModel = Bitrix\Disk\File::loadById($attachedModel->getObjectId(), array('STORAGE')); if (!$fileModel) { continue; } $data[$fieldId] .= $fileModel->getName(); $data[$fieldId] .= $countFiles != $number ? ', ' : ''; } } } continue; } if (is_array($arProp["~VALUE"])) { foreach ($arProp["~VALUE"] as $propValue) { $data[$fieldId][] = call_user_func_array($arField["PROPERTY_USER_TYPE"]["GetPublicViewHTML"], array($arField, array("VALUE" => $propValue), array())); } } else { $data[$fieldId] = call_user_func_array($arField["PROPERTY_USER_TYPE"]["GetPublicViewHTML"], array($arField, array("VALUE" => $arProp["~VALUE"]), array())); } } elseif ($arField["PROPERTY_TYPE"] == "E") { if (empty($arProp['VALUE'])) { continue; } if (!is_array($arProp['VALUE'])) { $arProp['VALUE'] = array($arProp['VALUE']); } $elementQuery = CIBlockElement::getList(array(), array("=ID" => $arProp['VALUE']), false, false, array("NAME")); while ($element = $elementQuery->fetch()) { $data[$fieldId][] = $element['NAME']; } } elseif ($arField["PROPERTY_TYPE"] == "G") { if (empty($arProp['VALUE'])) { continue; } if (!is_array($arProp['VALUE'])) { $arProp['VALUE'] = array($arProp['VALUE']); } $sectionQuery = CIBlockSection::getList(array(), array("=ID" => $arProp['VALUE'])); while ($section = $sectionQuery->fetch()) { $data[$fieldId][] = $section['NAME']; } } elseif ($arField["PROPERTY_TYPE"] == "L") { $data[$fieldId] = htmlspecialcharsex($arProp["VALUE_ENUM"]); } elseif ($arField["PROPERTY_TYPE"] == "F") { $files = is_array($arProp["VALUE"]) ? $arProp["VALUE"] : array($arProp["VALUE"]); $number = 1; $countFiles = count($files); foreach ($files as $file) { $value = CFile::MakeFileArray($file); $data[$fieldId] .= $value["name"]; $data[$fieldId] .= $countFiles != $number ? ', ' : ''; $number++; } } else { $data[$fieldId] = htmlspecialcharsex($arProp["VALUE"]); } } } if (!empty($data["IBLOCK_SECTION_ID"])) { if (array_key_exists($data["IBLOCK_SECTION_ID"], $this->arResult["SECTIONS"])) { $data["IBLOCK_SECTION_ID"] = $this->arResult["SECTIONS"][$data["IBLOCK_SECTION_ID"]]["NAME"]; } } if (in_array("BIZPROC", $gridColumns)) { $data["BIZPROC"] = $this->getArrayBizproc($data); } } if ($comments) { $countComments = $this->getCommentsProcess($data["ID"]); } if (isset($data["CREATED_BY"])) { $data["CREATED_BY"] = "[" . $data["CREATED_BY"] . "] " . $data["CREATED_USER_NAME"]; } if (isset($data["MODIFIED_BY"])) { $data["MODIFIED_BY"] = "[" . $data["MODIFIED_BY"] . "] " . $data["USER_NAME"]; } if (isset($data["ACTIVE_FROM"])) { $data['ACTIVE_FROM'] = FormatDateFromDB($data['ACTIVE_FROM']); } if (isset($data["ACTIVE_TO"])) { $data['ACTIVE_TO'] = FormatDateFromDB($data['ACTIVE_TO']); } if (isset($data["DATE_CREATE"])) { $data['DATE_CREATE'] = FormatDateFromDB($data['DATE_CREATE']); } if (isset($data["TIMESTAMP_X"])) { $data['TIMESTAMP_X'] = FormatDateFromDB($data['TIMESTAMP_X']); } foreach ($gridColumns as $position => $id) { if ($id == "COMMENTS") { if ($comments) { $data[$id] = $countComments; } else { continue; } } $this->arResult["EXCEL_CELL_VALUE"][$count][$position] = is_array($data[$id]) ? implode('/', $data[$id]) : $data[$id]; $this->arResult["EXCEL_COLUMN_NAME"][$position] = $this->arResult["ELEMENTS_HEADERS"][$id]; } $count++; } }
$urlParams[] = $arFilter["id"]; $urlParams[] = $arFilter["id"] . "_name"; } elseif ($arFilter["type"] == "number") { $urlParams[] = $arFilter["id"] . "_from"; $urlParams[] = $arFilter["id"] . "_to"; } elseif ($arFilter["type"] == "date") { $urlParams[] = $arFilter["id"] . "_datesel"; $urlParams[] = $arFilter["id"] . "_days"; $urlParams[] = $arFilter["id"] . "_from"; $urlParams[] = $arFilter["id"] . "_to"; } else { $urlParams[] = $arFilter["id"]; } } $urlParams[] = "clear_filter"; $grid_filter = $grid_options->GetFilter(array()); if (strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') === false) { LocalRedirect($arResult['URL']['~THIS']); } else { LocalRedirect($ob->_uencode($arResult['URL']['~THIS'], array("utf8" => "Y", "convert" => "full"))); } } $grid_filter = $grid_options->GetFilter(array_merge($arResult["FILTER"], array(array('id' => 'FILE_SIZE_multiply')))); foreach ($grid_filter as $key => $value) { if (substr($key, -5) == "_from") { $new_key = substr($key, 0, -5) . "_1"; } elseif (substr($key, -3) == "_to") { $new_key = substr($key, 0, -3) . "_2"; } else { $new_key = $key; }
} /******************************************************************** /ACTIONS ********************************************************************/ /******************************************************************** FILTER ********************************************************************/ $grid_options = new CGridOptions($arParams["GRID_ID"]); $arFilter = array(); if (isset($_REQUEST["clear_filter"]) && $_REQUEST["clear_filter"] == "Y") { $urlParams = array(); foreach ($arResult["FILTER"] as $id => $arFilter) { $urlParams[] = $arFilter["id"]; } $urlParams[] = "clear_filter"; $grid_filter = $grid_options->GetFilter(array()); LocalRedirect($APPLICATION->GetCurPageParam("", $urlParams)); } $grid_filter = $grid_options->GetFilter($arResult["FILTER"]); $arResult["FILTER_VALUE"] = $grid_filter; /******************************************************************** /FILTER ********************************************************************/ /******************************************************************** Data ********************************************************************/ $tmp = $ob->PROPFIND($options = array("path" => $ob->_path, "depth" => 1, "FILTER" => $grid_filter), $files, array("COLUMNS" => $arSelectedFields, "return" => "nav_result")); if (is_array($tmp)) { $arResult = array_merge($arResult, $tmp); } if ($arResult["NAV_RESULT"]) {