createAction($transactionKey, $actionType, $tblName, $requestBodyXml); * ... * $apiTransactionHelper->setActionObject($actionId, $item); * ... * $newItemId = $dataSource->createItem($item); * ... * $apiTransactionHelper->setActionResult($actionId, $newItemId); */ class Api_TransactionHelper { public function createAction($transactionKey, $actionType, $tblName, $requestBodyXml) { $userLogin = User::getLogin(); $db = DB::getDB(); if ($db->has_errors()) { throw new HttpException("DB Errors: " . implode("\n", $db->get_errors()), 500); } $sqlCreateAction = "insert into `_API_XML_TASKS` ( `A_RECORD_CREATE_DATE` , `A_RECORD_CREATE_AUTHOR` , `TRANSACTION_ID` , `TASK` , `DB_TABLE` , `XML_OBJ` ) values ( NOW() , '{$userLogin}' , '{$transactionKey}' , '{$actionType}' , '{$tblName}' , '{$requestBodyXml}' ) "; IF(V::get('DBG','',$_GET)){echo'
$sqlCreateAction (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlCreateAction);echo'';}
$db->query($sqlCreateAction);
if ($db->has_errors()) {
throw new HttpException("DB Errors: " . implode("\n", $db->get_errors()), 500);
}
$actionId = $db->insert_id();
IF(V::get('DBG','',$_GET)){echo'$actionId (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($actionId);echo'';}
return $actionId;
}
public function setActionObject($actionId, $item) {
$userLogin = User::getLogin();
$db = DB::getDB();
if ($db->has_errors()) {
throw new HttpException("DB Errors: " . implode("\n", $db->get_errors()), 500);
}
$itemJson = json_encode($item);
$sqlUpdate = "update `_API_XML_TASKS` set
`A_RECORD_UPDATE_DATE`=NOW()
, `A_RECORD_UPDATE_AUTHOR`='{$userLogin}'
, `ITEM_OBJ`='{$itemJson}'
where `ID`={$actionId}
";
IF(V::get('DBG','',$_GET)){echo'$sqlUpdate (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlUpdate);echo'';}
$db->query($sqlUpdate);
if ($db->has_errors()) {
throw new HttpException("DB Errors: " . implode("\n", $db->get_errors()), 500);
}
}
public function setActionResult($actionId, $newItemId) {
$userLogin = User::getLogin();
$db = DB::getDB();
if ($db->has_errors()) {
throw new HttpException("DB Errors: " . implode("\n", $db->get_errors()), 500);
}
$sqlUpdate = "update `_API_XML_TASKS` set
`A_RECORD_UPDATE_DATE`=NOW()
, `A_RECORD_UPDATE_AUTHOR`='{$userLogin}'
, `RESULT_ID`='{$newItemId}'
where `ID`={$actionId}
";
IF(V::get('DBG','',$_GET)){echo'$sqlUpdate (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlUpdate);echo'';}
$db->query($sqlUpdate);
if ($db->has_errors()) {
throw new HttpException("DB Errors: " . implode("\n", $db->get_errors()), 500);
}
}
public function getLastActionInfo($transactionKey) {
$db = DB::getDB();
if ($db->has_errors()) {
throw new HttpException("DB Errors: " . implode("\n", $db->get_errors()), 500);
}
$sqlSelect = "select *
from `_API_XML_TASKS`
where `TRANSACTION_ID`='{$transactionKey}'
order by `ID` desc
limit 1
";
IF(V::get('DBG','',$_GET)){echo'$sqlSelect (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlSelect);echo'';}
$res = $db->query($sqlSelect);
if (!$res || $db->has_errors()) {
throw new HttpException("DB Errors: " . implode("\n", $db->get_errors()), 500);
}
$item = $db->fetch_assoc($res);
if (!$item) {
throw new HttpException("Item not found", 404);
}
return $item;
}
private function _installTable() {
$sqlCreateTable = "
CREATE TABLE IF NOT EXISTS `_API_XML_TASKS` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`A_RECORD_CREATE_DATE` varchar(30) NOT NULL,
`A_RECORD_CREATE_AUTHOR` varchar(40) NOT NULL,
`A_RECORD_UPDATE_DATE` varchar(30) NOT NULL,
`A_RECORD_UPDATE_AUTHOR` varchar(40) NOT NULL,
`TRANSACTION_ID` varchar(255) NOT NULL,
`TASK` varchar(32) NOT NULL,
`DB_TABLE` varchar(255) NOT NULL,
`XML_OBJ` text NOT NULL,
`ITEM_OBJ` text NOT NULL,
`PARAMS` text NOT NULL,
`RESULT_ID` int(11) NOT NULL DEFAULT '0',
`TASK_DONE` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin2 ;
";
}
}