require "../../includes/kspi.php"; // ================== // = handle request = // ================== switch ($axAction) { // ========================= // = record an event AGAIN = // ========================= case 'record': if (isset($kga['customer'])) { die; } if (get_rec_state($kga['usr']['usr_ID'])) { stopRecorder($kga['usr']['usr_ID']); } $zefData = zef_get_data($id); $zefData['in'] = time(); $zefData['out'] = 0; $zefData['diff'] = 0; // copied from check_zef_data and inverted assignments $zefData['pct_ID'] = $zefData['zef_pctID']; $zefData['evt_ID'] = $zefData['zef_evtID']; $zefData['zlocation'] = $zefData['zef_location']; $zefData['trackingnr'] = $zefData['zef_trackingnr']; $zefData['comment'] = $zefData['zef_comment']; $zefData['comment_type'] = $zefData['zef_comment_type']; $zefData['rate'] = $zefData['zef_rate']; $zefData['cleared'] = $zefData['zef_cleared']; $newZefId = zef_create_record($kga['usr']['usr_ID'], $zefData); $usrData = array(); $usrData['lastRecord'] = $newZefId;
/** * edit zef entry * * @param integer $id ID of record * @global array $kga kimai-global-array * @param integer $data array with new record data * @author th */ function zef_edit_record($id, $data) { global $kga, $conn; logfile(serialize($data)); $data = clean_data($data); $original_array = zef_get_data($id); $new_array = array(); foreach ($original_array as $key => $value) { if (isset($data[$key]) == true) { $new_array[$key] = $data[$key]; } else { $new_array[$key] = $original_array[$key]; } } logfile(serialize($new_array)); $values['zef_comment'] = MySQL::SQLValue($new_array['zef_comment']); $values['zef_location'] = MySQL::SQLValue($new_array['zef_location']); if ($new_array['zef_trackingnr'] == '') { $values['zef_trackingnr'] = 'NULL'; } else { $values['zef_trackingnr'] = MySQL::SQLValue($new_array['zef_trackingnr']); } $values['zef_pctID'] = MySQL::SQLValue($new_array['zef_pctID'], MySQL::SQLVALUE_NUMBER); $values['zef_evtID'] = MySQL::SQLValue($new_array['zef_evtID'], MySQL::SQLVALUE_NUMBER); $values['zef_comment_type'] = MySQL::SQLValue($new_array['zef_comment_type'], MySQL::SQLVALUE_NUMBER); $values['zef_in'] = MySQL::SQLValue($new_array['zef_in'], MySQL::SQLVALUE_NUMBER); $values['zef_out'] = MySQL::SQLValue($new_array['zef_out'], MySQL::SQLVALUE_NUMBER); $values['zef_time'] = MySQL::SQLValue($new_array['zef_time'], MySQL::SQLVALUE_NUMBER); $values['zef_rate'] = MySQL::SQLValue($new_array['zef_rate'], MySQL::SQLVALUE_NUMBER); $values['zef_cleared'] = MySQL::SQLValue($new_array['zef_cleared'] ? 1 : 0, MySQL::SQLVALUE_NUMBER); $filter['zef_ID'] = MySQL::SQLValue($id, MySQL::SQLVALUE_NUMBER); $table = $kga['server_prefix'] . "zef"; $query = MySQL::BuildSQLUpdate($table, $values, $filter); $success = true; if (!$conn->Query($query)) { $success = false; } if ($success) { if (!$conn->TransactionEnd()) { $conn->Kill(); } } else { if (!$conn->TransactionRollback()) { $conn->Kill(); } } return $success; // $data['pct_ID'] // $data['evt_ID'] // $data['comment'] // $data['comment_type'] // $data['erase'] // $data['in'] // $data['out'] // $data['diff'] // if wrong time values have been entered in the edit window // the following 3 variables arrive as zeros - like so: // $data['in'] = 0; // $data['out'] = 0; // $data['diff'] = 0; // in this case the record has to be edited WITHOUT setting new time values // @oleg: ein zef-eintrag muss auch ohne die zeiten aktualisierbar sein weil die ggf. bei der prüfung durchfallen. }
/** * edit zef entry * * @param integer $id ID of record * @global array $kga kimai-global-array * @param integer $data array with new record data * @author th */ function zef_edit_record($id, $data) { global $kga, $pdo_conn; $p = $kga['server_prefix']; $original_array = zef_get_data($id); $new_array = array(); foreach ($original_array as $key => $value) { if (isset($data[$key]) == true) { $new_array[$key] = $data[$key]; } else { $new_array[$key] = $original_array[$key]; } } $pdo_query = $pdo_conn->prepare("UPDATE {$p}zef SET\n zef_pctID = ?,\n zef_evtID = ?,\n zef_location = ?,\n zef_trackingnr = ?,\n zef_comment = ?,\n zef_comment_type = ?,\n zef_in = ?,\n zef_out = ?,\n zef_time = ?,\n zef_rate = ?,\n zef_cleared= ?\n WHERE zef_ID = ?;"); $result = $pdo_query->execute(array((int) $new_array['zef_pctID'], (int) $new_array['zef_evtID'], $new_array['zef_location'], $new_array['zef_trackingnr'] == '' ? null : $new_array['zef_trackingnr'], $new_array['zef_comment'], (int) $new_array['zef_comment_type'], (int) $new_array['zef_in'], (int) $new_array['zef_out'], (int) $new_array['zef_time'], (int) $new_array['zef_rate'], (int) $new_array['zef_cleared'], $id)); if ($result == false) { $err = $pdo_query->errorInfo(); error_log("ERROR: " . $err[2]); return $result; } logfile("editrecord:result:" . $result); // $data['pct_ID'] // $data['evt_ID'] // $data['comment'] // $data['comment_type'] // $data['erase'] // $data['in'] // $data['out'] // $data['diff'] // if wrong time values have been entered in the edit window // the following 3 variables arrive as zeros - like so: // $data['in'] = 0; // $data['out'] = 0; // $data['diff'] = 0; // in this case the record has to be edited WITHOUT setting new time values // @oleg: ein zef-eintrag muss auch ohne die zeiten aktualisierbar sein weil die ggf. bei der prüfung durchfallen. }