function CheckFilter() { global $arFilterFields, $lAdmin; foreach ($arFilterFields as $s) { global ${$s}; } $str = ""; $find_date_1 = trim($find_date_1); $find_date_2 = trim($find_date_2); if (strlen($find_date_1) > 0 || strlen($find_date_2) > 0) { $date_1_stm = MkDateTime(ConvertDateTime($find_date_1, "D.M.Y"), "d.m.Y"); $date_2_stm = MkDateTime(ConvertDateTime($find_date_2, "D.M.Y") . " 23:59:59", "d.m.Y H:i:s"); if (!$date_1_stm && strlen(trim($find_date_1)) > 0) { $bGotErr = true; $lAdmin->AddUpdateError(GetMessage("VOTE_WRONG_DATE_FROM")); } if (!$date_2_stm && strlen(trim($find_date_2)) > 0) { $bGotErr = true; $lAdmin->AddUpdateError(GetMessage("VOTE_WRONG_DATE_TILL")); } if (!$bGotErr && $date_2_stm <= $date_1_stm && strlen($date_2_stm) > 0) { $bGotErr = true; $lAdmin->AddUpdateError(GetMessage("VOTE_WRONG_FROM_TILL")); } } if ($bGotErr) { return false; } else { return true; } }
function CheckFilter($FilterArr) { foreach ($FilterArr as $f) { global ${$f}; } $str = ""; if (strlen(trim($find_last_exec)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_last_exec, "D.M.Y"), "d.m.Y"); if (!$date1_stm && strlen(trim($find_last_exec)) > 0) { $str .= GetMessage("MAIN_AGENT_WRONG_LAST_EXEC") . "<br>"; } else { $date_1_ok = true; } } if (strlen(trim($find_next_exec)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_next_exec, "D.M.Y"), "d.m.Y"); if (!$date1_stm && strlen(trim($find_next_exec)) > 0) { $str .= GetMessage("MAIN_AGENT_WRONG_NEXT_EXEC") . "<br>"; } else { $date_1_ok = true; } } if (strlen($str) > 0) { global $lAdmin; $lAdmin->AddFilterError($str); return false; } return true; }
function CheckFilter() { if (isset($_REQUEST['del_filter']) && $_REQUEST['del_filter'] == 'Y') { return false; } global $strError, $find_timestamp_1, $find_timestamp_2, $lAdmin; $str = ""; if (strlen(trim($find_timestamp_1)) > 0 || strlen(trim($find_timestamp_2)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_timestamp_1, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_timestamp_2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_timestamp_1)) > 0) { $str .= GetMessage("MAIN_WRONG_DATE_FROM") . "<br>"; } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_timestamp_2)) > 0) { $str .= GetMessage("MAIN_WRONG_DATE_TILL") . "<br>"; } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm) > 0) { $str .= GetMessage("MAIN_FROM_TILL_DATE") . "<br>"; } } $strError .= $str; if (strlen($str) > 0) { $lAdmin->AddFilterError($str); return false; } return true; }
function CheckFilter() { global $arFilterFields; reset($arFilterFields); foreach ($arFilterFields as $f) { global ${$f}; } $str = ""; $arMsg = array(); if (strlen(trim($find_date1)) > 0 || strlen(trim($find_date2)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(ConvertDateTime($find_date1, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(ConvertDateTime($find_date2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_date1)) > 0) { //$str.= GetMessage("SUP_WRONG_DATE_FROM")."<br>"; $arMsg[] = array("id" => "find_date1", "text" => GetMessage("SUP_WRONG_DATE_FROM")); } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_date2)) > 0) { //$str.= GetMessage("SUP_WRONG_DATE_TILL")."<br>"; $arMsg[] = array("id" => "find_date2", "text" => GetMessage("SUP_WRONG_DATE_TILL")); } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm) > 0) { $arMsg[] = array("id" => "find_date2", "text" => GetMessage("SUP_FROM_TILL_DATE")); } //$str.= GetMessage("SUP_FROM_TILL_DATE")."<br>"; } if (!empty($arMsg)) { $e = new CAdminException($arMsg); $GLOBALS["APPLICATION"]->ThrowException($e); return false; } return true; }
function CheckFilter($arFilterFields) { global $lAdmin; $FilterArr = $arFilterFields; reset($FilterArr); foreach ($FilterArr as $f) { global ${$f}; } $str = ""; if (strlen(trim($find_timestamp_1)) > 0 || strlen(trim($find_timestamp_2)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_timestamp_1, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_timestamp_2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_timestamp_1)) > 0) { $str .= GetMessage("MAIN_WRONG_TIMESTAMP_FROM") . "<br>"; } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_timestamp_2)) > 0) { $str .= GetMessage("MAIN_WRONG_TIMESTAMP_TILL") . "<br>"; } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm) > 0) { $str .= GetMessage("MAIN_FROM_TILL_TIMESTAMP") . "<br>"; } } $lAdmin->AddFilterError($str); if (strlen($str) > 0) { return false; } return true; }
function CheckFilter() // проверка введенных полей { global $strError, $find_timestamp_1, $find_timestamp_2; $str = ""; if (strlen(trim($find_timestamp_1))>0 || strlen(trim($find_timestamp_2))>0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_timestamp_1,"D.M.Y"),"d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_timestamp_2,"D.M.Y")." 23:59","d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_timestamp_1))>0) $str.= GetMessage("MAIN_WRONG_DATE_FROM")."<br>"; else $date_1_ok = true; if (!$date2_stm && strlen(trim($find_timestamp_2))>0) $str.= GetMessage("MAIN_WRONG_DATE_TILL")."<br>"; elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm)>0) $str.= GetMessage("MAIN_FROM_TILL_DATE")."<br>"; } $strError .= $str; if(strlen($str)>0) { global $lAdmin; $lAdmin->AddFilterError($str); return false; } return true; }
function CleanUpTableByDate($cleanup_date, $table_name, $date_name) { $err_mess = "File: " . __FILE__ . "<br>Line: "; $DB = CDatabase::GetModuleConnection('statistic'); if (strlen($cleanup_date) > 0) { $stmp = MkDateTime(ConvertDateTime($cleanup_date, "D.M.Y"), "d.m.Y"); if ($stmp) { $strSql = "DELETE FROM {$table_name} WHERE {$date_name}<FROM_UNIXTIME('{$stmp}')"; $DB->Query($strSql, false, $err_mess . __LINE__); } } }
function CheckFilter() { global $arFilterFields, $message, $lAdmin; foreach ($arFilterFields as $s) { global ${$s}; } $bGotErr = false; $find_date_start_1 = trim($find_date_start_1); $find_date_start_2 = trim($find_date_start_2); $find_date_end_1 = trim($find_date_end_1); $find_date_end_2 = trim($find_date_end_2); if (strlen($find_date_start_1) > 0 || strlen($find_date_start_2) > 0) { // start date $date_start_1_stm = MkDateTime(ConvertDateTime($find_date_start_1, "D.M.Y"), "d.m.Y"); $date_start_2_stm = MkDateTime(ConvertDateTime($find_date_start_2, "D.M.Y") . " 23:59:59", "d.m.Y H:i:s"); if (!$date_start_1_stm && strlen(trim($find_date_start_1)) > 0) { $bGotErr = true; $lAdmin->AddUpdateError(GetMessage("VOTE_WRONG_START_DATE_FROM")); } if (!$date_start_2_stm && strlen(trim($find_date_start_2)) > 0) { $bGotErr = true; $lAdmin->AddUpdateError(GetMessage("VOTE_WRONG_START_DATE_TILL")); } if (!$bGotErr && $date_start_2_stm <= $date_start_1_stm && strlen($date_start_2_stm) > 0) { $bGotErr = true; $lAdmin->AddUpdateError(GetMessage("VOTE_WRONG_START_FROM_TILL")); } } if (strlen($find_date_end_1) > 0 || strlen($find_date_end_2) > 0) { // end date $date_end_1_stm = MkDateTime(ConvertDateTime($find_date_end_1, "D.M.Y"), "d.m.Y"); $date_end_2_stm = MkDateTime(ConvertDateTime($find_date_end_2, "D.M.Y") . " 23:59:59", "d.m.Y H:i:s"); if (!$date_end_1_stm && strlen(trim($find_date_end_1)) > 0) { $bGotErr = true; $lAdmin->AddUpdateError(GetMessage("VOTE_WRONG_END_DATE_FROM")); } if (!$date_end_2_stm && strlen(trim($find_date_end_2)) > 0) { $bGotErr = true; $lAdmin->AddUpdateError(GetMessage("VOTE_WRONG_END_DATE_TILL")); } if (!$bGotErr && $date_end_2_stm <= $date_end_1_stm && strlen($date_end_2_stm) > 0) { $bGotErr = true; $lAdmin->AddUpdateError(GetMessage("VOTE_WRONG_END_FROM_TILL")); } } return $bGotErr ? false : true; }
function CheckFilter() // проверка введенных полей { global $FilterArr, $lAdmin; foreach ($FilterArr as $f) global $$f; $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_date1,"D.M.Y"),"d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_date2,"D.M.Y")." 23:59","d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_date1))>0) $lAdmin->AddFilterError(GetMessage("MAIN_WRONG_DATE_FROM")); else $date_1_ok = true; if(!$date2_stm && strlen(trim($find_date2))>0) $lAdmin->AddFilterError(GetMessage("MAIN_WRONG_DATE_TILL")); elseif($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm)>0) $lAdmin->AddFilterError(GetMessage("MAIN_FROM_TILL_DATE")); return count($lAdmin->arFilterErrors)==0; }
function CheckFilter($FilterArr) { global $strError; foreach($FilterArr as $f) global $$f; $str = ""; if(strlen(trim($find_timestamp_1))>0 || strlen(trim($find_timestamp_2))>0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_timestamp_1,"D.M.Y"),"d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_timestamp_2,"D.M.Y")." 23:59","d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_timestamp_1))>0) $str.= GetMessage("MAIN_WRONG_TIMESTAMP_FROM")."<br>"; else $date_1_ok = true; if (!$date2_stm && strlen(trim($find_timestamp_2))>0) $str.= GetMessage("MAIN_WRONG_TIMESTAMP_TILL")."<br>"; elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm)>0) $str.= GetMessage("MAIN_FROM_TILL_TIMESTAMP")."<br>"; } if(strlen(trim($find_last_login_1))>0 || strlen(trim($find_last_login_2))>0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_last_login_1,"D.M.Y"),"d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_last_login_2,"D.M.Y")." 23:59","d.m.Y H:i"); if(!$date1_stm && strlen(trim($find_last_login_1))>0) $str.= GetMessage("MAIN_WRONG_LAST_LOGIN_FROM")."<br>"; else $date_1_ok = true; if(!$date2_stm && strlen(trim($find_last_login_2))>0) $str.= GetMessage("MAIN_WRONG_LAST_LOGIN_TILL")."<br>"; elseif($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm)>0) $str.= GetMessage("MAIN_FROM_TILL_LAST_LOGIN")."<br>"; } $strError .= $str; if(strlen($str)>0) { global $lAdmin; $lAdmin->AddFilterError($str); return false; } return true; }
function CheckFilter() { global $strError, $FilterArr; reset($FilterArr); foreach ($FilterArr as $f) { global ${$f}; } $str = ""; if (strlen(trim($find_timestamp_1)) > 0 || strlen(trim($find_timestamp_2)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_timestamp_1, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_timestamp_2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_timestamp_1)) > 0) { $str .= GetMessage("SALE_WRONG_TIMESTAMP_FROM") . "<br>"; } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_timestamp_2)) > 0) { $str .= GetMessage("SALE_WRONG_TIMESTAMP_TILL") . "<br>"; } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm) > 0) { $str .= GetMessage("SALE_FROM_TILL_TIMESTAMP") . "<br>"; } } if (strlen(trim($find_last_login_1)) > 0 || strlen(trim($find_last_login_2)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_last_login_1, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_last_login_2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_last_login_1)) > 0) { $str .= GetMessage("SALE_WRONG_LAST_LOGIN_FROM") . "<br>"; } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_last_login_2)) > 0) { $str .= GetMessage("SALE_WRONG_LAST_LOGIN_TILL") . "<br>"; } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm) > 0) { $str .= GetMessage("SALE_FROM_TILL_LAST_LOGIN") . "<br>"; } } $strError .= $str; if (strlen($str) > 0) { return false; } else { return true; } }
function CheckFilter() { global $FilterArr, $lAdmin; foreach ($FilterArr as $f) { global ${$f}; } if (strlen(trim($find_update_1)) > 0 || strlen(trim($find_update_2)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_update_1, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_update_2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_update_1)) > 0) { $lAdmin->AddFilterError(GetMessage("POST_WRONG_UPDATE_FROM")); } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_update_2)) > 0) { $lAdmin->AddFilterError(GetMessage("POST_WRONG_UPDATE_TILL")); } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm) > 0) { $lAdmin->AddFilterError(GetMessage("POST_FROM_TILL_UPDATE")); } } if (strlen(trim($find_insert_1)) > 0 || strlen(trim($find_insert_2)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_insert_1, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_insert_2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_insert_1)) > 0) { $lAdmin->AddFilterError(GetMessage("POST_WRONG_INSERT_FROM")); } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_insert_2)) > 0) { $lAdmin->AddFilterError(GetMessage("POST_WRONG_INSERT_TILL")); } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm) > 0) { $lAdmin->AddFilterError(GetMessage("POST_FROM_TILL_INSERT")); } } return count($lAdmin->arFilterErrors) == 0; }
function CheckFilter() { global $FilterArr, $lAdmin; foreach ($FilterArr as $f) { global ${$f}; } if (strlen(trim($find_last_executed_1)) > 0 || strlen(trim($find_last_executed_2)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($find_last_executed_1, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(FmtDate($find_last_executed_2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_last_executed_1)) > 0) { $lAdmin->AddFilterError(GetMessage("rub_wrong_generation_from")); } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_last_executed_2)) > 0) { $lAdmin->AddFilterError(GetMessage("rub_wrong_generation_till")); } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm) > 0) { $lAdmin->AddFilterError(GetMessage("rub_wrong_generation_from_till")); } } return count($lAdmin->arFilterErrors) == 0; }
function CheckFilter() // проверка введенных полей { global $strError, $FilterArr; reset($FilterArr); foreach ($FilterArr as $f) global $$f; $str = ""; $arMsg = Array(); if (strlen(trim($find_date1))>0 || strlen(trim($find_date2))>0) { $date_1_ok = false; $date1_stm = MkDateTime(ConvertDateTime($find_date1,"D.M.Y"),"d.m.Y"); $date2_stm = MkDateTime(ConvertDateTime($find_date2,"D.M.Y")." 23:59","d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_date1))>0) //$str.= GetMessage("SUP_WRONG_DATE_FROM")."<br>"; $arMsg[] = array("id"=>"find_date1", "text"=> GetMessage("SUP_WRONG_DATE_FROM")); else $date_1_ok = true; if (!$date2_stm && strlen(trim($find_date2))>0) //$str.= GetMessage("SUP_WRONG_DATE_TILL")."<br>"; $arMsg[] = array("id"=>"find_date2", "text"=> GetMessage("SUP_WRONG_DATE_TILL")); elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm)>0) //$str.= GetMessage("SUP_FROM_TILL_DATE")."<br>"; $arMsg[] = array("id"=>"find_date2", "text"=> GetMessage("SUP_FROM_TILL_DATE")); } if(!empty($arMsg)) { $e = new CAdminException($arMsg); $GLOBALS["APPLICATION"]->ThrowException($e); return false; } return true; }
/** * <p>Возвращает список групп в виде объекта класса <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a>.</p> * * * * * @param string &$by = "c_sort" Ссылка на переменную с полем для сортировки, может принимать * следующие значения: <ul> <li> <b>id</b> - ID группы </li> <li> <b>timestamp_x</b> - дата * изменения </li> <li> <b>name</b> - название </li> <li> <b>active</b> - активность </li> <li> * <b>c_sort</b> - порядок сортировки </li> <li> <b>description</b> - описание </li> <li> * <b>users</b> - кол-во пользователей входящих в группу </li> </ul> * * * * @param string &$order = "asc" Ссылка на переменную с порядком сортировки, может принимать * следующие значения: <ul> <li> <b>asc</b> - по возрастанию </li> <li> <b>desc</b> - по * убыванию </li> </ul> * * * * @param array $filter Массив для фильтрации пользователей. В массиве допустимы * следующие индексы: <ul> <li> <b>ID</b> - ID группы (допускается <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>) </li> <li> * <b>TIMESTAMP_1</b> - дата изменения настроек группы "с" </li> <li> <b>TIMESTAMP_2</b> - * дата изменения настроек группы "по" </li> <li> <b>ACTIVE</b> - фильтр по * активности (Y|N) </li> <li> <b>ADMIN</b> - фильтр по типу группы ("Y" - * администраторы | "N" - не администраторы) </li> <li> <b>NAME</b> - по названию * (допускается <a href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>) * </li> <li> <b>DESCRIPTION</b> - по описанию (допускается <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>) </li> <li> <b>USERS_1</b> - * кол-во пользователей "с" </li> <li> <b>USERS_2</b> - кол-во пользователей "по" * </li> </ul> * * * * @param string $SHOW_USERS_AMOUNT = "N" "Y" - в выборке будет присутствовать поле ("USERS") с количеством * пользователей в каждой группе; "N" - в выборке не будет поля с * количеством пользователей в каждой группе (по умолчанию); * * * * @return CDBResult * * * <h4>Example</h4> * <pre> * <? * $filter = Array * ( * "ID" => "1 | 2", * "TIMESTAMP_1" => "04.02.2004", // в формате текущего сайта * "TIMESTAMP_2" => "04.02.2005", * "ACTIVE" => "Y", * "NAME" => "Техподдержка", * "DESCRITION" => "специальная | поддержка", * "USERS_1" => "2", // от 2 пользователей * "USERS_2" => "10" // до 10 пользователей * ); * $rsGroups = <b>CGroup::GetList</b>(($by="c_sort"), ($order="desc"), $filter); // выбираем группы * $is_filtered = $rsGroups->is_filtered; // отфильтрована ли выборка ? * $rsGroups->NavStart(50); // разбиваем постранично по 50 записей * echo $rsGroups->NavPrint(GetMessage("PAGES")); // печатаем постраничную навигацию * while($rsGroups->NavNext(true, "f_")) : * echo "[".$f_ID."] ".$f_NAME." ".$f_DESCRIPTION."<br>"; * endwhile; * ?> * * Фильтровать можно по полю "STRING_ID" - символьному идентификатору группы. Например: * * // Возвращает группу по символьному идентификатору * function GetGroupByCode ($code) * { * $rsGroups = CGroup::GetList ($by = "c_sort", $order = "asc", Array ("STRING_ID" => $code)); * return $rsGroups->Fetch(); * } * * $rsGroups = CGroup::GetList($by = "c_sort", $order = "asc", array("STRING_ID"=>'groupe code|groupe code|groupe code')); * if(intval($rsGroups->SelectedRowsCount()) > 0) * { * while($arGroups = $rsGroups->Fetch()) * { * $arUsersGroups[] = $arGroups; * } * } * </pre> * * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cgroup/index.php#flds">Поля CGroup</a> </li> <li> * <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cgroup/getbyid.php">CGroup::GetByID</a> </li> </ul></b<a * name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/main/reference/cgroup/getlist.php * @author Bitrix */ public static function GetList(&$by, &$order, $arFilter = array(), $SHOW_USERS_AMOUNT = "N") { global $DB; $err_mess = CGroup::err_mess() . "<br>Function: GetList<br>Line: "; $arSqlSearch = $arSqlSearch_h = array(); $strSqlSearch_h = ""; 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; } } $key = strtoupper($key); $match_value_set = array_key_exists($key . "_EXACT_MATCH", $arFilter); switch ($key) { case "ID": $match = $match_value_set && $arFilter[$key . "_EXACT_MATCH"] == "N" ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("G.ID", $val, $match); break; case "TIMESTAMP_1": $arSqlSearch[] = "G.TIMESTAMP_X >= FROM_UNIXTIME('" . MkDateTime(FmtDate($val, "D.M.Y"), "d.m.Y") . "')"; break; case "TIMESTAMP_2": $arSqlSearch[] = "G.TIMESTAMP_X <= FROM_UNIXTIME('" . MkDateTime(FmtDate($val, "D.M.Y") . " 23:59:59", "d.m.Y") . "')"; break; case "ACTIVE": $arSqlSearch[] = $val == "Y" ? "G.ACTIVE='Y'" : "G.ACTIVE='N'"; break; case "ADMIN": if (COption::GetOptionString("main", "controller_member", "N") == "Y" && COption::GetOptionString("main", "~controller_limited_admin", "N") == "Y") { if ($val == "Y") { $arSqlSearch[] = "G.ID=0"; } break; } else { $arSqlSearch[] = $val == "Y" ? "G.ID=1" : "G.ID>1"; } break; case "NAME": $match = $match_value_set && $arFilter[$key . "_EXACT_MATCH"] == "Y" ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("G.NAME", $val, $match); break; case "STRING_ID": $match = $match_value_set && $arFilter[$key . "_EXACT_MATCH"] == "N" ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("G.STRING_ID", $val, $match); break; case "DESCRIPTION": $match = $match_value_set && $arFilter[$key . "_EXACT_MATCH"] == "Y" ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("G.DESCRIPTION", $val, $match); break; case "USERS_1": $SHOW_USERS_AMOUNT = "Y"; $arSqlSearch_h[] = "USERS>=" . intval($val); break; case "USERS_2": $SHOW_USERS_AMOUNT = "Y"; $arSqlSearch_h[] = "USERS<=" . intval($val); break; case "ANONYMOUS": if ($val == 'Y' || $val == 'N') { $arSqlSearch[] = "G.ANONYMOUS='" . $val . "'"; } break; } } foreach ($arSqlSearch_h as $condition) { $strSqlSearch_h .= " and (" . $condition . ") "; } } if (strtolower($by) == "id") { $strSqlOrder = " ORDER BY G.ID "; } elseif (strtolower($by) == "active") { $strSqlOrder = " ORDER BY G.ACTIVE "; } elseif (strtolower($by) == "timestamp_x") { $strSqlOrder = " ORDER BY G.TIMESTAMP_X "; } elseif (strtolower($by) == "c_sort") { $strSqlOrder = " ORDER BY G.C_SORT "; } elseif (strtolower($by) == "sort") { $strSqlOrder = " ORDER BY G.C_SORT, G.NAME, G.ID "; } elseif (strtolower($by) == "name") { $strSqlOrder = " ORDER BY G.NAME "; } elseif (strtolower($by) == "string_id") { $strSqlOrder = " ORDER BY G.STRING_ID "; } elseif (strtolower($by) == "description") { $strSqlOrder = " ORDER BY G.DESCRIPTION "; } elseif (strtolower($by) == "anonymous") { $strSqlOrder = " ORDER BY G.ANONYMOUS "; } elseif (strtolower($by) == "dropdown") { $strSqlOrder = " ORDER BY C_SORT, NAME "; } elseif (strtolower($by) == "users") { $strSqlOrder = " ORDER BY USERS "; $SHOW_USERS_AMOUNT = "Y"; } else { $strSqlOrder = " ORDER BY G.C_SORT "; $by = "c_sort"; } if (strtolower($order) == "desc") { $strSqlOrder .= " desc "; $order = "desc"; } else { $strSqlOrder .= " asc "; $order = "asc"; } $str_USERS = $str_TABLE = ""; if ($SHOW_USERS_AMOUNT == "Y") { $str_USERS = "count(distinct U.USER_ID)\t\t\t\t\t\tUSERS,"; $str_TABLE = "LEFT JOIN b_user_group U ON (U.GROUP_ID=G.ID AND ((U.DATE_ACTIVE_FROM IS NULL) OR (U.DATE_ACTIVE_FROM <= " . $DB->CurrentTimeFunction() . ")) AND ((U.DATE_ACTIVE_TO IS NULL) OR (U.DATE_ACTIVE_TO >= " . $DB->CurrentTimeFunction() . ")))"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSql = "\n\t\t\tSELECT\n\t\t\t\tG.ID, G.ACTIVE, G.C_SORT, G.ANONYMOUS, G.NAME, G.DESCRIPTION, G.STRING_ID,\n\t\t\t\t" . $str_USERS . "\n\t\t\t\tG.ID\t\t\t\t\t\t\t\t\t\tREFERENCE_ID,\n\t\t\t\tconcat(G.NAME, ' [', G.ID, ']')\t\t\t\t\tREFERENCE,\n\t\t\t\t" . $DB->DateToCharFunction("G.TIMESTAMP_X") . "\tTIMESTAMP_X\n\t\t\tFROM\n\t\t\t\tb_group G\n\t\t\t" . $str_TABLE . "\n\t\t\tWHERE\n\t\t\t" . $strSqlSearch . "\n\t\t\tGROUP BY\n\t\t\t\tG.ID, G.ACTIVE, G.C_SORT, G.TIMESTAMP_X, G.ANONYMOUS, G.NAME, G.STRING_ID, G.DESCRIPTION\n\t\t\tHAVING\n\t\t\t\t1=1\n\t\t\t\t" . $strSqlSearch_h . "\n\t\t\t" . $strSqlOrder; $res = $DB->Query($strSql, false, $err_mess . __LINE__); $res->is_filtered = IsFiltered($strSqlSearch) || strlen($strSqlSearch_h) > 0; return $res; }
} else { $arItem["category"] = ""; $rsNavChain = CIBlockSection::GetNavChain($arResult["ID"], $arElement["IBLOCK_SECTION_ID"]); while ($arNavChain = $rsNavChain->Fetch()) { $arItem["category"] .= htmlspecialcharsbx($arNavChain["NAME"]) . "/"; } } if ($arParams["YANDEX"]) { $arItem["full-text"] = htmlspecialcharsbx(htmlspecialcharsback($arElement["DETAIL_TEXT"])); } if (strlen($arResult["NODES"]["pubDate"]) > 0) { $arItem["pubDate"] = str_replace($arNodesSearch, $arNodesReplace, $arResult["NODES"]["pubDate"]); } elseif (strlen($arElement["ACTIVE_FROM"]) > 0) { $arItem["pubDate"] = date("r", MkDateTime($DB->FormatDate($arElement["ACTIVE_FROM"], Clang::GetDateFormat("FULL"), "DD.MM.YYYY H:I:S"), "d.m.Y H:i:s")); } elseif (strlen($arElement["DATE_CREATE"]) > 0) { $arItem["pubDate"] = date("r", MkDateTime($DB->FormatDate($arElement["DATE_CREATE"], Clang::GetDateFormat("FULL"), "DD.MM.YYYY H:I:S"), "d.m.Y H:i:s")); } else { $arItem["pubDate"] = date("r"); } $arItem["ELEMENT"] = $arElement; $arItem["PROPERTIES"] = $arProperties; $arResult["ITEMS"][] = $arItem; } $this->IncludeComponentTemplate(); } if (!$bDesignMode) { $r = $APPLICATION->EndBufferContentMan(); echo $r; if (defined("HTML_PAGES_FILE") && !defined("ERROR_404")) { CHTMLPagesCache::writeFile(HTML_PAGES_FILE, $r); }
function GetArrayX($arrX, &$MinX, &$MaxX, $max_grid = 15, $min_grid = 10) { $h = 2; $MinX = count($arrX) > 0 ? min($arrX) : 0; $MaxX = count($arrX) > 0 ? max($arrX) : 0; $period_days = ($MaxX - $MinX) / 86400 + 1; if ($period_days > $min_grid) { $h = $min_grid; } if ($max_grid < $h) { $max_grid = $h; } $arrOst = array(); for ($i = $max_grid; $i >= $h; $i--) { $ost = $period_days % $i; $arrOst[$i] = $ost; if ($ost == 0) { break; } } $minOst = min($arrOst); $shiftX = $period_days / array_search($minOst, $arrOst); $shiftX = $shiftX * 86400; $unix_date = $MinX; if (preg_match("/(DD|MM)(.*?)(DD|MM)/", FORMAT_DATE, $arMatch)) { $strFrmt = str_replace(array("DD", "MM"), array("d", "m"), $arMatch[0]); } else { $strFrmt = "d.m"; } $prev_date = ""; $tmp_arrX = array(); $arrayX = array(); while ($unix_date < $MaxX + $shiftX) { // если имеем ситуацию с переходом на зимнее время (день увеличивается на 1 час) if ($prev_date == date("d.m.Y", $unix_date)) { $unix_date += 3600; } $date = date($strFrmt, $unix_date); $arrayX[] = $date; $tmp_arrX[] = $unix_date; $unix_date += $shiftX; $prev_date = date("d.m.Y", $unix_date); } $MinX = MkDateTime(date("d.m.Y", min($tmp_arrX)), "d.m.Y"); $MaxX = MkDateTime(date("d.m.Y", max($tmp_arrX)), "d.m.Y"); return $arrayX; }
function CheckFilter() // проверка введенных полей { global $strError, $arFilterFields; reset($arFilterFields); foreach ($arFilterFields as $f) global $$f; $str = ""; $arMsg = Array(); if (strlen(trim($find_date_create1))>0 || strlen(trim($find_date_create2))>0) { // Дата создания $date_1_ok = false; $date1_stm = MkDateTime(ConvertDateTime($find_date_create1,"D.M.Y"),"d.m.Y"); $date2_stm = MkDateTime(ConvertDateTime($find_date_create2,"D.M.Y")." 23:59","d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_date_create1))>0) { //$str.= GetMessage("SUP_WRONG_DATE_CREATE_FROM")."<br>"; $arMsg[] = array("id"=>"find_date_create1", "text"=> GetMessage("SUP_WRONG_DATE_CREATE_FROM")); } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_date_create2))>0) { //$str.= GetMessage("SUP_WRONG_DATE_CREATE_TILL")."<br>"; $arMsg[] = array("id"=>"find_date_create2", "text"=> GetMessage("SUP_WRONG_DATE_CREATE_TILL")); } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm)>0) { //$str.= GetMessage("SUP_FROM_TILL_DATE_CREATE")."<br>"; $arMsg[] = array("id"=>"find_date_create2", "text"=> GetMessage("SUP_FROM_TILL_DATE_CREATE")); } } if (strlen(trim($find_date_timestamp1))>0 || strlen(trim($find_date_timestamp2))>0) { // Дата изменения $date_1_ok = false; $date1_stm = MkDateTime(ConvertDateTime($find_date_timestamp1,"D.M.Y"),"d.m.Y"); $date2_stm = MkDateTime(ConvertDateTime($find_date_timestamp2,"D.M.Y")." 23:59","d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_date_timestamp1))>0) { //$str.= GetMessage("SUP_WRONG_DATE_TIMESTAMP_FROM")."<br>"; $arMsg[] = array("id"=>"find_date_timestamp1", "text"=> GetMessage("SUP_WRONG_DATE_TIMESTAMP_FROM")); } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_date_timestamp2))>0) { //$str.= GetMessage("SUP_WRONG_DATE_TIMESTAMP_TILL")."<br>"; $arMsg[] = array("id"=>"find_date_timestamp2", "text"=> GetMessage("SUP_WRONG_DATE_TIMESTAMP_TILL")); } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm)>0) { //$str.= GetMessage("SUP_FROM_TILL_DATE_TIMESTAMP")."<br>"; $arMsg[] = array("id"=>"find_date_timestamp2", "text"=> GetMessage("SUP_FROM_TILL_DATE_TIMESTAMP")); } } if (strlen(trim($find_date_close1))>0 || strlen(trim($find_date_close2))>0) { // Дата закрытия $date_1_ok = false; $date1_stm = MkDateTime(ConvertDateTime($find_date_close1,"D.M.Y"),"d.m.Y"); $date2_stm = MkDateTime(ConvertDateTime($find_date_close2,"D.M.Y")." 23:59","d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_date_close1))>0) { //$str.= GetMessage("SUP_WRONG_DATE_CLOSE_FROM")."<br>"; $arMsg[] = array("id"=>"find_date_close1", "text"=> GetMessage("SUP_WRONG_DATE_CLOSE_FROM")); } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_date_close2))>0) { //$str.= GetMessage("SUP_WRONG_DATE_CLOSE_TILL")."<br>"; $arMsg[] = array("id"=>"find_date_close2", "text"=> GetMessage("SUP_WRONG_DATE_CLOSE_TILL")); } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm)>0) { //$str.= GetMessage("SUP_FROM_TILL_DATE_CLOSE")."<br>"; $arMsg[] = array("id"=>"find_date_close2", "text"=> GetMessage("SUP_FROM_TILL_DATE_CLOSE")); } } // сообщений if (intval($find_messages1)>0 and intval($find_messages2)>0 and $find_messages1>$find_messages2) { //$str .= GetMessage("SUP_MESSAGES1_MESSAGES2")."<br>"; $arMsg[] = array("id"=>"find_messages2", "text"=> GetMessage("SUP_MESSAGES1_MESSAGES2")); } if(!empty($arMsg)) { $e = new CAdminException($arMsg); $GLOBALS["APPLICATION"]->ThrowException($e); return false; } return true; }
/** * <p>Возвращает список почтовых шаблонов в виде объекта класса <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a>.</p> * * * * * @param string &$by = "id" Ссылка на переменную с полем для сортировки, может принимать * значения: <ul> <li> <b>site_id</b> - идентификатор сайта;</li> <li> <b>subject</b> - * тема;</li> <li> <b>timestamp_x</b> - дата изменения;</li> <li> <b>event_name</b> - тип * события;</li> <li> <b>id</b> - ID шаблона;</li> <li> <b>active</b> - активность;</li> </ul> * * * * @param string &$order = "desc" Ссылка на переменную с порядком сортировки, может принимать * значения: <ul> <li> <b>asc</b> - по возрастанию;</li> <li> <b>desc</b> - по * убыванию;</li> </ul> * * * * @param array $filter Массив вида array("фильтруемое поле"=>"значение" [, ...]), может * принимать значения: <ul> <li> <b>ID</b> - ID шаблона;</li> <li> <b>TYPE</b> - код и * заголовок типа события (допустима <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>);</li> <li> <b>TYPE_ID</b> - * код типа события (допустима <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>);</li> <li> * <b>TIMESTAMP_1</b> - левая часть интервала ("c") для поиска по дате * изменения;</li> <li> <b>TIMESTAMP_2</b> - правая часть интервала ("по") для * поиска по дате изменения;</li> <li> <b>SITE_ID</b> - идентификатор сайта * (допустимо задание массива для поиска по логике "или", либо * допустимо использование <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложной логики</a>);</li> <li> <b>ACTIVE</b> - * флаг активности (Y|N);</li> <li> <b>FROM</b> - поле "От кого" (допустима <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>);</li> <li> <b>TO</b> - * поле "Кому" (допустима <a href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная * логика</a>);</li> <li> <b>BCC</b> - поле "Скрытая копия" (допустима <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>);</li> <li> <b>SUBJECT</b> - * по теме сообщения (допустима <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>);</li> <li> <b>BODY_TYPE</b> * - по типу тела сообщения (text|html);</li> <li> <b>BODY</b> - по телу сообщения * (допустима <a href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная * логика</a>);</li> </ul> * * * * @return CDBResult * * * <h4>Example</h4> * <pre> * <? * $arFilter = Array( * "ID" => "12 | 134", * "TYPE" => "контракт & рекл", * "TYPE_ID" => "ADV_BANNER | ADV_CONTRACT", * "TIMESTAMP_1" => "12.11.2001", * "TIMESTAMP_2" => "12.11.2005", * "SITE_ID" => "ru | en", * "ACTIVE" => "Y", * "FROM" => "bitrixsoft.ru", * "TO" => "#TO#", * "BCC" => "admin", * "SUBJECT" => "конктракт", * "BODY_TYPE" => "text", * "BODY" => "auto" * ); * $rsMess = <b>CEventMessage::GetList</b>($by="site_id", $order="desc", $arFilter); * $is_filtered = $rsMess->is_filtered; * ?> * </pre> * * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/ceventmessage/index.php">Поля шаблона * почтового сообщения</a> </li> <li> <a * href="http://dev.1c-bitrix.ru/api_help/main/reference/ceventmessage/getbyid.php">CEventMessage::GetByID</a> </li> <li> * <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">Класс CDBResult</a> </li> </ul><a * name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/main/reference/ceventmessage/getlist.php * @author Bitrix */ public static function GetList(&$by, &$order, $arFilter=Array()) { $err_mess = "<br>Class: CEventMessage<br>File: ".__FILE__."<br>Function: GetList<br>Line: "; global $DB, $USER; $arSqlSearch = Array(); $strSqlSearch = ""; $bIsLang = false; 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 "ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("M.ID", $val, $match); break; case "TYPE": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("M.EVENT_NAME, T.NAME", $val, $match); break; case "EVENT_NAME": case "TYPE_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("M.EVENT_NAME", $val, $match); break; case "TIMESTAMP_1": $arSqlSearch[] = "M.TIMESTAMP_X >= FROM_UNIXTIME('".MkDateTime(FmtDate($val,"D.M.Y"),"d.m.Y")."')"; break; case "TIMESTAMP_2": $arSqlSearch[] = "M.TIMESTAMP_X <= FROM_UNIXTIME('".MkDateTime(FmtDate($val,"D.M.Y")." 23:59:59","d.m.Y")."')"; break; case "LID": case "LANG": case "SITE_ID": if (is_array($val)) $val = implode(" | ",$val); $arSqlSearch[] = GetFilterQuery("MS.SITE_ID",$val,"N"); $bIsLang = true; break; case "ACTIVE": $arSqlSearch[] = ($val=="Y") ? "M.ACTIVE = 'Y'" : "M.ACTIVE = 'N'"; break; case "FROM": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("M.EMAIL_FROM", $val, $match); break; case "TO": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("M.EMAIL_TO", $val, $match); break; case "BCC": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("M.BCC", $val, $match); break; case "SUBJECT": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("M.SUBJECT", $val, $match); break; case "BODY_TYPE": $arSqlSearch[] = ($val=="text") ? "M.BODY_TYPE = 'text'" : "M.BODY_TYPE = 'html'"; break; case "BODY": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("M.MESSAGE", $val, $match); break; } } } if ($by == "id") $strSqlOrder = " ORDER BY M.ID "; elseif ($by == "active") $strSqlOrder = " ORDER BY M.ACTIVE "; elseif ($by == "event_name") $strSqlOrder = " ORDER BY M.EVENT_NAME "; elseif ($by == "from") $strSqlOrder = " ORDER BY M.EMAIL_FROM "; elseif ($by == "to") $strSqlOrder = " ORDER BY M.EMAIL_TO "; elseif ($by == "bcc") $strSqlOrder = " ORDER BY M.BCC "; elseif ($by == "body_type") $strSqlOrder = " ORDER BY M.BODY_TYPE "; elseif ($by == "subject") $strSqlOrder = " ORDER BY M.SUBJECT "; else { $strSqlOrder = " ORDER BY M.ID "; $by = "id"; } if ($order!="asc") { $strSqlOrder .= " desc "; $order = "desc"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSql = "SELECT M.ID, M.EVENT_NAME, M.ACTIVE, M.LID, ".($bIsLang? "MS.SITE_ID":"M.LID AS SITE_ID").", M.EMAIL_FROM, M.EMAIL_TO, M.SUBJECT, M.MESSAGE, M.BODY_TYPE, M.BCC, M.REPLY_TO, M.CC, M.IN_REPLY_TO, M.PRIORITY, M.FIELD1_NAME, M.FIELD1_VALUE, M.FIELD2_NAME, M.FIELD2_VALUE, ". $DB->DateToCharFunction("M.TIMESTAMP_X"). " TIMESTAMP_X, if(T.ID is null, M.EVENT_NAME, concat('[ ',T.EVENT_NAME,' ] ',ifnull(T.NAME,''))) EVENT_TYPE ". "FROM b_event_message M ". ($bIsLang?" LEFT JOIN b_event_message_site MS ON (M.ID = MS.EVENT_MESSAGE_ID)":"")." ". " LEFT JOIN b_event_type T ON (T.EVENT_NAME = M.EVENT_NAME and T.LID = '".LANGUAGE_ID."') ". "WHERE ". $strSqlSearch. $strSqlOrder; $res = $DB->Query($strSql, false, $err_mess.__LINE__); $res->is_filtered = (IsFiltered($strSqlSearch)); return $res; }
public static function GetAbsent($users = false, $Params = array()) { global $DB; // Can be called from agent... So we have to create $USER if it is not exists $tempUser = CCalendar::TempUser(false, true); $curUserId = isset($Params['userId']) ? intVal($Params['userId']) : CCalendar::GetCurUserId(); $arUsers = array(); if ($users !== false && is_array($users)) { foreach ($users as $id) { if ($id > 0) { $arUsers[] = intVal($id); } } } if (!count($arUsers)) { $users = false; } // Part 1: select ordinary events $arFilter = array('CAL_TYPE' => 'user', 'DELETED' => 'N', 'ACCESSIBILITY' => 'absent'); if (isset($Params['fromLimit'])) { $arFilter['FROM_LIMIT'] = CCalendar::Date(CCalendar::Timestamp($Params['fromLimit'], false), true, false); } if (isset($Params['toLimit'])) { $arFilter['TO_LIMIT'] = CCalendar::Date(CCalendar::Timestamp($Params['toLimit'], false), true, false); } $arEvents = CCalendarEvent::GetList(array('arFilter' => $arFilter, 'getUserfields' => false, 'parseRecursion' => true, 'fetchAttendees' => false, 'fetchMeetings' => true, 'userId' => $curUserId, 'checkPermissions' => false, 'preciseLimits' => true)); // Part 2: select attendees CTimeZone::Disable(); if (count($arUsers) > 0) { $userQ = ' AND CA.USER_ID in (' . implode(',', $arUsers) . ')'; } else { $userQ = ''; } $strSql = "\n\t\t\tSELECT\n\t\t\t\tCA.EVENT_ID as ID, CA.USER_ID, CA.STATUS, CA.ACCESSIBILITY,\n\t\t\t\tCE.CAL_TYPE,CE.OWNER_ID,CE.NAME," . $DB->DateToCharFunction("CE.DT_FROM") . " as DT_FROM," . $DB->DateToCharFunction("CE.DT_TO") . " as DT_TO, CE.DT_LENGTH, CE.PRIVATE_EVENT, CE.ACCESSIBILITY, CE.IMPORTANCE, CE.IS_MEETING, CE.MEETING_HOST, CE.MEETING, CE.LOCATION, CE.RRULE, CE.EXRULE, CE.RDATE, CE.EXDATE,\n\t\t\t\tCES.SECT_ID\n\t\t\tFROM b_calendar_attendees CA\n\t\t\tLEFT JOIN\n\t\t\t\tb_calendar_event CE ON(CA.EVENT_ID=CE.ID)\n\t\t\tLEFT JOIN\n\t\t\t\tb_calendar_event_sect CES ON (CA.EVENT_ID=CES.EVENT_ID)\n\t\t\tWHERE\n\t\t\t\t\tCE.ID IS NOT NULL\n\t\t\t\tAND\n\t\t\t\t\tCE.DELETED='N'\n\t\t\t\tAND\n\t\t\t\t\tSTATUS='Y'\n\t\t\t\tAND\n\t\t\t\t\tCA.ACCESSIBILITY='absent'\n\t\t\t\t{$userQ}\n\t\t\t"; if (isset($arFilter['FROM_LIMIT'])) { $strSql .= "AND "; if (strtoupper($DB->type) == "MYSQL") { $strSql .= "CE.DT_TO>=FROM_UNIXTIME('" . MkDateTime(FmtDate($arFilter['FROM_LIMIT'], "D.M.Y"), "d.m.Y") . "')"; } elseif (strtoupper($DB->type) == "MSSQL") { $strSql .= "CE.DT_TO>=" . $DB->CharToDateFunction($arFilter['FROM_LIMIT'], "SHORT"); } elseif (strtoupper($DB->type) == "ORACLE") { $strSql .= "CE.DT_TO>=TO_DATE('" . FmtDate($arFilter['FROM_LIMIT'], "D.M.Y") . " 00:00:00','dd.mm.yyyy hh24:mi:ss')"; } } if ($arFilter['TO_LIMIT']) { $strSql .= "AND "; if (strtoupper($DB->type) == "MYSQL") { $strSql .= "CE.DT_FROM<=FROM_UNIXTIME('" . MkDateTime(FmtDate($arFilter['TO_LIMIT'], "D.M.Y") . " 23:59:59", "d.m.Y H:i:s") . "')"; } elseif (strtoupper($DB->type) == "MSSQL") { $strSql .= "CE.DT_FROM<=dateadd(day, 1, " . $DB->CharToDateFunction($arFilter['TO_LIMIT'], "SHORT") . ")"; } elseif (strtoupper($DB->type) == "ORACLE") { $strSql .= "CE.DT_FROM<=TO_DATE('" . FmtDate($arFilter['TO_LIMIT'], "D.M.Y") . " 23:59:59','dd.mm.yyyy hh24:mi:ss')"; } } $res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $arEvents2 = array(); while ($event = $res->Fetch()) { $event = self::PreHandleEvent($event); if ($event['CAL_TYPE'] == 'user' && $event['IS_MEETING'] && $event['OWNER_ID'] == $event['USER_ID']) { continue; } if (self::CheckRecurcion($event)) { self::ParseRecursion($arEvents2, $event, array('fromLimit' => $arFilter["FROM_LIMIT"], 'toLimit' => $arFilter["TO_LIMIT"])); } else { self::HandleEvent($arEvents2, $event); } } CTimeZone::Enable(); $arEvents = array_merge($arEvents, $arEvents2); $bSocNet = CModule::IncludeModule("socialnetwork"); $result = array(); $settings = CCalendar::GetSettings(array('request' => false)); foreach ($arEvents as $event) { $userId = isset($event['USER_ID']) ? $event['USER_ID'] : $event['OWNER_ID']; if ($users !== false && !in_array($userId, $arUsers)) { continue; } if ($bSocNet && !CSocNetFeatures::IsActiveFeature(SONET_ENTITY_USER, $userId, "calendar")) { continue; } if ((!$event['CAL_TYPE'] != 'user' || $curUserId != $event['OWNER_ID']) && $curUserId != $event['CREATED_BY'] && !isset($arUserMeeting[$event['ID']])) { $sectId = $event['SECT_ID']; if (!$event['ACCESSIBILITY']) { $event['ACCESSIBILITY'] = 'busy'; } $private = $event['PRIVATE_EVENT'] && $event['CAL_TYPE'] == 'user'; $bManager = false; if (!$private && CCalendar::IsIntranetEnabled() && CModule::IncludeModule('intranet') && $event['CAL_TYPE'] == 'user' && $settings['dep_manager_sub']) { $bManager = in_array($curUserId, CCalendar::GetUserManagers($event['OWNER_ID'], true)); } if ($private || !CCalendarSect::CanDo('calendar_view_full', $sectId) && !$bManager) { if ($private) { $event['NAME'] = '[' . GetMessage('EC_ACCESSIBILITY_' . strtoupper($event['ACCESSIBILITY'])) . ']'; } else { if (!CCalendarSect::CanDo('calendar_view_title', $sectId)) { $event['NAME'] = '[' . GetMessage('EC_ACCESSIBILITY_' . strtoupper($event['ACCESSIBILITY'])) . ']'; } else { $event['NAME'] = $event['NAME'] . ' [' . GetMessage('EC_ACCESSIBILITY_' . strtoupper($event['ACCESSIBILITY'])) . ']'; } } } } $result[] = array('ID' => $event['ID'], 'NAME' => $event['NAME'], 'DATE_FROM' => $event['DT_FROM'], 'DATE_TO' => $event['DT_TO'], 'DT_FROM_TS' => $event['DT_FROM_TS'], 'DT_TO_TS' => $event['DT_TO_TS'], 'CREATED_BY' => $userId, 'DETAIL_TEXT' => '', 'USER_ID' => $userId); } // Sort by DT_FROM_TS usort($result, array('CCalendar', '_NearestSort')); CCalendar::TempUser($tempUser, false); return $result; }
//************************************!Check filter *************************************************************** $USER_ID = intVal($USER_ID); $arFilter = array("USER_ID" => $USER_ID); $arMsg = array(); $err = false; if ($USER_ID <= 0) { $arMsg[] = array("id" => "USER_ID", "text" => GetMessage("FM_WRONG_USER_ID")); } $date1_stm = ""; $date2_stm = ""; $DATE_FROM_S = trim($DATE_FROM_S); $DATE_TO_S = trim($DATE_TO_S); $DATE_FROM_S_DAYS_TO_BACK = intval($DATE_FROM_S_DAYS_TO_BACK); if (strlen($DATE_FROM_S) > 0 || strlen($DATE_TO_S) > 0 || $DATE_FROM_S_DAYS_TO_BACK > 0) { $date1_stm = MkDateTime(ConvertDateTime($DATE_FROM_S, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(ConvertDateTime($DATE_TO_S, "D.M.Y") . " 23:59", "d.m.Y H:i"); if ($DATE_FROM_S_DAYS_TO_BACK > 0) { $date1_stm = time() - 86400 * $DATE_FROM_S_DAYS_TO_BACK; $date1_stm = GetTime($date1_stm); } if (!$date1_stm) { $arMsg[] = array("id" => ">=START_DATE", "text" => GetMessage("FM_WRONG_DATE_FROM")); } if (!$date2_stm && strlen($DATE_TO_S) > 0) { $arMsg[] = array("id" => "<=START_DATE", "text" => GetMessage("FM_WRONG_DATE_TO")); } elseif ($date1_stm && $date2_stm && $date2_stm <= $date1_stm) { $arMsg[] = array("id" => "find_date_timestamp2", "text" => GetMessage("FM_WRONG_PERIOD")); } } $Filter_S = trim($Filter_S); $FilterType_S = strtolower(trim($FilterType_S));
function CheckDateFilter(CAdminList $lAdmin, $date_from, $date_to) { $date_from = trim($date_from); $date_to = trim($date_to); if (strlen($date_from) > 0 || strlen($date_to) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(FmtDate($date_from, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(FmtDate($date_to, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (!$date1_stm && strlen(trim($date_from)) > 0) { $lAdmin->AddFilterError(GetMessage("POST_WRONG_TIMESTAMP_FROM")); } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($date_to)) > 0) { $lAdmin->AddFilterError(GetMessage("POST_WRONG_TIMESTAMP_TILL")); } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm) > 0) { $lAdmin->AddFilterError(GetMessage("POST_FROM_TILL_TIMESTAMP")); } } return count($lAdmin->arFilterErrors) == 0; }
} } // LAST TOPIC $DATE_FROM = trim($DATE_FROM); $DATE_TO = trim($DATE_TO); $DATE_FROM_DAYS_TO_BACK = intval($DATE_FROM_DAYS_TO_BACK); if (!empty($DATE_FROM) || !empty($DATE_TO) || $DATE_FROM_DAYS_TO_BACK > 0) { $date1_stm = MkDateTime(ConvertDateTime($DATE_FROM, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(ConvertDateTime($DATE_TO, "D.M.Y"), "d.m.Y"); if (!empty($DATE_FROM)) { if (!empty($DATE_TO)) { $date2_stm = MkDateTime(ConvertDateTime($DATE_TO, "D.M.Y") . " 23:59:59", "d.m.Y H:i:s"); $DATE_TO .= " 23:59:59"; } else { if ($DATE_FROM_FILTER_PERIOD == "after") { $date1_stm = MkDateTime(ConvertDateTime($DATE_FROM, "D.M.Y") . " 23:59:59", "d.m.Y H:i:s"); $DATE_FROM .= " 23:59:59"; } } } if ($DATE_FROM_DAYS_TO_BACK > 0) { $date1_stm = time() - 86400 * $DATE_FROM_DAYS_TO_BACK; $date1_stm = GetTime($date1_stm); } if (!$date1_stm && !empty($DATE_FROM)) { $arMsg[] = array("id" => ">=LAST_POST_DATE", "text" => GetMessage("FM_WRONG_DATE_FROM")); } if (!$date2_stm && !empty($DATE_TO)) { $arMsg[] = array("id" => "<=LAST_POST_DATE", "text" => GetMessage("FM_WRONG_DATE_TO")); } elseif ($date1_stm && $date2_stm && $date2_stm <= $date1_stm) { $arMsg[] = array("id" => "find_date_timestamp2", "text" => GetMessage("FM_FROM_TILL_TIMESTAMP"));
public static function GetList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arNavStartParams = false) { global $DB; self::ClearErrors(); $arWherePart = array(); if (is_array($arFilter)) { foreach ($arFilter as $key => $val) { $key = strtoupper($key); switch($key) { case "ID": $arWherePart[] = "U.ID=".intval($val); break; case "URI": $q = GetFilterQuery("U.URI", $val); if (!empty($q) && ($q != "0")) $arWherePart[] = $q; break; case "URI_EXACT": $arWherePart[] = "U.URI='".$DB->ForSQL($val)."'"; break; case "URI_CRC": $arWherePart[] = "U.URI_CRC=".intval($val); break; case "SHORT_URI": $arWherePart[] = "U.SHORT_URI='".$DB->ForSQL($val)."'"; break; case "SHORT_URI_CRC": $arWherePart[] = "U.SHORT_URI_CRC=".intval($val); break; case "STATUS": $arWherePart[] = "U.STATUS=".intval($val); break; case "MODIFIED_1": $arWherePart[] = "U.MODIFIED >= FROM_UNIXTIME('".MkDateTime(FmtDate($val, "D.M.Y"), "d.m.Y")."')"; break; case "MODIFIED_2": $arWherePart[] = "U.MODIFIED <= FROM_UNIXTIME('".MkDateTime(FmtDate($val, "D.M.Y")." 23:59:59", "d.m.Y")."')"; break; case "LAST_USED_1": $arWherePart[] = "U.LAST_USED >= FROM_UNIXTIME('".MkDateTime(FmtDate($val, "D.M.Y"), "d.m.Y")."')"; break; case "LAST_USED_2": $arWherePart[] = "U.LAST_USED <= FROM_UNIXTIME('".MkDateTime(FmtDate($val, "D.M.Y")." 23:59:59", "d.m.Y")."')"; break; case "NUMBER_USED": $arWherePart[] = "U.NUMBER_USED=".intval($val); break; } } } $strWherePart = ""; if (count($arWherePart) > 0) { foreach ($arWherePart as $val) { if ($strWherePart !== "") $strWherePart .= " AND "; $strWherePart .= "(".$val.")"; } } if ($strWherePart !== "") $strWherePart = "WHERE ".$strWherePart; $arOrderByPart = array(); if (is_array($arOrder)) { foreach ($arOrder as $key => $val) { $key = strtoupper($key); if (!in_array($key, array("ID", "URI", "URI_CRC", "SHORT_URI", "SHORT_URI_CRC", "STATUS", "MODIFIED", "LAST_USED", "NUMBER_USED"))) continue; $val = strtoupper($val); if (!in_array($val, array("ASC", "DESC"))) $val = "ASC"; if ($key == "MODIFIED") $key = "MODIFIED1"; if ($key == "LAST_USED") $key = "LAST_USED1"; $arOrderByPart[] = $key." ".$val; } } $strOrderByPart = ""; if (count($arOrderByPart) > 0) { foreach ($arOrderByPart as $val) { if ($strOrderByPart !== "") $strOrderByPart .= ", "; $strOrderByPart .= $val; } } if ($strOrderByPart !== "") $strOrderByPart = "ORDER BY ".$strOrderByPart; $strSql = "FROM b_short_uri U ".$strWherePart; if ($arNavStartParams) { $dbResultCount = $DB->Query("SELECT COUNT(U.ID) as C ".$strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); $arResultCount = $dbResultCount->Fetch(); $strSql = "SELECT ID, URI, URI_CRC, SHORT_URI, SHORT_URI_CRC, STATUS, ".$DB->DateToCharFunction("MODIFIED")." MODIFIED, MODIFIED MODIFIED1, ".$DB->DateToCharFunction("LAST_USED")." LAST_USED, LAST_USED LAST_USED1, NUMBER_USED ".$strSql.$strOrderByPart; $dbResult = new CDBResult(); $dbResult->NavQuery($strSql, $arResultCount["C"], $arNavStartParams); } else { $strSql = "SELECT ID, URI, URI_CRC, SHORT_URI, SHORT_URI_CRC, STATUS, ".$DB->DateToCharFunction("MODIFIED")." MODIFIED, MODIFIED MODIFIED1, ".$DB->DateToCharFunction("LAST_USED")." LAST_USED, LAST_USED LAST_USED1, NUMBER_USED ".$strSql.$strOrderByPart; $dbResult = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } return $dbResult; }
function PHPFormatDateTime($strDateTime, $format="d.m.Y H:i:s") { return date($format, MkDateTime(FmtDate($strDateTime,"D.M.Y H:I:S"), "d.m.Y H:i:s")); }
/** * <p>Возвращает список <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#search">поисковых систем</a> и количество <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#search_hit">хитов</a> (проиндексированных страниц) каждой из них за все время ведения статистики, за последние 3 дня, либо за указанный интервал времени.</p> * * * @param string &$by = "s_today_hits" Поле для сортировки. Возможные значения: <ul> <li> <b>s_id</b> - ID поисковой * системы; </li> <li> <b>s_date_last</b> - дата последнего хита; </li> <li> <b>s_today_hits</b> - * количество хитов за сегодня; </li> <li> <b>s_yesterday_hits</b> - количество * хитов за вчера; </li> <li> <b>s_b_yesterday_hits</b> - количество хитов за * позавчера; </li> <li> <b>s_total_hits</b> - суммарное количество хитов; </li> <li> * <b>s_period_hits</b> - количество хитов за установленный период времени * (<i>filter</i>["<b>DATE1</b>"], <i>filter</i>["<b>DATE2</b>"]); </li> <li> <b>s_name</b> - название * поисковой системы; </li> <li> <b>s_user_agent</b> - <a * href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#search_useragent">UserAgent поисковой * системы</a>. </li> </ul> * * @param string &$order = "desc" Порядок сортировки. Возможные значения: <ul> <li> <b>asc</b> - по * возрастанию; </li> <li> <b>desc</b> - по убыванию. </li> </ul> * * @param array $filter = array() Массив для фильтрации результирующего списка. В массиве * допустимы следующие ключи: <ul> <li> <b>ID</b>* - ID поисковой системы; </li> * <li> <b>ID_EXACT_MATCH</b> - если значение равно "N", то при фильтрации по <b>ID</b> * будет искаться вхождение </li> <li> <b>ACTIVE</b> - флаг активности, * возможные значения: <ul> <li> <b>Y</b> - активна; </li> <li> <b>N</b> - не активна. * </li> </ul> </li> <li> <b>SAVE_STATISTIC</b> - флаг "сохранять хиты поисковой системы", * возможные значения: <ul> <li> <b>Y</b> - да; </li> <li> <b>N</b> - нет. </li> </ul> </li> <li> * <b>DIAGRAM_DEFAULT</b> - флаг "включать в круговую диаграмму и график по * умолчанию", возможные значения: <ul> <li> <b>Y</b> - да; </li> <li> <b>N</b> - нет. </li> * </ul> </li> <li> <b>HITS1</b> - начальное значение интервала для поля * "количество хитов"; </li> <li> <b>HITS2</b> - конечное значение интервала для * поля "количество хитов"; </li> <li> <b>DATE1_PERIOD</b> - начальное значение * значение для произвольного периода; </li> <li> <b>DATE2_PERIOD</b> - конечное * значение значение для произвольного периода; </li> <li> <b>DATE1</b> - * начальное значение интервала для поля "дата последнего хита * поисковой системы"; </li> <li> <b>DATE2</b> - конечное значение интервала * для поля "дата последнего хита поисковой системы"; </li> <li> <b>NAME</b>* - * наименование поисковой системы; </li> <li> <b>NAME_EXACT_MATCH</b> - если * значение равно "Y", то при фильтрации по <b>NAME</b> будет искаться * точное совпадение; </li> <li> <b>USER_AGENT</b>* - UserAgent поисковой системы; </li> * <li> <b>USER_AGENT_EXACT_MATCH</b> - если значение равно "Y", то при фильтрации по * <b>USER_AGENT</b> будет искаться точное совпадение. </li> </ul> * - допускается * <a href="http://dev.1c-bitrix.ru/api_help/main/general/filter.php">сложная логика</a> * * @param bool &$is_filtered Флаг отфильтрованности списка поисковых систем. Если значение * равно "true", то список был отфильтрован. * * @param mixed $limit = false Максимальное количество поисковых систем которые будут выбраны * в списке. Если значение равно false, то кол-во РК будет ограничено в * соответствии со значением параметра "Максимальное кол-во * показываемых записей в таблицах" из настроек модуля "Статистика". * * @return CDBResult * * <h4>Example</h4> * <pre> * <? * // отфильтруем данные только для поисковой системы #20 и #21 * // а также получим дополнительные данные на декабрь 2005 года * $arFilter = array( * "ID" => "20 | 21", * "DATE1_PERIOD" => "01.12.2005", * "DATE2_PERIOD" => "31.12.2005", * ); * * // получим список записей * $rs = <b>CSearcher::GetList</b>( * ($by = "s_today_hits"), * ($order = "desc"), * $arFilter, * $is_filtered * ); * * // выведем все записи * while ($ar = $rs->Fetch()) * { * echo "<pre>"; print_r($ar); echo "</pre>"; * } * ?> * </pre> * * * <h4>See Also</h4> * <ul> <li> <a * href="http://dev.1c-bitrix.ru/api_help/statistic/classes/csearcher/getdropdownlist.php">CSearcher::GetDropdownList</a> * </li> <li> <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#search">Термин "Поисковая * система"</a> </li> </ul> <a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/statistic/classes/csearcher/getlist.php * @author Bitrix */ public static function GetList(&$by, &$order, $arFilter = array(), &$is_filtered, $LIMIT = false) { $err_mess = "File: " . __FILE__ . "<br>Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $arSqlSearch = array("S.ID <> 1"); $arSqlSearch_h = array(); $strSqlSearch_h = ""; $filter_period = false; $strSqlPeriod = ""; $strT = ""; if (is_array($arFilter)) { ResetFilterLogic(); $date1 = $arFilter["DATE1_PERIOD"]; $date2 = $arFilter["DATE2_PERIOD"]; $date_from = MkDateTime(ConvertDateTime($date1, "D.M.Y"), "d.m.Y"); $date_to = MkDateTime(ConvertDateTime($date2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (CheckDateTime($date1) && strlen($date1) > 0) { $filter_period = true; if (strlen($date2) > 0) { $strSqlPeriod = "sum(if(D.DATE_STAT<FROM_UNIXTIME('{$date_from}'),0, if(D.DATE_STAT>FROM_UNIXTIME('{$date_to}'),0,"; $strT = ")))"; } else { $strSqlPeriod = "sum(if(D.DATE_STAT<FROM_UNIXTIME('{$date_from}'),0,"; $strT = "))"; } } elseif (CheckDateTime($date2) && strlen($date2) > 0) { ResetFilterLogic(); $filter_period = true; $strSqlPeriod = "sum(if(D.DATE_STAT>FROM_UNIXTIME('{$date_to}'),0,"; $strT = "))"; } 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 "ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("S.ID", $val, $match); break; case "ACTIVE": case "SAVE_STATISTIC": case "DIAGRAM_DEFAULT": $arSqlSearch[] = $val == "Y" ? "S." . $key . "='Y'" : "S." . $key . "='N'"; break; case "HITS1": $arSqlSearch_h[] = "(sum(ifnull(D.TOTAL_HITS,0))+ifnull(S.TOTAL_HITS,0))>='" . intval($val) . "'"; break; case "HITS2": $arSqlSearch_h[] = "(sum(ifnull(D.TOTAL_HITS,0))+ifnull(S.TOTAL_HITS,0))<='" . intval($val) . "'"; break; case "DATE1": if (CheckDateTime($val)) { $arSqlSearch_h[] = "max(D.DATE_LAST)>=" . $DB->CharToDateFunction($val, "SHORT"); } break; case "DATE2": if (CheckDateTime($val)) { $arSqlSearch_h[] = "max(D.DATE_LAST)<" . $DB->CharToDateFunction($val, "SHORT") . " + INTERVAL 1 DAY"; } break; case "NAME": case "USER_AGENT": $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("S." . $key, $val, $match); break; } } } if ($by == "s_id") { $strSqlOrder = "ORDER BY S.ID"; } elseif ($by == "s_date_last") { $strSqlOrder = "ORDER BY S_DATE_LAST"; } elseif ($by == "s_today_hits") { $strSqlOrder = "ORDER BY TODAY_HITS"; } elseif ($by == "s_yesterday_hits") { $strSqlOrder = "ORDER BY YESTERDAY_HITS"; } elseif ($by == "s_b_yesterday_hits") { $strSqlOrder = "ORDER BY B_YESTERDAY_HITS"; } elseif ($by == "s_total_hits") { $strSqlOrder = "ORDER BY TOTAL_HITS"; } elseif ($by == "s_period_hits") { $strSqlOrder = "ORDER BY PERIOD_HITS"; } elseif ($by == "s_name") { $strSqlOrder = "ORDER BY S.NAME"; } elseif ($by == "s_user_agent") { $strSqlOrder = "ORDER BY S.USER_AGENT"; } elseif ($by == "s_chart") { $strSqlOrder = "ORDER BY S.DIAGRAM_DEFAULT desc, TOTAL_HITS "; } elseif ($by == "s_stat") { $strSqlOrder = "ORDER BY TODAY_HITS desc, YESTERDAY_HITS desc, B_YESTERDAY_HITS desc, TOTAL_HITS desc, PERIOD_HITS"; } else { $by = "s_today_hits"; $strSqlOrder = "ORDER BY TODAY_HITS desc, YESTERDAY_HITS desc, B_YESTERDAY_HITS desc, TOTAL_HITS desc, PERIOD_HITS"; } if ($order != "asc") { $strSqlOrder .= " desc "; $order = "desc"; } $limit_sql = "LIMIT " . intval(COption::GetOptionString('statistic', 'RECORDS_LIMIT')); if (intval($LIMIT) > 0) { $limit_sql = "LIMIT " . intval($LIMIT); } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); foreach ($arSqlSearch_h as $sqlWhere) { $strSqlSearch_h .= " and (" . $sqlWhere . ") "; } $strSql = "\n\t\tSELECT\n\t\t\tS.ID,\n\t\t\tS.TOTAL_HITS,\n\t\t\tS.USER_AGENT,\n\t\t\tS.DIAGRAM_DEFAULT,\n\t\t\t" . $DB->DateToCharFunction("max(D.DATE_LAST)") . "\t\t\t\t\t\tDATE_LAST,\n\t\t\tmax(ifnull(D.DATE_LAST,'1980-01-01'))\t\t\t\t\t\t\t\tS_DATE_LAST,\n\t\t\tsum(ifnull(D.TOTAL_HITS,0))+ifnull(S.TOTAL_HITS,0)\t\t\t\t\tTOTAL_HITS,\n\t\t\tsum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.TOTAL_HITS,0),0))\tTODAY_HITS,\n\t\t\tsum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.TOTAL_HITS,0),0))\tYESTERDAY_HITS,\n\t\t\tsum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.TOTAL_HITS,0),0))\tB_YESTERDAY_HITS,\n\t\t\t" . ($filter_period ? $strSqlPeriod . 'ifnull(D.TOTAL_HITS,0)' . $strT . ' PERIOD_HITS, ' : '0 PERIOD_HITS,') . "\n\t\t\tS.NAME\n\t\tFROM\n\t\t\tb_stat_searcher S\n\t\tLEFT JOIN b_stat_searcher_day D ON (D.SEARCHER_ID = S.ID)\n\t\tWHERE\n\t\t{$strSqlSearch}\n\t\tand S.ID<>1\n\t\tGROUP BY S.ID\n\t\tHAVING\n\t\t\t'1'='1'\n\t\t\t{$strSqlSearch_h}\n\t\t{$strSqlOrder}\n\t\t{$limit_sql}\n\t\t"; $res = $DB->Query($strSql, false, $err_mess . __LINE__); $is_filtered = IsFiltered($strSqlSearch) || $filter_period || strlen($strSqlSearch_h) > 0; return $res; }
function GetRSSText($arIBLOCK, $LIMIT_NUM = false, $LIMIT_DAY = false, $yandex = false) { global $DB; $strRes = ""; $serverName = ""; if (isset($arIBLOCK["SERVER_NAME"]) && strlen($arIBLOCK["SERVER_NAME"]) > 0) { $serverName = $arIBLOCK["SERVER_NAME"]; } if (strlen($serverName) <= 0 && !isset($arIBLOCK["SERVER_NAME"])) { $dbSite = CSite::GetList($b = "sort", $o = "asc", array("LID" => $arIBLOCK["LID"])); if ($arSite = $dbSite->Fetch()) { $serverName = $arSite["SERVER_NAME"]; } } if (strlen($serverName) <= 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) { $serverName = SITE_SERVER_NAME; } else { $serverName = COption::GetOptionString("main", "server_name", "www.bitrixsoft.com"); } } $strRes .= "<channel>\n"; $strRes .= "<title>" . htmlspecialcharsbx($arIBLOCK["NAME"]) . "</title>\n"; $strRes .= "<link>http://" . $serverName . "</link>\n"; $strRes .= "<description>" . htmlspecialcharsbx($arIBLOCK["DESCRIPTION"]) . "</description>\n"; $strRes .= "<lastBuildDate>" . date("r") . "</lastBuildDate>\n"; $strRes .= "<ttl>" . $arIBLOCK["RSS_TTL"] . "</ttl>\n"; $db_img_arr = CFile::GetFileArray($arIBLOCK["PICTURE"]); if ($db_img_arr) { if (substr($db_img_arr["SRC"], 0, 1) == "/") { $strImage = "http://" . $serverName . $db_img_arr["SRC"]; } else { $strImage = $db_img_arr["SRC"]; } $strRes .= "<image>\n"; $strRes .= "<title>" . htmlspecialcharsbx($arIBLOCK["NAME"]) . "</title>\n"; $strRes .= "<url>" . $strImage . "</url>\n"; $strRes .= "<link>http://" . $serverName . "</link>\n"; $strRes .= "<width>" . $db_img_arr["WIDTH"] . "</width>\n"; $strRes .= "<height>" . $db_img_arr["HEIGHT"] . "</height>\n"; $strRes .= "</image>\n"; } $arNodes = array(); $db_res = $DB->Query("SELECT NODE, NODE_VALUE FROM b_iblock_rss WHERE IBLOCK_ID = " . IntVal($arIBLOCK["ID"])); while ($db_res_arr = $db_res->Fetch()) { $arNodes[$db_res_arr["NODE"]] = $db_res_arr["NODE_VALUE"]; } CTimeZone::Disable(); $strSql = "SELECT DISTINCT BE.*, " . "\t" . $DB->DateToCharFunction("BE.TIMESTAMP_X") . " as TIMESTAMP_X, " . "\t" . $DB->DateToCharFunction("BE.ACTIVE_FROM", "FULL") . " as ACTIVE_FROM, " . "\t" . $DB->DateToCharFunction("BE.ACTIVE_TO", "FULL") . " as ACTIVE_TO, " . "\tL.DIR as LANG_DIR, B.DETAIL_PAGE_URL, B.LIST_PAGE_URL, B.LID, L.SERVER_NAME " . "FROM b_iblock_element BE, b_lang L, b_iblock B " . "\tLEFT JOIN b_iblock_group IBG ON IBG.IBLOCK_ID=B.ID " . "WHERE BE.IBLOCK_ID = B.ID " . "\tAND B.LID = L.LID " . "\tAND IBG.GROUP_ID IN (2) " . "\tAND BE.WF_STATUS_ID = 1 AND BE.WF_PARENT_ELEMENT_ID is null " . "\tAND IBG.PERMISSION>='R' " . "\tAND (IBG.PERMISSION='X' OR B.ACTIVE='Y') " . "\tAND (BE.IBLOCK_ID = " . IntVal($arIBLOCK["ID"]) . ") " . "\tAND ((BE.ACTIVE_TO >= " . $DB->GetNowFunction() . " OR BE.ACTIVE_TO IS NULL) AND (BE.ACTIVE_FROM <= " . $DB->GetNowFunction() . " OR BE.ACTIVE_FROM IS NULL)) " . "\tAND (BE.ACTIVE = 'Y') "; if ($LIMIT_DAY !== false) { $strSql .= " AND (BE.ACTIVE_FROM>=" . $DB->CharToDateFunction($DB->ForSql(date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")), mktime(date("H"), date("i"), date("s"), date("m"), date("d") - IntVal($LIMIT_DAY), date("Y")))), "FULL") . " OR BE.ACTIVE_FROM IS NULL) "; } $strSql .= "ORDER BY BE.ACTIVE_FROM DESC, BE.SORT ASC "; $res = $DB->Query($strSql); CTimeZone::Enable(); $items = new CIBlockResult($res->result); if ($LIMIT_NUM !== False && IntVal($LIMIT_NUM) > 0) { $items->NavStart($LIMIT_NUM); } while ($arItem = $items->GetNext()) { $props = CIBlockElement::GetProperty($arIBLOCK["ID"], $arItem["ID"], "sort", "asc", array("ACTIVE" => "Y", "NON_EMPTY" => "Y")); $arProps = array(); while ($arProp = $props->Fetch()) { if (strlen($arProp["CODE"]) > 0) { $arProps[$arProp["CODE"]] = array("NAME" => htmlspecialcharsbx($arProp["NAME"]), "VALUE" => htmlspecialcharsex($arProp["VALUE"])); } else { $arProps[$arProp["ID"]] = array("NAME" => htmlspecialcharsbx($arProp["NAME"]), "VALUE" => htmlspecialcharsex($arProp["VALUE"])); } } $arLinkProp = $arProps["DOC_LINK"]; $strRes .= "<item>\n"; if (strlen($arNodes["title"]) > 0) { $strRes .= "<title>" . htmlspecialcharsbx(CIBlockRSS::ExtractProperties($arNodes["title"], $arProps, $arItem)) . "</title>\n"; } else { $strRes .= "<title>" . htmlspecialcharsbx($arItem["~NAME"]) . "</title>\n"; } if (strlen($arNodes["link"]) > 0) { $strRes .= "<link>" . CIBlockRSS::ExtractProperties($arNodes["link"], $arProps, $arItem) . "</link>\n"; } else { $strRes .= "<link>http://" . $serverName . ($arLinkProp["VALUE"] ? $arLinkProp["VALUE"] : $arItem["DETAIL_PAGE_URL"]) . "</link>\n"; } if (strlen($arNodes["description"]) > 0) { $strRes .= "<description>" . htmlspecialcharsbx(CIBlockRSS::ExtractProperties($arNodes["description"], $arProps, $arItem)) . "</description>\n"; } else { $strRes .= "<description>" . ($arItem["PREVIEW_TEXT"] || $yandex ? htmlspecialcharsbx($arItem["PREVIEW_TEXT"]) : htmlspecialcharsbx($arItem["DETAIL_TEXT"])) . "</description>\n"; } if (strlen($arNodes["enclosure"]) > 0) { $strRes .= "<enclosure url=\"" . htmlspecialcharsbx(CIBlockRSS::ExtractProperties($arNodes["enclosure"], $arProps, $arItem)) . "\" length=\"" . htmlspecialcharsbx(CIBlockRSS::ExtractProperties($arNodes["enclosure_length"], $arProps, $arItem)) . "\" type=\"" . htmlspecialcharsbx(CIBlockRSS::ExtractProperties($arNodes["enclosure_type"], $arProps, $arItem)) . "\"/>\n"; } else { $db_img_arr = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]); if ($db_img_arr) { if (substr($db_img_arr["SRC"], 0, 1) == "/") { $strImage = "http://" . $serverName . $db_img_arr["SRC"]; } else { $strImage = $db_img_arr["SRC"]; } $strRes .= "<enclosure url=\"" . $strImage . "\" length=\"" . $db_img_arr["FILE_SIZE"] . "\" type=\"" . $db_img_arr["CONTENT_TYPE"] . "\" width=\"" . $db_img_arr["WIDTH"] . "\" height=\"" . $db_img_arr["HEIGHT"] . "\"/>\n"; } } if (strlen($arNodes["category"]) > 0) { $strRes .= "<category>" . htmlspecialcharsbx(CIBlockRSS::ExtractProperties($arNodes["category"], $arProps, $arItem)) . "</category>\n"; } else { $strPath = ""; $nav = CIBlockSection::GetNavChain($arIBLOCK["ID"], $arItem["IBLOCK_SECTION_ID"]); while ($ar_nav = $nav->GetNext()) { $strPath .= $ar_nav["NAME"] . "/"; } if (strlen($strPath) > 0) { $strRes .= "<category>" . htmlspecialcharsbx($strPath) . "</category>\n"; } } if ($yandex) { $strRes .= "<yandex:full-text>" . htmlspecialcharsbx($arItem["DETAIL_TEXT"]) . "</yandex:full-text>\n"; } if (strlen($arNodes["pubDate"]) > 0) { $strRes .= "<pubDate>" . htmlspecialcharsbx(CIBlockRSS::ExtractProperties($arNodes["pubDate"], $arProps, $arItem)) . "</pubDate>\n"; } else { if (strlen($arItem["ACTIVE_FROM"]) > 0) { $strRes .= "<pubDate>" . date("r", MkDateTime($DB->FormatDate($arItem["ACTIVE_FROM"], Clang::GetDateFormat("FULL"), "DD.MM.YYYY H:I:S"), "d.m.Y H:i:s")) . "</pubDate>\n"; } else { $strRes .= "<pubDate>" . date("r") . "</pubDate>\n"; } } $strRes .= "</item>\n"; } $strRes .= "</channel>\n"; return $strRes; }
function WF_GetHistoryList($ELEMENT_ID, &$by, &$order, $arFilter = array(), &$is_filtered) { $err_mess = "FILE: " . __FILE__ . "<br>LINE: "; global $DB; $ELEMENT_ID = intval($ELEMENT_ID); $strSqlSearch = ""; if (is_array($arFilter)) { foreach ($arFilter as $key => $val) { if (strlen($val) <= 0 || $val == "NOT_REF") { continue; } $val = $DB->ForSql($val); $key = strtoupper($key); switch ($key) { case "ID": $arr = explode(",", $val); if (!empty($arr)) { $arr = array_map("intval", $arr); $str = implode(", ", $arr); $strSqlSearch .= " and E.ID in (" . $str . ")"; } break; case "TIMESTAMP_FROM": $strSqlSearch .= " and E.TIMESTAMP_X>=FROM_UNIXTIME('" . MkDateTime(FmtDate($val, "D.M.Y"), "d.m.Y") . "')"; break; case "TIMESTAMP_TO": $strSqlSearch .= " and E.TIMESTAMP_X<=FROM_UNIXTIME('" . MkDateTime(FmtDate($val, "D.M.Y") . " 23:59:59", "d.m.Y H:i:s") . "')"; break; case "MODIFIED_BY": case "MODIFIED_USER_ID": $strSqlSearch .= " and E.MODIFIED_BY='" . intval($val) . "'"; break; case "IBLOCK_ID": $strSqlSearch .= " and E.IBLOCK_ID='" . intval($val) . "'"; break; case "NAME": if ($val != "%%") { $strSqlSearch .= " and upper(E.NAME) like upper('" . $DB->ForSQL($val, 255) . "')"; } break; case "STATUS": case "STATUS_ID": $strSqlSearch .= " and E.WF_STATUS_ID='" . intval($val) . "'"; break; } } } if ($by == "s_id") { $strSqlOrder = "ORDER BY E.ID"; } elseif ($by == "s_timestamp") { $strSqlOrder = "ORDER BY E.TIMESTAMP_X"; } elseif ($by == "s_modified_by") { $strSqlOrder = "ORDER BY E.MODIFIED_BY"; } elseif ($by == "s_name") { $strSqlOrder = "ORDER BY E.NAME"; } elseif ($by == "s_status") { $strSqlOrder = "ORDER BY E.WF_STATUS_ID"; } else { $by = "s_id"; $strSqlOrder = "ORDER BY E.ID"; } if ($order != "asc") { $strSqlOrder .= " desc "; $order = "desc"; } $strSql = "\n\t\t\tSELECT\n\t\t\t\tE.*,\n\t\t\t\t" . $DB->DateToCharFunction("E.TIMESTAMP_X") . " TIMESTAMP_X,\n\t\t\t\tconcat('(', U.LOGIN, ') ', ifnull(U.NAME,''), ' ', ifnull(U.LAST_NAME,'')) USER_NAME,\n\t\t\t\tS.TITLE STATUS_TITLE\n\t\t\tFROM\n\t\t\t\tb_iblock_element E\n\t\t\t\tINNER JOIN b_workflow_status S on S.ID = E.WF_STATUS_ID\n\t\t\t\tLEFT JOIN b_user U ON U.ID = E.MODIFIED_BY\n\t\t\tWHERE\n\t\t\t\tE.WF_PARENT_ELEMENT_ID = " . $ELEMENT_ID . "\n\t\t\t\t" . $strSqlSearch . "\n\t\t\t" . $strSqlOrder . "\n\t\t"; $res = $DB->Query($strSql, false, $err_mess . __LINE__); $is_filtered = strlen($strSqlSearch) > 0; return $res; }
function CheckFilter($arFilter) { global $strError; $str = ""; $find_date_modify_1 = $arFilter["DATE_MODIFY_1"]; $find_date_modify_2 = $arFilter["DATE_MODIFY_2"]; if (strlen(trim($find_date_modify_1)) > 0 || strlen(trim($find_date_modify_2)) > 0) { $date_1_ok = false; $date1_stm = MkDateTime(ConvertDateTime($find_date_modify_1, "D.M.Y"), "d.m.Y"); $date2_stm = MkDateTime(ConvertDateTime($find_date_modify_2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (!$date1_stm && strlen(trim($find_date_modify_1)) > 0) { $str .= GetMessage("AD_ERROR_WRONG_DATE_MODIFY_FROM") . "<br>"; } else { $date_1_ok = true; } if (!$date2_stm && strlen(trim($find_date_modify_2)) > 0) { $str .= GetMessage("AD_ERROR_WRONG_DATE_MODIFY_TILL") . "<br>"; } elseif ($date_1_ok && $date2_stm <= $date1_stm && strlen($date2_stm) > 0) { $str .= GetMessage("AD_ERROR_FROM_TILL_DATE_MODIFY") . "<br>"; } } $strError .= $str; if (strlen($str) > 0) { return false; } else { return true; } }
/** * <p>Возвращает количество <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#search">поисковых фраз</a> за весь период ведения статистики, за последние 3 дня, а также за произвольный указанный интервал времени.</p> * * * @param string &$by = "s_today" Поле для сортировки. Возможные значения: <ul> <li> <b>s_phrase</b> - * поисковая фраза; </li> <li> <b>s_today</b> - количество поисковых фраз за * сегодня; </li> <li> <b>s_yesterday</b> - количество поисковых фраз за вчера; </li> * <li> <b>s_bef_yesterday</b> - количество поисковых фраз за позавчера; </li> <li> * <b>s_total</b> - суммарное количество поисковых фраз; </li> <li> <b>s_period</b> - * количество поисковых фраз за установленный период времени * <nobr>(<i>filter</i>[<b>DATE1</b>], <i>filter</i>[<b>DATE2</b>])</nobr>. </li> </ul> * * @param string &$order = "desc" Порядок сортировки. Возможные значения: <ul> <li> <b>asc</b> - по * возрастанию; </li> <li> <b>desc</b> - по убыванию. </li> </ul> * * @param array $filter = array() Массив для фильтрации результирующего списка. В массиве * допустимы следующие ключи: <ul> <li> <b>SITE_ID</b> - ID сайта для которого * необходимо получить статистику по поисковым фразам; </li> <li> <b>DATE1</b> * - начальная дата; </li> <li> <b>DATE2</b> - конечная дата. </li> </ul> * * @param bool &$is_filtered Флаг отфильтрованности списка поисковых фраз. Если значение * равно "true", то список был отфильтрован. * * @param mixed $limit = 10 Максимальное число записей результирующего списка. Если задано * число >0, то число записей будет ограничено, иначе ограничений не * будет. * * @return CDBResult * * <h4>Example</h4> * <pre> * <? * // получим дополнительные данные за декабрь 2007 года * $arFilter = array( * "DATE1" => "01.12.2007", * "DATE2" => "31.12.2007" * ); * * // получим список поисковых фраз и статистику по ним * $rs = CTraffic::GetPhraseList($by="s_today", * $order="desc", * $arFilter, * $is_filtered, * false); * while ($ar = $rs->Fetch()) * { * echo "поисковая фраза: ".$ar["PHRASE"]."<br>"; * echo "всего заходов с данной поисковой фразой: ". * $ar["TOTAL_PHRASES"]. * "<br>"; * echo "сегодня: ".$ar["TODAY_PHRASES"]."<br>"; * echo "вчера: ".$ar["YESTERDAY_PHRASES"]."<br>"; * echo "позавчера: ".$ar["B_YESTERDAY_PHRASES"]."<br>"; * echo "в течение декабря 2005 года: ". * $ar["PERIOD_PHRASES"]."<br>"; * } * ?> * </pre> * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/statistic/classes/cphrase/index.php">Класс "CPhrase"</a> </li> * <li> <a href="http://www.1c-bitrix.ru/user_help/statistic/stat_list.php">Отчет "Сводная * статистика"</a> </li> </ul> <a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/statistic/classes/ctraffic/getphraselist.php * @author Bitrix */ public static function GetPhraseList(&$s_by, &$s_order, $arFilter = array(), &$is_filtered, $limit = 10) { $err_mess = "File: " . __FILE__ . "<br>Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $strSqlSearch = ""; $site_id = $arFilter["SITE_ID"]; if (strlen($site_id) > 0 && $site_id != "NOT_REF") { $is_filtered = true; $strSqlSearch = " and SITE_ID = '" . $DB->ForSql($site_id, 2) . "' "; } $date1 = $arFilter["DATE1"]; $date2 = $arFilter["DATE2"]; $date_from = MkDateTime(ConvertDateTime($date1, "D.M.Y"), "d.m.Y"); $date_to = MkDateTime(ConvertDateTime($date2, "D.M.Y") . " 23:59", "d.m.Y H:i"); if (strlen($date1) > 0) { $date_filtered = $is_filtered = true; if (strlen($date2) > 0) { $strSqlPeriod = " sum(if(DATE_HIT<FROM_UNIXTIME('{$date_from}'),0, if(date_hit>FROM_UNIXTIME('{$date_to}'),0,1)))"; } else { $strSqlPeriod = " sum(if(DATE_HIT<FROM_UNIXTIME('{$date_from}'),0,1))"; } } elseif (strlen($date2) > 0) { $date_filtered = $is_filtered = true; $strSqlPeriod = " sum(if(DATE_HIT>FROM_UNIXTIME('{$date_to}'),0,1))"; } else { $date_filtered = false; $strSqlPeriod = ""; } if ($s_by == "s_phrase") { $strSqlOrder = " ORDER BY PHRASE "; } elseif ($s_by == "s_today") { $strSqlOrder = " ORDER BY TODAY_PHRASES "; } elseif ($s_by == "s_yesterday") { $strSqlOrder = " ORDER BY YESTERDAY_PHRASES "; } elseif ($s_by == "s_bef_yesterday") { $strSqlOrder = " ORDER BY B_YESTERDAY_PHRASES "; } elseif ($s_by == "s_total") { $strSqlOrder = " ORDER BY TOTAL_PHRASES "; } elseif ($s_by == "s_period" && $date_filtered) { $strSqlOrder = " ORDER BY PERIOD_PHRASES "; } else { $s_by = "s_today"; $strSqlOrder = " ORDER BY TODAY_PHRASES desc, YESTERDAY_PHRASES desc, B_YESTERDAY_PHRASES desc, TOTAL_PHRASES "; } if ($s_order != "asc") { $strSqlOrder .= " desc "; $s_order = "desc"; } $strSql = "\n\t\t\tSELECT\n\t\t\t\tPHRASE,\n\t\t\t\tcount('x') TOTAL_PHRASES,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_HIT)=0,1,0)) TODAY_PHRASES,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_HIT)=1,1,0)) YESTERDAY_PHRASES,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_HIT)=2,1,0)) B_YESTERDAY_PHRASES\n\t\t\t\t" . ($date_filtered ? ',' . $strSqlPeriod . ' PERIOD_PHRASES ' : '') . "\n\t\t\tFROM\n\t\t\t\tb_stat_phrase_list\n\t\t\tWHERE\n\t\t\t\t1=1\n\t\t\t\t" . $strSqlSearch . "\n\t\t\tGROUP BY\n\t\t\t\tPHRASE\n\t\t\t" . $strSqlOrder . "\n\t\t"; if (intval($limit) > 0) { $strSql .= " LIMIT " . intval($limit); } return $DB->Query($strSql, false, $err_mess . __LINE__); }