PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.11.1
GiveWP – Donation Plugin and Fundraising Platform v2.11.1
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Log / LogModel.php
give / src / Log Last commit date
Admin 5 years ago Commands 5 years ago Helpers 5 years ago Migrations 5 years ago ValueObjects 5 years ago Assets.php 5 years ago Log.php 5 years ago LogFactory.php 5 years ago LogModel.php 5 years ago LogRepository.php 5 years ago LogServiceProvider.php 5 years ago
LogModel.php
268 lines
1 <?php
2
3 namespace Give\Log;
4
5 use DateTime;
6 use Give\Log\ValueObjects\LogType;
7
8 /**
9 * Class LogModel
10 * @package Give\Log
11 *
12 * @method error( string $message, string $source, array $context = [] )
13 * @method warning( string $message, string $source, array $context = [] )
14 * @method notice( string $message, string $source, array $context = [] )
15 * @method success( string $message, string $source, array $context = [] )
16 * @method info( string $message, string $source, array $context = [] )
17 * @method http( string $message, string $source, array $context = [] )
18 *
19 * @since 2.10.0
20 */
21 class LogModel {
22 /**
23 * @var string
24 */
25 private $type;
26
27 /**
28 * @var string
29 */
30 private $message;
31
32 /**
33 * @var string
34 */
35 private $category;
36
37 /**
38 * @var string
39 */
40 private $source;
41
42 /**
43 * @var array
44 */
45 private $context;
46
47 /**
48 * @var int|null
49 */
50 private $id;
51
52 /**
53 * @var string
54 */
55 private $date;
56
57 /**
58 * LogModel constructor.
59 *
60 * @param string $type
61 * @param string $message
62 * @param string $category
63 * @param string $source
64 * @param array $context
65 * @param int|null $logId
66 * @param string $date
67 */
68 public function __construct( $type, $message, $category, $source, $context, $logId, $date ) {
69 $this->setType( $type );
70 $this->setDate( $date );
71 $this->category = $category;
72 $this->source = $source;
73 $this->context = $context;
74 $this->message = $message;
75 $this->id = $logId;
76 }
77
78 /**
79 * Set log type
80 * If log type is not supported, it will fallback to NOTICE type
81 *
82 * @param string $type
83 */
84 private function setType( $type ) {
85 $this->type = in_array( $type, LogType::getAll(), true )
86 ? $type
87 : LogType::getDefault();
88 }
89
90 /**
91 * Set log message
92 * If not defined, fallback to default value
93 *
94 * @param string|null $message
95 */
96 private function setMessage( $message ) {
97 $this->message = is_null( $message )
98 ? esc_html__( 'Something went wrong', 'give' )
99 : $message;
100 }
101
102 /**
103 * Set log date
104 *
105 * @param string $date
106 */
107 private function setDate( $date ) {
108 $this->date = $this->isValidateDate( $date )
109 ? $date
110 : date( 'Y-m-d H:i:s' );
111 }
112
113 /**
114 * Set log source
115 * If not defined, fallback to default value
116 *
117 * @param string|null $source
118 */
119 private function setSource( $source ) {
120 $this->source = is_null( $source )
121 ? esc_html__( 'Give Core', 'give' )
122 : $source;
123 }
124
125 /**
126 * Helper method to check if given string is a valid date
127 *
128 * @param string $date
129 * @param string $format
130 *
131 * @return bool
132 */
133 public function isValidateDate( $date, $format = 'Y-m-d H:i:s' ) {
134 $dateTime = DateTime::createFromFormat( $format, $date );
135 return $dateTime && $dateTime->format( $format ) === $date;
136 }
137
138 /**
139 * @return int
140 */
141 public function getId() {
142 return $this->id;
143 }
144
145 /**
146 * @return string
147 */
148 public function getType() {
149 return $this->type;
150 }
151
152 /**
153 * @return string
154 */
155 public function getCategory() {
156 return $this->category;
157 }
158
159 /**
160 * @return string
161 */
162 public function getSource() {
163 return $this->source;
164 }
165
166 /**
167 * @return string
168 */
169 public function getMessage() {
170 return $this->message;
171 }
172
173 /**
174 * @return array
175 */
176 public function getContext() {
177 return $this->context;
178 }
179
180 /**
181 * @return string
182 */
183 public function getDate() {
184 return $this->date;
185 }
186
187 /**
188 * Get context data
189 *
190 * @param bool $jsonEncode
191 *
192 * @return string|array
193 */
194 public function getData( $jsonEncode = false ) {
195 $data = [
196 'message' => $this->getMessage(),
197 'context' => $this->getContext(),
198 ];
199
200 if ( $jsonEncode ) {
201 return json_encode( $data );
202 }
203
204 return $data;
205 }
206
207 /**
208 * @param string $key
209 * @param mixed $value
210 */
211 private function addContext( $key, $value ) {
212 if ( is_array( $value ) || is_object( $value ) ) {
213 $value = print_r( $value, true );
214 }
215 $this->context[ $key ] = $value;
216 }
217
218 /**
219 * Add supplemental information to existing log.
220 * Supplemental data will be added as a context with a key prefixed with the current timestamp.
221 *
222 * @param string $key
223 * @param string $value
224 */
225 public function addSupplemental( $key, $value ) {
226 $contextName = sprintf( '[%s] %s', date( 'Y-m-d H:i:s' ), $key );
227 $this->addContext( $contextName, $value );
228 }
229
230 /**
231 * @param string $type
232 * @param array $args
233 */
234 public function __call( $type, $args ) {
235 list ( $message, $source, $context ) = array_pad( $args, 3, null );
236
237 $this->setType( $type );
238 $this->setMessage( $message );
239 $this->setSource( $source );
240
241 // Set additional context
242 if ( is_array( $context ) ) {
243 foreach ( $context as $key => $value ) {
244 $this->addContext( $key, $value );
245 }
246 }
247
248 $this->save();
249 }
250
251 /**
252 * Save log record
253 */
254 public function save() {
255 /**
256 * var LogRepository $repository
257 */
258 $repository = give( LogRepository::class );
259
260 if ( $this->getId() ) {
261 $this->date = date( 'Y-m-d H:i:s' );
262 $repository->updateLog( $this );
263 } else {
264 $this->id = $repository->insertLog( $this );
265 }
266 }
267 }
268