/** * Execute an skey-based update * */ function update() { $row = aFromGP('x4v_'); $skey = 0; $table_id = $this->dd['table_id']; # KFD 6/12/08, allow functions to modify or prevent a write $tbefore = $table_id . "_writeBefore"; $tafter = $table_id . "_writeAfter"; if (function_exists($tbefore)) { $message = $tbefore($row); if ($message != '') { x4Error($message); return; } } # KFD 6/28/08, a non-empty date must be valid $errors = false; foreach ($row as $col => $value) { if (!isset($this->dd['flat'][$col])) { unset($row[$col]); continue; } $ermsg = "Invalid date format for " . $this->dd['flat'][$col]['description']; $ermsg2 = "Invalid date value for " . $this->dd['flat'][$col]['description']; if ($this->dd['flat'][$col]['type_id'] == 'date') { if (trim($value) == '') { continue; } if (strpos($value, '/') === false && strpos($value, '-') === false) { x4Error($ermsg); $errors = true; continue; } if (strpos($value, '/') !== false) { $parsed = explode('/', $value); if (count($parsed) != 3) { $errors = true; x4Error($ermsg); continue; } if (!checkdate($parsed[0], $parsed[1], $parsed[2])) { x4Error($ermsg2); $errors = true; continue; } } if (strpos($value, '-') !== false) { $parsed = explode('-', $value); if (count($parsed) != 3) { $errors = true; x4Error($ermsg); continue; } if (!checkdate($parsed[1], $parsed[2], $parsed[0])) { x4Error($ermsg2); $errors = true; continue; } } } } if ($errors) { return; } if ($row['skey'] == 0 || !isset($row['skey'])) { unset($row['skey']); $skey = SQLX_Insert($this->dd, $row); if (!errors()) { $row = SQL_OneRow("Select * FROM {$this->view_id} WHERE skey = {$skey}"); } x4Data('row', $row); } else { SQLX_Update($this->dd, $row); if (!errors()) { $skey = $row['skey']; $row = SQL_OneRow("Select * FROM {$this->view_id} WHERE skey = {$skey}"); x4Data('row', $row); } } # KFD 6/12/08, allow functions to modify or prevent a write if (Errors()) { return; } if (function_exists($tafter)) { $message = $tafter($row); if ($message != '') { x4Error($message); return; } } }
function x4SQL($sql) { $dbconn = $GLOBALS['AG']['dbconn']; pg_send_query($dbconn, $sql); $results = pg_get_result($dbconn); $t = pg_result_error($results); $error = false; if ($t) { // Made conditional 1/24/07 KFD // In x4, made universal //if(SessionGet('ADMIN',false)) { x4Error("(ADMIN): You are logged in as an administrator, you will see " . " more detail than a regular user."); x4Error("(ADMIN): " . $sql); // Save them separately so they can be dealt with on the // browser if need be ri('message', 'sql', $sql); //} $ts = explode(";", $t); foreach ($ts as $onerr) { if (trim($onerr) == '') { continue; } x4Error($onerr); } // Now save the original unsplit errors for return to browser $t = trim(str_replace('ERROR: ', '', $t)); $t = str_replace("\n", '', $t); ri('message', 'sqlerr', $t); } return $results; }
function x6Error($parm1) { return x4Error($parm1); }
function x4sqlUpd($table, $row, $whr) { if (!isset($whr['skey'])) { x4Error("The database update cannot be performed because the" . " 'skey' column is not present. This is very likely a" . " programming error, please contact your programmer."); } else { $view = ddView($table); $row = array_merge($row, $whr); SQLX_Update($table, $row); } }