Пример #1
0
 /**
  * Метод для массовой рассылки сообщений
  * @date 18.08.15
  * @param $msg - сообщение
  * @param $phones - массив телефонов
  * @param $tema - тема сообщения
  * @param $id
  * @return $this $result['code'] - вернет 0 при успехе, -1 при ошибке
  */
 public function send_mass(&$msg, &$phones, &$tema, &$id, &$gorod)
 {
     $query = "SELECT can FROM want_to_send WHERE id={$id}";
     $res = $this->db->super_query($query, false)->get_res() or false;
     if (!$res['can'] == '1') {
         $this->set_result(false);
         return $this;
     }
     $query = "DELETE FROM want_to_send WHERE id={$id}";
     $this->db->query($query);
     $url = "https://semysms.net/api/3/sms_more.php";
     //Адрес url для отправки СМС
     $params = array('token' => $this->get_token());
     $query = "INSERT INTO sended_mass (phones, date, tema, msg, gorod, user_id)\n                                       VALUES ('" . implode(',', $phones) . "', '" . date("Y-m-d") . "', '{$tema}', '{$msg}', {$gorod}, {$_SESSION['id']})";
     $db = new data_base();
     $res = $db->query($query);
     $id = $db->get_last_id();
     // id рассылки
     $_SESSION['last_id'] = $id;
     unset($db, $res, $query);
     $sms_on_dev = (int) (count($phones) / count($this->device_class->get_devices()));
     $last = 0;
     $inc = 0;
     $resultat = array();
     foreach ($this->device_class->get_devices() as $device) {
         $inc += $last;
         while ($last < $sms_on_dev + $inc) {
             $params['data'][] = array('my_id' => $id, 'device' => $device, 'phone' => $phones[$last], 'msg' => $msg, 'priority' => 0);
             $last++;
         }
         $last += $sms_on_dev;
         $params = json_encode($params);
         $curl = curl_init($url);
         curl_setopt($curl, CURLOPT_URL, $url);
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
         curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($params)));
         curl_setopt($curl, CURLOPT_POST, true);
         curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
         $result = curl_exec($curl);
         curl_close($curl);
         $result = json_decode($result, TRUE);
         if ($result['code'] == 0) {
             foreach ($result['data'] as $key => $item) {
                 $this->to_database($item['id'], $msg, $phones[$key], $device, $item['my_id']);
             }
             $this->db->write_log(4, $tema);
         }
         $resultat[$device] = $result['code'];
     }
     $this->set_result($resultat);
     return $this;
 }