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 | * Incus |
||
4 | * |
||
5 | * @copyright Copyright (c) 2014 Warrick Bayman. |
||
6 | * @author Warrick Bayman <[email protected]> |
||
7 | * @license MIT License http://opensource.org/licenses/MIT |
||
8 | * |
||
9 | */ |
||
10 | |||
11 | namespace Incus; |
||
12 | |||
13 | |||
14 | use Carbon\Carbon; |
||
15 | use Incus\Contracts\MessageInterface; |
||
16 | |||
17 | class Message implements MessageInterface |
||
18 | { |
||
19 | private $message; |
||
20 | |||
21 | |||
22 | private function getProperty($property, $default = null) |
||
23 | { |
||
24 | if (property_exists($this->message, $property) && isset($this->message->{$property})) { |
||
25 | return $this->message->{$property}; |
||
26 | } |
||
27 | return $default; |
||
28 | } |
||
29 | |||
30 | |||
31 | /** |
||
32 | * Message |
||
33 | * |
||
34 | * @param $event Event |
||
35 | */ |
||
36 | public function __construct(Event $event) |
||
37 | { |
||
38 | $this->event = $event; |
||
0 ignored issues
–
show
|
|||
39 | $this->message = json_decode($event->raw())->msg; |
||
40 | } |
||
41 | |||
42 | /** |
||
43 | * Message ID |
||
44 | * |
||
45 | * @return string |
||
46 | */ |
||
47 | public function id() |
||
48 | { |
||
49 | return $this->getProperty('_id'); |
||
50 | } |
||
51 | |||
52 | /** |
||
53 | * Message sent at |
||
54 | * |
||
55 | * @return Carbon |
||
56 | */ |
||
57 | public function at() |
||
58 | { |
||
59 | if ($this->getProperty('ts')) { |
||
60 | return Carbon::createFromTimestamp($this->getProperty('ts')); |
||
61 | } |
||
62 | return null; |
||
63 | } |
||
64 | |||
65 | /** |
||
66 | * Recipient email address |
||
67 | * |
||
68 | * @return string |
||
69 | */ |
||
70 | public function to() |
||
71 | { |
||
72 | return $this->getProperty('email'); |
||
73 | } |
||
74 | |||
75 | /** |
||
76 | * Sender email address |
||
77 | * |
||
78 | * @return string |
||
79 | */ |
||
80 | public function from() |
||
81 | { |
||
82 | return $this->getProperty('sender'); |
||
83 | } |
||
84 | |||
85 | /** |
||
86 | * Message subject |
||
87 | * |
||
88 | * @return string |
||
89 | */ |
||
90 | public function subject() |
||
91 | { |
||
92 | return $this->getProperty('subject'); |
||
93 | } |
||
94 | |||
95 | /** |
||
96 | * Array of tags |
||
97 | * |
||
98 | * @return array |
||
99 | */ |
||
100 | public function tags() |
||
101 | { |
||
102 | $tags = $this->getProperty('tags'); |
||
103 | if ($tags) { |
||
104 | return (Array)$tags; |
||
105 | } |
||
106 | return null; |
||
107 | } |
||
108 | |||
109 | /** |
||
110 | * Metadata |
||
111 | * |
||
112 | * @return Metadata |
||
113 | */ |
||
114 | public function metadata() |
||
115 | { |
||
116 | return new Metadata($this->message); |
||
0 ignored issues
–
show
The return type of
return new \Incus\Metadata($this->message); (Incus\Metadata ) is incompatible with the return type declared by the interface Incus\Contracts\MessageInterface::metadata of type array .
If you return a value from a function or method, it should be a sub-type of the type that is given by the parent type f.e. an interface, or abstract method. This is more formally defined by the Lizkov substitution principle, and guarantees that classes that depend on the parent type can use any instance of a child type interchangably. This principle also belongs to the SOLID principles for object oriented design. Let’s take a look at an example: class Author {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
abstract class Post {
public function getAuthor() {
return 'Johannes';
}
}
class BlogPost extends Post {
public function getAuthor() {
return new Author('Johannes');
}
}
class ForumPost extends Post { /* ... */ }
function my_function(Post $post) {
echo strtoupper($post->getAuthor());
}
Our function ![]() |
|||
117 | } |
||
118 | |||
119 | /** |
||
120 | * Message state |
||
121 | * |
||
122 | * @return string |
||
123 | */ |
||
124 | public function state() |
||
125 | { |
||
126 | return $this->getProperty('state'); |
||
127 | } |
||
128 | |||
129 | /** |
||
130 | * Message was sent with this sub account |
||
131 | * |
||
132 | * @return string |
||
133 | */ |
||
134 | public function subAccount() |
||
135 | { |
||
136 | return $this->getProperty('subaccount'); |
||
137 | } |
||
138 | |||
139 | /** |
||
140 | * Bounced SMTP response message |
||
141 | * |
||
142 | * @return string|null |
||
143 | */ |
||
144 | public function diag() |
||
145 | { |
||
146 | return $this->getProperty('diag'); |
||
147 | } |
||
148 | |||
149 | /** |
||
150 | * Short description of the bounce reason |
||
151 | * |
||
152 | * @return string |
||
153 | */ |
||
154 | public function bounceDescription() |
||
155 | { |
||
156 | return $this->getProperty('bounce_description'); |
||
157 | } |
||
158 | |||
159 | /** |
||
160 | * The template slug |
||
161 | * |
||
162 | * @return string|null |
||
163 | */ |
||
164 | public function template() |
||
165 | { |
||
166 | return $this->getProperty('template'); |
||
167 | } |
||
168 | } |
||
169 |
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: