| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?php
- /**
- * usage:
- * $actionId = $apiTransactionHelper->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'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$sqlCreateAction (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlCreateAction);echo'</pre>';}
- $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'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$actionId (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($actionId);echo'</pre>';}
- 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'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$sqlUpdate (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlUpdate);echo'</pre>';}
- $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'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$sqlUpdate (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlUpdate);echo'</pre>';}
- $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'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$sqlSelect (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlSelect);echo'</pre>';}
- $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 ;
- ";
- }
- }
|