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 Savannabits\Advantasms; |
||
4 | |||
5 | class Advantasms |
||
6 | { |
||
7 | private $apikey, $partnerId, $shortcode; |
||
8 | private $message, $to; |
||
9 | private $baseUrl = "https://quicksms.advantasms.com"; |
||
10 | private $sendsms = "/api/services/sendsms/"; |
||
11 | /** |
||
12 | * Advantasms constructor. |
||
13 | * @param string $apiKey |The advanta sms API Key. See documentation for more details |
||
14 | * @param string $partnerId | The Partner ID. See advantaSMS documentation for more details |
||
15 | * @param string $shortCode | The Shortcode of used to send sms. See documentation for more details |
||
16 | * @param string|null $domain | The base domain in case it is different from https://quicksms.advantasms.com |
||
0 ignored issues
–
show
|
|||
17 | * @return Advantasms |
||
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
Adding a
@return annotation to constructors is generally not recommended as a constructor does not have a meaningful return value.
Adding a Please refer to the PHP core documentation on constructors. ![]() |
|||
18 | */ |
||
19 | public function __construct($apiKey, $partnerId, $shortCode, $baseUrl="https://quicksms.advantasms.com") |
||
20 | { |
||
21 | $this->apikey = $apiKey; |
||
22 | $this->partnerId = $partnerId; |
||
23 | $this->shortcode = $shortCode; |
||
24 | $this->baseUrl = $baseUrl; |
||
25 | return $this; |
||
0 ignored issues
–
show
|
|||
26 | } |
||
27 | |||
28 | /** |
||
29 | * Instantiate the Advantasms class. |
||
30 | * @param string $apiKey |The advanta sms API Key. See documentation for more details |
||
31 | * @param string $partnerId | The Partner ID. See advantaSMS documentation for more details |
||
32 | * @param string $shortCode | The Shortcode of used to send sms. See documentation for more details |
||
33 | * @param string|null $domain | The base domain in case it is different from quicksms.advantasms.com |
||
0 ignored issues
–
show
There is no parameter named
$domain . Was it maybe removed?
This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function. Consider the following example. The parameter /**
* @param array $germany
* @param array $island
* @param array $italy
*/
function finale($germany, $island) {
return "2:1";
}
The most likely cause is that the parameter was removed, but the annotation was not. ![]() |
|||
34 | * @return Advantasms |
||
35 | */ |
||
36 | public static function init($apiKey,$partnerId, $shortCode, $baseUrl="https://quicksms.advantasms.com") { |
||
37 | $instance = new self($apiKey,$partnerId,$shortCode,$baseUrl); |
||
38 | return $instance; |
||
39 | } |
||
40 | |||
41 | /** |
||
42 | * @param $mobileNumber |
||
43 | * @return Advantasms |
||
44 | */ |
||
45 | public function to($mobileNumber) { |
||
46 | $this->to = $mobileNumber; |
||
47 | return $this; |
||
48 | } |
||
49 | |||
50 | /** |
||
51 | * @param string $message |
||
52 | * @return Advantasms |
||
53 | */ |
||
54 | public function message(string $message="") { |
||
55 | $this->message = $message; |
||
56 | return $this; |
||
57 | } |
||
58 | |||
59 | /** |
||
60 | * Execute sms sending action |
||
61 | * @return array|mixed |
||
62 | * |
||
63 | * 200;Successful Request Call |
||
64 | * 1001;Invalid sender id |
||
65 | * 1002;Network not allowed |
||
66 | * 1003;Invalid mobile number |
||
67 | * 1004;Low bulk credits |
||
68 | * 1005;Failed. System error |
||
69 | * 1006;Invalid credentials |
||
70 | * 1007;Failed. System error |
||
71 | * 1008;No Delivery Report |
||
72 | * 1009;unsupported data type |
||
73 | * 1010;unsupported request type |
||
74 | * 4090;Internal Error. Try again after 5 minutes |
||
75 | * 4091;No Partner ID is Set |
||
76 | * 4092;No API KEY Provided |
||
77 | * 4093;Details Not Found |
||
78 | * */ |
||
79 | View Code Duplication | public function send() { |
|
0 ignored issues
–
show
This method seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
80 | $data = [ |
||
81 | "apikey"=>$this->apikey, |
||
82 | "partnerID"=>trim($this->partnerId), |
||
83 | "message"=>trim($this->message), |
||
84 | "shortcode"=>$this->shortcode, |
||
85 | "mobile"=>trim($this->to), |
||
86 | 'pass_type' => 'plain', |
||
87 | ]; |
||
88 | $response = $this->curlPost($this->sendsms,$data); |
||
89 | $return = [ |
||
90 | "success" => false, |
||
91 | "message" => "", |
||
92 | "payload" => [] |
||
93 | ]; |
||
94 | if (!$response) { |
||
95 | $return["success"] = false; |
||
96 | $return["message"] = "No response from the server."; |
||
97 | return $return; |
||
98 | } else { |
||
99 | if (isset($response['responses'])) { |
||
100 | $first = $response["responses"][0]; |
||
101 | $return["success"] = $first["response-code"] ===200; |
||
102 | $return["code"] = $first["response-code"]; |
||
103 | $return["message"] = $first["response-description"]; |
||
104 | $return["payload"] = $response["responses"]; |
||
105 | return $return; |
||
106 | } |
||
107 | if (isset($response["response-code"])) { |
||
108 | $first = $response; |
||
109 | $return["success"] = $first["response-code"] ===200; |
||
110 | $return["code"] = $first["response-code"]; |
||
111 | $return["message"] = $first["response-description"]; |
||
112 | $return["payload"] = $response; |
||
113 | return $return; |
||
114 | } |
||
115 | //Temporal fix for the mis-spelled api response code to 'respose-code' |
||
116 | if (isset($response["respose-code"])) { |
||
117 | $first = $response; |
||
118 | $return["success"] = $first["respose-code"] ===200; |
||
119 | $return["code"] = $first["respose-code"]; |
||
120 | $return["message"] = $first["response-description"]; |
||
121 | $return["payload"] = $response; |
||
122 | return $return; |
||
123 | } |
||
124 | |||
125 | $return["success"] = false; |
||
126 | $return["message"] = "Unknown Error"; |
||
127 | $return["payload"] = $response; |
||
128 | return $return; |
||
129 | } |
||
130 | } |
||
131 | |||
132 | /** |
||
133 | * Schedule sms sending action |
||
134 | * @param string $time | Time to send in Y-m-d H:i format |
||
135 | * @return array|mixed |
||
136 | * |
||
137 | * 200;Successful Request Call |
||
138 | * 1001;Invalid sender id |
||
139 | * 1002;Network not allowed |
||
140 | * 1003;Invalid mobile number |
||
141 | * 1004;Low bulk credits |
||
142 | * 1005;Failed. System error |
||
143 | * 1006;Invalid credentials |
||
144 | * 1007;Failed. System error |
||
145 | * 1008;No Delivery Report |
||
146 | * 1009;unsupported data type |
||
147 | * 1010;unsupported request type |
||
148 | * 4090;Internal Error. Try again after 5 minutes |
||
149 | * 4091;No Partner ID is Set |
||
150 | * 4092;No API KEY Provided |
||
151 | * 4093;Details Not Found |
||
152 | * */ |
||
153 | View Code Duplication | public function schedule($time) { |
|
0 ignored issues
–
show
This method seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
154 | $data = [ |
||
155 | "apikey"=>$this->apikey, |
||
156 | "partnerID"=>trim($this->partnerId), |
||
157 | "message"=>trim($this->message), |
||
158 | "shortcode"=>$this->shortcode, |
||
159 | "mobile"=>trim($this->to), |
||
160 | "timeToSend" => trim($time), |
||
161 | 'pass_type' => 'plain', |
||
162 | ]; |
||
163 | $response = $this->curlPost($this->sendsms,$data); |
||
164 | $return = [ |
||
165 | "success" => false, |
||
166 | "message" => "", |
||
167 | "payload" => [] |
||
168 | ]; |
||
169 | if (!$response) { |
||
170 | $return["success"] = false; |
||
171 | $return["message"] = "No response from the server."; |
||
172 | return $return; |
||
173 | } else { |
||
174 | if (isset($response['responses'])) { |
||
175 | $first = $response["responses"][0]; |
||
176 | $return["success"] = $first["response-code"] ===200; |
||
177 | $return["code"] = $first["response-code"]; |
||
178 | $return["message"] = $first["response-description"]; |
||
179 | $return["payload"] = $response["responses"]; |
||
180 | return $return; |
||
181 | } |
||
182 | if (isset($response["response-code"])) { |
||
183 | $first = $response; |
||
184 | $return["success"] = $first["response-code"] ===200; |
||
185 | $return["code"] = $first["response-code"]; |
||
186 | $return["message"] = $first["response-description"]; |
||
187 | $return["payload"] = $response; |
||
188 | return $return; |
||
189 | } |
||
190 | //Temporal fix for the mis-spelled api response code to 'respose-code' |
||
191 | if (isset($response["respose-code"])) { |
||
192 | $first = $response; |
||
193 | $return["success"] = $first["respose-code"] ===200; |
||
194 | $return["code"] = $first["respose-code"]; |
||
195 | $return["message"] = $first["response-description"]; |
||
196 | $return["payload"] = $response; |
||
197 | return $return; |
||
198 | } |
||
199 | |||
200 | $return["success"] = false; |
||
201 | $return["message"] = "Unknown Error"; |
||
202 | $return["payload"] = $response; |
||
203 | return $return; |
||
204 | } |
||
205 | } |
||
206 | /** |
||
207 | * @param string $endpoint |
||
208 | * @param array $data |
||
209 | * @param array $headers |
||
210 | * @return array|mixed |
||
211 | */ |
||
212 | private function curlPost(string $endpoint, array $data, array $headers=[]) { |
||
213 | $url = $this->baseUrl.$endpoint; |
||
214 | $curl = curl_init(); |
||
215 | curl_setopt($curl, CURLOPT_URL, $url); |
||
216 | curl_setopt($curl, CURLOPT_HTTPHEADER, array_merge(array('Content-Type:application/json'),$headers)); |
||
217 | |||
218 | $data_string = json_encode($data); |
||
219 | curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); |
||
220 | curl_setopt($curl, CURLOPT_POST, true); |
||
221 | curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); |
||
222 | curl_setopt($curl, CURLOPT_HEADER, false); |
||
223 | $curl_response = curl_exec($curl); |
||
224 | return json_decode($curl_response,true); |
||
225 | } |
||
226 | |||
227 | } |
||
228 |
This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.
Consider the following example. The parameter
$italy
is not defined by the methodfinale(...)
.The most likely cause is that the parameter was removed, but the annotation was not.