Completed
Branch newinternal (104de7)
by Simon
10:16
created

Logger::deferRequest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 3
1
<?php
2
namespace Waca\Helpers;
3
4
use Exception;
5
use Waca\DataObject;
6
use Waca\DataObjects\Ban;
7
use Waca\DataObjects\Comment;
8
use Waca\DataObjects\EmailTemplate;
9
use Waca\DataObjects\SiteNotice;
10
use Waca\DataObjects\Log;
11
use Waca\DataObjects\Request;
12
use Waca\DataObjects\User;
13
use Waca\DataObjects\WelcomeTemplate;
14
use Waca\PdoDatabase;
15
16
/**
17
 * Helper class for creating log entries
18
 *
19
 * Logger description.
20
 *
21
 * @version 1.0
22
 * @author  stwalkerster
23
 */
24
class Logger
25
{
26
	/**
27
	 * @param PdoDatabase $database
28
	 * @param Request     $object
29
	 */
30
	public static function emailConfirmed(PdoDatabase $database, Request $object)
31
	{
32
		self::createLogEntry($database, $object, "Email Confirmed", null, User::getCommunity());
33
	}
34
35
	/**
36
	 * @param PdoDatabase $database
37
	 * @param DataObject  $object
38
	 * @param string      $logAction
39
	 * @param null|string $comment
40
	 * @param User        $user
41
	 *
42
	 * @throws Exception
43
	 */
44
	private static function createLogEntry(
45
		PdoDatabase $database,
46
		DataObject $object,
47
		$logAction,
48
		$comment = null,
49
		$user = null
50
	) {
51
		if ($user == null) {
52
			$user = User::getCurrent($database);
53
		}
54
55
		$objectType = get_class($object);
56
		if(strpos($objectType, 'Waca\\DataObjects\\') !== false)
57
		{
58
			$objectType = str_replace('Waca\\DataObjects\\', '', $objectType);
59
		}
60
61
		$log = new Log();
62
		$log->setDatabase($database);
63
		$log->setAction($logAction);
64
		$log->setObjectId($object->getId());
65
		$log->setObjectType($objectType);
66
		$log->setUser($user);
67
		$log->setComment($comment);
68
		$log->save();
69
	}
70
71
	#region Users
72
73
	/**
74
	 * @param PdoDatabase $database
75
	 * @param User        $user
76
	 */
77
	public static function newUser(PdoDatabase $database, User $user)
78
	{
79
		self::createLogEntry($database, $user, 'Registered', null, User::getCommunity());
80
	}
81
82
	/**
83
	 * @param PdoDatabase $database
84
	 * @param User        $object
85
	 */
86
	public static function approvedUser(PdoDatabase $database, User $object)
87
	{
88
		self::createLogEntry($database, $object, "Approved");
89
	}
90
91
	/**
92
	 * @param PdoDatabase $database
93
	 * @param User        $object
94
	 * @param string      $comment
95
	 */
96
	public static function declinedUser(PdoDatabase $database, User $object, $comment)
97
	{
98
		self::createLogEntry($database, $object, "Declined", $comment);
99
	}
100
101
	/**
102
	 * @param PdoDatabase $database
103
	 * @param User        $object
104
	 * @param string      $comment
105
	 */
106
	public static function suspendedUser(PdoDatabase $database, User $object, $comment)
107
	{
108
		self::createLogEntry($database, $object, "Suspended", $comment);
109
	}
110
111
	/**
112
	 * @param PdoDatabase $database
113
	 * @param User        $object
114
	 * @param string      $comment
115
	 */
116
	public static function demotedUser(PdoDatabase $database, User $object, $comment)
117
	{
118
		self::createLogEntry($database, $object, "Demoted", $comment);
119
	}
120
121
	/**
122
	 * @param PdoDatabase $database
123
	 * @param User        $object
124
	 */
125
	public static function promotedUser(PdoDatabase $database, User $object)
126
	{
127
		self::createLogEntry($database, $object, "Promoted");
128
	}
129
130
	/**
131
	 * @param PdoDatabase $database
132
	 * @param User        $object
133
	 * @param string      $comment
134
	 */
135
	public static function renamedUser(PdoDatabase $database, User $object, $comment)
136
	{
137
		self::createLogEntry($database, $object, "Renamed", $comment);
138
	}
139
140
	/**
141
	 * @param PdoDatabase $database
142
	 * @param User        $object
143
	 */
144
	public static function userPreferencesChange(PdoDatabase $database, User $object)
145
	{
146
		self::createLogEntry($database, $object, "Prefchange");
147
	}
148
149
	#endregion
150
151
	/**
152
	 * @param PdoDatabase $database
153
	 * @param SiteNotice  $object
154
	 */
155
	public static function siteNoticeEdited(PdoDatabase $database, SiteNotice $object)
156
	{
157
		self::createLogEntry($database, $object, "Edited");
158
	}
159
160
	#region Welcome Templates
161
162
	/**
163
	 * @param PdoDatabase     $database
164
	 * @param WelcomeTemplate $object
165
	 */
166
	public static function welcomeTemplateCreated(PdoDatabase $database, WelcomeTemplate $object)
167
	{
168
		self::createLogEntry($database, $object, "CreatedTemplate");
169
	}
170
171
	/**
172
	 * @param PdoDatabase     $database
173
	 * @param WelcomeTemplate $object
174
	 */
175
	public static function welcomeTemplateEdited(PdoDatabase $database, WelcomeTemplate $object)
176
	{
177
		self::createLogEntry($database, $object, "EditedTemplate");
178
	}
179
180
	/**
181
	 * @param PdoDatabase     $database
182
	 * @param WelcomeTemplate $object
183
	 */
184
	public static function welcomeTemplateDeleted(PdoDatabase $database, WelcomeTemplate $object)
185
	{
186
		self::createLogEntry($database, $object, "DeletedTemplate");
187
	}
188
189
	#endregion
190
191
	#region Bans
192
193
	/**
194
	 * @param PdoDatabase $database
195
	 * @param Ban         $object
196
	 * @param string      $reason
197
	 */
198
	public static function banned(PdoDatabase $database, Ban $object, $reason)
199
	{
200
		self::createLogEntry($database, $object, "Banned", $reason);
201
	}
202
203
	/**
204
	 * @param PdoDatabase $database
205
	 * @param Ban         $object
206
	 * @param string      $reason
207
	 */
208
	public static function unbanned(PdoDatabase $database, Ban $object, $reason)
209
	{
210
		self::createLogEntry($database, $object, "Unbanned", $reason);
211
	}
212
213
	#endregion
214
215
	#region Requests
216
217
	/**
218
	 * @param PdoDatabase $database
219
	 * @param Request     $object
220
	 * @param string      $target
221
	 */
222
	public static function deferRequest(PdoDatabase $database, Request $object, $target)
223
	{
224
		self::createLogEntry($database, $object, "Deferred to $target");
225
	}
226
227
	/**
228
	 * @param PdoDatabase $database
229
	 * @param Request     $object
230
	 * @param integer     $target
231
	 * @param string      $comment
232
	 */
233
	public static function closeRequest(PdoDatabase $database, Request $object, $target, $comment)
234
	{
235
		self::createLogEntry($database, $object, "Closed $target", $comment);
236
	}
237
238
	/**
239
	 * @param PdoDatabase $database
240
	 * @param Request     $object
241
	 */
242
	public static function reserve(PdoDatabase $database, Request $object)
243
	{
244
		self::createLogEntry($database, $object, "Reserved");
245
	}
246
247
	/**
248
	 * @param PdoDatabase $database
249
	 * @param Request     $object
250
	 */
251
	public static function breakReserve(PdoDatabase $database, Request $object)
252
	{
253
		self::createLogEntry($database, $object, "BreakReserve");
254
	}
255
256
	/**
257
	 * @param PdoDatabase $database
258
	 * @param Request     $object
259
	 */
260
	public static function unreserve(PdoDatabase $database, Request $object)
261
	{
262
		self::createLogEntry($database, $object, "Unreserved");
263
	}
264
265
	/**
266
	 * @param PdoDatabase $database
267
	 * @param Comment     $object
268
	 * @param Request     $request
269
	 */
270
	public static function editComment(PdoDatabase $database, Comment $object, Request $request)
271
	{
272
		self::createLogEntry($database, $request, "EditComment-r");
273
		self::createLogEntry($database, $object, "EditComment-c");
274
	}
275
276
	/**
277
	 * @param PdoDatabase $database
278
	 * @param Request     $object
279
	 * @param User        $target
280
	 */
281
	public static function sendReservation(PdoDatabase $database, Request $object, User $target)
282
	{
283
		self::createLogEntry($database, $object, "SendReserved");
284
		self::createLogEntry($database, $object, "ReceiveReserved", null, $target);
285
	}
286
287
	/**
288
	 * @param PdoDatabase $database
289
	 * @param Request     $object
290
	 * @param string      $comment
291
	 */
292
	public static function sentMail(PdoDatabase $database, Request $object, $comment)
293
	{
294
		self::createLogEntry($database, $object, "SentMail", $comment);
295
	}
296
	#endregion
297
298
	#region Email templates
299
300
	/**
301
	 * @param PdoDatabase   $database
302
	 * @param EmailTemplate $object
303
	 */
304
	public static function createEmail(PdoDatabase $database, EmailTemplate $object)
305
	{
306
		self::createLogEntry($database, $object, "CreatedEmail");
307
	}
308
309
	/**
310
	 * @param PdoDatabase   $database
311
	 * @param EmailTemplate $object
312
	 */
313
	public static function editedEmail(PdoDatabase $database, EmailTemplate $object)
314
	{
315
		self::createLogEntry($database, $object, "EditedEmail");
316
	}
317
318
	#endregion
319
320
	#region Display
321
322
323
	#endregion
324
}
325