Your IP : 3.148.107.92


Current Path : /var/www/axolotl/data/www/msk.axolotls.ru/bitrix/modules/timeman/classes/general/
Upload File :
Current File : /var/www/axolotl/data/www/msk.axolotls.ru/bitrix/modules/timeman/classes/general/timeman_report.php

<?
abstract class CAllTimeManReport
{
	public static function CheckFields($action, &$arFields)
	{
		global $DB, $USER;

		if ($action == 'ADD')
		{
			if (!$arFields['ENTRY_ID'])
				return false;

			if (!$arFields['USER_ID'])
				$arFields['USER_ID'] = $USER->GetID();
		}

		if (isset($arFields['REPORT']))
			$arFields['REPORT'] = trim($arFields['REPORT']);

		if (isset($arFields['ACTIVE']))
			$arFields['ACTIVE'] = $arFields['ACTIVE'] == 'N' ? 'N' : 'Y';

		unset($arFields['TIMESTAMP_X']);

		if ($action == 'UPDATE')
			$arFields['~TIMESTAMP_X'] = $DB->GetNowFunction();

		return true;
	}

	/**
	 * @deprecated use \Bitrix\Timeman\Model\Worktime\Report\WorktimeReportTable
	 */
	public static function Add($arFields)
	{
		global $DB;

		$e = GetModuleEvents('timeman', 'OnBeforeTMReportAdd');
		while ($a = $e->Fetch())
		{
			if (false === ExecuteModuleEventEx($a, array($arFields)))
				return false;
		}

		if (!self::CheckFields('ADD', $arFields))
			return false;

		if ($ID = $DB->Add('b_timeman_reports', $arFields, array('REPORT')))
		{
			$arFields['ID'] = $ID;

			$e = GetModuleEvents('timeman', 'OnAfterTMReportAdd');
			while ($a = $e->Fetch())
				ExecuteModuleEventEx($a, array($arFields));
		}

		return $ID;
	}

	/**
	 * @deprecated use \Bitrix\Timeman\Model\Worktime\Report\WorktimeReportTable
	 */
	public static function Update($ID, $arFields)
	{
		global $DB;

		$e = GetModuleEvents('timeman', 'OnBeforeTMReportUpdate');
		while ($a = $e->Fetch())
		{
			if (false === ExecuteModuleEventEx($a, array($arFields)))
				return false;
		}

		if (!self::CheckFields('UPDATE', $arFields))
			return false;

		$strUpdate = $DB->PrepareUpdate('b_timeman_reports', $arFields);

		$query = 'UPDATE b_timeman_reports SET '.$strUpdate.' WHERE ID=\''.intval($ID).'\'';

		$arBinds = array();
		if(isset($arFields['REPORT']))
		{
			$arBinds['REPORT'] = $arFields['REPORT'];
		}

		if (($dbRes = $DB->QueryBind($query, $arBinds)) && ($dbRes->AffectedRowsCount() > 0))
		{
			$e = GetModuleEvents('timeman', 'OnAfterTMReportUpdate');
			while ($a = $e->Fetch())
				ExecuteModuleEventEx($a, array($ID, $arFields));

			return $ID;
		}

		return false;
	}

	public static function GetByID($ID)
	{
		return self::GetList(array(), array('ID' => $ID));
	}

	public static function GetList($arOrder = array(), $arFilter = array())
	{
		global $DB;

		$arFields = array(
			"ID" => array("FIELD" => "R.ID", "TYPE" => "int"),
			"TIMESTAMP_X" => array("FIELD" => "R.TIMESTAMP_X", "TYPE" => "datetime"),
			"ENTRY_ID" => array("FIELD" => "R.ENTRY_ID", "TYPE" => "int"),
			"USER_ID" => array("FIELD" => "R.USER_ID", "TYPE" => "int"),
			"ACTIVE" => array("FIELD" => "R.ACTIVE", "TYPE" => "string"),
			"REPORT_TYPE" => array("FIELD" => "R.REPORT_TYPE", "TYPE" => "string"),
			"REPORT" => array("FIELD" => "R.REPORT", "TYPE" => "string"),
		);

		$strSql = '
SELECT R.*, '.$DB->DateToCharFunction("R.TIMESTAMP_X", "FULL").' AS TIMESTAMP_X
FROM b_timeman_reports R
WHERE 1=1';

		foreach ($arFilter as $fld => $val)
		{
			$fld = ToUpper($fld);

			if ($arFields[$fld])
			{
				if ($arFields[$fld]['TYPE'] == 'int')
					$val = intval($val);
				else
					$val = $DB->ForSQL($val);

				$strSql .= ' AND ('.$arFields[$fld]['FIELD'].'=\''.$val.'\')';
			}
		}

		$strOrder = '';
		foreach ($arOrder as $fld => $dir)
		{
			$fld = ToUpper($fld);

			if ($arFields[$fld])
			{
				$strOrder .= ($strOrder == '' ? '' : ', ')
					.$arFields[$fld]['FIELD'].' '.(ToUpper($dir) == 'DESC' ? 'DESC' : 'ASC');
			}
		}

		if ($strOrder <> '')
		{
			$strSql .= ' ORDER BY '.$strOrder;
		}

		return ($DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__));
	}

	public static function Reopen($ENTRY_ID)
	{
		global $DB;

		$query = 'DELETE FROM b_timeman_reports WHERE ENTRY_ID=\''.intval($ENTRY_ID).'\' AND (REPORT_TYPE=\'ERR_CLOSE\')';

		return $DB->Query($query);
	}

	public static function Approve($ENTRY_ID)
	{
		global $DB, $USER;

		$query = 'UPDATE b_timeman_reports SET TIMESTAMP_X='.$DB->GetNowFunction().', ACTIVE=\'N\', USER_ID=\''.$USER->GetID().'\' WHERE ENTRY_ID=\''.intval($ENTRY_ID).'\' AND (REPORT_TYPE=\'ERR_OPEN\' OR REPORT_TYPE=\'ERR_CLOSE\' OR REPORT_TYPE=\'ERR_DURATION\')';

		return $DB->Query($query);
	}
}
?>