/** * Метод для массовой рассылки сообщений * @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; }
$db = new data_base(); $query = "SELECT token, devices FROM admin"; $result = $db->super_query($query)->get_res(); foreach ($result as $device) { $devices[] = explode(",", $device['devices']); } if (!isset($_COOKIE['PHPSESSID'])) { foreach ($result as $token) { $sms = new sms($devices, $token['token']); $in = $sms->get_in_sms(); if ($in['code'] == 0) { foreach ($in['data'] as $value) { $phone = str_replace("+7", "8", $value['phone']); $date_time = explode(" ", $value['date']); $query = "UPDATE `users` SET phone_ver='1', date_ver='" . $date_time[0] . "' WHERE phone='{$phone}' AND phone_ver='0'"; $db->query($query); } } $query = "SELECT id_sms, delivered FROM `sended_sms` WHERE delivered='0' AND is_error='0'"; $res = $db->super_query($query)->get_res(); $ids = array(); foreach ($res as $value) { foreach ($value as $key => $value1) { if ($key == 'id_sms') { $ids[] = $value1; } } } $separated = (string) implode(",", $ids); $out = $sms->get_out_sms($separated); foreach ($out['data'] as $value) {