Пример #1
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;

}
Пример #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($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;
}
Пример #4
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;
 }
Пример #5
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;
}
Пример #6
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;
}
Пример #7
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;
    }
}
Пример #8
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;
}
Пример #9
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;
}
Пример #10
0
	/**
	 * <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;
	}
Пример #11
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;
 }
Пример #12
0
 public static function SetMaxDayTime($date)
 {
     return ConvertTimeStamp(MakeTimeStamp(FmtDate($date, 'YYYY-MM-DD') . ' 23:59:59', 'YYYY-MM-DD HH:MI:SS'), 'FULL');
 }
Пример #13
0
 /**
  * <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;
 }
Пример #14
0
 //END BUYERS BASKET
 //BUYERS VIEWED PRODUCT
 $sTableID_tab5 = "t_stat_list_tab5";
 $oSort_tab5 = new CAdminSorting($sTableID_tab5);
 $lAdmin_tab5 = new CAdminList($sTableID_tab5, $oSort_tab5);
 //FILTER VIEWED
 $arFilterFields = array("filter_viewed_date_visit", "filter_date_visit_from", "filter_date_visit_to", "filter_viewed_lid");
 $lAdmin_tab5->InitFilter($arFilterFields);
 $arFilter = array();
 $arFuserItems = CSaleUser::GetList(array("USER_ID" => $ID));
 $arFilter["FUSER_ID"] = $arFuserItems["ID"];
 if (strlen($filter_viewed_lid) > 0) {
     $arFilter["LID"] = trim($filter_viewed_lid);
 }
 if (strlen(trim($filter_date_visit_from)) > 0) {
     $arFilter["DATE_FROM"] = FmtDate($filter_date_visit_from, "D.M.Y");
 }
 if (strlen(trim($filter_date_visit_to)) > 0) {
     if ($arDate = ParseDateTime($filter_date_visit_to, CSite::GetDateFormat("FULL", SITE_ID))) {
         if (StrLen($filter_date_visit_to) < 11) {
             $arDate["HH"] = 23;
             $arDate["MI"] = 59;
             $arDate["SS"] = 59;
         }
         $filter_date_visit_to = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]));
         $arFilter["DATE_TO"] = $filter_date_visit_to;
     } else {
         $filter_date_visit_to = "";
     }
 }
 if (strlen(trim($filter_date_visit_from_DAYS_TO_BACK)) > 0) {
Пример #15
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;
 }
Пример #16
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;
}
Пример #17
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;
	}
Пример #18
0
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"));
}
Пример #19
0
 public static function GetList($aSort = array(), $arFilter = array())
 {
     $err_mess = CFavorites::err_mess() . "<br>Function: GetList<br>Line: ";
     global $DB, $USER;
     $arSqlSearch = array();
     $strSqlSearch = "";
     if (is_array($arFilter)) {
         foreach ($arFilter as $key => $val) {
             if (strlen($val) <= 0 || $val == "NOT_REF") {
                 continue;
             }
             switch (strtoupper($key)) {
                 case "ID":
                     $arSqlSearch[] = GetFilterQuery("F.ID", $val, "N");
                     break;
                 case "USER_ID":
                     $arSqlSearch[] = "F.USER_ID = " . intval($val);
                     break;
                 case "MENU_FOR_USER":
                     $arSqlSearch[] = "(F.USER_ID=" . intval($val) . " OR F.COMMON='Y')";
                     break;
                 case "COMMON":
                     $arSqlSearch[] = "F.COMMON = '" . $DB->ForSql($val, 1) . "'";
                     break;
                 case "LANGUAGE_ID":
                     $arSqlSearch[] = "F.LANGUAGE_ID = '" . $DB->ForSql($val, 2) . "'";
                     break;
                 case "DATE1":
                     $arSqlSearch[] = "F.TIMESTAMP_X >= FROM_UNIXTIME('" . MkDateTime(FmtDate($val, "D.M.Y"), "d.m.Y") . "')";
                     break;
                 case "DATE2":
                     $arSqlSearch[] = "F.TIMESTAMP_X <= FROM_UNIXTIME('" . MkDateTime(FmtDate($val, "D.M.Y") . " 23:59:59", "d.m.Y") . "')";
                     break;
                 case "MODIFIED":
                     $arSqlSearch[] = GetFilterQuery("UM.ID, UM.LOGIN, UM.LAST_NAME, UM.NAME", $val);
                     break;
                 case "MODIFIED_ID":
                     $arSqlSearch[] = "F.MODIFIED_BY = " . intval($val);
                     break;
                 case "CREATED":
                     $arSqlSearch[] = GetFilterQuery("UC.ID, UC.LOGIN, UC.LAST_NAME, UC.NAME", $val);
                     break;
                 case "CREATED_ID":
                     $arSqlSearch[] = "F.CREATED_BY = " . intval($val);
                     break;
                 case "KEYWORDS":
                     $arSqlSearch[] = GetFilterQuery("F.COMMENTS", $val);
                     break;
                 case "NAME":
                     $arSqlSearch[] = GetFilterQuery("F.NAME", $val);
                     break;
                 case "URL":
                     $arSqlSearch[] = GetFilterQuery("F.URL", $val);
                     break;
                 case "MODULE_ID":
                     $arSqlSearch[] = "F.MODULE_ID='" . $DB->ForSql($val, 50) . "'";
                     break;
                 case "MENU_ID":
                     $arSqlSearch[] = "F.MENU_ID='" . $DB->ForSql($val, 255) . "'";
                     break;
             }
         }
     }
     $sOrder = "";
     foreach ($aSort as $key => $val) {
         $ord = strtoupper($val) != "ASC" ? "DESC" : "ASC";
         switch (strtoupper($key)) {
             case "ID":
                 $sOrder .= ", F.ID " . $ord;
                 break;
             case "LANGUAGE_ID":
                 $sOrder .= ", F.LANGUAGE_ID " . $ord;
                 break;
             case "COMMON":
                 $sOrder .= ", F.COMMON " . $ord;
                 break;
             case "USER_ID":
                 $sOrder .= ", F.USER_ID " . $ord;
                 break;
             case "TIMESTAMP_X":
                 $sOrder .= ", F.TIMESTAMP_X " . $ord;
                 break;
             case "MODIFIED_BY":
                 $sOrder .= ", F.MODIFIED_BY " . $ord;
                 break;
             case "NAME":
                 $sOrder .= ", F.NAME " . $ord;
                 break;
             case "URL":
                 $sOrder .= ", F.URL " . $ord;
                 break;
             case "SORT":
                 $sOrder .= ", F.C_SORT " . $ord;
                 break;
             case "MODULE_ID":
                 $sOrder .= ", F.MODULE_ID " . $ord;
                 break;
             case "MENU_ID":
                 $sOrder .= ", F.MENU_ID " . $ord;
                 break;
         }
     }
     if (strlen($sOrder) <= 0) {
         $sOrder = "F.ID DESC";
     }
     $strSqlOrder = " ORDER BY " . TrimEx($sOrder, ",");
     $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tF.ID, F.C_SORT, F.NAME, F.MENU_ID, F.URL, F.MODIFIED_BY, F.CREATED_BY, F.MODULE_ID, F.LANGUAGE_ID,\n\t\t\t\tF.COMMENTS, F.COMMON, F.USER_ID, UM.LOGIN AS M_LOGIN, UC.LOGIN as C_LOGIN, U.LOGIN, F.CODE_ID,\n\t\t\t\t" . $DB->DateToCharFunction("F.TIMESTAMP_X") . "\tTIMESTAMP_X,\n\t\t\t\t" . $DB->DateToCharFunction("F.DATE_CREATE") . "\tDATE_CREATE,\n\t\t\t\t" . $DB->Concat($DB->IsNull("UM.NAME", "''"), "' '", $DB->IsNull("UM.LAST_NAME", "''")) . " as M_USER_NAME,\n\t\t\t\t" . $DB->Concat($DB->IsNull("UC.NAME", "''"), "' '", $DB->IsNull("UC.LAST_NAME", "''")) . " as C_USER_NAME,\n\t\t\t\t" . $DB->Concat($DB->IsNull("U.NAME", "''"), "' '", $DB->IsNull("U.LAST_NAME", "''")) . " as USER_NAME\n\t\t\tFROM\n\t\t\t\tb_favorite F\n\t\t\t\tLEFT JOIN b_user UM ON (UM.ID = F.MODIFIED_BY)\n\t\t\t\tLEFT JOIN b_user UC ON (UC.ID = F.CREATED_BY)\n\t\t\t\tLEFT JOIN b_user U ON (U.ID = F.USER_ID)\n\t\t\tWHERE\n\t\t\t" . $strSqlSearch . "\n\t\t\t" . $strSqlOrder;
     $res = $DB->Query($strSql, false, $err_mess . __LINE__);
     return $res;
 }
Пример #20
0
 function GetList(&$by, &$order, $arFilter = array())
 {
     $arSearch = array();
     $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";
                     if ($match == 'Y') {
                         $val = '%' . $val . '%';
                     }
                     $arSearch['%=' . $key] = $val;
                     break;
                 case "TYPE":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     if ($match == 'Y') {
                         $val = '%' . $val . '%';
                     }
                     $arSearch[] = array('LOGIC' => 'OR', 'EVENT_NAME' => $val, 'EVENT_MESSAGE_TYPE.NAME' => $val);
                     break;
                 case "EVENT_NAME":
                 case "TYPE_ID":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N";
                     if ($match == 'Y') {
                         $val = '%' . $val . '%';
                     }
                     $arSearch['%=EVENT_NAME'] = $val;
                     break;
                 case "TIMESTAMP_1":
                     $arSqlSearch[] = "M.TIMESTAMP_X>=TO_DATE('" . FmtDate($val, "D.M.Y") . " 00:00:00','dd.mm.yyyy hh24:mi:ss')";
                     $arSearch['>=TIMESTAMP_X'] = $val . " 00:00:00";
                     break;
                 case "TIMESTAMP_2":
                     $arSqlSearch[] = "M.TIMESTAMP_X<=TO_DATE('" . FmtDate($val, "D.M.Y") . " 23:59:59','dd.mm.yyyy hh24:mi:ss')";
                     $arSearch['<=TIMESTAMP_X'] = $val . " 23:59:59";
                     break;
                 case "LID":
                 case "LANG":
                 case "SITE_ID":
                     $bIsLang = true;
                     $arSearch["=SITE_ID"] = $val;
                     break;
                 case "ACTIVE":
                     $arSearch['=' . $key] = $val;
                     break;
                 case "FROM":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     if ($match == 'Y') {
                         $val = '%' . $val . '%';
                     }
                     $arSearch['%=EMAIL_FROM'] = $val;
                     break;
                 case "TO":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     if ($match == 'Y') {
                         $val = '%' . $val . '%';
                     }
                     $arSearch['%=EMAIL_TO'] = $val;
                     break;
                 case "BCC":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     if ($match == 'Y') {
                         $val = '%' . $val . '%';
                     }
                     $arSearch['%=' . $key] = $val;
                     break;
                 case "SUBJECT":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     if ($match == 'Y') {
                         $val = '%' . $val . '%';
                     }
                     $arSearch['%=' . $key] = $val;
                     break;
                 case "BODY_TYPE":
                     $arSearch[$key] = $val == "text" ? 'text' : 'html';
                     break;
                 case "BODY":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y";
                     if ($match == 'Y') {
                         $val = '%' . $val . '%';
                     }
                     $arSearch['%=MESSAGE'] = $val;
                     break;
             }
         }
     }
     if ($by == "id") {
         $strSqlOrder = "ID";
     } elseif ($by == "active") {
         $strSqlOrder = "ACTIVE";
     } elseif ($by == "event_name") {
         $strSqlOrder = "EVENT_NAME";
     } elseif ($by == "from") {
         $strSqlOrder = "EMAIL_FROM";
     } elseif ($by == "to") {
         $strSqlOrder = "EMAIL_TO";
     } elseif ($by == "bcc") {
         $strSqlOrder = "BCC";
     } elseif ($by == "body_type") {
         $strSqlOrder = "BODY_TYPE";
     } elseif ($by == "subject") {
         $strSqlOrder = "SUBJECT";
     } else {
         $strSqlOrder = "ID";
         $by = "id";
     }
     if ($order != "asc") {
         $strSqlOrderBy = "DESC";
         $order = "desc";
     } else {
         $strSqlOrderBy = "ASC";
         $order = "asc";
     }
     $arSelect = array('*', 'EVENT_MESSAGE_TYPE_ID' => 'EVENT_MESSAGE_TYPE.ID', 'EVENT_MESSAGE_TYPE_NAME' => 'EVENT_MESSAGE_TYPE.NAME', 'EVENT_MESSAGE_TYPE_EVENT_NAME' => 'EVENT_MESSAGE_TYPE.EVENT_NAME');
     if ($bIsLang) {
         $arSelect['SITE_ID'] = 'EVENT_MESSAGE_SITE.SITE_ID';
     } else {
         $arSelect['SITE_ID'] = 'LID';
     }
     $resultDb = Mail\Internal\EventMessageTable::getList(array('select' => $arSelect, 'filter' => $arSearch, 'order' => array($strSqlOrder => $strSqlOrderBy), 'runtime' => array('EVENT_MESSAGE_TYPE' => array('data_type' => 'Bitrix\\Main\\Mail\\Internal\\EventType', 'reference' => array('=this.EVENT_NAME' => 'ref.EVENT_NAME', '=ref.LID' => new \Bitrix\Main\DB\SqlExpression('?', LANGUAGE_ID))))));
     $resultDb->addFetchDataModifier(array('CEventMessage', 'GetListDataModifier'));
     $res = new CDBResult($resultDb);
     $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
     $res->is_filtered = IsFiltered($strSqlSearch);
     return $res;
 }
Пример #21
0
}
if (!empty($find_last_order_date_2)) {
    if ($arDate = ParseDateTime($find_last_order_date_2, CSite::GetDateFormat("FULL", SITE_ID))) {
        if (StrLen($find_last_order_date_2) < 11) {
            $arDate["HH"] = 23;
            $arDate["MI"] = 59;
            $arDate["SS"] = 59;
        }
        $find_last_order_date_2 = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]));
        $arFilter["<=LAST_ORDER_DATE"] = $find_last_order_date_2;
    } else {
        $find_last_order_date_2 = "";
    }
}
if (!empty($filter_register_date_1)) {
    $date1_stm = MkDateTime(FmtDate($filter_register_date_1, "D.M.Y"), "d.m.Y");
    if ($date1_stm && strlen(trim($filter_register_date_1)) > 0) {
        $arFilter[">=DATE_REGISTER"] = trim($filter_register_date_1);
    }
}
if (!empty($filter_register_date_2)) {
    if ($arDate = ParseDateTime($filter_register_date_2, CSite::GetDateFormat("FULL", SITE_ID))) {
        if (StrLen($filter_register_date_2) < 11) {
            $arDate["HH"] = 23;
            $arDate["MI"] = 59;
            $arDate["SS"] = 59;
        }
        $filter_register_date_2 = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]));
        $arFilter["<=DATE_REGISTER"] = $filter_register_date_2;
    } else {
        $filter_register_date_2 = "";
Пример #22
0
if ($iH + $iI + $iS > 0) {
    $dtformat = "FULL";
} else {
    $dtformat = "SHORT";
}
$aDate = ParseDate(FmtDate($date, "D.M.Y"), "dmy");
if (is_array($aDate) && $aDate[2] > 1971 && $aDate[2] < 2037) {
    //unix 32-bit timestamp
    $currDate = mktime($iH, $iI, $iS, $aDate[1], $aDate[0], $aDate[2]);
} else {
    $currDate = time();
}
$y1 = intval(date("Y", $currDate));
$m1 = intval(date("n", $currDate));
$d1 = intval(date("j", $currDate));
$aInitDate = ParseDate(FmtDate($initdate, "D.M.Y"), "dmy");
if (is_array($aInitDate) && $aInitDate[2] > 1971 && $aInitDate[2] < 2037) {
    $initDate = mktime($iH, $iI, $iS, $aInitDate[1], $aInitDate[0], $aInitDate[2]);
    $init_y = intval(date("Y", $initDate));
    $init_m = intval(date("n", $initDate));
    $init_d = intval(date("j", $initDate));
} else {
    $init_y = $init_m = $init_d = 0;
}
$today = time();
$today_y = intval(date("Y", $today));
$today_m = intval(date("n", $today));
$today_d = intval(date("j", $today));
$sParam = DeleteParam(array("date"));
if ($sParam != "") {
    $sParam = "&amp;" . $sParam;