File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/modules/ipol.sdek/classes/mysql/sqlSdekOrders.php
Back
<?php class sqlSdekOrders { public function toLog($wat,$sign){sdekHelper::toLog($wat,$sign);} private static $tableName = "ipol_sdek"; public static function Add($Data) { // = $Data = format: // PARAMS - ALL INFO // ORDER_ID - corresponding order // STATUS - response from iml // MESSAGE - info from server // OK - 0 / 1 - was confirmed // UPTIME - order add time global $DB; if(!$Data['STATUS']) $Data['STATUS']='NEW'; if($Data['STATUS']=='NEW') $Data['MESSAGE']=''; if(is_array($Data['PARAMS'])) { $Data['PARAMS'] = serialize($Data['PARAMS']); } $Data['UPTIME']= time(); $rec = self::CheckRecord($Data['ORDER_ID'],$Data['SOURCE']); if($rec) { $err_mess = ""; $strUpdate = $DB->PrepareUpdate(self::$tableName, $Data); $strSql = "UPDATE ".self::$tableName." SET ".$strUpdate." WHERE ID=".$rec['ID']; $DB->Query($strSql, false, $err_mess.__LINE__); } else { $arInsert = $DB->PrepareInsert(self::$tableName, $Data); $strSql = "INSERT INTO ".self::$tableName."(".$arInsert[0].") ". "VALUES(".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } return self::CheckRecord($Data['ORDER_ID'],$Data['SOURCE']); } public static function select($arOrder=array("ID","DESC"),$arFilter=array(),$arNavStartParams=array()) { global $DB; if(!$arFilter){ $arFilter = array(); } $possFields = self::getPossFilterFields(); $_arFilter = $arFilter; $arFilter = array(); foreach ($_arFilter as $key => $val){ $field = self::checkFilterField($key,$possFields); if($field){ $skip = false; switch ($possFields[$field]){ case 'int' : if (!is_array($val)) { $val = (int)$val; } else { foreach ($val as $vKey => $vData) { $val[$vKey] = (int)$vData; } } break; case 'string' : if (!is_array($val)) { $val = (string)$val; if(strpos($val,'(') !== false){$skip = true;} } else { foreach ($val as $vKey => $vData) { $val[$vKey] = (string)$vData; if(strpos($val[$vKey],'(') !== false){unset($val[$vKey]);} } if (!count($val)) { $skip = true; } } break; } if(!$skip) { $arFilter[$key] = $val; } } } $strSql=''; $where=''; if(strpos($arFilter['>=UPTIME'],".")!==false) $arFilter['>=UPTIME']=strtotime($arFilter['>=UPTIME']); if(strpos($arFilter['<=UPTIME'],".")!==false) $arFilter['<=UPTIME']=strtotime($arFilter['<=UPTIME']); if(is_array($arFilter) && count($arFilter)>0) foreach($arFilter as $field => $value) { if($field == 'SOURCE' && $value == 0) $where.= ' and '.$DB->ForSql(self::getSource('order')); else{ if(strpos($field,'!')!==false) $where.=' and '.$DB->ForSql(substr($field,1)).' != "'.$DB->ForSql($value).'"'; elseif(strpos($field,'<=')!==false) $where.=' and '.$DB->ForSql(substr($field,2)).' <= "'.$DB->ForSql($value).'"'; elseif(strpos($field,'>=')!==false) $where.=' and '.$DB->ForSql(substr($field,2)).' >= "'.$DB->ForSql($value).'"'; elseif(strpos($field,'>')!==false) $where.=' and '.$DB->ForSql(substr($field,1)).' > "'.$DB->ForSql($value).'"'; elseif(strpos($field,'<')!==false) $where.=' and '.$DB->ForSql(substr($field,1)).' < "'.$DB->ForSql($value).'"'; else { if(is_array($value)) { $where.=' and ('; foreach($value as $val) $where.=$DB->ForSql($field).' = "'.$DB->ForSql($val).'" or '; $where=substr($where,0,strlen($where)-4).")"; } else $where.=' and '.$DB->ForSql($field).' = "'.$DB->ForSql($value).'"'; } } } if($where) $strSql.=" WHERE ".substr($where,4); if(in_array($arOrder[0],array('ID','ORDER_ID','STATUS','UPTIME'))&&($arOrder[1]=='ASC'||$arOrder[1]=='DESC')) $strSql.=" ORDER BY ".$arOrder[0]." ".$arOrder[1]; $err_mess = ""; $cnt=$DB->Query("SELECT COUNT(*) as C FROM ".self::$tableName." ".$strSql, false, $err_mess.__LINE__)->Fetch(); if($arNavStartParams['nPageSize']==0) $arNavStartParams['nPageSize']=$cnt['C']; $strSql="SELECT * FROM ".self::$tableName." ".$strSql; $res = new CDBResult(); $res->NavQuery($strSql,$cnt['C'],$arNavStartParams); return $res; } public static function Delete($orderId,$mode='order'){ global $DB; $orderId = $DB->ForSql($orderId); $strSql = "DELETE FROM ".self::$tableName." WHERE ORDER_ID='".$orderId."' && ".self::getSource($mode); $DB->Query($strSql, true); return true; } public static function GetByOI($orderId){ global $DB; $orderId=$DB->ForSql($orderId); $strSql = "SELECT PARAMS, STATUS, SDEK_ID, MESSAGE, OK, MESS_ID, ORDER_ID, ACCOUNT, SDEK_UID ". "FROM ".self::$tableName." ". "WHERE ORDER_ID = '".$orderId."' && ".self::getSource('order'); $res = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if($arr = $res->Fetch()) return $arr; else return false; } public static function GetBySI($shipmentId){ global $DB; $shipmentId=$DB->ForSql($shipmentId); $strSql = "SELECT PARAMS, STATUS, SDEK_ID, MESSAGE, OK, MESS_ID, ORDER_ID, ACCOUNT, SDEK_UID ". "FROM ".self::$tableName." ". "WHERE ORDER_ID = '".$shipmentId."' && ".self::getSource('shipment'); $res = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if($arr = $res->Fetch()) return $arr; else return false; } public static function GetByUId($uid){ global $DB; $strSql = "SELECT PARAMS, STATUS, SDEK_ID, MESSAGE, OK, MESS_ID, ORDER_ID, ACCOUNT, SDEK_UID ". "FROM ".self::$tableName." ". "WHERE SDEK_UID = '".$uid."'"; $res = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if($arr = $res->Fetch()) return $arr; else return false; } public static function CheckRecord($orderId,$mode=0){ global $DB; $source = (is_numeric($mode)) ? "SOURCE = '".$mode."'" : self::getSource($mode); $orderId = $DB->ForSql($orderId); $strSql = "SELECT ID, STATUS ". "FROM ".self::$tableName." ". "WHERE ORDER_ID = '".$orderId."' && ".$source; $res = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if($res && $arr = $res->Fetch()) return $arr; return false; } public static function updateStatus($arParams){ global $DB; foreach($arParams as $key => $val) $arParams[$key] = $DB->ForSql($val); $okStat=''; if($arParams["STATUS"]=='OK') $okStat=" OK='1',"; elseif($arParams["STATUS"]=='DELETE') $okStat=" OK='',"; $setStr = "STATUS ='".$arParams["STATUS"]."', MESSAGE = '".$arParams["MESSAGE"]."',"; if($arParams["SDEK_ID"]) $setStr.="SDEK_ID = '".$arParams["SDEK_ID"]."',"; if($arParams["SDEK_UID"]) $setStr.="SDEK_UID = '".$arParams["SDEK_UID"]."',"; if($arParams["MESS_ID"]) $setStr.="MESS_ID = '".$arParams["MESS_ID"]."',"; if($arParams["ACCOUNT"]) $setStr.="ACCOUNT = '".$arParams["ACCOUNT"]."',"; $setStr.=$okStat." UPTIME= '". time() ."'"; if(array_key_exists('SOURCE',$arParams) && $arParams['SOURCE']) $source = "SOURCE = '".$arParams['SOURCE']."'"; elseif(array_key_exists('SOURCE',$arParams) && $arParams['SOURCE'] === '') $source = "SOURCE <=> NULL"; elseif(array_key_exists('mode',$arParams)) $source = self::getSource($arParams['mode']); else $source = "SOURCE = 0"; $strSql = "UPDATE ".self::$tableName." SET ".$setStr." WHERE ORDER_ID = '".$arParams["ORDER_ID"]."' && $source"; if($DB->Query($strSql, true)) return true; else return false; } private static function getSource($mode='order'){ return ($mode == 'order' || $mode == '') ? '(SOURCE <=> NULL || SOURCE = 0)' : "SOURCE = '1'"; } protected static function getPossFilterFields() { return array("ID" => 'int',"MESS_ID" => 'int',"PARAMS" => 'text',"ORDER_ID"=>'int',"SOURCE"=>'int',"SDEK_ID"=>'int',"STATUS"=>'string',"MESSAGE"=> 'text',"ACCOUNT"=>'int',"OK"=>'string',"UPTIME"=>'string','SDEK_UID'=>'string'); } protected static function checkFilterField($field,$filterFields) { $arKeys = array_keys($filterFields); foreach($arKeys as $_field){ if(strpos($field,$_field) !== false){ return $_field; } } return false; } } ?>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.26 |
proxy
|
phpinfo
|
Settings