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