PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.10.0
GiveWP – Donation Plugin and Fundraising Platform v2.10.0
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
242 lines
1 <?php
2
3 namespace Give\Log;
4
5 use Give\Log\ValueObjects\LogType;
6
7 /**
8 * Class LogModel
9 * @package Give\Log
10 *
11 * @method error( string $message, string $source, array $context = [] )
12 * @method warning( string $message, string $source, array $context = [] )
13 * @method notice( string $message, string $source, array $context = [] )
14 * @method success( string $message, string $source, array $context = [] )
15 * @method info( string $message, string $source, array $context = [] )
16 * @method http( string $message, string $source, array $context = [] )
17 *
18 * @since 2.10.0
19 */
20 class LogModel {
21 /**
22 * @var string
23 */
24 private $type;
25
26 /**
27 * @var string
28 */
29 private $message;
30
31 /**
32 * @var string
33 */
34 private $category;
35
36 /**
37 * @var string
38 */
39 private $source;
40
41 /**
42 * @var array
43 */
44 private $context;
45
46 /**
47 * @var int|null
48 */
49 private $id;
50
51 /**
52 * @var string|null
53 */
54 private $date;
55
56 /**
57 * LogModel constructor.
58 *
59 * @param string $type
60 * @param string $message
61 * @param string $category
62 * @param string $source
63 * @param array $context
64 * @param int|null $logId
65 * @param string|null $date
66 */
67 public function __construct( $type, $message, $category, $source, $context, $logId, $date ) {
68 $this->setType( $type );
69 $this->category = $category;
70 $this->source = $source;
71 $this->context = $context;
72 $this->message = $message;
73 $this->id = $logId;
74 $this->date = $date;
75 }
76
77 /**
78 * Set log type
79 * If log type is not supported, it will fallback to NOTICE type
80 *
81 * @param string $type
82 */
83 private function setType( $type ) {
84 $this->type = in_array( $type, LogType::getAll(), true )
85 ? $type
86 : LogType::getDefault();
87 }
88
89 /**
90 * Set log message
91 * If not defined, fallback to default value
92 *
93 * @param string|null $message
94 */
95 private function setMessage( $message ) {
96 $this->message = is_null( $message )
97 ? esc_html__( 'Something went wrong', 'give' )
98 : $message;
99 }
100
101 /**
102 * Set log source
103 * If not defined, fallback to default value
104 *
105 * @param string|null $source
106 */
107 private function setSource( $source ) {
108 $this->source = is_null( $source )
109 ? esc_html__( 'Give Core', 'give' )
110 : $source;
111 }
112
113 /**
114 * @return int
115 */
116 public function getId() {
117 return $this->id;
118 }
119
120 /**
121 * @return string
122 */
123 public function getType() {
124 return $this->type;
125 }
126
127 /**
128 * @return string
129 */
130 public function getCategory() {
131 return $this->category;
132 }
133
134 /**
135 * @return string
136 */
137 public function getSource() {
138 return $this->source;
139 }
140
141 /**
142 * @return string
143 */
144 public function getMessage() {
145 return $this->message;
146 }
147
148 /**
149 * @return array
150 */
151 public function getContext() {
152 return $this->context;
153 }
154
155 /**
156 * @return string
157 */
158 public function getDate() {
159 return $this->date;
160 }
161
162 /**
163 * Get context data
164 *
165 * @param bool $jsonEncode
166 *
167 * @return string|array
168 */
169 public function getData( $jsonEncode = false ) {
170 $data = [
171 'message' => $this->getMessage(),
172 'context' => $this->getContext(),
173 ];
174
175 if ( $jsonEncode ) {
176 return json_encode( $data );
177 }
178
179 return $data;
180 }
181
182 /**
183 * @param string $key
184 * @param mixed $value
185 */
186 private function addContext( $key, $value ) {
187 if ( is_array( $value ) || is_object( $value ) ) {
188 $value = print_r( $value, true );
189 }
190 $this->context[ $key ] = $value;
191 }
192
193 /**
194 * Add supplemental information to existing log.
195 * Supplemental data will be added as a context with a key prefixed with the current timestamp.
196 *
197 * @param string $key
198 * @param string $value
199 */
200 public function addSupplemental( $key, $value ) {
201 $contextName = sprintf( '[%s] %s', date( 'Y-m-d H:i:s' ), $key );
202 $this->addContext( $contextName, $value );
203 }
204
205 /**
206 * @param string $type
207 * @param array $args
208 */
209 public function __call( $type, $args ) {
210 list ( $message, $source, $context ) = array_pad( $args, 3, null );
211
212 $this->setType( $type );
213 $this->setMessage( $message );
214 $this->setSource( $source );
215
216 // Set additional context
217 if ( is_array( $context ) ) {
218 foreach ( $context as $key => $value ) {
219 $this->addContext( $key, $value );
220 }
221 }
222
223 $this->save();
224 }
225
226 /**
227 * Save log record
228 */
229 public function save() {
230 /**
231 * var LogRepository $repository
232 */
233 $repository = give( LogRepository::class );
234
235 if ( $this->getId() ) {
236 $repository->updateLog( $this );
237 } else {
238 $this->id = $repository->insertLog( $this );
239 }
240 }
241 }
242