public static function Update($ID, $arFields) { global $DB, $USER; if ($ID <= 0) { return false; } $arFields['ID'] = $ID; $e = GetModuleEvents('timeman', 'OnBeforeTMEntryUpdate'); while ($a = $e->Fetch()) { if (false === ExecuteModuleEventEx($a, array($arFields))) { return false; } } if (!self::CheckFields('UPDATE', $arFields)) { return false; } $strUpdate = $DB->PrepareUpdate('b_timeman_entries', $arFields); $query = 'UPDATE b_timeman_entries SET ' . $strUpdate . ' WHERE ID=\'' . intval($ID) . '\''; $dbRes = $DB->Query($query); if ($dbRes) { if (isset($arFields['TASKS'])) { $DB->QueryBind($query, array('TASKS' => $arFields['TASKS'])); } if (is_array($arFields['REPORTS'])) { foreach ($arFields['REPORTS'] as $report) { $report['ENTRY_ID'] = $ID; $report['USER_ID'] = $USER->GetID(); // we need CURRENT user in this field CTimeManReport::Add($report); } } $e = GetModuleEvents('timeman', 'OnAfterTMEntryUpdate'); while ($a = $e->Fetch()) { ExecuteModuleEventEx($a, array($ID, $arFields)); } return $ID; } return false; }
public function SetReport($report, $report_ts, $entry_id = null) { global $USER, $APPLICATION; if ($last_entry = $this->_GetLastData()) { if ($entry_id && $entry_id != $last_entry['ID']) { $report_ts = 0; } $dbRes = CTimeManReport::GetList(array(), array('ENTRY_ID' => $last_entry['ID'], 'REPORT_TYPE' => 'REPORT')); if ($arRes = $dbRes->Fetch()) { $ID = $arRes['ID']; $current_report_ts = MakeTimeStamp($arRes['TIMESTAMP_X']); if ($current_report_ts > $report_ts) { return $arRes; } $arFields = array('REPORT' => $report); if (!CTimeManReport::Update($ID, $arFields)) { return false; } } else { $arFields = array('ENTRY_ID' => $last_entry['ID'], 'USER_ID' => $USER->GetID(), 'ACTIVE' => 'Y', 'REPORT_TYPE' => 'REPORT', 'REPORT' => $report); if (!($ID = CTimeManReport::Add($arFields))) { return false; } } $dbRes = CTimeManReport::GetByID($ID); return $dbRes->Fetch(); } else { $APPLICATION->ThrowException('No entry', 'SAVE_REPORT_NO_ENTRY'); } }