/** @return \CDBResult */ public function getData() { $formId = $this->getFieldValue('FORM', null); $propertyNameId = $this->getFieldValue('PROPERTY_NAME', null); $propertyEmailId = $this->getFieldValue('PROPERTY_EMAIL', null); $formResultsDb = new \CDBResult(); if ($formId && $propertyEmailId) { $dataResult = array(); $filter = array(); $formResultDb = \CFormResult::GetList($formId, $by = "s_timestamp", $order = "asc", $filter, $filtered, "N"); while ($formResult = $formResultDb->Fetch()) { $answerList = \CFormResult::GetDataByID($formResult['ID'], array(), $formResult, $answerList2); $data = array(); foreach ($answerList as $fieldCode => $arFieldsAnswer) { if ($arFieldsAnswer[0]['TITLE_TYPE'] == 'text') { if ($arFieldsAnswer[0]['FIELD_ID'] == $propertyNameId) { $data['NAME'] = $arFieldsAnswer[0]['USER_TEXT']; } if ($arFieldsAnswer[0]['FIELD_ID'] == $propertyEmailId) { $data['EMAIL'] = $arFieldsAnswer[0]['USER_TEXT']; } } } if (!empty($data['EMAIL'])) { if (intval($formResult['USER_ID']) > 0) { $data['USER_ID'] = intval($formResult['USER_ID']); } $dataResult[] = $data; } } $formResultsDb->InitFromArray($dataResult); } return $formResultsDb; }
/** @return \CDBResult */ public function getData() { $iblockId = $this->getFieldValue('IBLOCK', null); $propertyNameId = $this->getFieldValue('PROPERTY_NAME', null); $propertyEmailId = $this->getFieldValue('PROPERTY_EMAIL', null); if ($iblockId && $propertyEmailId) { // if property is property with code like '123' $propertyNameValue = null; $propertyEmailValue = null; if (is_numeric($propertyEmailId)) { $propertyEmailId = "PROPERTY_" . $propertyEmailId; $propertyEmailValue = $propertyEmailId . "_VALUE"; } $selectFields = array($propertyEmailValue); if ($propertyNameId) { if (is_numeric($propertyNameId)) { $propertyNameId = "PROPERTY_" . $propertyNameId; $propertyNameValue = $propertyNameId . "_VALUE"; } $selectFields[] = $propertyNameValue; } $filter = array('IBLOCK_ID' => $iblockId, '!' . $propertyEmailId => false); $iblockElementListDb = \CIBlockElement::getList(array('id' => 'asc'), $filter, false, false, $selectFields); // replace property names from PROPERTY_123_VALUE to EMAIL, NAME $iblockElementDb = new CDBResultSenderConnector($iblockElementListDb); $iblockElementDb->senderConnectorFieldEmail = $propertyEmailValue; $iblockElementDb->senderConnectorFieldName = $propertyNameValue; } else { $iblockElementDb = new \CDBResult(); $iblockElementDb->InitFromArray(array()); } return $iblockElementDb; }
public static function GetAdvGuestHost($ADV_ID, $GUEST_ID, $IP_NUMBER, $BACK="") { $err_mess = "File: ".__FILE__."<br>Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $ADV_ID = intval($ADV_ID); $GID = intval($GUEST_ID); $strSql = " SELECT count(1) ADV_HOSTS, ".$DB->DateToCharFunction("max(DATE_HOST_HIT)","SHORT")." MAX_DATE_HOST_HIT FROM b_stat_adv_guest WHERE ADV_ID=$ADV_ID and IP_NUMBER='".$DB->ForSQL($IP_NUMBER)."' $BACK "; $rsResult=$DB->Query($strSql, false, $err_mess.__LINE__); if(!($arHost = $rsResult->Fetch())) $arHost = array("ADV_HOSTS"=>0,"MAX_DATE_HOST_HIT"=>false); $strSql = " SELECT count(1) ADV_GUESTS, ".$DB->DateToCharFunction("max(DATE_GUEST_HIT)","SHORT")." MAX_DATE_GUEST_HIT FROM b_stat_adv_guest WHERE ADV_ID=$ADV_ID and GUEST_ID=$GID $BACK "; $rsResult=$DB->Query($strSql, false, $err_mess.__LINE__); if(!($arGuest = $rsResult->Fetch())) $arGuest = array("ADV_GUESTS"=>0,"MAX_DATE_GUEST_HIT"=>false); $rsResult = new CDBResult; $rsResult->InitFromArray(array(array_merge($arGuest,$arHost))); return $rsResult; }
public static function GetLastByID($ID) { $DB = CDatabase::GetModuleConnection('statistic'); $ID = intval($ID); if($ID>0) { $strSql = " SELECT G.ID, G.FAVORITES, G.LAST_USER_ID, A.ID as LAST_ADV_ID, if(to_days(curdate())=to_days(G.LAST_DATE), 'Y', 'N') LAST FROM b_stat_guest G LEFT JOIN b_stat_adv A ON A.ID = G.LAST_ADV_ID WHERE G.ID='$ID' "; $res = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } else { $res = new CDBResult; $res->InitFromArray(array()); } return $res; }
/** @return \CDBResult */ public function getData() { $groupId = $this->getFieldValue('GROUP_ID', null); $dateRegister = $this->getFieldValue('DATE_REGISTER', null); $active = $this->getFieldValue('ACTIVE', null); $filter = array(); if ($groupId) { $filter['GROUP_ID'] = $groupId; } if (strlen($dateRegister) > 0) { if (\Bitrix\Main\Type\Date::isCorrect($dateRegister)) { $dateRegister = new \Bitrix\Main\Type\Date($dateRegister); $filter['><USER.DATE_REGISTER'] = array($dateRegister->toString(), $dateRegister->add('1 DAY')->toString()); } else { $result = new \CDBResult(); $result->InitFromArray(array()); return $result; } } if ($active == 'Y') { $filter['USER.ACTIVE'] = $active; } elseif ($active == 'N') { $filter['USER.ACTIVE'] = $active; } $userDb = \Bitrix\Main\UserGroupTable::getList(array('select' => array('NAME' => 'USER.NAME', 'EMAIL' => 'USER.EMAIL', 'USER_ID'), 'filter' => $filter, 'group' => array('NAME', 'EMAIL', 'USER_ID'), 'order' => array('USER_ID' => 'ASC'))); return new \CDBResult($userDb); }
public static function GetDropDown($type="C", $siteID=false, $sla_id=false) { $err_mess = (CAllTicketDictionary::err_mess())."<br>Function: GetDropDown<br>Line: "; global $DB; if ($siteID==false || $siteID=="all") { $siteID = ""; } $arFilter = array("TYPE" => $type, "SITE" => $siteID); $v2 = $v3 = null; $rs = CTicketDictionary::GetList(($v1="s_dropdown"), $v2, $arFilter, $v3); $oldFunctionality = COption::GetOptionString( "support", "SUPPORT_OLD_FUNCTIONALITY", "Y" ); if( intval( $sla_id ) <= 0 || $oldFunctionality != "Y" || ( $type != "C" && $type!="K" && $type!="M" ) ) return $rs; switch($type) { case "C": $strSql = "SELECT CATEGORY_ID as DID FROM b_ticket_sla_2_category WHERE SLA_ID=" . intval( $sla_id ); break; case "K": $strSql = "SELECT CRITICALITY_ID as DID FROM b_ticket_sla_2_criticality WHERE SLA_ID=" . intval( $sla_id ); break; case "M": $strSql = "SELECT MARK_ID as DID FROM b_ticket_sla_2_mark WHERE SLA_ID=" . intval( $sla_id ); break; } $r = $DB->Query( $strSql, false, $err_mess . __LINE__ ); while( $a = $r->Fetch() ) $arDID[] = $a["DID"]; $arRecords = array(); while( $ar = $rs->Fetch() ) if( is_array( $arDID ) && ( in_array( $ar["ID"], $arDID ) || in_array( 0,$arDID ) ) ) $arRecords[] = $ar; $rs = new CDBResult; $rs->InitFromArray($arRecords); return $rs; }
public static function GetList($arOrder = array('CREATED_DATE' => 'DESC'), $arFilter = array(), $arSelect = array(), $nPageTop = false) { // Fix for #27449 if (!CModule::IncludeModule('calendar')) { $obRes = new CDBResult(); $obRes->InitFromArray(array()); return $obRes; } global $USER; $ENTITY_ID = 'CALENDAR_EVENT'; $arElement = $GLOBALS['USER_FIELD_MANAGER']->GetUserFields($ENTITY_ID, 0, LANGUAGE_ID); if ($arElement == false || !isset($arElement['UF_CRM_CAL_EVENT'])) { $arFields = array(); $arFields['ENTITY_ID'] = $ENTITY_ID; $arFields['FIELD_NAME'] = 'UF_CRM_CAL_EVENT'; $arFields['USER_TYPE_ID'] = 'crm'; $arFields['EDIT_FORM_LABEL'][LANGUAGE_ID] = GetMessage('CRM_UF_NAME'); $arFields['LIST_COLUMN_LABEL'][LANGUAGE_ID] = GetMessage('CRM_UF_NAME'); $arFields['LIST_FILTER_LABEL'][LANGUAGE_ID] = GetMessage('CRM_UF_NAME'); $arFields['SETTINGS']['LEAD'] = 'Y'; $arFields['SETTINGS']['CONTACT'] = 'Y'; $arFields['SETTINGS']['COMPANY'] = 'Y'; $arFields['SETTINGS']['DEAL'] = 'Y'; $arFields['MULTIPLE'] = 'Y'; $CAllUserTypeEntity = new CUserTypeEntity(); $CAllUserTypeEntity->Add($arFields); } if (isset($arFilter['ENTITY_TYPE']) && isset($arFilter['ENTITY_ID'])) { $arFilter['ENTITY_TYPE'] = CUserTypeCrm::GetShortEntityType($arFilter['ENTITY_TYPE']); $arFilter['UF_CRM_CAL_EVENT'] = $arFilter['ENTITY_TYPE'] . '_' . $arFilter['ENTITY_ID']; unset($arFilter['ENTITY_TYPE'], $arFilter['ENTITY_ID']); } else { if (!empty($arFilter['ENTITY_TYPE'])) { $arFilter['ENTITY_TYPE'] = CUserTypeCrm::GetShortEntityType($arFilter['ENTITY_TYPE']); $arFilter['%UF_CRM_CAL_EVENT'] = $arFilter['ENTITY_TYPE'] . '_'; unset($arFilter['ENTITY_TYPE']); } else { $arFilter['!=UF_CRM_CAL_EVENT'] = ''; } } $arFilter['CAL_TYPE'] = 'user'; $arFilter['DELETED'] = 'N'; if (isset($arFilter['OWNER_ID']) && is_array($arFilter['OWNER_ID'])) { $arFilter['OWNER_ID'] = current($arFilter['OWNER_ID']); } $arCal = CCalendarEvent::GetList(array('arFilter' => $arFilter, 'parseRecursion' => false, 'userId' => $USER->GetID(), 'fetchAttendees' => false, 'fetchMeetings' => true)); $obRes = new CDBResult(); $obRes->InitFromArray($arCal); return $obRes; }
/** * @param $by * @param $order * @param $arFilter * * @return CDBResult * * пока не знаю для чего эта функция, но может пригодиться */ function GetList($by, $order, $arFilter) { global $DB; $query = $DB->Query('SELECT "NAME, CHANGED" FROM p_parser_res_list'); while ($res = $query->Fetch()) { $elem['ID'] = $res['ID']; $elem['NAME'] = $res['NAME']; $elem['ACTIVE'] = $res['ACTIVE']; $elem['DATE_ACTIVE_FROM'] = $res['DATE_ACTIVE_FROM']; $elem['DATE_ACTIVE_TO'] = $res['DATE_ACTIVE_TO']; $arResult[] = $elem; } $result = new CDBResult(); $result->InitFromArray($arResult); return $result; }
public static function GetByID($ID, $bFull = false) { global $DB; if ($res = self::_GetWhere($ID)) { $res = $DB->Query('SELECT * FROM b_intranet_sharepoint WHERE ' . $res); if ($bFull) { if ($arRes = $res->Fetch()) { $res = $DB->Query('SELECT * FROM b_intranet_sharepoint_field WHERE IBLOCK_ID=\'' . $arRes['IBLOCK_ID'] . '\''); $arRes['FIELDS'] = array(); while ($arField = $res->Fetch()) { $arRes['FIELDS'][] = $arField; } $res = new CDBResult(); $res->InitFromArray(array($arRes)); } } } else { $res = new CDBResult(); } return $res; }
public static function GetList($arFilter = array(), $arGroupBy = false, $arSelectFields = array()) { $params = array(); if (is_array($arFilter) && !empty($arFilter)) { if (isset($arFilter["DELIVERY_ID"]) || $arFilter["DELIVERY_PROFILE_ID"]) { $ids = self::convertDeliveryIds(isset($arFilter["DELIVERY_ID"]) ? $arFilter["DELIVERY_ID"] : array(), isset($arFilter["DELIVERY_PROFILE_ID"]) ? $arFilter["DELIVERY_PROFILE_ID"] : array()); if (!empty($ids)) { $arFilter["=DELIVERY_ID"] = $ids; } unset($arFilter["DELIVERY_ID"]); unset($arFilter["DELIVERY_PROFILE_ID"]); } if (isset($arFilter["PAYSYSTEM_ID"])) { $arFilter["=PAYSYSTEM_ID"] = $arFilter["PAYSYSTEM_ID"]; unset($arFilter["PAYSYSTEM_ID"]); } $params['filter'] = $arFilter; } //todo: if (is_array($arGroupBy) && !empty($arGroupBy)) { $params['group'] = array_intersect($arGroupBy, array("DELIVERY_ID", "PAYSYSTEM_ID")); } $params["select"] = array("DELIVERY_ID", "PAYSYSTEM_ID", "DELIVERY_SERVICE_CODE" => "DELIVERY_SERVICE.CODE"); $params["runtime"] = array(new \Bitrix\Main\Entity\ReferenceField('DELIVERY_SERVICE', 'Bitrix\\Sale\\Delivery\\Services\\Table', array('=this.DELIVERY_ID' => 'ref.ID'))); $records = array(); $res = DeliveryPaySystemTable::getList($params); while ($record = $res->fetch()) { $delivery = CSaleDeliveryHelper::getDeliverySIDAndProfile($record["DELIVERY_SERVICE_CODE"]); $record["DELIVERY_ID"] = $delivery["SID"]; $record["DELIVERY_PROFILE_ID"] = isset($delivery["PROFILE"]) ? $delivery["PROFILE"] : null; unset($record["DELIVERY_SERVICE_CODE"]); $records[] = $record; } $result = new \CDBResult(); $result->InitFromArray($records); return $result; }
protected function getMixedList($arOrder = array("SORT" => "ASC"), $arFilter = array(), $bIncCnt = false, $arSelectedFields = false) { $arResult = array(); $notFound = false; if (is_array($arFilter["S_ID"]) && sizeof($arFilter["S_ID"]) == 1) { $notFound = $arFilter['S_ID'][0] == 0; } if (!$notFound && !$this->isFiltering()) { $arSectionFilter = array("IBLOCK_ID" => $arFilter["IBLOCK_ID"], "=ID" => $arFilter["S_ID"], "?NAME" => $arFilter["NAME"], ">=TIMESTAMP_X" => $arFilter["DATE_MODIFY_FROM"], "<=TIMESTAMP_X" => $arFilter["DATE_MODIFY_TO"], "CODE" => $arFilter["CODE"], "ACTIVE" => $arFilter["ACTIVE"]); if (isset($arFilter["CHECK_PERMISSIONS"])) { $arSectionFilter['CHECK_PERMISSIONS'] = $arFilter["CHECK_PERMISSIONS"]; $arSectionFilter['MIN_PERMISSION'] = isset($arFilter['MIN_PERMISSION']) ? $arFilter['MIN_PERMISSION'] : 'R'; } if (array_key_exists("SECTION_ID", $arFilter)) { if (!array_key_exists("INCLUDE_SUBSECTIONS", $arFilter)) { $arSectionFilter['SECTION_ID'] = $arFilter['SECTION_ID']; } elseif (!$this->isAdvancedSearchAvailable() && ($margin = $this->getSectionMargin($arFilter['SECTION_ID']))) { $arSectionFilter['>LEFT_MARGIN'] = $margin['LEFT_MARGIN']; $arSectionFilter['<RIGHT_MARGIN'] = $margin['RIGHT_MARGIN']; $arSectionFilter['>DEPTH_LEVEL'] = $margin['DEPTH_LEVEL']; } } $obSection = new \CIBlockSection(); $rsSection = $obSection->GetList($arOrder, $arSectionFilter, $bIncCnt); while ($arSection = $rsSection->Fetch()) { $arSection["TYPE"] = "S"; $arResult[] = $arSection; } } $notFound = false; if (is_array($arFilter["ID"]) && sizeof($arFilter["ID"]) == 1) { $notFound = $arFilter['ID'][0] == 0; } if (!$notFound) { $arElementFilter = array("IBLOCK_ID" => $arFilter["IBLOCK_ID"], "?NAME" => $arFilter["NAME"], "SECTION_ID" => $arFilter["SECTION_ID"], "=ID" => $arFilter["ID"], ">=TIMESTAMP_X" => $arFilter["DATE_MODIFY_FROM"], "<=TIMESTAMP_X" => $arFilter["DATE_MODIFY_TO"], "CODE" => $arFilter["CODE"], "ACTIVE" => $arFilter["ACTIVE"], "WF_STATUS" => $arFilter["WF_STATUS"], 'INCLUDE_SUBSECTIONS' => $arFilter["INCLUDE_SUBSECTIONS"]); if (isset($arFilter["CHECK_PERMISSIONS"])) { $arElementFilter['CHECK_PERMISSIONS'] = $arFilter["CHECK_PERMISSIONS"]; $arElementFilter['MIN_PERMISSION'] = isset($arFilter['MIN_PERMISSION']) ? $arFilter['MIN_PERMISSION'] : 'R'; } foreach ($arFilter as $key => $value) { $op = \CIBlock::MkOperationFilter($key); $newkey = strtoupper($op["FIELD"]); if (substr($newkey, 0, 9) == "PROPERTY_" || substr($newkey, 0, 8) == "CATALOG_") { $arElementFilter[$key] = $value; } } if (strlen($arFilter["SECTION_ID"]) <= 0) { unset($arElementFilter["SECTION_ID"]); } if (!is_array($arSelectedFields)) { $arSelectedFields = array("ID", "IBLOCK_ID", "IBLOCK_SECTION_ID", "ACTIVE", "SORT", "NAME", "PREVIEW_PICTURE", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "DETAIL_PICTURE", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "SHOW_COUNTER", "SHOW_COUNTER_START", "CODE", "EXTERNAL_ID"); } if (isset($arFilter["CHECK_BP_PERMISSIONS"])) { $arElementFilter["CHECK_BP_PERMISSIONS"] = $arFilter["CHECK_BP_PERMISSIONS"]; } $obElement = new \CIBlockElement(); $rsElement = $obElement->GetList($arOrder, $arElementFilter, false, false, $arSelectedFields); while ($arElement = $rsElement->Fetch()) { $arElement["TYPE"] = "E"; $arResult[] = $arElement; } } $rsResult = new \CDBResult(); $rsResult->InitFromArray($arResult); if ($this->isAdminSection()) { $rsResult = new \CAdminResult($rsResult, $this->getTableId()); $rsResult->NavStart(); } else { $rsResult->NavStart($this->getGridOptions()->GetNavParams()); } return $rsResult; }
function GetList($arOrder = array("SORT" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $USER; $arFilter["SHOW_NEW"] = "Y"; $arFilter["ACTIVE"] = "Y"; if (count($arSelectFields) > 0) { if (!in_array("ID", $arSelectFields)) { $arSelectFields[] = "ID"; } if (!in_array("IBLOCK_ID", $arSelectFields)) { $arSelectFields[] = "IBLOCK_ID"; } if (!in_array("CREATED_BY", $arSelectFields)) { $arSelectFields[] = "CREATED_BY"; } } $arResultList = array(); $arIDMap = array(); $dbTasksList = CIBlockElement::GetList($arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields); while ($obTask = $dbTasksList->GetNextElement()) { $arResult = array(); $arFields = $obTask->GetFields(); foreach ($arFields as $fieldKey => $fieldValue) { if (substr($fieldKey, 0, 1) != "~") { continue; } $fieldKey = substr($fieldKey, 1); $arResult[$fieldKey] = $fieldValue; $arResult[$fieldKey . "_PRINTABLE"] = $fieldValue; if (in_array($fieldKey, array("MODIFIED_BY", "CREATED_BY"))) { $arResult[$fieldKey] = "user_" . $fieldValue; $arResult[$fieldKey . "_PRINTABLE"] = self::PrepareUserForPrint($fieldValue); } } $arProperties = $obTask->GetProperties(); foreach ($arProperties as $propertyKey => $propertyValue) { $arResult["PROPERTY_" . $propertyKey] = $propertyValue["~VALUE"]; $arResult["PROPERTY_" . $propertyKey . "_PRINTABLE"] = $propertyValue["~VALUE"]; if (strlen($propertyValue["USER_TYPE"]) > 0) { if ($propertyValue["USER_TYPE"] == "UserID") { if (is_array($propertyValue["VALUE"])) { $arResult["PROPERTY_" . $propertyKey] = array(); foreach ($propertyValue["VALUE"] as $v) { $v = intval($v); if ($v > 0) { $arResult["PROPERTY_" . $propertyKey][] = "user_" . $v; } } } else { $arResult["PROPERTY_" . $propertyKey] = ""; if (intval($propertyValue["VALUE"]) > 0) { $arResult["PROPERTY_" . $propertyKey] = "user_" . intval($propertyValue["VALUE"]); } } $arResult["PROPERTY_" . $propertyKey . "_PRINTABLE"] = self::PrepareUserForPrint($propertyValue["VALUE"]); } } elseif ($propertyValue["PROPERTY_TYPE"] == "G") { $arResult["PROPERTY_" . $propertyKey . "_PRINTABLE"] = array(); $vx = self::PrepareSectionForPrint($propertyValue["VALUE"], $propertyValue["LINK_IBLOCK_ID"]); foreach ($vx as $vx1 => $vx2) { $arResult["PROPERTY_" . $propertyKey . "_PRINTABLE"][$vx1] = $vx2["NAME"]; } } elseif ($propertyValue["PROPERTY_TYPE"] == "L") { $arResult["PROPERTY_" . $propertyKey] = array(); $arPropertyValue = $propertyValue["VALUE"]; $arPropertyKey = $propertyValue["VALUE_ENUM_ID"]; if (!is_array($arPropertyValue)) { $arPropertyValue = array($arPropertyValue); $arPropertyKey = array($arPropertyKey); } for ($i = 0, $cnt = count($arPropertyValue); $i < $cnt; $i++) { $arResult["PROPERTY_" . $propertyKey][$arPropertyKey[$i]] = $arPropertyValue[$i]; } $arResult["PROPERTY_" . $propertyKey . "_PRINTABLE"] = $arResult["PROPERTY_" . $propertyKey]; } } if (array_key_exists($arFields["ID"], $arIDMap)) { foreach ($arResultList[$arIDMap[$arFields["ID"]]] as $key => &$value) { if ($value != $arResult[$key]) { if (!is_array($value)) { $value = array($value); } $value[] = $arResult[$key]; } } } else { $index = count($arResultList); $arResultList[$index] = $arResult; $arIDMap[$arFields["ID"]] = $index; } } $dbTasksList1 = new CDBResult(); $dbTasksList1->InitFromArray($arResultList); return array($dbTasksList1, $dbTasksList); }
function GetByID($FILE_ID) { global $DB; $FILE_ID = intval($FILE_ID); if (CACHED_b_file === false) { $strSql = "SELECT f.*," . $DB->DateToCharFunction("f.TIMESTAMP_X") . " as TIMESTAMP_X FROM b_file f WHERE f.ID=" . $FILE_ID; $z = $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br>LINE: " . __LINE__); } else { $arFiles = CFile::GetFromCache($FILE_ID); $z = new CDBResult(); $z->InitFromArray(array_key_exists($FILE_ID, $arFiles) ? array($arFiles[$FILE_ID]) : array()); } return $z; }
// advancing sorting is necessary if old history results are mixed with new order changes if ($bUseOldHistory) { $arData = array(); foreach ($arHistoryData as $index => $arHistoryRecord) $arData[$index] = $arHistoryRecord[$by]; $arIds = array(); foreach ($arHistoryData as $index => $arHistoryRecord) $arIds[$index] = $arHistoryRecord["ID"]; array_multisort($arData, constant("SORT_".ToUpper($order)), $arIds, constant("SORT_".ToUpper($order)), $arHistoryData); } $dbRes = new CDBResult; $dbRes->InitFromArray($arHistoryData); $dbRecords = new CAdminResult($dbRes, $sTableID_tab5); $dbRecords->NavStart(); $lAdmin_tab5->NavText($dbRecords->GetNavPrint(GetMessage('SOD_HIST_LIST'))); $histdHeader = array( array("id"=>"DATE_CREATE", "content"=>GetMessage("SOD_HIST_H_DATE"), "sort"=>"DATE_CREATE", "default"=>true), array("id"=>"USER_ID", "content"=>GetMessage("SOD_HIST_H_USER"), "sort"=>"USER_ID", "default"=>true), array("id"=>"TYPE", "content"=>GetMessage("SOD_HIST_TYPE"), "sort"=>"TYPE", "default"=>true), array("id"=>"DATA", "content"=>GetMessage("SOD_HIST_DATA"), "sort"=>"", "default"=>true), ); $lAdmin_tab5->AddHeaders($histdHeader); $arOperations = array();
function GetList($aSort=array(), $aFilter=array()) { global $DB, $CACHE_MANAGER; if(CACHED_b_user_field_enum !== false) { $cacheId = "b_user_field_enum".md5(serialize($aSort).".".serialize($aFilter)); if($CACHE_MANAGER->Read(CACHED_b_user_field_enum, $cacheId, "b_user_field_enum")) { $arResult = $CACHE_MANAGER->Get($cacheId); $res = new CDBResult; $res->InitFromArray($arResult); return $res; } } else { $cacheId = ''; } $bJoinUFTable = false; $arFilter = array(); foreach($aFilter as $key=>$val) { if(is_array($val)) { if(count($val) <= 0) continue; $val = array_map(array($DB, "ForSQL"), $val); $val = "('".implode("', '", $val)."')"; } else { if(strlen($val) <= 0) continue; $val = "('".$DB->ForSql($val)."')"; } $key = strtoupper($key); switch($key) { case "ID": case "USER_FIELD_ID": case "VALUE": case "DEF": case "SORT": case "XML_ID": $arFilter[] = "UFE.".$key." in ".$val; break; case "USER_FIELD_NAME": $bJoinUFTable = true; $arFilter[] = "UF.FIELD_NAME in ".$val; break; } } $arOrder = array(); foreach($aSort as $key=>$val) { $key = strtoupper($key); $ord = (strtoupper($val) <> "ASC"? "DESC": "ASC"); switch($key) { case "ID": case "USER_FIELD_ID": case "VALUE": case "DEF": case "SORT": case "XML_ID": $arOrder[] = "UFE.".$key." ".$ord; break; } } if(count($arOrder) == 0) { $arOrder[] = "UFE.SORT asc"; $arOrder[] = "UFE.ID asc"; } DelDuplicateSort($arOrder); $sOrder = "\nORDER BY ".implode(", ", $arOrder); if(count($arFilter) == 0) $sFilter = ""; else $sFilter = "\nWHERE ".implode("\nAND ", $arFilter); $strSql = " SELECT UFE.ID ,UFE.USER_FIELD_ID ,UFE.VALUE ,UFE.DEF ,UFE.SORT ,UFE.XML_ID FROM b_user_field_enum UFE ".($bJoinUFTable? "INNER JOIN b_user_field UF ON UF.ID = UFE.USER_FIELD_ID": "")." ".$sFilter.$sOrder; if($cacheId == '') { $res = $DB->Query($strSql, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__); } else { $arResult = array(); $res = $DB->Query($strSql, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__); while($ar = $res->Fetch()) $arResult[]=$ar; $CACHE_MANAGER->Set($cacheId, $arResult); $res = new CDBResult; $res->InitFromArray($arResult); } return $res; }
case "weekday": $start = 0; $end = 6; break; case "month": $start = 1; $end = 12; break; } $graph_type_upper = ToUpper($graph_type); $ra = array(); for ($i = $start; $i <= $end; $i++) { $ra[] = array("ID" => $i, "HITS" => $ar[$graph_type_upper . "_HIT_" . $i], "C_HOSTS" => $ar[$graph_type_upper . "_HOST_" . $i], "SESSIONS" => $ar[$graph_type_upper . "_SESSION_" . $i], "C_EVENTS" => $ar[$graph_type_upper . "_EVENT_" . $i], "GUESTS" => $ar[$graph_type_upper . "_GUEST_" . $i], "NEW_GUESTS" => $ar[$graph_type_upper . "_NEW_GUEST_" . $i]); } $rsData = new CDBResult(); $rsData->InitFromArray($ra); } $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint($arrParams[$graph_type][0])); $arHeaders = array(); switch ($graph_type) { case "date": $arHeaders[] = array("id" => "ID", "content" => "ID", "sort" => "s_id", "align" => "right", "default" => true); $arHeaders[] = array("id" => "DATE_STAT", "content" => GetMessage("STAT_DATE"), "sort" => "s_date", "default" => true); $arHeaders[] = array("id" => "WDAY", "content" => GetMessage("STAT_WEEKDAY"), "sort" => false, "default" => true); break; case "weekday": $arHeaders[] = array("id" => "ID", "content" => GetMessage("STAT_WEEKDAY"), "sort" => false, "default" => true); break; case "hour":
/** * <p>Возвращает список <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#session">сессий</a> <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#guest">посетителей</a>, проявивших активность (совершивших <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#hit">хит</a>) на сайте за определённый интервал времени.</p> * * * * * @param function $GetList Ссылка на переменную, которая после выполнения функции будет * содержать количество <a * href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#online">посетителей в online</a>. * * * * @param (&$guest_coun $t Ссылка на переменную, которая после выполнения функции будет * содержать количество сессий посетителей в online. * * * * @param &$session_coun $t * * * * @param $arOrde $r = Array() * * * * @param $arFilte $r = Array()) * * * * @return CDBResult * * * <h4>Example</h4> * <pre> * <? * // получим список записей * $rs = <b>CUserOnline::GetList</b>($guest_counter, $session_counter); * * echo "Количество посетителей в онлайн: ".$guest_counter; * echo "Количество сессий в онлайн: ".$session_counter; * * // выведем все записи * while ($ar = $rs->Fetch()) * { * echo "<pre>"; print_r($ar); echo "</pre>"; * } * ?> * </pre> * * * * <h4>See Also</h4> * <ul> <li> <a href="http://www.1c-bitrix.ru/user_help/statistic/users_online.php">Отчет "Кто на сайте"</a> * </li> </ul><a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/statistic/classes/cuseronline/getlist.php * @author Bitrix */ public static function GetList(&$guest_count, &$session_count, $arOrder=Array(), $arFilter=Array()) { $DB = CDatabase::GetModuleConnection('statistic'); $err_mess = "File: ".__FILE__."<br>Line: "; $interval = intval(COption::GetOptionString("statistic", "ONLINE_INTERVAL")); $arSqlSearch = Array(); $strSqlSearch = ""; if (is_array($arFilter)) { foreach ($arFilter as $key => $val) { if(is_array($val)) { if(count($val) <= 0) continue; } else { if( (strlen($val) <= 0) || ($val === "NOT_REF") ) continue; } $match_value_set = array_key_exists($key."_EXACT_MATCH", $arFilter); $key = strtoupper($key); switch($key) { case "INTERVAL": $interval = intval($val); break; case "ID": case "GUEST_ID": case "ADV_ID": case "STOP_LIST_ID": case "USER_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("S.".$key,$val,$match); break; case "COUNTRY_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("S.COUNTRY_ID",$val,$match); break; case "IP": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("S.IP_LAST",$val,$match,array(".")); break; case "REGISTERED": $arSqlSearch[] = ($val=="Y") ? "S.USER_ID>0" : "(S.USER_ID<=0 or S.USER_ID is null)"; break; case "HITS1": $arSqlSearch[] = "S.HITS>='".intval($val)."'"; break; case "HITS2": $arSqlSearch[] = "S.HITS<='".intval($val)."'"; break; case "ADV": if ($val=="Y") $arSqlSearch[] = "(S.ADV_ID>0 and S.ADV_ID is not null)"; elseif ($val=="N") $arSqlSearch[] = "(S.ADV_ID<=0 or S.ADV_ID is null)"; break; case "REFERER1": case "REFERER2": case "REFERER3": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("S.".$key, $val, $match); break; case "STOP": $arSqlSearch[] = ($val=="Y") ? "S.STOP_LIST_ID>0" : "(S.STOP_LIST_ID<=0 or S.STOP_LIST_ID is null)"; break; case "COUNTRY": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("C.NAME", $val, $match); $from2 = "INNER JOIN b_stat_country C ON (C.ID = S.COUNTRY_ID)"; break; case "LAST_SITE_ID": $arSqlSearch[] = GetFilterQuery("S.".$key, $val, "N"); break; case "URL_LAST": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("S.".$key,$val,$match,array("/","\\",".","?","#",":")); break; case "FIRST_URL_FROM": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("G.".$key,$val,$match,array("/","\\",".","?","#",":")); break; case "ADV_BACK": case "NEW_GUEST": case "URL_LAST_404": case "URL_TO_404": case "USER_AUTH": $arSqlSearch[] = ($val=="Y") ? "S.".$key."='Y'" : "S.".$key."='N'"; break; case "FAVORITES": $arSqlSearch[] = ($val=="Y") ? "G.".$key."='Y'" : "G.".$key."='N'"; break; case "USER": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = "ifnull(S.USER_ID,0)>0"; $arSqlSearch[] = GetFilterQuery("S.USER_ID,A.LOGIN,A.LAST_NAME,A.NAME", $val, $match); $from1 = "LEFT JOIN b_user A ON (A.ID = S.USER_ID)"; $select = " , A.LOGIN, concat(ifnull(A.NAME,''),' ',ifnull(A.LAST_NAME,'')) USER_NAME"; break; } } } if (!is_array($arOrder)) $arOrder = Array("s_id" => "desc"); foreach($arOrder as $by=>$order) { $by = strtolower($by); $order = strtolower($order); if ($order!="asc") $order = "desc"; } if ($by == "s_id") $strSqlOrder = "ORDER BY S.ID"; elseif ($by == "s_session_time") $strSqlOrder = "ORDER BY SESSION_TIME"; elseif ($by == "s_date_first") $strSqlOrder = "ORDER BY S.DATE_FIRST"; elseif ($by == "s_date_last") $strSqlOrder = "ORDER BY S.DATE_LAST"; elseif ($by == "s_user_id") $strSqlOrder = "ORDER BY S.USER_ID"; elseif ($by == "s_guest_id") $strSqlOrder = "ORDER BY S.GUEST_ID"; elseif ($by == "s_ip") $strSqlOrder = "ORDER BY S.IP_LAST"; elseif ($by == "s_hits") $strSqlOrder = "ORDER BY S.HITS "; elseif ($by == "s_adv_id") $strSqlOrder = "ORDER BY S.ADV_ID "; elseif ($by == "s_country_id") $strSqlOrder = "ORDER BY S.COUNTRY_ID "; elseif ($by == "s_url_last") $strSqlOrder = "ORDER BY S.URL_LAST "; elseif ($by == "s_url_to") $strSqlOrder = "ORDER BY S.URL_TO "; else { $by = "s_id"; $strSqlOrder = "ORDER BY S.ID"; } if ($order!="asc") { $strSqlOrder .= " desc "; $order="desc"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSql = " SELECT S.ID, S.ADV_ID, S.REFERER1, S.REFERER2, S.REFERER3, S.ADV_BACK, S.LAST_SITE_ID, S.URL_LAST, S.URL_LAST_404, S.IP_LAST, S.HITS, S.USER_AUTH, S.STOP_LIST_ID, S.GUEST_ID, G.FAVORITES, G.LAST_USER_ID, UNIX_TIMESTAMP(S.DATE_LAST) - UNIX_TIMESTAMP(S.DATE_FIRST) SESSION_TIME, ".$DB->DateToCharFunction("S.DATE_LAST")." DATE_LAST, if(G.SESSIONS<=1,'Y','N') NEW_GUEST, G.FIRST_URL_FROM, G.FIRST_SITE_ID, S.URL_FROM, S.COUNTRY_ID, C.NAME COUNTRY_NAME, CITY.REGION REGION_NAME, S.CITY_ID, CITY.NAME CITY_NAME FROM b_stat_session S INNER JOIN b_stat_guest G ON (G.ID = S.GUEST_ID) INNER JOIN b_stat_country C ON (C.ID = S.COUNTRY_ID) ".$from1." LEFT JOIN b_stat_city CITY ON (CITY.ID = S.CITY_ID) WHERE S.DATE_STAT >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) and S.DATE_LAST > DATE_ADD(now(), INTERVAL - ".$interval." SECOND) and ".$strSqlSearch." ".$strSqlOrder." "; $arr = array(); $arrG = array(); $rs = $DB->Query($strSql, false, $err_mess.__LINE__); while($ar = $rs->Fetch()) { $arr[] = $ar; $arrG[$ar["GUEST_ID"]] = $ar["GUEST_ID"]; } $guest_count = count($arrG); $session_count = count($arr); $rs = new CDBResult; $rs->InitFromArray($arr); return $rs; }
function GetList($arOrder = array("SORT" => "ASC", "ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB, $CACHE_MANAGER; if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "SITE_ID", "NAME", "SORT"); } $bShouldBeCached = false; $cacheId = ""; if (CACHED_b_sonet_group_subjects != false) { if ($arSelectFields == false && $arNavStartParams == false && $arGroupBy == false) { $bFilterByID = array_key_exists("ID", $arFilter); $bFilterBySite = array_key_exists("SITE_ID", $arFilter); if (count($arFilter) == 1 && ($bFilterByID || $bFilterBySite)) { $bShouldBeCached = true; $cacheId = "b_sonet_group_subjects" . md5(serialize($arOrder)); if ($CACHE_MANAGER->Read(CACHED_b_sonet_group_subjects, $cacheId, "b_sonet_group_subjects")) { $arResult = $CACHE_MANAGER->Get($cacheId); $arReturnValue = array(); for ($i = 0; $i < count($arResult); $i++) { if ($bFilterByID && $arResult[$i]["ID"] == $arFilter["ID"]) { $arReturnValue[] = $arResult[$i]; } if ($bFilterBySite && (is_array($arFilter["SITE_ID"]) && in_array($arResult[$i]["SITE_ID"], $arFilter["SITE_ID"]) || !is_array($arFilter["SITE_ID"]) && $arResult[$i]["SITE_ID"] == $arFilter["SITE_ID"])) { $arReturnValue[] = $arResult[$i]; } } $res = new CDBResult(); $res->InitFromArray($arResult); return $res; } } } } static $arFields1 = array("ID" => array("FIELD" => "S.ID", "TYPE" => "int"), "NAME" => array("FIELD" => "S.NAME", "TYPE" => "string"), "SORT" => array("FIELD" => "S.SORT", "TYPE" => "int")); if (array_key_exists("SITE_ID", $arFilter)) { $arFields["SITE_ID"] = array("FIELD" => "SGSS.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group_subject_site SGSS ON S.ID = SGSS.SUBJECT_ID"); $strDistinct = " DISTINCT "; foreach ($arSelectFields as $i => $strFieldTmp) { if ($strFieldTmp == "SITE_ID") { unset($arSelectFields[$i]); } } foreach ($arOrder as $by => $order) { if (!in_array($by, $arSelectFields)) { $arSelectFields[] = $by; } } } else { $arFields["SITE_ID"] = array("FIELD" => "S.SITE_ID", "TYPE" => "string"); $strDistinct = " "; } $arFields = array_merge($arFields1, $arFields); $arSqls = CSocNetGroup::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", $strDistinct, $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sonet_group_subject S " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return False; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sonet_group_subject S " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sonet_group_subject S " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { // рнкэйн дкъ MYSQL!!! дкъ ORACLE дпсцни йнд $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; //$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if (CACHED_b_sonet_group_subjects == false || !$bShouldBeCached) { $dbRes = $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); } else { $arResult = array(); $dbRes = $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); while ($ar = $dbRes->Fetch()) { $arResult[] = $ar; } $CACHE_MANAGER->Set($cacheId, $arResult); $dbRes = new CDBResult(); $dbRes->InitFromArray($arResult); } } return $dbRes; }
function GetBySID($SID, $SITE_ID = false) { global $DB; if (!defined('SALE_DH_INITIALIZED')) { CSaleDeliveryHandler::Initialize(); } $arHandlersList = CSaleDeliveryHandler::__getRegisteredHandlers(); $cnt = count($arHandlersList); $arResult = array(); for ($i = 0; $i < $cnt; $i++) { if ($arHandlersList[$i]["SID"] == $SID) { $arResult[] = $arHandlersList[$i]; break; } } if (count($arResult) > 0) { $arResult = CSaleDeliveryHandler::__getHandlersData($arResult, $SITE_ID); } $dbResult = new CDBResult(); reset($arResult); $dbResult->InitFromArray($arResult); return $dbResult; }
/** * <p>Возвращает список зарегистрированных валидаторов в виде объекта класса <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a>.</p> * * * * * @param array $mixedarFilter = array() Массив для фильтрации. В массиве допустимы следующие ключи: <ul> <li> * <b>TYPE</b> - список типов полей;</li> </ul> * * * * @return CDBResult * * * <h4>Example</h4> * <pre> * if (CModule::IncludeModule("form")) * { * $arFilter = array("TYPE" => array("text", "textarea")); * * $sType = "<b>".implode("</b>, <b>", $arFilter["TYPE"])."</b>"; * * $rsValidators = CFormValidator::GetAllList($arFilter); * if ($rsValidators->SelectedRowsCount() > 0) * { * echo "Найденные валидаторы для полей типа ".$sType.":<ul>"; * while ($arValidator = $rsValidators->GetNext()) * { * echo "<li>[".$arValidator["NAME"]."] ".$arValidator["DESCRIPTION"]."</li>"; * } * echo "</ul>"; * } * else * { * echo "Валидаторов, применимых к полям типа ".$sType." не обнаружено."; * } * } * else * { * ShowError('Модуль веб-форм не установлен'); * } * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/form/classes/cformvalidator/getalllist.php * @author Bitrix */ public static function GetAllList($arFilter = array()) { if (is_array($arFilter) && count($arFilter) > 0) { $arType = $arFilter["TYPE"]; $is_filtered = true; } else { $is_filtered = false; } $rsValList = GetModuleEvents("form", "onFormValidatorBuildList"); if ($rsValList->SelectedRowsCount() > 0) { $arResult = array(); while ($arValidator = $rsValList->Fetch()) { $arValidatorInfo = ExecuteModuleEventEx($arValidator, $arParams = array()); if ($is_filtered) { if (is_array($arValidatorInfo["TYPES"])) { if ( (is_array($arType) && count(array_intersect($arType, $arValidatorInfo["TYPES"]))) || (!is_array($arType) && in_array($arType, $arValidatorInfo["TYPES"])) ) $arResult[] = $arValidatorInfo; } } else { $arResult[] = $arValidatorInfo; } } } else { return false; } unset($rsValList); $rsValList = new CDBResult; $rsValList->InitFromArray($arResult); return $rsValList; }
function GetFilterList($id = "") { static $BX_MAIL_CUST_FILTER_LIST = false; if($BX_MAIL_CUST_FILTER_LIST === false) { $BX_MAIL_CUST_FILTER_LIST = array(); foreach(GetModuleEvents("mail", "OnGetFilterList", true) as $arEvent) { $arResult = ExecuteModuleEventEx($arEvent); if(is_array($arResult)) $BX_MAIL_CUST_FILTER_LIST[] = $arResult; } } if($id != "") { $allResultsTemp = array(); foreach($BX_MAIL_CUST_FILTER_LIST as $arResult) { if($arResult["ID"] == $id) { $allResultsTemp[] = $arResult; break; } } } else { $allResultsTemp = $BX_MAIL_CUST_FILTER_LIST; } $db_res = new CDBResult; $db_res->InitFromArray($allResultsTemp); return $db_res; }
function GetList(&$by, &$order, $arFilter = array(), &$is_filtered) { $err_mess = CVoteChannel::err_mess() . "<br>Function: GetList<br>Line: "; global $DB; $arSqlSearch = array(); $arSqlSearch_1 = array(); $strSqlSearch = ""; $strSqlSearch_1 = ""; if (is_array($arFilter)) { $filter_keys = array_keys($arFilter); for ($i = 0; $i < count($filter_keys); $i++) { $key = $filter_keys[$i]; $val = $arFilter[$filter_keys[$i]]; if (strlen($val) <= 0 || $val == "NOT_REF") { continue; } if (is_array($val) && count($val) <= 0) { continue; } $match_value_set = in_array($key . "_EXACT_MATCH", $filter_keys) ? true : false; $key = strtoupper($key); switch ($key) { case "ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("C.ID", $val, $match); break; case "SITE": if (is_array($val)) { $val = implode(" | ", $val); } $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch_1[] = GetFilterQuery("CS.SITE_ID", $val, $match); $strSqlSearch_1 = GetFilterSqlSearch($arSqlSearch_1); $where = " and exists (SELECT 'x' FROM b_vote_channel_2_site CS WHERE {$strSqlSearch_1} and C.ID = CS.CHANNEL_ID) "; break; case "TITLE": $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("C.TITLE", $val, $match); break; case "SID": case "SYMBOLIC_NAME": $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("C.SYMBOLIC_NAME", $val, $match); break; case "ACTIVE": $arSqlSearch[] = $val == "Y" ? "C.ACTIVE='Y'" : "C.ACTIVE='N'"; break; case "LID": case "FIRST_SITE_ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("C.FIRST_SITE_ID", $val, $match); break; } } } if ($by == "s_id") { $strSqlOrder = "ORDER BY C.ID"; } elseif ($by == "s_timestamp") { $strSqlOrder = "ORDER BY C.TIMESTAMP_X"; } elseif ($by == "s_c_sort") { $strSqlOrder = "ORDER BY C.C_SORT"; } elseif ($by == "s_active") { $strSqlOrder = "ORDER BY C.ACTIVE"; } elseif ($by == "s_symbolic_name") { $strSqlOrder = "ORDER BY C.SYMBOLIC_NAME"; } elseif ($by == "s_title") { $strSqlOrder = "ORDER BY C.TITLE "; } elseif ($by == "s_votes") { $strSqlOrder = "ORDER BY count(V.ID)"; } else { $by = "s_id"; $strSqlOrder = "ORDER BY C.ID"; } if ($order != "asc") { $strSqlOrder .= " desc "; $order = "desc"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSql = "\r\n\t\t\tSELECT \r\n\t\t\t\tC.ID, C.ACTIVE, C.TITLE, C.C_SORT, \r\n\t\t\t\tC.FIRST_SITE_ID,\r\n\t\t\t\tC.FIRST_SITE_ID\t\t\t\t\t\t\t\t\t\t\tLID,\r\n\t\t\t\tC.SYMBOLIC_NAME,\r\n\t\t\t\tC.SYMBOLIC_NAME\t\t\t\t\t\t\t\t\t\t\tSID,\r\n\t\t\t\t" . $DB->DateToCharFunction("C.TIMESTAMP_X") . "\t\t\tTIMESTAMP_X,\r\n\t\t\t\tcount(V.ID) VOTES\r\n\t\t\tFROM \r\n\t\t\t\tb_vote_channel C\r\n\t\t\tLEFT JOIN b_vote V ON (V.CHANNEL_ID = C.ID)\r\n\t\t\tWHERE\t\t\t\t\r\n\t\t\t{$strSqlSearch}\r\n\t\t\t{$where}\r\n\t\t\tGROUP BY\r\n\t\t\t\tC.ID, C.SYMBOLIC_NAME, C.ACTIVE, C.TITLE, C.C_SORT, C.FIRST_SITE_ID, C.TIMESTAMP_X\r\n\t\t\t{$strSqlOrder}\r\n\t\t\t"; $is_filtered = IsFiltered($strSqlSearch); if (VOTE_CACHE_TIME === false) { $res = $DB->Query($strSql, false, $err_mess . __LINE__); return $res; } else { global $CACHE_MANAGER; $md5 = md5($strSql); if ($CACHE_MANAGER->Read(VOTE_CACHE_TIME, "b_vote_channel_" . $md5, "b_vote_channel")) { $arCache = $CACHE_MANAGER->Get("b_vote_channel_" . $md5); } else { $res = $DB->Query($strSql, false, $err_mess . __LINE__); while ($ar = $res->Fetch()) { $arCache[] = $ar; } $CACHE_MANAGER->Set("b_vote_channel_" . $md5, $arCache); } $r = new CDBResult(); $r->InitFromArray($arCache); unset($arCache); return $r; } }
} } } $sTableID = "tbl_perfmon_panel"; $APPLICATION->SetTitle(GetMessage("PERFMON_PHP_TITLE")); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; foreach ($data as $i => $arTable) { $lAdmin = new CAdminList($sTableID . $i); $lAdmin->BeginPrologContent(); if (array_key_exists("TITLE", $arTable)) { echo "<h4>" . $arTable["TITLE"] . "</h4>\n"; } $lAdmin->EndPrologContent(); $lAdmin->AddHeaders($arTable["HEADERS"]); $rsData = new CDBResult(); $rsData->InitFromArray($arTable["ITEMS"]); $rsData = new CAdminResult($rsData, $sTableID . $i); $j = 0; while ($arRes = $rsData->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($j++, $arRes); $row->AddViewField("PARAMETER", $arRes["PARAMETER"]); if ($arRes["IS_OK"]) { $row->AddViewField("VALUE", $arRes["VALUE"] . " "); $row->AddViewField("RECOMMENDATION", " "); } else { $row->AddViewField("VALUE", "<span class=\"errortext\">" . $arRes["VALUE"] . " </span>"); $row->AddViewField("RECOMMENDATION", $arRes["RECOMMENDATION"]); } } $lAdmin->CheckListMode(); $lAdmin->DisplayList();
public static function GetByIDEx($ID) { $ID = intval($ID); if ($ID <= 0) { return false; } if (!isset($GLOBALS["VOTE_CACHE"]["VOTE"][$ID])) { global $CACHE_MANAGER; if (!!VOTE_CACHE_TIME && $CACHE_MANAGER->Read(VOTE_CACHE_TIME, $ID, "b_vote")) { $GLOBALS["VOTE_CACHE"]["VOTE"][$ID] = $CACHE_MANAGER->Get($ID); } else { $db_res = CVote::GetListEx(array("ID" => "ASC"), array("ID" => $ID)); if ($db_res && ($res = $db_res->Fetch())) { $GLOBALS["VOTE_CACHE"]["VOTE"][$ID] = $res; if (!!VOTE_CACHE_TIME) { $CACHE_MANAGER->Set($ID, $res); } } } } $db_res = new CDBResult(); $db_res->InitFromArray(array($GLOBALS["VOTE_CACHE"]["VOTE"][$ID])); return $db_res; }
public function Prepare($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array(), $arOptions = array()) { global $DB; if (!is_array($arOrder)) { $arOrder = array(); } if (!is_array($arFilter)) { $arFilter = array(); } // ID must present in select (If select is empty it will be filled by CSqlUtil::PrepareSql) if (!is_array($arSelectFields)) { $arSelectFields = array(); } if (count($arSelectFields) > 0 && !in_array('*', $arSelectFields, true) && !in_array('ID', $arSelectFields, true)) { $arSelectFields[] = 'ID'; } if (!is_array($arOptions)) { $arOptions = array(); } $arOptions['DB_TYPE'] = $this->dbType; $isExternalContext = isset($arOptions['IS_EXTERNAL_CONTEXT']) && ($arOptions['IS_EXTERNAL_CONTEXT'] === true || $arOptions['IS_EXTERNAL_CONTEXT'] === 'Y'); if ($isExternalContext) { // Sanitizing of filter data if (isset($arFilter['__JOINS'])) { unset($arFilter['__JOINS']); } if (isset($arFilter['CHECK_PERMISSIONS'])) { unset($arFilter['CHECK_PERMISSIONS']); } } // Processing of special fields if ($this->fmEntityID !== '' && isset($arFilter['FM'])) { CCrmFieldMulti::PrepareExternalFilter($arFilter, array('ENTITY_ID' => $this->fmEntityID, 'MASTER_ALIAS' => $this->tableAlias, 'MASTER_IDENTITY' => 'ID')); } // Processing user fields $ufSelectSql = null; $ufFilterSql = null; if ($this->ufEntityID !== '') { $ufSelectSql = new CUserTypeSQL(); $ufSelectSql->SetEntity($this->ufEntityID, $this->tableAlias . '.ID'); $ufSelectSql->SetSelect($arSelectFields); $ufSelectSql->SetOrder($arOrder); $ufFilterSql = new CUserTypeSQL(); $ufFilterSql->SetEntity($this->ufEntityID, $this->tableAlias . '.ID'); $ufFilterSql->SetFilter($arFilter); $userType = new CCrmUserType($GLOBALS['USER_FIELD_MANAGER'], $this->ufEntityID); $userType->ListPrepareFilter($arFilter); } $this->sqlData = CSqlUtil::PrepareSql($this->fields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $arOptions); $this->sqlData['SELECT'] = str_replace('%%_DISTINCT_%% ', '', $this->sqlData['SELECT']); // 'Joins' implement custom filter logic $joins = array(); if (isset($arFilter['__JOINS'])) { if (is_array($arFilter['__JOINS'])) { $joins = $arFilter['__JOINS']; } unset($arFilter['__JOINS']); } if (count($joins) > 0) { foreach ($joins as &$join) { // INNER JOINs will be added tostart $this->Add2SqlData($join['SQL'], 'FROM', !isset($join['TYPE']) || $join['TYPE'] === 'INNER', isset($join['REPLACE']) ? $join['REPLACE'] : ''); } unset($join); } // Apply user permission logic if (count($this->permissionCallback) > 0) { if ((!array_key_exists('CHECK_PERMISSIONS', $arFilter) || $arFilter['CHECK_PERMISSIONS'] !== 'N') && !CCrmPerms::IsAdmin()) { $arPermType = !isset($arFilter['PERMISSION']) ? 'READ' : (is_array($arFilter['PERMISSION']) ? $arFilter['PERMISSION'] : array($arFilter['PERMISSION'])); $permissionSql = call_user_func_array($this->permissionCallback, array($this->tableAlias, $arPermType, $arOptions)); if (is_bool($permissionSql) && !$permissionSql) { $CDBResult = new CDBResult(); $CDBResult->InitFromArray(array()); return $CDBResult; } if ($permissionSql !== '') { $sqlType = isset($arOptions['PERMISSION_SQL_TYPE']) && $arOptions['PERMISSION_SQL_TYPE'] === 'FROM' ? 'FROM' : 'WHERE'; $this->Add2SqlData($permissionSql, $sqlType, $sqlType === 'FROM'); } } } // Apply custom SQL logic if (count($this->afterPrepareSqlCallback) > 0) { $arUserSql = call_user_func_array($this->afterPrepareSqlCallback, array($this, $arOrder, $arFilter, $arGroupBy, $arSelectFields)); if (is_array($arUserSql)) { if (isset($arUserSql['FROM'])) { $this->Add2SqlData($arUserSql['FROM'], 'FROM'); } if (isset($arUserSql['WHERE'])) { $this->Add2SqlData($arUserSql['WHERE'], 'WHERE'); } } } if ($ufSelectSql) { // Adding user fields to SELECT $this->Add2SqlData($ufSelectSql->GetSelect(), 'SELECT'); // Adding user fields to ORDER BY if (is_array($arOrder)) { foreach ($arOrder as $orderKey => $order) { $orderSql = $ufSelectSql->GetOrder($orderKey); if (!is_string($orderSql) || $orderSql === '') { continue; } $order = strtoupper($order); if ($order !== 'ASC' && $order !== 'DESC') { $order = 'ASC'; } $this->Add2SqlData("{$orderSql} {$order}", 'ORDERBY'); } } // Adding user fields to joins $this->Add2SqlData($ufSelectSql->GetJoin($this->tableAlias . '.ID'), 'FROM'); } if ($ufFilterSql) { // Adding user fields to WHERE $ufWhere = $ufFilterSql->GetFilter(); if ($ufWhere !== '') { $ufSql = $this->tableAlias . '.ID IN (SELECT ' . $this->tableAlias . '.ID FROM ' . $this->tableName . ' ' . $this->tableAlias . ' ' . $ufFilterSql->GetJoin($this->tableAlias . '.ID') . ' WHERE ' . $ufWhere . ')'; // Adding user fields to joins $this->Add2SqlData($ufSql, 'WHERE'); } } //Get count only if (is_array($arGroupBy) && count($arGroupBy) == 0) { return $this->GetRowCount(RestrictionManager::getSqlRestriction()->getRowCountThreshold()); } $sql = 'SELECT ' . $this->sqlData['SELECT'] . ' FROM ' . $this->tableName . ' ' . $this->tableAlias; if (isset($this->sqlData['FROM'][0])) { $sql .= ' ' . $this->sqlData['FROM']; } if (isset($this->sqlData['WHERE'][0])) { $sql .= ' WHERE ' . $this->sqlData['WHERE']; } if (isset($this->sqlData['GROUPBY'][0])) { $sql .= ' GROUP BY ' . $this->sqlData['GROUPBY']; } if (isset($this->sqlData['ORDERBY'][0])) { $sql .= ' ORDER BY ' . $this->sqlData['ORDERBY']; } $enableNavigation = is_array($arNavStartParams); $top = $enableNavigation && isset($arNavStartParams['nTopCount']) ? intval($arNavStartParams['nTopCount']) : 0; if ($enableNavigation && $top <= 0) { $dbRes = new CDBResult(); if ($this->ufEntityID !== '') { $dbRes->SetUserFields($GLOBALS['USER_FIELD_MANAGER']->GetUserFields($this->ufEntityID)); } elseif (!empty($this->userFields)) { $dbRes->SetUserFields($this->userFields); } //Trace('CCrmEntityListBuilder::Prepare, SQL', $sql, 1); $cnt = $this->GetRowCount(RestrictionManager::getSqlRestriction()->getRowCountThreshold()); $dbRes->NavQuery($sql, $cnt, $arNavStartParams); } else { $limit = $top; $offset = 0; if (isset($arOptions['QUERY_OPTIONS']) && is_array($arOptions['QUERY_OPTIONS'])) { $queryOptions = $arOptions['QUERY_OPTIONS']; $limit = isset($queryOptions['LIMIT']) ? (int) $queryOptions['LIMIT'] : 0; $offset = isset($queryOptions['OFFSET']) ? (int) $queryOptions['OFFSET'] : 0; } $threshold = RestrictionManager::getSqlRestriction()->getRowCountThreshold(); if ($threshold > 0 && $threshold < $limit + $offset) { $delta = $threshold - $offset; if ($delta <= 0) { $obRes = new CDBResult(); $obRes->InitFromArray(array()); return $obRes; } $limit = $delta; } if ($limit > 0) { $sql = Main\Application::getConnection()->getSqlHelper()->getTopSql($sql, $limit, $offset); } //Trace('CCrmEntityListBuilder::Prepare, SQL', $sql, 1); $dbRes = $DB->Query($sql, false, 'File: ' . __FILE__ . '<br/>Line: ' . __LINE__); if ($this->ufEntityID !== '') { $dbRes->SetUserFields($GLOBALS['USER_FIELD_MANAGER']->GetUserFields($this->ufEntityID)); } elseif (!empty($this->userFields)) { $dbRes->SetUserFields($this->userFields); } } return $dbRes; }
$args[$n] = $tmp; } } $args[] =& $data; call_user_func_array('array_multisort', $args); return array_pop($args); } } // ��� ����� � ����������� � ����... $mSortBy = SORT_ASC; if (strtolower($GLOBALS[$oSort->ord_name]) == "desc") { $mSortBy = SORT_DESC; } $aFilteredCat = array_orderby($aFilteredCat, substr($GLOBALS[$oSort->by_name], 2), $mSortBy, 'GEM', SORT_ASC); } $rsData->InitFromArray($aFilteredCat); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint("BitrixGems")); while ($arRes = $rsData->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_NAME, $arRes); $bCanBeInstalled = BitrixGems::checkRequirements($arRes); $row->AddViewField("TYPE", GetMessage('GEM_TYPE_' . $f_TYPE)); if (empty($f_PICTURE)) { $f_PICTURE = '/bitrix/images/iv.bitrixgems/ruby.png'; } $row->AddViewField("PICTURE", '<div style="text-align:center;"><img src="' . $f_PICTURE . '" alt="' . $f_NAME . '" title="' . $f_NAME . '"/></div>'); $row->AddViewField("DESCRIPTION", nl2br($f_DESCRIPTION)); $row->AddViewField("REQUIREMENTS", '<font style="color:' . ($bCanBeInstalled ? 'green' : 'red') . '">' . $f_REQUIREMENTS . GetMessage('TR_REQ_MODULE_VERSION') . $f_REQUIRED_MIN_MODULE_VERSION . (!empty($f_REQUIRED_MODULES) ? GetMessage('TR_REQ_MODULES') . implode(', ', $f_REQUIRED_MODULES) : '') . (!empty($f_REQUIRED_GEMS) ? GetMessage('TR_REQ_GEMS') . implode(', ', $f_REQUIRED_GEMS) : '') . '</font>'); $row->AddViewField("VERSION", $f_VERSION); $row->AddViewField("LIKES", $f_LIKES);
/** * <p>Функция возвращает результат выборки записей из типов плательщика в соответствии со своими параметрами.</p> * * * * * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" => * "направление_сортировки1", "название_поля2" => * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>" * может стоять любое поле типов плательщика, а в качестве * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки * имеет несколько элементов, то результирующий набор сортируется * последовательно по каждому элементу (т.е. сначала сортируется по * первому элементу, потом результат сортируется по второму и * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает, * что результат отсортирован не будет. * * * * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи типов * плательщика. Массив имеет вид: <pre class="syntax">array( * "[модификатор1][оператор1]название_поля1" => "значение1", * "[модификатор2][оператор2]название_поля2" => "значение2", . . . )</pre> * Удовлетворяющие фильтру записи возвращаются в результате, а * записи, которые не удовлетворяют условиям фильтра, * отбрасываются.<br><br> Допустимыми являются следующие модификаторы: * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми * являются следующие операторы: <ul> <li> <b>>=</b> - значение поля больше * или равно передаваемой в фильтр величины;</li> <li> <b>></b> - значение * поля строго больше передаваемой в фильтр величины;</li> <li> <b><=</b> - * значение поля меньше или равно передаваемой в фильтр величины;</li> * <li> <b><</b> - значение поля строго меньше передаваемой в фильтр * величины;</li> <li> <b>@</b> - значение поля находится в передаваемом в * фильтр разделенном запятой списке значений;</li> <li> <b>~</b> - значение * поля проверяется на соответствие передаваемому в фильтр * шаблону;</li> <li> <b>%</b> - значение поля проверяется на соответствие * передаваемой в фильтр строке в соответствии с языком запросов.</li> * </ul> В качестве "название_поляX" может стоять любое поле типов * плательщика.<br> Значение по умолчанию - пустой массив array() - * означает, что результат отфильтрован не будет. * * * * @param array $arGroupBy = false Массив полей, по которым группируются записи типов плательщика. * Массив имеет вид: <pre class="syntax">array("название_поля1", * "группирующая_функция2" => "название_поля2", ...)</pre> В качестве * "название_поля<i>N</i>" может стоять любое поле типов плательщика. В * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> - * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление * суммы.</li> </ul> Этот фильтр означает "выбрать все записи, в которых * значение в поле LID (сайт системы) не равно en".<br><br> Значение по * умолчанию - <i>false</i> - означает, что результат группироваться не * будет. * * * * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul> * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет * ограничено сверху значением этого ключа;</li> <li> любой ключ, * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что * параметров выборки нет. * * * * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно * указать только те поля, которые необходимы. Если в массиве * присутствует значение "*", то будут возвращены все доступные * поля.<br><br> Значение по умолчанию - пустой массив array() - означает, * что будут возвращены все поля основной таблицы запроса. * * * * @return CDBResult <p>Возвращается объект класса CDBResult, содержащий набор * ассоциативных массивов параметров типов плательщиков с * ключами:</p> <table class="tnormal" width="100%"> <tr> <th width="15%">Ключ</th> <th>Описание</th> * </tr> <tr> <td>ID</td> <td>Код типа плательщика.</td> </tr> <tr> <td>LID</td> <td>Код * сайта.</td> </tr> <tr> <td>LIDS</td> <td>Фильтрация/выборка всех сайтов, к * которым привязан тип плательщика.</td> </tr> <tr> <td>NAME</td> <td>Название * типа плательщика.</td> </tr> <tr> <td>SORT</td> <td>Индекс сортировки.</td> </tr> <tr> * <td>ACTIVE</td> <td>Флаг активности пользователя [Y|N].</td> </tr> </table> <p>Если в * качестве параметра arGroupBy передается пустой массив, то функция * вернет число записей, удовлетворяющих фильтру.</p> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * // Выведем переключатели для выбора типа плательщика для текущего сайта * $db_ptype = CSalePersonType::GetList(Array("SORT" => "ASC"), Array("LID"=>SITE_ID)); * $bFirst = True; * while ($ptype = $db_ptype->Fetch()) * { * ?><input type="radio" name="PERSON_TYPE" value="<?echo $ptype["ID"] ?>"<?if ($bFirst) echo " checked";?>><?echo $ptype["NAME"] ?><br><? * $bFirst = <i>false</i>; * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalepersontype/csalepersontype__getlist.2dca23fd.php * @author Bitrix */ public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (!is_array($arOrder) && !is_array($arFilter)) { $arOrder = strval($arOrder); $arFilter = strval($arFilter); if (strlen($arOrder) > 0 && strlen($arFilter) > 0) { $arOrder = array($arOrder => $arFilter); } else { $arOrder = array(); } if (is_array($arGroupBy)) { $arFilter = $arGroupBy; } else { $arFilter = array(); } $arGroupBy = false; } if (empty($arSelectFields)) { $arSelectFields = array("ID", "LID", "NAME", "SORT", "ACTIVE"); } if (is_set($arFilter, "LID") && !empty($arFilter["LID"])) { $arFilter["LIDS"] = $arFilter["LID"]; unset($arFilter["LID"]); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "PT.ID", "TYPE" => "int"), "LID" => array("FIELD" => "PT.LID", "TYPE" => "string"), "LIDS" => array("FIELD" => "PTS.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type_site PTS ON (PT.ID = PTS.PERSON_TYPE_ID)"), "NAME" => array("FIELD" => "PT.NAME", "TYPE" => "string"), "SORT" => array("FIELD" => "PT.SORT", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "PT.ACTIVE", "TYPE" => "char")); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_person_type PT " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return False; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_person_type PT " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_person_type PT " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } $arPT = array(); $arResTmp = array(); while ($arRes = $dbRes->Fetch()) { if (IntVal($arRes["ID"]) > 0) { if (!in_array($arRes["ID"], $arPT)) { $arPT[] = $arRes["ID"]; } $arResTmp[] = $arRes; } } if (!empty($arPT) && is_array($arPT)) { $strSql = "SELECT * from b_sale_person_type_site WHERE PERSON_TYPE_ID IN (" . implode(",", $arPT) . ")"; $dbRes1 = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); while ($arRes1 = $dbRes1->Fetch()) { $arRes2[$arRes1["PERSON_TYPE_ID"]][] = $arRes1["SITE_ID"]; } } foreach ($arResTmp as $k => $v) { $arResTmp[$k]["LIDS"] = $arRes2[$v["ID"]]; } $dbRes = new CDBResult(); $dbRes->InitFromArray($arResTmp); return $dbRes; }
function GetList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array(), $arParams = array()) { global $DB, $arSocNetAllowedEntityTypes, $USER, $USER_FIELD_MANAGER; $arSocNetAllowedSubscribeEntityTypesDesc = CSocNetAllowed::GetAllowedEntityTypesDesc(); $obUserFieldsSql = new CUserTypeSQL(); $obUserFieldsSql->SetEntity("SONET_LOG", "L.ID"); $obUserFieldsSql->SetSelect($arSelectFields); $obUserFieldsSql->SetFilter($arFilter); $obUserFieldsSql->SetOrder($arOrder); if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "TMP_ID", "ENTITY_TYPE", "ENTITY_ID", "USER_ID", "EVENT_ID", "LOG_DATE", "LOG_UPDATE", "TITLE_TEMPLATE", "TITLE", "MESSAGE", "TEXT_MESSAGE", "URL", "MODULE_ID", "CALLBACK_FUNC", "EXTERNAL_ID", "SITE_ID", "PARAMS", "COMMENTS_COUNT", "ENABLE_COMMENTS", "SOURCE_ID", "GROUP_NAME", "GROUP_OWNER_ID", "GROUP_INITIATE_PERMS", "GROUP_VISIBLE", "GROUP_OPENED", "GROUP_IMAGE_ID", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER", "CREATED_BY_NAME", "CREATED_BY_LAST_NAME", "CREATED_BY_SECOND_NAME", "CREATED_BY_LOGIN", "CREATED_BY_PERSONAL_PHOTO", "CREATED_BY_PERSONAL_GENDER", "RATING_TYPE_ID", "RATING_ENTITY_ID", "RATING_TOTAL_VALUE", "RATING_TOTAL_VOTES", "RATING_TOTAL_POSITIVE_VOTES", "RATING_TOTAL_NEGATIVE_VOTES", "RATING_USER_VOTE_VALUE", "SOURCE_TYPE"); if (!isset($arParams["USE_FAVORITES"]) || $arParams["USE_FAVORITES"] != "N") { $arSelectFields[] = "FAVORITES_USER_ID"; } } static $arFields1 = array("ID" => array("FIELD" => "L.ID", "TYPE" => "int"), "TMP_ID" => array("FIELD" => "L.TMP_ID", "TYPE" => "int"), "SOURCE_ID" => array("FIELD" => "L.SOURCE_ID", "TYPE" => "int"), "ENTITY_TYPE" => array("FIELD" => "L.ENTITY_TYPE", "TYPE" => "string"), "ENTITY_ID" => array("FIELD" => "L.ENTITY_ID", "TYPE" => "int"), "USER_ID" => array("FIELD" => "L.USER_ID", "TYPE" => "int"), "EVENT_ID" => array("FIELD" => "L.EVENT_ID", "TYPE" => "string"), "LOG_DATE" => array("FIELD" => "L.LOG_DATE", "TYPE" => "datetime"), "LOG_DATE_TS" => array("FIELD" => "UNIX_TIMESTAMP(L.LOG_DATE)", "TYPE" => "int"), "LOG_UPDATE" => array("FIELD" => "L.LOG_UPDATE", "TYPE" => "datetime"), "TITLE_TEMPLATE" => array("FIELD" => "L.TITLE_TEMPLATE", "TYPE" => "string"), "TITLE" => array("FIELD" => "L.TITLE", "TYPE" => "string"), "MESSAGE" => array("FIELD" => "L.MESSAGE", "TYPE" => "string"), "TEXT_MESSAGE" => array("FIELD" => "L.TEXT_MESSAGE", "TYPE" => "string"), "URL" => array("FIELD" => "L.URL", "TYPE" => "string"), "MODULE_ID" => array("FIELD" => "L.MODULE_ID", "TYPE" => "string"), "CALLBACK_FUNC" => array("FIELD" => "L.CALLBACK_FUNC", "TYPE" => "string"), "EXTERNAL_ID" => array("FIELD" => "L.EXTERNAL_ID", "TYPE" => "string"), "PARAMS" => array("FIELD" => "L.PARAMS", "TYPE" => "string"), "COMMENTS_COUNT" => array("FIELD" => "L.COMMENTS_COUNT", "TYPE" => "int"), "ENABLE_COMMENTS" => array("FIELD" => "L.ENABLE_COMMENTS", "TYPE" => "string"), "SOURCE_TYPE" => array("FIELD" => "L.SOURCE_TYPE", "TYPE" => "string"), "GROUP_NAME" => array("FIELD" => "G.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group G ON (L.ENTITY_TYPE = 'G' AND L.ENTITY_ID = G.ID)"), "GROUP_OWNER_ID" => array("FIELD" => "G.OWNER_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sonet_group G ON (L.ENTITY_TYPE = 'G' AND L.ENTITY_ID = G.ID)"), "GROUP_INITIATE_PERMS" => array("FIELD" => "G.INITIATE_PERMS", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group G ON (L.ENTITY_TYPE = 'G' AND L.ENTITY_ID = G.ID)"), "GROUP_VISIBLE" => array("FIELD" => "G.VISIBLE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group G ON (L.ENTITY_TYPE = 'G' AND L.ENTITY_ID = G.ID)"), "GROUP_OPENED" => array("FIELD" => "G.OPENED", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group G ON (L.ENTITY_TYPE = 'G' AND L.ENTITY_ID = G.ID)"), "GROUP_IMAGE_ID" => array("FIELD" => "G.IMAGE_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sonet_group G ON (L.ENTITY_TYPE = 'G' AND L.ENTITY_ID = G.ID)"), "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (L.ENTITY_TYPE = 'U' AND L.ENTITY_ID = U.ID)"), "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (L.ENTITY_TYPE = 'U' AND L.ENTITY_ID = U.ID)"), "USER_SECOND_NAME" => array("FIELD" => "U.SECOND_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (L.ENTITY_TYPE = 'U' AND L.ENTITY_ID = U.ID)"), "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (L.ENTITY_TYPE = 'U' AND L.ENTITY_ID = U.ID)"), "USER_PERSONAL_PHOTO" => array("FIELD" => "U.PERSONAL_PHOTO", "TYPE" => "int", "FROM" => "LEFT JOIN b_user U ON (L.ENTITY_TYPE = 'U' AND L.ENTITY_ID = U.ID)"), "USER_PERSONAL_GENDER" => array("FIELD" => "U.PERSONAL_GENDER", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (L.ENTITY_TYPE = 'U' AND L.ENTITY_ID = U.ID)"), "CREATED_BY_NAME" => array("FIELD" => "U1.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON L.USER_ID = U1.ID"), "CREATED_BY_LAST_NAME" => array("FIELD" => "U1.LAST_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON L.USER_ID = U1.ID"), "CREATED_BY_SECOND_NAME" => array("FIELD" => "U1.SECOND_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON L.USER_ID = U1.ID"), "CREATED_BY_LOGIN" => array("FIELD" => "U1.LOGIN", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON L.USER_ID = U1.ID"), "CREATED_BY_PERSONAL_PHOTO" => array("FIELD" => "U1.PERSONAL_PHOTO", "TYPE" => "int", "FROM" => "LEFT JOIN b_user U1 ON L.USER_ID = U1.ID"), "CREATED_BY_PERSONAL_GENDER" => array("FIELD" => "U1.PERSONAL_GENDER", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON L.USER_ID = U1.ID"), "USER_ID|COMMENT_USER_ID" => array("FIELD" => "L.USER_ID|LC.USER_ID", "WHERE" => array("CSocNetLog", "GetSimpleOrQuery"), "FROM" => "LEFT JOIN b_sonet_log_comment LC ON LC.LOG_ID = L.ID")); $arFields = array("RATING_TYPE_ID" => array("FIELD" => "L.RATING_TYPE_ID", "TYPE" => "string"), "RATING_ENTITY_ID" => array("FIELD" => "L.RATING_ENTITY_ID", "TYPE" => "int"), "RATING_TOTAL_VALUE" => array("FIELD" => $DB->IsNull('RG.TOTAL_VALUE', '0'), "TYPE" => "double", "FROM" => "LEFT JOIN b_rating_voting RG ON L.RATING_TYPE_ID = RG.ENTITY_TYPE_ID AND L.RATING_ENTITY_ID = RG.ENTITY_ID"), "RATING_TOTAL_VOTES" => array("FIELD" => $DB->IsNull('RG.TOTAL_VOTES', '0'), "TYPE" => "double", "FROM" => "LEFT JOIN b_rating_voting RG ON L.RATING_TYPE_ID = RG.ENTITY_TYPE_ID AND L.RATING_ENTITY_ID = RG.ENTITY_ID"), "RATING_TOTAL_POSITIVE_VOTES" => array("FIELD" => $DB->IsNull('RG.TOTAL_POSITIVE_VOTES', '0'), "TYPE" => "int", "FROM" => "LEFT JOIN b_rating_voting RG ON L.RATING_TYPE_ID = RG.ENTITY_TYPE_ID AND L.RATING_ENTITY_ID = RG.ENTITY_ID"), "RATING_TOTAL_NEGATIVE_VOTES" => array("FIELD" => $DB->IsNull('RG.TOTAL_NEGATIVE_VOTES', '0'), "TYPE" => "int", "FROM" => "LEFT JOIN b_rating_voting RG ON L.RATING_TYPE_ID = RG.ENTITY_TYPE_ID AND L.RATING_ENTITY_ID = RG.ENTITY_ID")); if (isset($USER) && is_object($USER)) { $arFields["RATING_USER_VOTE_VALUE"] = array("FIELD" => $DB->IsNull('RV.VALUE', '0'), "TYPE" => "double", "FROM" => "LEFT JOIN b_rating_vote RV ON L.RATING_TYPE_ID = RV.ENTITY_TYPE_ID AND L.RATING_ENTITY_ID = RV.ENTITY_ID AND RV.USER_ID = " . intval($USER->GetID())); if (!isset($arParams["USE_FAVORITES"]) || $arParams["USE_FAVORITES"] != "N") { $join_type = "LEFT"; $field_value = $DB->IsNull("SLF.USER_ID", "0"); foreach ($arFilter as $key => $value) { if (strpos($key, "FAVORITES_USER_ID") !== false) { $join_type = "INNER"; $field_value = "SLF.USER_ID"; break; } } $arFields["FAVORITES_USER_ID"] = array("FIELD" => $field_value, "TYPE" => "double", "FROM" => $join_type . " JOIN b_sonet_log_favorites SLF ON L.ID = SLF.LOG_ID AND SLF.USER_ID = " . intval($USER->GetID())); } } if (isset($USER) && is_object($USER) && $USER->IsAuthorized() && $arParams["USE_FOLLOW"] == "Y") { $default_follow = CSocNetLogFollow::GetDefaultValue($USER->GetID()); $default_field = $default_follow == "Y" ? "LOG_UPDATE" : "LOG_DATE"; $arFields["DATE_FOLLOW"] = array("FIELD" => "CASE\n\t\t\t\t\tWHEN LFW.USER_ID IS NULL\n\t\t\t\t\t\tTHEN L." . $default_field . "\n\t\t\t\t\tWHEN LFW.FOLLOW_DATE IS NOT NULL\n\t\t\t\t\t\tTHEN LFW.FOLLOW_DATE\n\t\t\t\t\tWHEN LFW.TYPE = 'Y'\n\t\t\t\t\t\tTHEN L.LOG_UPDATE\n\t\t\t\t\tELSE L.LOG_DATE\n\t\t\t\tEND", "TYPE" => "datetime", "FROM" => "LEFT JOIN b_sonet_log_follow LFW ON LFW.USER_ID = " . $USER->GetID() . " AND LFW.REF_ID = L.ID AND LFW.CODE = " . $DB->Concat("'L'", "L.ID")); $arFields["FOLLOW"] = array("FIELD" => "CASE\n\t\t\t\t\tWHEN LFW.USER_ID IS NULL\n\t\t\t\t\t\tTHEN '" . $default_follow . "'\n\t\t\t\t\tELSE LFW.TYPE\n\t\t\t\tEND", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_log_follow LFW ON LFW.USER_ID = " . $USER->GetID() . " AND LFW.REF_ID = L.ID AND LFW.CODE = " . $DB->Concat("'L'", "L.ID")); if (!in_array("FOLLOW", $arSelectFields)) { $arSelectFields[] = "FOLLOW"; } } if (array_key_exists("SITE_ID", $arFilter)) { $arFields["SITE_ID"] = array("FIELD" => "SLS.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_log_site SLS ON L.ID = SLS.LOG_ID"); if (is_array($arFilter["SITE_ID"])) { $site_cnt = 0; foreach ($arFilter["SITE_ID"] as $site_id_tmp) { if ($site_id_tmp) { $site_cnt++; } } $strDistinct = $site_cnt > 1 ? " DISTINCT " : " "; } else { $strDistinct = " "; } foreach ($arSelectFields as $i => $strFieldTmp) { if ($strFieldTmp == "SITE_ID") { unset($arSelectFields[$i]); } } foreach ($arOrder as $by => $order) { if (!in_array($by, $arSelectFields)) { $arSelectFields[] = $by; } } } else { $arFields["SITE_ID"] = array("FIELD" => "L.SITE_ID", "TYPE" => "string"); $strDistinct = " "; } if (array_key_exists("USER_ID", $arFilter) && !array_key_exists("ENTITY_TYPE", $arFilter)) { $arCBFilterEntityType = array(); foreach ($arSocNetAllowedSubscribeEntityTypesDesc as $entity_type_tmp => $arEntityTypeTmp) { if (array_key_exists("USE_CB_FILTER", $arEntityTypeTmp) && $arEntityTypeTmp["USE_CB_FILTER"] == "Y") { $arCBFilterEntityType[] = $entity_type_tmp; } } if (is_array($arCBFilterEntityType) && count($arCBFilterEntityType) > 0) { $arFilter["ENTITY_TYPE"] = $arCBFilterEntityType; } } if (array_key_exists("LOG_RIGHTS", $arFilter)) { $Rights = array(); if (is_array($arFilter["LOG_RIGHTS"])) { foreach ($arFilter["LOG_RIGHTS"] as $str) { if (trim($str)) { $Rights[] = trim($str); } } } elseif (trim($arFilter["LOG_RIGHTS"])) { $Rights = trim($arFilter["LOG_RIGHTS"]); } unset($arFilter["LOG_RIGHTS"]); if (is_array($Rights) && !empty($Rights) || !is_array($Rights)) { $arFilter["LOG_RIGHTS"] = $Rights; $arFields["LOG_RIGHTS"] = array("FIELD" => "SLR0.GROUP_CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sonet_log_right SLR0 ON L.ID = SLR0.LOG_ID"); } if (is_array($Rights) && count($Rights) > 1) { $strDistinct = " DISTINCT "; } } if (array_key_exists("USER_ID|COMMENT_USER_ID", $arFilter)) { $strDistinct = " DISTINCT "; } if ($arParams["IS_CRM"] == "Y") { $events = GetModuleEvents("socialnetwork", "OnFillSocNetLogFields"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array(&$arFields)); } } $arFields = array_merge($arFields1, $arFields); $arSqls = CSocNetGroup::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql); $listEvents = GetModuleEvents("socialnetwork", "OnBuildSocNetLogSql"); while ($arEvent = $listEvents->Fetch()) { ExecuteModuleEventEx($arEvent, array(&$arFields, &$arOrder, &$arFilter, &$arGroupBy, &$arSelectFields, &$arSqls)); } $r = $obUserFieldsSql->GetFilter(); if (strlen($r) > 0) { $strSqlUFFilter = " (" . $r . ") "; } $arSqls["RIGHTS"] = ""; $arSqls["CRM_RIGHTS"] = ""; if (!empty($arParams) && (array_key_exists("CHECK_RIGHTS", $arParams) && $arParams["CHECK_RIGHTS"] == "Y" || array_key_exists("CHECK_CRM_RIGHTS", $arParams) && $arParams["CHECK_CRM_RIGHTS"] == "Y") && !array_key_exists("USER_ID", $arParams) && is_object($USER)) { $arParams["USER_ID"] = $USER->GetID(); } if (!empty($arParams) && array_key_exists("USER_ID", $arParams) && $arParams["CHECK_CRM_RIGHTS"] != "Y") { $arParams["CHECK_RIGHTS"] = "Y"; } if (!empty($arParams) && ($arParams["USE_SUBSCRIBE"] == "Y" || $arParams["USE_FOLLOW"] == "Y")) { if (!array_key_exists("SUBSCRIBE_USER_ID", $arParams)) { if (array_key_exists("USER_ID", $arParams) && intval($arParams["USER_ID"]) > 0) { $arParams["SUBSCRIBE_USER_ID"] = $arParams["USER_ID"]; } elseif (is_object($USER)) { $arParams["SUBSCRIBE_USER_ID"] = $USER->GetID(); } } if ($arParams["USE_SUBSCRIBE"] == "Y" && !array_key_exists("MY_ENTITIES", $arParams)) { foreach ($arSocNetAllowedSubscribeEntityTypesDesc as $entity_type_tmp => $arEntityTypeTmp) { if (array_key_exists("HAS_MY", $arEntityTypeTmp) && $arEntityTypeTmp["HAS_MY"] == "Y" && array_key_exists("CLASS_MY", $arEntityTypeTmp) && array_key_exists("METHOD_MY", $arEntityTypeTmp) && strlen($arEntityTypeTmp["CLASS_MY"]) > 0 && strlen($arEntityTypeTmp["METHOD_MY"]) > 0 && method_exists($arEntityTypeTmp["CLASS_MY"], $arEntityTypeTmp["METHOD_MY"])) { $arMyEntities[$entity_type_tmp] = call_user_func(array($arEntityTypeTmp["CLASS_MY"], $arEntityTypeTmp["METHOD_MY"])); } } $arParams["MY_ENTITIES"] = $arMyEntities; } } if (!empty($arParams) && array_key_exists("CHECK_RIGHTS", $arParams) && $arParams["CHECK_RIGHTS"] == "Y" && array_key_exists("USER_ID", $arParams)) { $acc = new CAccess(); $acc->UpdateCodes(); $arSqls["RIGHTS"] = "EXISTS ( SELECT SLR.ID FROM b_sonet_log_right SLR\n\t\t\t\tLEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SLR.GROUP_CODE AND UA.USER_ID = " . (is_object($USER) ? intval($USER->GetID()) : 0) . ")\n\t\t\t\tWHERE L.ID = SLR.LOG_ID " . (is_object($USER) && $USER->IsAuthorized() && $arParams["MY_GROUPS_ONLY"] == "Y" ? " AND (\n\t\t\t\t\t\t\t\t(SLR.GROUP_CODE LIKE 'SG%' AND (UA.ACCESS_CODE = SLR.GROUP_CODE AND UA.USER_ID = " . intval($USER->GetID()) . ")) \n\t\t\t\t\t\t\t\tOR SLR.GROUP_CODE = 'U" . intval($USER->GetID()) . "'\n\t\t\t\t\t\t\t)" : " AND (\n\t\t\t\t\t\t\t\t0=1 " . (is_object($USER) && CSocNetUser::IsCurrentUserModuleAdmin() ? " OR SLR.GROUP_CODE = 'SA'" : "") . (is_object($USER) && $USER->IsAuthorized() ? " OR (SLR.GROUP_CODE = 'AU')" : "") . " OR (SLR.GROUP_CODE = 'G2')" . (is_object($USER) && $USER->IsAuthorized() ? " OR (UA.ACCESS_CODE = SLR.GROUP_CODE AND UA.USER_ID = " . intval($USER->GetID()) . ")" : "") . "\n\t\t\t\t\t\t\t)") . ")"; } if (!empty($arParams) && array_key_exists("CHECK_CRM_RIGHTS", $arParams) && $arParams["CHECK_CRM_RIGHTS"] == "Y" && array_key_exists("USER_ID", $arParams)) { $permParams = array('ALIAS_PREFIX' => 'L', 'PERM_TYPE' => 'READ', 'FILTER_PARAMS' => isset($arParams['CUSTOM_FILTER_PARAMS']) ? $arParams['CUSTOM_FILTER_PARAMS'] : array(), 'OPTIONS' => array('ENTITY_TYPE_COLUMN' => 'ENTITY_TYPE', 'IDENTITY_COLUMN' => 'ENTITY_ID')); $altPerms = array(); $events = GetModuleEvents("socialnetwork", "OnBuildSocNetLogPerms"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array(&$altPerms, $permParams)); } if (!empty($altPerms)) { foreach ($altPerms as $permSql) { if ($permSql === false) { //Access denied $dbRes = new CDBResult(); $dbRes->InitFromArray(array()); return $dbRes; } if (is_string($permSql) && $permSql !== '') { if ($arSqls['CRM_RIGHTS'] !== '') { $arSqls['CRM_RIGHTS'] .= ' AND '; } $arSqls['CRM_RIGHTS'] = $permSql; } } } } if ($arParams["USE_SUBSCRIBE"] == "Y" && intval($arParams["SUBSCRIBE_USER_ID"]) > 0) { $arSqls["SUBSCRIBE"] = CSocNetLogEvents::GetSQL($arParams["SUBSCRIBE_USER_ID"], is_array($arParams["MY_ENTITIES"]) ? $arParams["MY_ENTITIES"] : array(), $arParams["TRANSPORT"], $arParams["VISIBLE"]); $arParams["MIN_ID_JOIN"] = true; } $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", $strDistinct, $arSqls["SELECT"]); $strMinIDJoin = ""; if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . $obUserFieldsSql->GetSelect() . " " . "FROM b_sonet_log L " . $strMinIDJoin . "\t" . $arSqls["FROM"] . " " . $obUserFieldsSql->GetJoin("L.ID") . " "; $bWhereStarted = false; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; $bWhereStarted = true; } if (strlen($strSqlUFFilter) > 0) { $strSql .= ($bWhereStarted ? " AND " : " WHERE ") . $strSqlUFFilter . " "; $bWhereStarted = true; } if (strlen($arSqls["RIGHTS"]) > 0) { $strSql .= ($bWhereStarted ? " AND " : " WHERE ") . $arSqls["RIGHTS"] . " "; $bWhereStarted = true; } if (strlen($arSqls["CRM_RIGHTS"]) > 0) { $strSql .= ($bWhereStarted ? " AND " : " WHERE ") . $arSqls["CRM_RIGHTS"] . " "; $bWhereStarted = true; } if (strlen($arSqls["SUBSCRIBE"]) > 0) { $strSql .= ($bWhereStarted ? " AND " : " WHERE ") . "(" . $arSqls["SUBSCRIBE"] . ") "; $bWhereStarted = true; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return False; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . $obUserFieldsSql->GetSelect() . " " . "FROM b_sonet_log L " . $strMinIDJoin . "\t" . $arSqls["FROM"] . " " . $obUserFieldsSql->GetJoin("L.ID") . " "; $bWhereStarted = false; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; $bWhereStarted = true; } if (strlen($strSqlUFFilter) > 0) { $strSql .= ($bWhereStarted ? " AND " : " WHERE ") . $strSqlUFFilter . " "; $bWhereStarted = true; } if (strlen($arSqls["RIGHTS"]) > 0) { $strSql .= ($bWhereStarted ? " AND " : " WHERE ") . $arSqls["RIGHTS"] . " "; $bWhereStarted = true; } if (strlen($arSqls["CRM_RIGHTS"]) > 0) { $strSql .= ($bWhereStarted ? " AND " : " WHERE ") . $arSqls["CRM_RIGHTS"] . " "; $bWhereStarted = true; } if (strlen($arSqls["SUBSCRIBE"]) > 0) { $strSql .= ($bWhereStarted ? " AND " : " WHERE ") . "(" . $arSqls["SUBSCRIBE"] . ") "; $bWhereStarted = true; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) { if (isset($arNavStartParams["nRecordCount"]) && intval($arNavStartParams["nRecordCount"]) > 0) { $cnt = intval($arNavStartParams["nRecordCount"]); } else { $strSql_tmp = "SELECT COUNT('x') as CNT " . $obUserFieldsSql->GetSelect() . " " . "FROM b_sonet_log L " . $strMinIDJoin . "\t" . $arSqls["FROM"] . " " . $obUserFieldsSql->GetJoin("L.ID") . " "; $bWhereStarted = false; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; $bWhereStarted = true; } if (strlen($strSqlUFFilter) > 0) { $strSql_tmp .= ($bWhereStarted ? " AND " : " WHERE ") . $strSqlUFFilter . " "; $bWhereStarted = true; } if (strlen($arSqls["RIGHTS"]) > 0) { $strSql_tmp .= ($bWhereStarted ? " AND " : " WHERE ") . $arSqls["RIGHTS"] . " "; $bWhereStarted = true; } if (strlen($arSqls["CRM_RIGHTS"]) > 0) { $strSql_tmp .= ($bWhereStarted ? " AND " : " WHERE ") . $arSqls["CRM_RIGHTS"] . " "; $bWhereStarted = true; } if (strlen($arSqls["SUBSCRIBE"]) > 0) { $strSql_tmp .= ($bWhereStarted ? " AND " : " WHERE ") . "(" . $arSqls["SUBSCRIBE"] . ") "; $bWhereStarted = true; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { // рнкэйн дкъ MYSQL!!! дкъ ORACLE дпсцни йнд $cnt = $dbRes->SelectedRowsCount(); } // for empty 2nd page show if ($arNavStartParams["bSkipPageReset"] && $arNavStartParams["nPageSize"] >= $cnt) { $cnt = $arNavStartParams["nPageSize"] + $cnt; } } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("SONET_LOG")); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("SONET_LOG")); } return $dbRes; }
$arParts = array(); $arSize = array(); foreach($arTmpFiles as $k=>$ar) { if (preg_match('#^(.*\.(enc|tar|gz))(\.[0-9]+)?$#',$ar['NAME'],$regs)) { $arParts[intval($ar['BUCKET_ID']).$regs[1]]++; $arSize[$regs[1]] += $ar['SIZE']; if (!$regs[3]) $arFiles[] = $ar; } } $rsDirContent = new CDBResult; $rsDirContent->InitFromArray($arFiles); $rsDirContent->sSessInitAdd = $path; $rsDirContent = new CAdminResult($rsDirContent, $sTableID); $rsDirContent->NavStart(20); // установка строки навигации $lAdmin->NavText($rsDirContent->GetNavPrint(GetMessage("MAIN_DUMP_FILE_PAGES"))); $lAdmin->AddHeaders(array( array("id"=>"NAME", "content"=>GetMessage("MAIN_DUMP_FILE_NAME"), "sort"=>"name", "default"=>true), array("id"=>"SIZE","content"=>GetMessage("MAIN_DUMP_FILE_SIZE1"), "sort"=>"size", "default"=>true), $arAllBucket ? array("id"=>"PLACE","content"=>GetMessage("MAIN_DUMP_LOCATION"), "default"=>true) : null, array("id"=>"DATE", "content"=>GetMessage('MAIN_DUMP_FILE_TIMESTAMP'), "sort"=>"timestamp", "default"=>true) )); while($Elem = $rsDirContent->NavNext(true, "f_")) {
$arLID = array(); $db_res = CLanguage::GetList($by_ = "sort", $order_ = "asc"); 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" => GetMessage("LANG"), "default" => true), array("id" => "EVENT_NAME", "content" => GetMessage("EVENT_TYPE"), "sort" => "event_name", "default" => true), array("id" => "NAME", "content" => GetMessage("EVENT_NAME"), "default" => true), array("id" => "DESCRIPTION", "content" => GetMessage("EVENT_DESCRIPTION"), "default" => false), array("id" => "TEMPLATES", "content" => GetMessage("EVENT_TEMPLATES"), "default" => false))); $db_res = CEventType::GetListEx(array($by => $order), $arFilter, array("type" => "full")); if ($db_res && ($res = $db_res->Fetch())) { do { $arResult[] = $res; } while ($res = $db_res->Fetch()); } $rsData = new CDBResult(); $rsData->InitFromArray($arResult); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("PAGES"))); while ($arRes = $rsData->NavNext(true, "f_")) { $arr = $f_ID; $f_ID = $f_EVENT_NAME; $row =& $lAdmin->AddRow($f_EVENT_NAME, $arRes, "type_edit.php?EVENT_NAME=" . $f_EVENT_NAME, GetMessage("type_admin_edit_title")); $row->AddViewField("ID", implode("<br />", $arr)); $row->AddViewField("LID", implode("<br />", array_intersect($arLID, $f_LID))); $row->AddViewField("EVENT_NAME", "<a href=\"type_edit.php?EVENT_NAME=" . $f_EVENT_NAME . "\">" . $f_EVENT_NAME . "</a>"); $row->AddViewField("NAME", $f_NAME); $row->AddViewField("DESCRIPTION", $f_DESCRIPTION); $templates = array(); if (is_array($f_TEMPLATES) && !empty($f_TEMPLATES)) { $templates = array();