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 ; "; } }