예제 #1
0
 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;
 }
예제 #2
0
 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');
     }
 }