119 lines
3.5 KiB
PHP

<?php
require_once dirname(__FILE__) . '/../CommandImpl.php';
class FileMaker_Command_Edit_Implementation extends FileMaker_Command_Implementation {
var $_fields = array ();
var $_modificationId = null;
var $V6d6e1fd2;
function FileMaker_Command_Edit_Implementation($V0ab34ca9, $Vc6140495, $Va6ec9c02, $Va0af1e2b = array ()) {
FileMaker_Command_Implementation::FileMaker_Command_Implementation($V0ab34ca9, $Vc6140495);
$this->_recordId = $Va6ec9c02;
$this->V6d6e1fd2= null;
foreach ($Va0af1e2b as $V06e3d36f => $V2063c160) {
if (!is_array($V2063c160)) {
$V2063c160 = array (
$V2063c160
);
}
$this->_fields[$V06e3d36f] = $V2063c160;
}
}
function & execute() {
$V21ffce5b = $this->_getCommandParams();
if (empty ($this->_recordId)) {
$Vcb5e100e = new FileMaker_Error($this->_fm, 'Edit commands require a record id.');
return $Vcb5e100e;
}
if (!count($this->_fields)) {
if ($this->V6d6e1fd2== null) {
$Vcb5e100e = new FileMaker_Error($this->_fm, 'There are no changes to make.');
return $Vcb5e100e;
}
}
if ($this->_fm->getProperty('prevalidate')) {
$Vcb5e111f = & $this->_fm->getLayout($this->_layout);
$Vb0689411 = new FileMaker_Error_Validation($this->_fm);
foreach ($Vcb5e111f->getFields() as $V9f7d0ff7 => $Vc6140945) {
if (isset ($this->_fields[$V9f7d0ff7])) {
$V6d6e1ff1 = $this->_fields[$V9f7d0ff7];
foreach ($V6d6e1ff1 as $V6d6e1ff2) {
$Vb0689411 = $Vc6140945->validate($V6d6e1ff2);
if (FileMaker :: isError($Vb0689411)) {
return $Vb0689411;
}
}
}
}
}
$Vc6140495 = & $this->_fm->getLayout($this->_layout);
if (FileMaker :: isError($Vc6140495)) {
return $Vc6140495;
}
$V21ffce5b['-edit'] = true;
if ($this->V6d6e1fd2== null) {
foreach ($this->_fields as $V972bf3f0 => $Vee0525e4) {
if (strpos($V972bf3f0, '.') !== false) {
list ($Vb068931c, $V11e868ac) = explode('.', $V972bf3f0, 2);
$V11e868ac = '.' . $V11e868ac;
} else {
$Vb068931c = $V972bf3f0;
$V06e3d36f = $Vc6140495->getField($V972bf3f0);
if (FileMaker :: isError($V06e3d36f)) {
return $V06e3d36f;
}
if ($V06e3d36f->isGlobal()) {
$V11e868ac = '.global';
} else {
$V11e868ac = '';
}
}
foreach ($Vee0525e4 as $V6a992d55 => $V3a6d0284) {
$V21ffce5b[$Vb068931c . '(' . ($V6a992d55 +1) . ')' . $V11e868ac] = $V3a6d0284;
}
}
}
if ($this->V6d6e1fd2!= null) {
$V21ffce5b['-delete.related'] = $this->V6d6e1fd2;
}
$V21ffce5b['-recid'] = $this->_recordId;
if ($this->_modificationId) {
$V21ffce5b['-modid'] = $this->_modificationId;
}
$V0f635d0e = $this->_fm->_execute($V21ffce5b);
if (FileMaker :: isError($V0f635d0e)) {
return $V0f635d0e;
}
return $this->_getResult($V0f635d0e);
}
function setField($V06e3d36f, $V2063c160, $V6d786dc7 = 0) {
$this->_fields[$V06e3d36f][$V6d786dc7] = $V2063c160;
return $V2063c160;
}
function setFieldFromTimestamp($V06e3d36f, $Vd7e6d55b, $V6d786dc7 = 0) {
$Vc6140495 = & $this->_fm->getLayout($this->_layout);
if (FileMaker :: isError($Vc6140495)) {
return $Vc6140495;
}
$V06e3d36f = & $Vc6140495->getField($V06e3d36f);
if (FileMaker :: isError($V06e3d36f)) {
return $V06e3d36f;
}
switch ($V06e3d36f->getResult()) {
case 'date' :
return $this->setField($V972bf3f0, date('m/d/Y', $Vd7e6d55b), $V6d786dc7);
case 'time' :
return $this->setField($V972bf3f0, date('H:i:s', $Vd7e6d55b), $V6d786dc7);
case 'timestamp' :
return $this->setField($V972bf3f0, date('m/d/Y H:i:s', $Vd7e6d55b), $V6d786dc7);
}
return new FileMaker_Error($this->_fm, 'Only time, date, and timestamp fields can be set to the value of a timestamp.');
}
function setModificationId($Vf048d909) {
$this->_modificationId = $Vf048d909;
}
function _setdeleteRelated($V2063c160) {
$this->V6d6e1fd2= $V2063c160;
}
}