Skip to content

Commit 761bd3a

Browse files
author
grinderspro
committed
init repo
0 parents  commit 761bd3a

3 files changed

Lines changed: 234 additions & 0 deletions

File tree

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#Солянка кода различных годов
2+
3+
##phoneValidator
4+
phoneValidator for some project
5+
##iqSmsSending
6+
Modified wrapper for iqSms.

iqSmsSending.php

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
<?php
2+
3+
namespace Grinderspro;
4+
5+
/**
6+
* Class iqSmsSending
7+
*
8+
* Wrapper class for iqsms.ru
9+
*
10+
* @author Grigorij Miroshnichenko <grinderspro@gmail.com>
11+
* @copyright 2015
12+
*/
13+
14+
class iqSmsSending
15+
{
16+
const API_LOGIN = SMS_API_LOGIN;
17+
const API_PASSWORD = SMS_API_PASSWORD;
18+
const API_HOST = 'api.iqsms.ru';
19+
const SENDER_NAME = SMS_SENDER_NAME;
20+
const ACTIVE = true;
21+
const ERROR_EMPTY_API_LOGIN = 'Empty api login not allowed';
22+
const ERROR_EMPTY_API_PASSWORD = 'Empty api password not allowed';
23+
const ERROR_EMPTY_RESPONSE = 'errorEmptyResponse';
24+
25+
public function getHost() {
26+
return self::API_HOST;
27+
}
28+
29+
public function status($messages) {
30+
return $this->_sendRequest('status', array('messages' => $messages));
31+
}
32+
33+
/**
34+
* Получаем балланс
35+
* @return mixed
36+
*/
37+
public function balance() {
38+
return $this->_sendRequest('balance');
39+
}
40+
41+
/**
42+
* @param string $messages
43+
* @param null $statusQueueName
44+
* @param null $scheduleTime
45+
* @return bool|mixed
46+
*/
47+
public function send($messages, $statusQueueName = null, $scheduleTime = null) {
48+
49+
if (!empty($this->sender))
50+
foreach ($messages as &$message)
51+
$message['sender'] = self::SENDER_NAME;
52+
53+
54+
$params = array(
55+
'messages' => $messages,
56+
'statusQueueName' => $statusQueueName,
57+
'scheduleTime' => $scheduleTime,
58+
);
59+
60+
if (!self::ACTIVE)
61+
return true;
62+
63+
64+
return $this->_sendRequest('send', $params);
65+
}
66+
67+
private function _sendRequest($uri, $params = null) {
68+
$url = $this->_getUrl($uri);
69+
$data = $this->_formPacket($params);
70+
$client = curl_init($url);
71+
curl_setopt_array($client,
72+
array(
73+
CURLOPT_RETURNTRANSFER => true,
74+
CURLOPT_POST => true,
75+
CURLOPT_HEADER => false,
76+
CURLOPT_HTTPHEADER => array('Host: ' . $this->getHost()),
77+
CURLOPT_POSTFIELDS => $data,
78+
CURLOPT_CONNECTTIMEOUT => 10,
79+
));
80+
81+
$body = curl_exec($client);
82+
83+
curl_close($client);
84+
85+
if (empty($body))
86+
throw new Exception(self::ERROR_EMPTY_RESPONSE);
87+
88+
$decodedBody = json_decode($body, true);
89+
if (is_null($decodedBody))
90+
throw new Exception($body);
91+
92+
return $decodedBody;
93+
}
94+
95+
private function _getUrl($uri) {
96+
return 'http://' . self::API_HOST . '/messages/v2/' . $uri . '.json';
97+
}
98+
99+
private function _formPacket($params = null) {
100+
$params['login'] = self::API_LOGIN;
101+
$params['password'] = self::API_PASSWORD;
102+
103+
foreach ($params as $key => $value)
104+
if (empty($value))
105+
unset($params[$key]);
106+
107+
$packet = json_encode($params);
108+
return $packet;
109+
}
110+
111+
}

phoneValidator.php

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
<?php
2+
3+
/**
4+
* Validate data like phone, e-mail, name
5+
*
6+
* @author grinderspro <grinderspro@gmail.com>
7+
* @copyright 2013, Grigorij Miroshnichenko
8+
*/
9+
10+
require_once('Simpla.php');
11+
12+
class Validator extends Simpla
13+
{
14+
/**
15+
* Конвертирует номер телефона в эталонный формат.
16+
* За эталонный формат считаем 380ZZXXXXXXX,
17+
* где ZZ - код оператора, XXXXXXX - телефонный номер
18+
*
19+
* Логика такова: вытаскиваем последние 9 символов из номера -
20+
* код (2) + телефон (7). Затем склеиваем с кодом страны.
21+
*
22+
* @uses Validator::phone_filter()
23+
*
24+
* @param string $phone Номер телефона в произвольном формате
25+
* @param string $code Код страны. По умолчанию - 380
26+
*
27+
* @return string
28+
*/
29+
public function convert_phone_to_right_format($phone, $code = '380')
30+
{
31+
// Если номер телефона невалидный (в т.ч. российский), возвращаем как есть.
32+
if (!$this->phone_filter($phone)) {
33+
return $phone;
34+
}
35+
36+
$_phone = substr($phone, -9, 9);
37+
38+
return $code . $_phone;
39+
}
40+
41+
/**
42+
* Проверяет номера телефонов на валидность.
43+
*
44+
* @param string $phone Номер телефона
45+
* @param bool $russian Флаг необходимости проверки российских номеров.
46+
* По умолчанию проверяются все телефоны.
47+
*
48+
* @return bool
49+
*/
50+
public function phone_filter($phone, $russian = true)
51+
{
52+
if (empty($phone)) {
53+
return false;
54+
}
55+
56+
$count = strlen($phone);
57+
58+
/*
59+
* Если строка меньше 9 символов: оператор(2) + телефон(7)
60+
* или длиннее 13 символов: "+"(1) + код страны(3) + оператор(2) + телефон(7),
61+
* то телефон не валидный
62+
*
63+
* "< 10" по той причине, что телефон обычно указывается как 093.. (0 + оператор),
64+
* а если будет указано ровно 9 символов, то уже есть сомнения, что это
65+
* валидный телефон
66+
*/
67+
if ($count < 10 || $count > 13) {
68+
return false;
69+
}
70+
71+
/*
72+
* Иногда могут встречаться российские номера.
73+
* Проверка может быть отключена установкой второго параметра в false
74+
*/
75+
if ($russian && (preg_match('/^89\d+/', $phone) || preg_match('/^79\d+/', $phone))) {
76+
return false;
77+
}
78+
79+
return true;
80+
}
81+
82+
83+
public function check_phone($phone)
84+
{
85+
if (!preg_match("|^[+]?[\d-()]*$|", $phone))
86+
return false;
87+
88+
return true;
89+
}
90+
91+
92+
public function check_email($email)
93+
{
94+
if (!preg_match("|^[-0-9a-z_.]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i", $email))
95+
return false;
96+
97+
return true;
98+
}
99+
100+
101+
public function check_name($name)
102+
{
103+
if (!preg_match("|^[0-9a-z_-]*$|i", $name))
104+
return false;
105+
106+
return true;
107+
}
108+
109+
public function check_rname($name)
110+
{
111+
if (!preg_match("|^[ 0-9a-я_-]*$|i", $name))
112+
return false;
113+
114+
return true;
115+
}
116+
}
117+

0 commit comments

Comments
 (0)