<?php /* $Id: change.php,v 1.13 2004/09/28 22:35:22 mmr Exp $ */ $disable_etd_dt = false; $colspan = 3; // Checking if that is the first time if (empty($reg_data['leg_etd_dt']) || empty($reg_data['leg_etd_dt']['year'])) { $reg_data['leg_etd_dt'] = b1n_formatDateHourFromDb($reg_data['leg_keeptrack_dt']); } // Checking if last leg has groundtime $query = "\n SELECT\n leg_id as last_leg_id,\n leg_groundtime_i IS NOT NULL AS have_groundtime\n FROM\n \"leg\"\n WHERE\n leg_keeptrack_dt < '" . b1n_inBd(b1n_formatDateHour($reg_data['leg_etd_dt'])) . "'\n ORDER BY\n leg_keeptrack_dt DESC"; $rs = $sql->singleQuery($query); if ($rs && is_array($rs)) { $reg_data['last_leg_id'] = $rs['last_leg_id']; if ($rs['have_groundtime'] == 't') { // Yes, it has, disable etd_dt select box $disable_etd_dt = true; } } else { // Prolly very first leg, so, ETD is mandatory $reg_config['ETD']['mand'] = true; } // Seeing if we have to check for leg similarity if ($action0 == 'similarleg' && b1n_checkNumeric($reg_data['apt_id_depart'], true) && b1n_checkNumeric($reg_data['apt_id_arrive'], true)) { $aux = b1n_regDefaultLegSearchSimilar($sql, $reg_data['apt_id_depart'], $reg_data['apt_id_arrive']); if ($aux) { list($reg_data['leg_ete_i'], $reg_data['leg_distance'], $reg_data['leg_fuel']) = explode('|', $aux); unset($aux); if ($reg_data['leg_fuel'] === 0) { $reg_data['leg_fuel'] = ''; }
function b1n_regCheckLeg($sql, &$ret_msgs, &$reg_data, $reg_config) { $ret = b1n_regCheck($sql, $ret_msgs, $reg_data, $reg_config); // Checking CrewMembers if ($ret) { $ret = b1n_regCheckLegCmb($sql, $ret_msgs, $reg_data); } if ($ret) { $ret = false; // Do we have a valid ETD? if (b1n_checkDateHour($reg_data['leg_etd_dt']["month"], $reg_data['leg_etd_dt']["day"], $reg_data['leg_etd_dt']["year"], $reg_data['leg_etd_dt']["hour"], $reg_data['leg_etd_dt']["min"], true)) { // Yes, we do, use it as KeepTrack $reg_data['leg_keeptrack_dt'] = b1n_formatDateHour($reg_data['leg_etd_dt']); $ret = true; } elseif (!empty($reg_data['last_leg_id']) && b1n_checkNumeric($reg_data['last_leg_id'])) { // The KeepTrack of the current leg is equal to the KeepTrack of the last Leg, Plus its ETE, Plus its groundtime. $rs = $sql->singleQuery("\n SELECT\n leg_keeptrack_dt::timestamp +\n CASE WHEN (leg_ete_i IS NULL) THEN\n '00:00'::interval\n ELSE\n leg_ete_i::interval\n END +\n CASE WHEN (leg_groundtime_i IS NULL) THEN\n '00:00'::interval\n ELSE\n leg_groundtime_i::interval\n END AS leg_keeptrack_dt\n FROM\n \"leg\"\n WHERE\n leg_id = '" . b1n_inBd($reg_data['last_leg_id']) . "'"); if ($rs && is_array($rs)) { $reg_data['leg_keeptrack_dt'] = $rs['leg_keeptrack_dt']; $ret = true; } else { b1n_retMsg($ret_msgs, b1n_FIZZLES, 'Could not keep track of last leg, something really nasty happened here.'); } } else { b1n_retMsg($ret_msgs, b1n_FIZZLES, 'Could not keep track of last leg. Probably this is the very first leg, so, you HAVE to fill the <b>ETD</b> field.'); } } return $ret; }
function b1n_regChange($sql, &$ret_msgs, $reg_data, $reg_config, $table, $msg, $module_function = "") { $rs = $sql->query("BEGIN TRANSACTION"); if ($rs) { $query = "SELECT * FROM \"" . $table . "\" WHERE " . $reg_config["ID"]["db"] . " = '" . b1n_inBd($reg_data['id']) . "'"; $update = ""; $old_values = $sql->singleQuery($query); foreach ($reg_config as $t => $r) { $value = $reg_data[$r['reg_data']]; $aux = ""; // Fields if ($r['db'] == 'none') { continue; } // Values switch ($r['type']) { case "select": switch ($r['extra']['seltype']) { case "date": case "date_check_exp": case "date_check_dob": $aux = b1n_formatDate($value); $old_values[$r['db']] = b1n_formatDate(b1n_formatDateFromDb($old_values[$r['db']])); break; case "date_hour": $aux = b1n_formatDateHour($value); $old_values[$r['db']] = b1n_formatDateHour(b1n_formatDateHourFromDb($old_values[$r['db']])); break; case "hour": $aux = b1n_formatHour($value); $old_values[$r['db']] = b1n_formatHour(b1n_formatHourFromDb($old_values[$r['db']])); break; default: $aux = $value; break; } break; case "password": if (empty($value)) { // For some reason, switch counts as a loop, so we need to use 'continue(2)' instead of just 'continue' continue 2; } $aux = b1n_crypt($value); break; default: $aux = $value; break; } // Only update if the values changed ($aux != $old...) if ($aux != $old_values[$r['db']]) { if (b1n_checkFilled($aux)) { $aux = $r['db'] . " = '" . b1n_inBd($aux) . "'"; } else { $aux = $r['db'] . " = NULL"; } // Setting update array $update[] = $aux; } } if (is_array($update)) { $update = implode(", ", $update); $query = "UPDATE \"" . $table . "\" SET " . $update . " WHERE " . $reg_config['ID']['db'] . " = '" . b1n_inBd($reg_data['id']) . "'"; $rs = $sql->query($query); } else { $rs = true; } if ($rs) { $aux = true; if (!empty($module_function)) { $reg_data['old_values'] = $old_values; $aux = $module_function($sql, $ret_msgs, $reg_data, $reg_config); } if ($aux) { b1n_retMsg($ret_msgs, b1n_SUCCESS, $msg . ' changed successfully!'); return $sql->query('COMMIT TRANSACTION'); } } } else { b1n_retMsg($ret_msgs, b1n_FIZZLES, 'Could not begin transaction.'); } $sql->query('ROLLBACK TRANSACTION'); return false; }