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;
    }
}
예제 #2
0
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;
}
예제 #3
0
 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;
 }
예제 #4
0
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;
}
예제 #5
0
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;
}
예제 #6
0
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;

}
예제 #7
0
 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__);
         }
     }
 }
예제 #8
0
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;
}
예제 #9
0
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;
}
예제 #10
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;
}
예제 #11
0
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;
    }
}
예제 #12
0
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;
}
예제 #13
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;
}
예제 #14
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;
}
예제 #15
0
파일: user.php 프로젝트: rasuldev/torino
 /**
  * <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>
  * &lt;?
  * $filter = Array
  * (
  *     "ID"             =&gt; "1 | 2",
  *     "TIMESTAMP_1"    =&gt; "04.02.2004", // в формате текущего сайта
  *     "TIMESTAMP_2"    =&gt; "04.02.2005",
  *     "ACTIVE"         =&gt; "Y",
  *     "NAME"           =&gt; "Техподдержка",
  *     "DESCRITION"     =&gt; "специальная | поддержка",
  *     "USERS_1"        =&gt; "2", // от 2 пользователей
  *     "USERS_2"        =&gt; "10" // до 10 пользователей
  * );
  * $rsGroups = <b>CGroup::GetList</b>(($by="c_sort"), ($order="desc"), $filter); // выбираем группы
  * $is_filtered = $rsGroups-&gt;is_filtered; // отфильтрована ли выборка ?
  * $rsGroups-&gt;NavStart(50); // разбиваем постранично по 50 записей
  * echo $rsGroups-&gt;NavPrint(GetMessage("PAGES")); // печатаем постраничную навигацию
  * while($rsGroups-&gt;NavNext(true, "f_")) :
  * 	echo "[".$f_ID."] ".$f_NAME." ".$f_DESCRIPTION."&lt;br&gt;";	
  * endwhile;
  * ?&gt;
  * 
  * Фильтровать можно по полю "STRING_ID" - символьному идентификатору группы. Например:
  * 
  * // Возвращает группу по символьному идентификатору
  * function GetGroupByCode ($code)
  * {
  *    $rsGroups = CGroup::GetList ($by = "c_sort", $order = "asc", Array ("STRING_ID" =&gt; $code));
  *    return $rsGroups-&gt;Fetch();
  * } 
  * 
  * $rsGroups = CGroup::GetList($by = "c_sort", $order = "asc", array("STRING_ID"=&gt;'groupe code|groupe code|groupe code'));
  * if(intval($rsGroups-&gt;SelectedRowsCount()) &gt; 0)
  * {
  *    while($arGroups = $rsGroups-&gt;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;
 }
예제 #16
0
        } 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);
    }
예제 #17
0
파일: img.php 프로젝트: DarneoStudio/bitrix
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;
}
예제 #18
0
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;
}
예제 #19
0
파일: event.php 프로젝트: ASDAFF/bxApiDocs
	/**
	 * <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("фильтруемое поле"=&gt;"значение" [, ...]), может
	 * принимать значения: <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>
	 * &lt;?
	 * $arFilter = Array(
	 *     "ID"            =&gt; "12 | 134",
	 *     "TYPE"          =&gt; "контракт &amp; рекл",
	 *     "TYPE_ID"       =&gt; "ADV_BANNER | ADV_CONTRACT",
	 *     "TIMESTAMP_1"   =&gt; "12.11.2001",
	 *     "TIMESTAMP_2"   =&gt; "12.11.2005",
	 *     "SITE_ID"       =&gt; "ru | en",
	 *     "ACTIVE"        =&gt; "Y",
	 *     "FROM"          =&gt; "bitrixsoft.ru",
	 *     "TO"            =&gt; "#TO#",
	 *     "BCC"           =&gt; "admin",
	 *     "SUBJECT"       =&gt; "конктракт",
	 *     "BODY_TYPE"     =&gt; "text",
	 *     "BODY"          =&gt; "auto"
	 *     );
	 * $rsMess = <b>CEventMessage::GetList</b>($by="site_id", $order="desc", $arFilter);
	 * $is_filtered = $rsMess-&gt;is_filtered;
	 * ?&gt;
	 * </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;
	}
예제 #20
0
 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;
 }
예제 #21
0
//************************************!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));
예제 #22
0
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;
}
예제 #23
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"));
예제 #24
0
	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;
	}
예제 #25
0
파일: tools.php 프로젝트: nProfessor/Mytb
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"));
}
예제 #26
0
 /**
  * <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>
  * &lt;?
  * // отфильтруем данные только для поисковой системы #20 и #21
  * // а также получим дополнительные данные на декабрь 2005 года
  * $arFilter = array(
  *     "ID"           =&gt; "20 | 21",
  *     "DATE1_PERIOD" =&gt; "01.12.2005",
  *     "DATE2_PERIOD" =&gt; "31.12.2005",
  *     );
  * 
  * // получим список записей
  * $rs = <b>CSearcher::GetList</b>(
  *     ($by = "s_today_hits"), 
  *     ($order = "desc"), 
  *     $arFilter, 
  *     $is_filtered
  *     );
  * 
  * // выведем все записи
  * while ($ar = $rs-&gt;Fetch())
  * {
  *     echo "&lt;pre&gt;"; print_r($ar); echo "&lt;/pre&gt;";    
  * }
  * ?&gt;
  * </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;
 }
예제 #27
0
 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;
 }
예제 #28
0
 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;
 }
예제 #29
0
 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;
     }
 }
예제 #30
0
 /**
  * <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 Максимальное число записей результирующего списка. Если задано
  * число &gt;0, то число записей будет ограничено, иначе ограничений не
  * будет.
  *
  * @return CDBResult 
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // получим дополнительные данные за декабрь 2007 года
  * $arFilter = array(
  *     "DATE1" =&gt; "01.12.2007",
  *     "DATE2" =&gt; "31.12.2007"
  *     );
  * 
  * // получим список поисковых фраз и статистику по ним
  * $rs = CTraffic::GetPhraseList($by="s_today", 
  *                               $order="desc", 
  *                               $arFilter, 
  *                               $is_filtered, 
  *                               false);
  * while ($ar = $rs-&gt;Fetch())
  * {
  *     echo "поисковая фраза: ".$ar["PHRASE"]."&lt;br&gt;";
  *     echo "всего заходов с данной поисковой фразой: ".
  *          $ar["TOTAL_PHRASES"].
  *          "&lt;br&gt;";
  *     echo "сегодня: ".$ar["TODAY_PHRASES"]."&lt;br&gt;";
  *     echo "вчера: ".$ar["YESTERDAY_PHRASES"]."&lt;br&gt;";
  *     echo "позавчера: ".$ar["B_YESTERDAY_PHRASES"]."&lt;br&gt;";
  *     echo "в течение декабря 2005 года: ".
  *          $ar["PERIOD_PHRASES"]."&lt;br&gt;";
  * }
  * ?&gt;
  * </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__);
 }