mishanya Опубликовано 17 августа, 2016 Жалоба Поделиться Опубликовано 17 августа, 2016 (изменено) Собственно модуль и отсылает смс используя шлюз vipsms.net. апи взято из сайта провайдера. Возможности:- отправка смс- просмотр баланса в настройках сайта 1. Проверьте что у вас работает и включен модуль PHP SOAP2. Заходим в api/Notify.php и добавляем туда в самый низ до последней закрывающей скобки '}' две новые ф-и смс public function send_sms($phone, $message) { // Проверяем доступность расширения SOAP if (!extension_loaded('soap')) echo "Ошибка! Модуль PHP SOAP не подключен."; $enc_terminal = 'utf-8'; // Ваши идентификационные данные $login = $this->settings->sms_login; $passwd = $this->settings->sms_passw; $sign = $this->settings->sms_alias; $client = new SoapClient('http://vipsms.net/api/soap.html'); // Функция пытается осуществить подключение к серверу // в случае удали получит индетификатор сессии $res = $client->auth($login, $passwd); if ($res->code!=0){ // echo "Внимание, ошибка:\n"; // echo " код : {$res->code}\n"; // echo " сообщение: {$res->message}\n"; // if ($res->extend && is_array($res->extend)){ // echo " описание: ".iconv('utf-8', $enc_terminal, var_export($res->extend, true))."\n"; // } return; } // Идентификатор сессиии $sessid = $res->message; $phones = explode(',', $phone); foreach($phones as $p) $res = $client->sendSmsOne($sessid, $p, $sign, $message); if ($res->code!=0){ // echo "Внимание, ошибка:\n"; // echo " код : {$res->code}\n"; // echo " сообщение: {$res->message}\n"; // if ($res->extend && is_array($res->extend)){ // echo " описание: ".iconv('utf-8', $enc_terminal, var_export($res->extend, true))."\n"; // } return; } } public function get_sms_balance() { if (!extension_loaded('soap')) echo "Ошибка! Модуль PHP SOAP не подключен."; $enc_terminal = 'utf-8'; // Ваши идентификационные данные $login = $this->settings->sms_login; $passwd = $this->settings->sms_passw; $sign = $this->settings->sms_alias; $client = new SoapClient('http://vipsms.net/api/soap.html'); // Функция пытается осуществить подключение к серверу // в случае удали получит индетификатор сессии $res = $client->auth($login, $passwd); if ($res->code!=0){ echo "Внимание, ошибка:\n"; echo " код : {$res->code}\n"; echo " сообщение: {$res->message}\n"; if ($res->extend && is_array($res->extend)){ echo " описание: ".iconv('utf-8', $enc_terminal, var_export($res->extend, true))."\n"; } return; } // Идентификатор сессиии $sessid = $res->message; $res = $client->getBalance($sessid); if ($res->code!=0){ echo "Внимание, ошибка:\n"; echo " код : {$res->code}\n"; echo " сообщение: {$res->message}\n"; if ($res->extend && is_array($res->extend)){ echo " описание: ".iconv('utf-8', $enc_terminal, var_export($res->extend, true))."\n"; } return; } return $res->message; } 3. чтобы параметры подгружались с админки добавляем в simpla/SettignsAdmin.php $this->settings->sms_login = $this->request->post('sms_login'); $this->settings->sms_passw = $this->request->post('sms_passw'); $this->settings->sms_alias = $this->request->post('sms_alias'); $this->settings->sms_admin = $this->request->post('sms_admin'); 4. в этом же файле если хотите чтобы показывался ваш баланс в системе добавляем после $this->design->assign('managers', $managers); код $ballance = $this->notify->get_sms_balance(); $this->design->assign('ballance', $ballance); 5. и в файл дизайна simpla/design/html/settings.tpl добавляем блок с настройками смс <div class="block"> <h2>Настройки СМС</h2> <ul> <li><label class=property>Логин</label><input name="sms_login" class="simpla_inp" type="text" value="{$settings->sms_login}" /></li> <li><label class=property>Пароль</label><input name="sms_passw" class="simpla_inp" type="text" value="{$settings->sms_passw}" /></li> <li><label class=property>Подпись</label><input name="sms_alias" class="simpla_inp" type="text" value="{$settings->sms_alias}" /></li> <li><label class=property>Телефон администратора</label><input name="sms_admin" class="simpla_inp" type="text" value="{$settings->sms_admin}" /></li> <li><label class=property>На балансе</label><input class="simpla_inp" type="text" value="{$ballance}" disabled /></li> </ul> </div> 6. вызываем ф-ю где вам нужно. например для оповещения о новом заказе админу это будет выглядеть так (в view/CartView.php)после $this->notify->email_order_admin($order->id); добавляем // Отправляем смс администратору(ам) $this->notify->send_sms($this->settings->sms_admin, 'У вас новый заказ #'.$order->id); в админке указываем данные подключения. телефонов можно указать несколько через запятую без пробелав итоге выйдет что-то такое https://yadi.sk/i/aErL17_juJ4XT Изменено 18 августа, 2016 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 18 августа, 2016 Жалоба Поделиться Опубликовано 18 августа, 2016 Супер!Единственный вопрос - почему send_sms_balance()??? Ведь функция делает прямо противоположное Почему не get_sms_balance()? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 18 августа, 2016 Автор Жалоба Поделиться Опубликовано 18 августа, 2016 Супер!<kors mode on>Единственный вопрос - почему send_sms_balance()??? Ведь функция делает прямо противоположное Почему не get_sms_balance()?<kors mode off> ахах, и правда). мне просто было впадло переименовать первую, дописал до старого названия)). поменял Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 18 августа, 2016 Жалоба Поделиться Опубликовано 18 августа, 2016 1. Код написан весьма нерационально. Коды двух приведенных функций совпадают эдак процентов на 90. Налицо классический обучающий пример для начинающих программистов, как НЕ надо делать... 2. И еще интересный вопрос. Что будет при оформлении заказа покупателем, если SMS по каким-то причинам не отправится (например, баланс закончится) ? При отправке формы заказа обычного перехода на страницу заказа не будет а покупатель увидит на странице корзины что-то типа Внимание, ошибка:код : 440сообщение: тра-та-таWarning: Cannot modify header information - headers already sent by (output started at... Остается лишь немного пожалеть простого покупателя и сильно пожалеть владельца сайта, воспользовавшегося предложенным программным продуктом. Устанавливать такое себе на сайт - это как закладывать бомбу замедленного действия... Налицо опять классический обучающий пример для начинающих программистов, как не надо спешить, а надо полностью проверять работу во всех возможных ситуациях... Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 18 августа, 2016 Автор Жалоба Поделиться Опубликовано 18 августа, 2016 (изменено) 1. Код написан весьма нерационально. Коды двух приведенных функций совпадают эдак процентов на 90. Налицо классический обучающий пример для начинающих программистов, как НЕ надо делать... ... конечно можно все отдельно вынести в ф-и и бла бла. и? вы получите от этого какой-то выигрыш в быстродействии? да можно оформить еще в отдельный класс и? бла бла.. насчет echo да, согласен, можно вообще убрать вывод, либо писать отдельно в файл. в первой ф-и можно просто закомментировать. во-второй оставить и в случае ошибки будет выводиться в админке. в чем проблема? слишком драматизируете Изменено 18 августа, 2016 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 18 августа, 2016 Жалоба Поделиться Опубликовано 18 августа, 2016 конечно можно все отдельно вынести в ф-и и бла бла. и? вы получите от этого какой-то выигрыш в быстродействии? да можно оформить еще в отдельный класс и? бла бла.. В таком случае я получу пример профессионально сделанной работы, а не что-то сварганенное тяп-ляп методом копирования-вставки. Серьезные работники руководствуются простым правилом, которое обычно усваивается в раннем детстве: Мальчик радостный пошёл, и решила кроха:"Буду делать хорошо и не буду плохо".(В.Маяковский) насчет echo да, согласен, можно вообще убрать вывод, либо писать отдельно в файл. в первой ф-и можно просто закомментировать. во-второй оставить и в случае ошибки будет выводиться в админке. в чем проблема? слишком драматизируете Не можно, а НУЖНО! (если Вы хоть чуть заботитесь о качестве своей работы) Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.