| version 1.155, 2004/12/07 23:48:16 |
version 1.156, 2004/12/08 16:21:12 |
|
|
| * http://platon.sk/projects/phpMyEdit/ |
* http://platon.sk/projects/phpMyEdit/ |
| */ |
*/ |
| |
|
| /* $Platon: phpMyEdit/phpMyEdit.class.php,v 1.154 2004/11/25 09:52:55 nepto Exp $ */ |
/* $Platon: phpMyEdit/phpMyEdit.class.php,v 1.155 2004/12/07 23:48:16 nepto Exp $ */ |
| |
|
| /* This is a generic table editing program. The table and fields to be |
/* This is a generic table editing program. The table and fields to be |
| edited are defined in the calling program. |
edited are defined in the calling program. |
| Line 2260 function '.$this->js['prefix'].'filter_h |
|
| Line 2260 function '.$this->js['prefix'].'filter_h |
|
| { |
{ |
| // PRE Triggers |
// PRE Triggers |
| $ret = true; |
$ret = true; |
| if ($this->change_operation() && isset($this->triggers['update']['pre'])) { |
if ($this->change_operation()) { |
| $ret = include($this->triggers['update']['pre']); |
$ret &= $this->exec_triggers_simple('update', 'pre'); |
| // if PRE update fails, then back to view operation |
// if PRE update fails, then back to view operation |
| if (! $ret) { |
if (! $ret) { |
| $this->operation = $this->labels['View']; |
$this->operation = $this->labels['View']; |
| $ret = true; |
$ret = true; |
| } |
} |
| } |
} |
| if (($this->add_operation() || $this->copy_operation()) |
if ($this->add_operation() || $this->copy_operation()) { |
| && isset($this->triggers['insert']['pre'])) { |
$ret &= $this->exec_triggers_simple('insert', 'pre'); |
| $ret = include($this->triggers['insert']['pre']); |
|
| } |
} |
| if ($this->view_operation() && isset($this->triggers['select']['pre'])) { |
if ($this->view_operation()) { |
| $ret = include($this->triggers['select']['pre']); |
$ret &= $this->exec_triggers_simple('select', 'pre'); |
| } |
} |
| if ($this->delete_operation() && isset($this->triggers['delete']['pre'])) { |
if ($this->delete_operation()) { |
| $ret = include($this->triggers['delete']['pre']); |
$ret &= $this->exec_triggers_simple('delete', 'pre'); |
| } |
} |
| // if PRE insert/view/delete fail, then back to the list |
// if PRE insert/view/delete fail, then back to the list |
| if ($ret == false) { |
if ($ret == false) { |
| Line 2351 function '.$this->js['prefix'].'filter_h |
|
| Line 2350 function '.$this->js['prefix'].'filter_h |
|
| // Creating array of changed keys ($changed) |
// Creating array of changed keys ($changed) |
| $changed = array_keys($newvals); |
$changed = array_keys($newvals); |
| // Before trigger, newvals can be efectively changed |
// Before trigger, newvals can be efectively changed |
| if (isset($this->triggers['insert']['before'])) { |
if ($this->exec_triggers('insert', 'before', $oldvals, $changed, $newvals) == false) { |
| $ret = include($this->triggers['insert']['before']); |
return false; |
| if ($ret == false) { |
|
| return false; |
|
| } |
|
| } |
} |
| // Real query (no additional query in this method) |
// Real query (no additional query in this method) |
| foreach($newvals as $fd => $val) { |
foreach($newvals as $fd => $val) { |
| Line 2402 function '.$this->js['prefix'].'filter_h |
|
| Line 2398 function '.$this->js['prefix'].'filter_h |
|
| $this->myquery($query, __LINE__); |
$this->myquery($query, __LINE__); |
| } |
} |
| // After trigger |
// After trigger |
| if (isset($this->triggers['insert']['after'])) { |
if ($this->exec_triggers('insert', 'after', $oldvals, $changed, $newvals) == false) { |
| $ret = include($this->triggers['insert']['after']); |
return false; |
| if ($ret == false) { |
|
| return false; |
|
| } |
|
| } |
} |
| return true; |
return true; |
| } /* }}} */ |
} /* }}} */ |
| Line 2464 function '.$this->js['prefix'].'filter_h |
|
| Line 2457 function '.$this->js['prefix'].'filter_h |
|
| $changed[] = $key; |
$changed[] = $key; |
| } |
} |
| // Before trigger |
// Before trigger |
| if (isset($this->triggers['update']['before'])) { |
if ($this->exec_triggers('update', 'before', $oldvals, $changed, $newvals) == false) { |
| $ret = include($this->triggers['update']['before']); |
return false; |
| if ($ret == false) { |
|
| return false; |
|
| } |
|
| } |
} |
| // Real query |
// Real query |
| $res = $this->myquery($query_real, __LINE__); |
$res = $this->myquery($query_real, __LINE__); |
| Line 2513 function '.$this->js['prefix'].'filter_h |
|
| Line 2503 function '.$this->js['prefix'].'filter_h |
|
| } |
} |
| } |
} |
| // After trigger |
// After trigger |
| if (isset($this->triggers['update']['after'])) { |
if ($this->exec_triggers('update', 'after', $oldvals, $changed, $newvals) == false) { |
| $ret = include($this->triggers['update']['after']); |
return false; |
| if ($ret == false) { |
|
| return false; |
|
| } |
|
| } |
} |
| return true; |
return true; |
| } /* }}} */ |
} /* }}} */ |
| Line 2532 function '.$this->js['prefix'].'filter_h |
|
| Line 2519 function '.$this->js['prefix'].'filter_h |
|
| @mysql_free_result($res); |
@mysql_free_result($res); |
| // Creating array of changed keys ($changed) |
// Creating array of changed keys ($changed) |
| $changed = array_keys($oldvals); |
$changed = array_keys($oldvals); |
| |
$newvals = array(); |
| // Before trigger |
// Before trigger |
| if (isset($this->triggers['delete']['before'])) { |
if ($this->exec_triggers('delete', 'before', $oldvals, $changed, $newvals) == false) { |
| $ret = include($this->triggers['delete']['before']); |
return false; |
| if ($ret == false) { |
|
| return false; |
|
| } |
|
| } |
} |
| // Real query |
// Real query |
| $query = 'DELETE FROM '.$this->tb.' WHERE ('.$this->key.' = ' |
$query = 'DELETE FROM '.$this->tb.' WHERE ('.$this->key.' = ' |
| Line 2562 function '.$this->js['prefix'].'filter_h |
|
| Line 2547 function '.$this->js['prefix'].'filter_h |
|
| $this->myquery($query, __LINE__); |
$this->myquery($query, __LINE__); |
| } |
} |
| // After trigger |
// After trigger |
| if (isset($this->triggers['delete']['after'])) { |
if ($this->exec_triggers('delete', 'after', $oldvals, $changed, $newvals) == false) { |
| $ret = include($this->triggers['delete']['after']); |
return false; |
| if ($ret == false) { |
|
| return false; |
|
| } |
|
| } |
} |
| return true; |
return true; |
| } /* }}} */ |
} /* }}} */ |
| Line 2637 function '.$this->js['prefix'].'filter_h |
|
| Line 2619 function '.$this->js['prefix'].'filter_h |
|
| } /* }}} */ |
} /* }}} */ |
| |
|
| /* |
/* |
| |
* Apply triggers function |
| |
* Run a (set of) trigger(s). $trigger can be an Array or a filename |
| |
* Break and return false as soon as a trigger return false |
| |
* we need a reference on $newvals to be able to change value before insert/update |
| |
*/ |
| |
function exec_triggers($op, $step, $oldvals, &$changed, &$newvals) /* {{{ */ |
| |
{ |
| |
if (! isset($this->triggers[$op][$step])) { |
| |
return true; |
| |
} |
| |
$ret = true; |
| |
$trig = $this->triggers[$op][$step]; |
| |
if (is_array($trig)) { |
| |
ksort($trig); |
| |
for ($t = reset($trig); $t !== false && $ret != false; $t = next($trig)) { |
| |
$ret = include($t); |
| |
} |
| |
} else { |
| |
$ret = include($trig); |
| |
} |
| |
return $ret; |
| |
} /* }}} */ |
| |
|
| |
function exec_triggers_simple($op, $step) /* {{{ */ |
| |
{ |
| |
$oldvals = $newvals = $changed = array(); |
| |
return $this->exec_triggers($op, $step, $oldvals, $changed, $newvals); |
| |
} /* }}} */ |
| |
|
| |
/* |
| * Recreate functions |
* Recreate functions |
| */ |
*/ |
| function recreate_fdd() /* {{{ */ |
function recreate_fdd() /* {{{ */ |
| Line 2865 function '.$this->js['prefix'].'filter_h |
|
| Line 2877 function '.$this->js['prefix'].'filter_h |
|
| * ====================================================================== |
* ====================================================================== |
| */ |
*/ |
| // Cancel button - Cancel Triggers |
// Cancel button - Cancel Triggers |
| if (($this->add_canceled() || $this->copy_canceled()) && isset($this->triggers['insert']['cancel'])) { |
if ($this->add_canceled() || $this->copy_canceled()) { |
| include($this->triggers['insert']['cancel']); |
$this->exec_triggers_simple('insert', 'cancel'); |
| } |
} |
| if ($this->view_canceled() && isset($this->triggers['select']['cancel'])) { |
if ($this->view_canceled()) { |
| include($this->triggers['select']['cancel']); |
$this->exec_triggers_simple('select', 'cancel'); |
| } |
} |
| if ($this->change_canceled() && isset($this->triggers['update']['cancel'])) { |
if ($this->change_canceled()) { |
| include($this->triggers['update']['cancel']); |
$this->exec_triggers_simple('update', 'cancel'); |
| } |
} |
| if ($this->delete_canceled() && isset($this->triggers['delete']['cancel'])) { |
if ($this->delete_canceled()) { |
| include($this->triggers['delete']['cancel']); |
$this->exec_triggers_simple('delete', 'cancel'); |
| } |
} |
| // Save/More Button - database operations |
// Save/More Button - database operations |
| if ($this->saveadd == $this->labels['Save'] || $this->savecopy == $this->labels['Save']) { |
if ($this->saveadd == $this->labels['Save'] || $this->savecopy == $this->labels['Save']) { |