This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | namespace NotificationChannels\MobilyWs; |
||
4 | |||
5 | use GuzzleHttp\Client as HttpClient; |
||
6 | use GuzzleHttp\Exception\RequestException; |
||
7 | use NotificationChannels\MobilyWs\Exceptions\CouldNotSendMobilyWsNotification; |
||
8 | |||
9 | class MobilyWsApi |
||
10 | { |
||
11 | |||
12 | /** @var string mobily.ws endpoint for sending sms */ |
||
13 | protected $endpoint = 'msgSend.php'; |
||
14 | |||
15 | /** @var MobilyWsConfig */ |
||
16 | private $config; |
||
17 | |||
18 | /** @var HttpClient */ |
||
19 | private $http; |
||
20 | |||
21 | /** |
||
22 | * Create a new MobilyWs channel instance. |
||
23 | * |
||
24 | * @param MobilyWsConfig $config |
||
25 | * @param HttpClient $http |
||
26 | */ |
||
27 | 9 | public function __construct(MobilyWsConfig $config, HttpClient $http) |
|
28 | { |
||
29 | 9 | $this->http = $http; |
|
30 | 9 | $this->config = $config; |
|
31 | 9 | } |
|
32 | |||
33 | /** |
||
34 | * Send request with string message |
||
35 | * |
||
36 | * @param $params |
||
37 | * |
||
38 | * @return array |
||
39 | */ |
||
40 | 2 | public function sendString($params) |
|
41 | { |
||
42 | 1 | $payload = $this->preparePayload($params); |
|
43 | 2 | return $this->send($payload); |
|
44 | 1 | } |
|
45 | |||
46 | /** |
||
47 | * Send request with MobilyWsMessage instance |
||
48 | * |
||
49 | * @param MobilyWsMessage $message |
||
50 | * |
||
51 | * @param $number |
||
52 | * |
||
53 | * @return array |
||
54 | * @internal param $params |
||
55 | */ |
||
56 | 5 | public function sendMessage(MobilyWsMessage $message, $number) |
|
57 | { |
||
58 | $params = [ |
||
59 | 5 | 'msg' => $message->text, |
|
60 | 5 | 'numbers' => $number, |
|
61 | 5 | 'dateSend' => $message->dateSend(), |
|
62 | 5 | 'timeSend' => $message->timeSend(), |
|
63 | 5 | ]; |
|
64 | |||
65 | 5 | $payload = $this->preparePayload($params); |
|
66 | 5 | return $this->send($payload); |
|
67 | } |
||
68 | |||
69 | /** |
||
70 | * Send request to mobily.ws |
||
71 | * |
||
72 | * @param array $payload |
||
73 | * |
||
74 | * @return array |
||
75 | * @throws \NotificationChannels\MobilyWs\Exceptions\CouldNotSendMobilyWsNotification |
||
76 | * @internal param array $params |
||
77 | * |
||
78 | */ |
||
79 | 8 | public function send(array $payload) |
|
80 | { |
||
81 | try { |
||
82 | 8 | $response = $this->http->post($this->endpoint, $payload); |
|
83 | |||
84 | 7 | if ($response->getStatusCode() == 200) { |
|
85 | return [ |
||
86 | 7 | 'code' => $code = (string) $response->getBody(), |
|
87 | 7 | 'message' => $this->msgSendResponse($code), |
|
88 | 7 | ]; |
|
89 | } |
||
90 | throw CouldNotSendMobilyWsNotification::someErrorWhenSendingSms($response); |
||
0 ignored issues
–
show
|
|||
91 | 1 | } catch (RequestException $exception) { |
|
92 | 1 | throw CouldNotSendMobilyWsNotification::couldNotSendRequestToMobilyWs($exception); |
|
93 | } |
||
94 | } |
||
95 | |||
96 | /** |
||
97 | * Prepare payload for http request. |
||
98 | * |
||
99 | * @param $params |
||
100 | * |
||
101 | * @return array |
||
102 | */ |
||
103 | 6 | protected function preparePayload($params) |
|
104 | { |
||
105 | 6 | $form = array_merge([ |
|
106 | 6 | 'applicationType' => $this->config->applicationType, |
|
0 ignored issues
–
show
The property
applicationType does not exist on object<NotificationChann...obilyWs\MobilyWsConfig> . Since you implemented __get , maybe consider adding a @property annotation.
Since your code implements the magic getter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
If the property has read access only, you can use the @property-read annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
|||
107 | 6 | 'lang' => $this->config->lang, |
|
0 ignored issues
–
show
The property
lang does not exist on object<NotificationChann...obilyWs\MobilyWsConfig> . Since you implemented __get , maybe consider adding a @property annotation.
Since your code implements the magic getter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
If the property has read access only, you can use the @property-read annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
|||
108 | 6 | 'sender' => $this->config->sender, |
|
0 ignored issues
–
show
The property
sender does not exist on object<NotificationChann...obilyWs\MobilyWsConfig> . Since you implemented __get , maybe consider adding a @property annotation.
Since your code implements the magic getter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
If the property has read access only, you can use the @property-read annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
|||
109 | 6 | ], $params, $this->config->getCredentials()); |
|
110 | |||
111 | 6 | return array_merge( |
|
112 | 6 | ['form_params' => $form], |
|
113 | 6 | $this->config->request |
|
0 ignored issues
–
show
The property
request does not exist on object<NotificationChann...obilyWs\MobilyWsConfig> . Since you implemented __get , maybe consider adding a @property annotation.
Since your code implements the magic getter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
If the property has read access only, you can use the @property-read annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
|||
114 | 6 | ); |
|
115 | } |
||
116 | |||
117 | /** |
||
118 | * Parse the response body from mobily.ws. |
||
119 | * |
||
120 | * @param $code |
||
121 | * |
||
122 | * @return string |
||
123 | */ |
||
124 | 7 | protected function msgSendResponse($code) |
|
125 | { |
||
126 | 7 | $arraySendMsg = []; |
|
127 | 7 | $arraySendMsg[0] = 'لم يتم الاتصال بالخادم'; |
|
128 | 7 | $arraySendMsg[1] = 'تمت عملية الإرسال بنجاح'; |
|
129 | 7 | $arraySendMsg[2] = 'رصيدك 0 , الرجاء إعادة التعبئة حتى تتمكن من إرسال الرسائل'; |
|
130 | 7 | $arraySendMsg[3] = 'رصيدك غير كافي لإتمام عملية الإرسال'; |
|
131 | 7 | $arraySendMsg[4] = 'رقم الجوال (إسم المستخدم) غير صحيح'; |
|
132 | 7 | $arraySendMsg[5] = 'كلمة المرور الخاصة بالحساب غير صحيحة'; |
|
133 | 7 | $arraySendMsg[6] = 'صفحة الانترنت غير فعالة , حاول الارسال من جديد'; |
|
134 | 7 | $arraySendMsg[7] = 'نظام المدارس غير فعال'; |
|
135 | 7 | $arraySendMsg[8] = 'تكرار رمز المدرسة لنفس المستخدم'; |
|
136 | 7 | $arraySendMsg[9] = 'انتهاء الفترة التجريبية'; |
|
137 | 7 | $arraySendMsg[10] = 'عدد الارقام لا يساوي عدد الرسائل'; |
|
138 | 7 | $arraySendMsg[11] = 'اشتراكك لا يتيح لك ارسال رسائل لهذه المدرسة. يجب عليك تفعيل الاشتراك لهذه المدرسة'; |
|
139 | 7 | $arraySendMsg[12] = 'إصدار البوابة غير صحيح'; |
|
140 | 7 | $arraySendMsg[13] = 'الرقم المرسل به غير مفعل أو لا يوجد الرمز BS في نهاية الرسالة'; |
|
141 | 7 | $arraySendMsg[14] = 'غير مصرح لك بالإرسال بإستخدام هذا المرسل'; |
|
142 | 7 | $arraySendMsg[15] = 'الأرقام المرسل لها غير موجوده أو غير صحيحه'; |
|
143 | 7 | $arraySendMsg[16] = 'إسم المرسل فارغ، أو غير صحيح'; |
|
144 | 7 | $arraySendMsg[17] = 'نص الرسالة غير متوفر أو غير مشفر بشكل صحيح'; |
|
145 | 7 | $arraySendMsg[18] = 'تم ايقاف الارسال من المزود'; |
|
146 | 7 | $arraySendMsg[19] = 'لم يتم العثور على مفتاح نوع التطبيق'; |
|
147 | |||
148 | 7 | if (array_key_exists($code, $arraySendMsg)) { |
|
149 | 7 | return $arraySendMsg[$code]; |
|
150 | } |
||
151 | $message = "نتيجة العملية غير معرفه، الرجاء المحاول مجددا\n"; |
||
152 | $message .= 'الكود المرسل من الموقع: '; |
||
153 | $message .= "{$code}"; |
||
154 | |||
155 | return $message; |
||
156 | } |
||
157 | } |
||
158 |
This check looks for parameters that are defined as one type in their type hint or doc comment but seem to be used as a narrower type, i.e an implementation of an interface or a subclass.
Consider changing the type of the parameter or doing an instanceof check before assuming your parameter is of the expected type.