Passed
Push — multiproject/requestforms ( 675fe5 )
by Simon
08:58 queued 04:51
created

Logger::hospitalised()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
ccs 0
cts 3
cp 0
rs 10
cc 1
nc 1
nop 2
crap 2
1
<?php
2
/******************************************************************************
3
 * Wikipedia Account Creation Assistance tool                                 *
4
 *                                                                            *
5
 * All code in this file is released into the public domain by the ACC        *
6
 * Development Team. Please see team.json for a list of contributors.         *
7
 ******************************************************************************/
8
9
namespace Waca\Helpers;
10
11
use Exception;
12
use Waca\DataObject;
13
use Waca\DataObjects\Ban;
14
use Waca\DataObjects\Comment;
15
use Waca\DataObjects\Domain;
16
use Waca\DataObjects\EmailTemplate;
17
use Waca\DataObjects\JobQueue;
18
use Waca\DataObjects\Log;
19
use Waca\DataObjects\Request;
20
use Waca\DataObjects\RequestForm;
21
use Waca\DataObjects\RequestQueue;
22
use Waca\DataObjects\SiteNotice;
23
use Waca\DataObjects\User;
24
use Waca\DataObjects\WelcomeTemplate;
25
use Waca\PdoDatabase;
26
27
/**
28
 * Helper class for creating log entries
29
 *
30
 * Logger description.
31
 *
32
 * @version 1.0
33
 * @author  stwalkerster
34
 */
