eqeqwan21

queue_command

Aug 24th, 2025
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.25 KB | None | 0 0
  1.  private function queue_command($adevs, $commandid, $ipcommand = null)
  2.  {
  3.     //adevs key = id, value = Phone
  4.     $ret = 0;
  5.     $db = new ods_db();
  6.     global $config;
  7.     if($db->open()) {
  8.         $serverCID = '';
  9.         $executor = $_SESSION['userid'] ?? 'system';
  10.         $remoteIp = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? null;
  11.         $remoteIp = trim(explode(',', (string)$remoteIp)[0]);
  12.         $errortext = 'user:' . mb_substr($executor, 0, 90);
  13.        
  14.         $sql = 'select * from ServerCommand where id = ?';
  15.         try {
  16.             $stmt = $db->db->prepare($sql);
  17.             $stmt->execute(array($commandid));
  18.             $cmd = $stmt->fetch();
  19.         } catch (Exception $e) {
  20.             return false;
  21.         }
  22.        
  23.         if(!empty($cmd['Letter'])) {
  24.             $sql = "select * from ServerPhones where Letter=? limit 1";
  25.             try {
  26.                 $stmt = $db->db->prepare($sql);
  27.                 $stmt->execute(array($cmd['Letter']));
  28.                 $sp = $stmt->fetch();
  29.             } catch (Exception $e) {
  30.                 return false;
  31.             }
  32.             $serverCID = $sp['Number'];
  33.         }
  34.  
  35.         $sql = 'INSERT INTO OutgoingLog (`Devices_id`, `ServerCommand_id`, `ServerCID`, `DeviceNUM`, `cmd`, `IPCommand_id`, `errortext`, `RemoteIP`) VALUES ';
  36.         $sql .= trim(str_repeat('(?,?,?,?,?,?,?,?),', count($adevs)), ',');
  37.         try {
  38.             $stmt = $db->db->prepare($sql);
  39.             $ains = [];
  40.             foreach($adevs as $key => $value) {
  41.                 array_push(
  42.                     $ains,
  43.                     $key,
  44.                     $commandid,
  45.                     $serverCID,
  46.                     $value,
  47.                     $cmd['cmd'],
  48.                     $ipcommand,
  49.                     $errortext,
  50.                     $remoteIp
  51.                 );
  52.                 $ret++;
  53.             }
  54.             $stmt->execute($ains);
  55.         } catch (Exception $e) {
  56.             $ret = false;
  57.         }
  58.        
  59.         if($cmd['type']==3) {//ip command
  60.             reset($adevs);
  61.             $sql = "SELECT id from ServerCommand
  62.             where DeviceType= (select type from Devices where id = ?)
  63.             and type=1 and letter='F'
  64.             ";
  65.             try {
  66.                 $stmt = $db->db->prepare($sql);
  67.                 $stmt->execute([key($adevs)]);
  68.                 $rqcommand = $stmt->fetch();
  69.             } catch (Exception $e) {
  70.                 $ret = false;
  71.             }
  72.             if(!($ret===false)) {
  73.                 $this->queue_command($adevs, $rqcommand['id'], $commandid);
  74.             }
  75.                
  76.         }
  77.     }
  78.     else
  79.         $ret = false;
  80.    
  81.     return $ret;
  82.  }
Advertisement
Add Comment
Please, Sign In to add comment