Line: "; $arFilter = array(); $error = false; /** * @global CUser $USER * @global CMain $APPLICATION */ if(!$USER->CanDoOperation('edit_other_settings') && !$USER->CanDoOperation('view_other_settings')) $APPLICATION->AuthForm(Loc::getMessage("ACCESS_DENIED")); $isAdmin = $USER->CanDoOperation('edit_other_settings'); $sTableID = "tbl_event_type"; $oSort = new CAdminSorting($sTableID, "event_name", "desc"); $lAdmin = new CAdminList($sTableID, $oSort); /** * @global $find * @global $find_type * @global $find_type_id * @global $find_tmpl_id * @global $find_event_type */ $arFilterFields = Array( "find", "find_type", "find_type_id", "find_tmpl_id", "find_event_type", ); $lAdmin->InitFilter($arFilterFields); if ($find <> '' && in_array(mb_strtoupper($find_type), array('EVENT_NAME', 'NAME', 'DESCRIPTION'))) { $arFilter["=%".mb_strtoupper($find_type)] = '%' . $find . '%'; } if ($find_type_id <> '') { $arFilter["ID"] = $find_type_id; } if ($find_tmpl_id <> '') { $arFilter["MESSAGE_ID"] = $find_tmpl_id; } if ($find_event_type <> '') { $arFilter["=EVENT_TYPE"] = $find_event_type; } if(($arID = $lAdmin->GroupAction()) && $isAdmin && check_bitrix_sessid()) { if (isset($_REQUEST['action_target']) && $_REQUEST['action_target']=='selected') { $rsData = CEventType::GetListEx(array($by => $order), $arFilter, array("type" => "none")); while($arRes = $rsData->Fetch()) $arID[] = $arRes['EVENT_NAME']; } foreach($arID as $ID) { if($ID == '') continue; switch($_REQUEST['action']) { case "delete": case "clean": $DB->StartTransaction(); $ID = array("EVENT_NAME" => $ID); $db_res = CEventMessage::GetList('', '', $ID); if ($db_res && ($res = $db_res->Fetch())) { do { if (!CEventMessage::Delete($res["ID"])) { $error = true; break; } } while ($res = $db_res-> Fetch()); } if ($error || !CEventType::Delete($ID)) { $DB->Rollback(); $lAdmin->AddGroupError(Loc::getMessage("DELETE_ERROR"), $ID); } else { $DB->Commit(); } break; } } } $arLID = array(); $db_res = CLanguage::GetList(); if ($db_res && $res = $db_res->GetNext()) { do { $arLID[$res["LID"]] = $res["LID"]; } while ($res = $db_res->GetNext()); } $lAdmin->AddHeaders(array( array("id"=>"ID", "content"=>"ID", "default"=>true), array("id"=>"LID", "content"=>Loc::getMessage("LANG"), "default"=>true), array("id"=>"EVENT_NAME", "content"=>Loc::getMessage("EVENT_TYPE"), "sort"=>"event_name", "default"=>true), array("id"=>"NAME", "content"=>Loc::getMessage("EVENT_NAME"), "default"=>true), array("id"=>"EVENT_TYPE", "content"=>Loc::getMessage("event_type_admin_type"), "default"=>false), array("id"=>"DESCRIPTION", "content"=>Loc::getMessage("EVENT_DESCRIPTION"), "default"=>false), array("id"=>"TEMPLATES", "content"=>Loc::getMessage("EVENT_TEMPLATES"), "default"=>false)) ); $resultMessageByTypeList = array(); $resultMessageByTypeDb = \Bitrix\Main\Mail\Internal\EventMessageTable::getList(array('select' => array('ID', 'EVENT_NAME'))); while($messageByType = $resultMessageByTypeDb->fetch()) { $resultMessageByTypeList[$messageByType['EVENT_NAME']][] = $messageByType['ID']; } $resultList = array(); $runtimeList = array(); $arFilter['!EVENT_NAME'] = null; if(isset($arFilter['MESSAGE_ID'])) { $runtimeList[] = new \Bitrix\Main\Entity\ReferenceField( 'MESSAGE', 'Bitrix\Main\Mail\Internal\EventMessageTable', array('=this.EVENT_NAME' => 'ref.EVENT_NAME') ); $arFilter['MESSAGE.ID'] = $arFilter['MESSAGE_ID']; unset($arFilter['MESSAGE_ID']); } $resultDb = \Bitrix\Main\Mail\Internal\EventTypeTable::getList(array( 'filter' => $arFilter, 'runtime' => $runtimeList, 'order' => array('EVENT_NAME' => (mb_strtoupper($order) == 'DESC' ? 'DESC' : 'ASC')) )); $resultTypeList = $resultDb->fetchAll(); foreach($resultTypeList as $type) { $key = $type['EVENT_NAME']; if(!isset($resultList[$key])) { $typeTmp = $type; $typeTmp['BY_LANGUAGE'] = array(); $typeTmp['ID'] = array($type['ID']); $typeTmp['LID'] = array($type['LID']); $resultList[$key] = $typeTmp; } else { $resultList[$key]['ID'][] = $type['ID']; $resultList[$key]['LID'][] = $type['LID']; } $resultList[$key]['BY_LANGUAGE'][$type['LID']] = $type; } foreach($resultList as $key => $type) { if(empty($type['BY_LANGUAGE'][LANGUAGE_ID]["NAME"])) { $type["NAME"] = $type['BY_LANGUAGE']["en"]["NAME"]; } else { $type["NAME"] = $type['BY_LANGUAGE'][LANGUAGE_ID]["NAME"]; } if(empty($type['BY_LANGUAGE'][LANGUAGE_ID]["SORT"])) { $type["SORT"] = $type['BY_LANGUAGE']["en"]["SORT"]; } else { $type["SORT"] = $type['BY_LANGUAGE'][LANGUAGE_ID]["SORT"]; } if(empty($type['BY_LANGUAGE'][LANGUAGE_ID]["DESCRIPTION"])) { $type["DESCRIPTION"] = $type['BY_LANGUAGE']["en"]["DESCRIPTION"]; } else { $type["DESCRIPTION"] = $type['BY_LANGUAGE'][LANGUAGE_ID]["DESCRIPTION"]; } $type["TEMPLATES"] = $resultMessageByTypeList[$type["EVENT_NAME"]] ?? null; unset($type['BY_LANGUAGE']); $resultList[$key] = $type; } $nav = new \Bitrix\Main\UI\AdminPageNavigation("nav-event-type"); $nav->setRecordCount(count($resultList)); $lAdmin->setNavigation($nav, Loc::getMessage("PAGES")); $iterateNumber = 0; foreach($resultList as $resultItem) { if($iterateNumber++ >= $nav->getOffset()) { if($iterateNumber - $nav->getOffset() > $nav->getLimit()) { break; } } else { continue; } $arr = $resultItem['ID']; $f_ID = htmlspecialcharsEx($resultItem['EVENT_NAME']); $row =& $lAdmin->AddRow($f_ID, $resultItem, "type_edit.php?EVENT_NAME=".$f_ID, Loc::getMessage("type_admin_edit_title1")); $row->AddViewField("ID", implode("
", $arr)); $row->AddViewField("LID", implode("
", array_intersect($arLID, $resultItem['LID']))); $row->AddViewField("EVENT_NAME", "".$f_ID.""); $row->AddViewField("NAME", htmlspecialcharsEx($resultItem['NAME'])); $row->AddViewField("EVENT_TYPE", ($resultItem['EVENT_TYPE'] == EventTypeTable::TYPE_SMS? "SMS" : "Email")); $row->AddViewField("DESCRIPTION", htmlspecialcharsEx($resultItem['DESCRIPTION'])); $templates = array(); if (is_array($resultItem['TEMPLATES']) && !empty($resultItem['TEMPLATES'])) { foreach ($resultItem['TEMPLATES'] as $k) { $templates[$k] = "".intval($k).""; } } $row->AddViewField("TEMPLATES", implode("
", $templates)); $arActions = Array(); $arActions[] = array("ICON"=>"edit", "TEXT"=>Loc::getMessage("MAIN_ADMIN_MENU_EDIT"), "ACTION"=>$lAdmin->ActionRedirect("type_edit.php?EVENT_NAME=".$f_ID)); if($isAdmin) { $arActions[] = array("ICON"=>"delete", "TEXT"=>Loc::getMessage("MAIN_ADMIN_MENU_DELETE"), "ACTION"=>"if(confirm('".Loc::getMessage('CONFIRM_DEL_ALL_MESSAGE')."')) ".$lAdmin->ActionDoGroup($f_ID, "delete")); } $row->AddActions($arActions); } $lAdmin->AddGroupActionTable(Array( "delete"=>true, )); $aContext = array( array( "TEXT" => Loc::getMessage("ADD_TYPE"), "LINK" => "type_edit.php?lang=".LANGUAGE_ID, "TITLE" => Loc::getMessage("ADD_TYPE_TITLE1"), "ICON" => "btn_new" ), ); $lAdmin->AddAdminContextMenu($aContext); $lAdmin->CheckListMode(); $APPLICATION->SetTitle(Loc::getMessage("TITLE1")); require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php"); ?>