35
class Logger
36
{
37
    /**
38
     * @param PdoDatabase $database
39
     * @param Request     $object
40
     */
41
    public static function emailConfirmed(PdoDatabase $database, Request $object)
42
    {
43
        self::createLogEntry($database, $object, "Email Confirmed", null, User::getCommunity());
44
    }
45
46
    /**
47
     * @param PdoDatabase $database
48
     * @param DataObject  $object
49
     * @param string      $logAction
50
     * @param null|string $comment
51
     * @param User        $user
52
     *
53
     * @throws Exception
54
     */
55
    private static function createLogEntry(
56
        PdoDatabase $database,
57
        DataObject $object,
58
        $logAction,
59
        $comment = null,
60
        $user = null
61
    ) {
62
        if ($user == null) {
63
            $user = User::getCurrent($database);
64
        }
65
66
        $objectType = get_class($object);
67
        if (strpos($objectType, 'Waca\\DataObjects\\') !== false) {
68
            $objectType = str_replace('Waca\\DataObjects\\', '', $objectType);
69
        }
70
71
        $log = new Log();
72
        $log->setDatabase($database);
73
        $log->setAction($logAction);
74
        $log->setObjectId($object->getId());
75
        $log->setObjectType($objectType);
76
        $log->setUser($user);
77
        $log->setComment($comment);
78
        $log->save();
79
    }
80
81
    #region Users
82
83
    /**
84
     * @param PdoDatabase $database
85
     * @param User        $user
86
     */
87
    public static function newUser(PdoDatabase $database, User $user)
88
    {
89
        self::createLogEntry($database, $user, 'Registered', null, User::getCommunity());
90
    }
91
92
    /**
93
     * @param PdoDatabase $database
94
     * @param User        $object
95
     */
96
    public static function approvedUser(PdoDatabase $database, User $object)
97
    {
98
        self::createLogEntry($database, $object, "Approved");
99
    }
100
101
    /**
102
     * @param PdoDatabase $database
103
     * @param User        $object
104
     * @param string      $comment
105
     */
106
    public static function declinedUser(PdoDatabase $database, User $object, $comment)
107
    {
108
        self::createLogEntry($database, $object, "Declined", $comment);
109
    }
110
111
    /**
112
     * @param PdoDatabase $database
113
     * @param User        $object
114
     * @param string      $comment
115
     */
116
    public static function suspendedUser(PdoDatabase $database, User $object, $comment)
117
    {
118
        self::createLogEntry($database, $object, "Suspended", $comment);
119
    }
120
121
    /**
122
     * @param PdoDatabase $database
123
     * @param User        $object
124
     * @param string      $comment
125
     */
126
    public static function demotedUser(PdoDatabase $database, User $object, $comment)
127
    {
128
        self::createLogEntry($database, $object, "Demoted", $comment);
129
    }
130
131
    /**
132
     * @param PdoDatabase $database
133
     * @param User        $object
134
     */
135
    public static function promotedUser(PdoDatabase $database, User $object)
136
    {
137
        self::createLogEntry($database, $object, "Promoted");
138
    }
139
140
    /**
141
     * @param PdoDatabase $database
142
     * @param User        $object
143
     * @param string      $comment
144
     */
145
    public static function renamedUser(PdoDatabase $database, User $object, $comment)
146
    {
147
        self::createLogEntry($database, $object, "Renamed", $comment);
148
    }
149
150
    /**
151
     * @param PdoDatabase $database
152
     * @param User        $object
153
     */
154
    public static function userPreferencesChange(PdoDatabase $database, User $object)
155
    {
156
        self::createLogEntry($database, $object, "Prefchange");
157
    }
158
159
    /**
160
     * @param PdoDatabase $database
161
     * @param User        $object
162
     * @param string      $reason
163
     * @param array       $added
164
     * @param array       $removed
165
     */
166
    public static function userRolesEdited(PdoDatabase $database, User $object, $reason, $added, $removed)
167
    {
168
        $logData = serialize(array(
169
            'added'   => $added,
170
            'removed' => $removed,
171
            'reason'  => $reason,
172
        ));
173
174
        self::createLogEntry($database, $object, "RoleChange", $logData);
175
    }
176
177
    #endregion
178
179
    /**
180
     * @param PdoDatabase $database
181
     * @param SiteNotice  $object
182
     */
183
    public static function siteNoticeEdited(PdoDatabase $database, SiteNotice $object)
184
    {
185
        self::createLogEntry($database, $object, "Edited");
186
    }
187
188
    #region Welcome Templates
189
190
    /**
191
     * @param PdoDatabase     $database
192
     * @param WelcomeTemplate $object
193
     */
194
    public static function welcomeTemplateCreated(PdoDatabase $database, WelcomeTemplate $object)
195
    {
196
        self::createLogEntry($database, $object, "CreatedTemplate");
197
    }
198
199
    /**
200
     * @param PdoDatabase     $database
201
     * @param WelcomeTemplate $object
202
     */
203
    public static function welcomeTemplateEdited(PdoDatabase $database, WelcomeTemplate $object)
204
    {
205
        self::createLogEntry($database, $object, "EditedTemplate");
206
    }
207
208
    /**
209
     * @param PdoDatabase     $database
210
     * @param WelcomeTemplate $object
211
     */
212
    public static function welcomeTemplateDeleted(PdoDatabase $database, WelcomeTemplate $object)
213
    {
214
        self::createLogEntry($database, $object, "DeletedTemplate");
215
    }
216
217
    #endregion
218
219
    #region Bans
220
221
    /**
222
     * @param PdoDatabase $database
223
     * @param Ban         $object
224
     * @param string      $reason
225
     */
226
    public static function banned(PdoDatabase $database, Ban $object, $reason)
227
    {
228
        self::createLogEntry($database, $object, "Banned", $reason);
229
    }
230
231
    /**
232
     * @param PdoDatabase $database
233
     * @param Ban         $object
234
     * @param string      $reason
235
     */
236
    public static function unbanned(PdoDatabase $database, Ban $object, $reason)
237
    {
238
        self::createLogEntry($database, $object, "Unbanned", $reason);
239
    }
240
241
    #endregion
242
243
    #region Requests
244
245
    /**
246
     * @param PdoDatabase $database
247
     * @param Request     $object
248
     * @param string      $target
249
     */
250
    public static function deferRequest(PdoDatabase $database, Request $object, $target)
251
    {
252
        self::createLogEntry($database, $object, "Deferred to $target");
253
    }
254
255
    /**
256
     * @param PdoDatabase $database
257
     * @param Request     $object
258
     * @param integer     $target
259
     * @param string      $comment
260
     * @param User|null   $logUser
261
     */
262
    public static function closeRequest(PdoDatabase $database, Request $object, $target, $comment, User $logUser = null)
263
    {
264
        self::createLogEntry($database, $object, "Closed $target", $comment, $logUser);
265
    }
266
267
    /**
268
     * @param PdoDatabase $database
269
     * @param Request     $object
270
     */
271
    public static function reserve(PdoDatabase $database, Request $object)
272
    {
273
        self::createLogEntry($database, $object, "Reserved");
274
    }
275
276
    /**
277
     * @param PdoDatabase $database
278
     * @param Request     $object
279
     */
280
    public static function breakReserve(PdoDatabase $database, Request $object)
281
    {
282
        self::createLogEntry($database, $object, "BreakReserve");
283
    }
284
285
    /**
286
     * @param PdoDatabase $database
287
     * @param Request     $object
288
     */
289
    public static function unreserve(PdoDatabase $database, Request $object)
290
    {
291
        self::createLogEntry($database, $object, "Unreserved");
292
    }
293
294
    /**
295
     * @param PdoDatabase $database
296
     * @param Comment     $object
297
     * @param Request     $request
298
     */
299
    public static function editComment(PdoDatabase $database, Comment $object, Request $request)
300
    {
301
        self::createLogEntry($database, $request, "EditComment-r");
302
        self::createLogEntry($database, $object, "EditComment-c");
303
    }
304
305
    /**
306
     * @param PdoDatabase $database
307
     * @param Comment     $object
308
     */
309
    public static function flaggedComment(PdoDatabase $database, Comment $object)
310
    {
311
        self::createLogEntry($database, $object, "FlaggedComment");
312
    }
313
314
    /**
315
     * @param PdoDatabase $database
316
     * @param Comment     $object
317
     */
318
    public static function unflaggedComment(PdoDatabase $database, Comment $object)
319
    {
320
        self::createLogEntry($database, $object, "UnflaggedComment");
321
    }
322
323
    /**
324
     * @param PdoDatabase $database
325
     * @param Request     $object
326
     * @param User        $target
327
     */
328
    public static function sendReservation(PdoDatabase $database, Request $object, User $target)
329
    {
330
        self::createLogEntry($database, $object, "SendReserved");
331
        self::createLogEntry($database, $object, "ReceiveReserved", null, $target);
332
    }
333
334
    /**
335
     * @param PdoDatabase $database
336
     * @param Request     $object
337
     * @param string      $comment
338
     */
339
    public static function sentMail(PdoDatabase $database, Request $object, $comment)
340
    {
341
        self::createLogEntry($database, $object, "SentMail", $comment);
342
    }
343
344
    /**
345
     * @param PdoDatabase $database
346
     * @param Request     $object
347
     */
348
    public static function enqueuedJobQueue(PdoDatabase $database, Request $object)
349
    {
350
        self::createLogEntry($database, $object, 'EnqueuedJobQueue');
351
    }
352
353
    public static function hospitalised(PdoDatabase $database, Request $object)
354
    {
355
        self::createLogEntry($database, $object, 'Hospitalised');
356
    }
357
    #endregion
358
359
    #region Email templates
360
361
    /**
362
     * @param PdoDatabase   $database
363
     * @param EmailTemplate $object
364
     */
365
    public static function createEmail(PdoDatabase $database, EmailTemplate $object)
366
    {
367
        self::createLogEntry($database, $object, "CreatedEmail");
368
    }
369
370
    /**
371
     * @param PdoDatabase   $database
372
     * @param EmailTemplate $object
373
     */
374
    public static function editedEmail(PdoDatabase $database, EmailTemplate $object)
375
    {
376
        self::createLogEntry($database, $object, "EditedEmail");
377
    }
378
379
    #endregion
380
381
    #region Display
382
383
    #endregion
384
385
    #region Automation
386
387
    public static function backgroundJobComplete(PdoDatabase $database, JobQueue $job)
388
    {
389
        self::createLogEntry($database, $job, 'JobCompleted', null, User::getCommunity());
390
    }
391
392
    public static function backgroundJobIssue(PdoDatabase $database, JobQueue $job)
393
    {
394
        $data = array('status' => $job->getStatus(), 'error' => $job->getError());
395
        self::createLogEntry($database, $job, 'JobIssue', serialize($data), User::getCommunity());
396
    }
397
398
    public static function backgroundJobCancelled(PdoDatabase $database, JobQueue $job)
399
    {
400
        self::createLogEntry($database, $job, 'JobCancelled', $job->getError());
401
    }
402
403
    public static function backgroundJobRequeued(PdoDatabase $database, JobQueue $job)
404
    {
405
        self::createLogEntry($database, $job, 'JobRequeued');
406
    }
407
408
    public static function backgroundJobAcknowledged(PdoDatabase $database, JobQueue $job, $comment = null)
409
    {
410
        self::createLogEntry($database, $job, 'JobAcknowledged', $comment);
411
    }
412
    #endregion
413
414
    #region Request Queues
415
    public static function requestQueueCreated(PdoDatabase $database, RequestQueue $queue)
416
    {
417
        self::createLogEntry($database, $queue, 'QueueCreated');
418
    }
419
420
    public static function requestQueueEdited(PdoDatabase $database, RequestQueue $queue)
421
    {
422
        self::createLogEntry($database, $queue, 'QueueEdited');
423
    }
424
    #endregion
425
    #region Domains
426
    public static function domainCreated(PdoDatabase $database, Domain $domain)
427
    {
428
        self::createLogEntry($database, $domain, 'DomainCreated');
429
    }
430
431
    public static function domainEdited(PdoDatabase $database, Domain $domain)
432
    {
433
        self::createLogEntry($database, $domain, 'DomainEdited');
434
    }
435
    #endregion
436
    #region Request Forms
437
    public static function requestFormCreated(PdoDatabase $database, RequestForm $requestForm)
438
    {
439
        self::createLogEntry($database, $requestForm, 'RequestFormCreated');
440
    }
441
442
    public static function requestFormEdited(PdoDatabase $database, RequestForm $requestForm)
443
    {
444
        self::createLogEntry($database, $requestForm, 'RequestFormEdited');
445
    }
446
    #endregion
447
}
448