/** * Метод для массовой рассылки сообщений * @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; }