Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
94.44% |
17 / 18 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 1 |
| AdminActivityLogger | |
93.75% |
15 / 16 |
|
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
| log | |
93.75% |
15 / 16 |
|
0.00% |
0 / 1 |
2.00 | |||
| 1 | <?php |
| 2 | |
| 3 | App::uses('ClassRegistry', 'Utility'); |
| 4 | App::uses('Auth', 'Utility'); |
| 5 | |
| 6 | /** |
| 7 | * AdminActivityLogger |
| 8 | * |
| 9 | * Centralized logging utility for all admin activities. |
| 10 | * Provides a simple, consistent API for recording admin actions with proper type IDs. |
| 11 | * |
| 12 | * Schema: admin_activity (id, user_id, tsumego_id, set_id, type, old_value, new_value, created) |
| 13 | * - type: INT FK to admin_activity_type(id) |
| 14 | * - old_value/new_value: VARCHAR(500) for state changes |
| 15 | * |
| 16 | * Usage: |
| 17 | * |
| 18 | * // Edit with values (old → new) |
| 19 | * AdminActivityLogger::log(AdminActivityType::DESCRIPTION_EDIT, $tsumegoId, null, $oldDesc, $newDesc); |
| 20 | * |
| 21 | * // Simple action (no values) |
| 22 | * AdminActivityLogger::log(AdminActivityType::PROBLEM_DELETE, $tsumegoId, $setId); |
| 23 | */ |
| 24 | class AdminActivityLogger |
| 25 | { |
| 26 | /** |
| 27 | * Log any admin activity |
| 28 | * |
| 29 | * @param int $type Activity type ID (use class constants) |
| 30 | * @param int|null $tsumegoId Problem ID (null for set-only activities) |
| 31 | * @param int|null $setId Set ID (null for problem-only activities) |
| 32 | * @param string|null $oldValue Old value for state changes/edits (null if not applicable) |
| 33 | * @param string|null $newValue New value for state changes/edits (null if not applicable) |
| 34 | * @return bool True if saved successfully |
| 35 | * |
| 36 | * Examples: |
| 37 | * // Description edit with old → new |
| 38 | * AdminActivityLogger::log(AdminActivityType::DESCRIPTION_EDIT, $tsumegoId, null, $oldDesc, $newDesc); |
| 39 | * |
| 40 | * // Simple action without values |
| 41 | * AdminActivityLogger::log(AdminActivityType::PROBLEM_DELETE, $tsumegoId, $setId); |
| 42 | */ |
| 43 | public static function log($type, $tsumegoId = null, $setId = null, $oldValue = null, $newValue = null) |
| 44 | { |
| 45 | $userId = Auth::getUserID(); |
| 46 | if (!$userId) |
| 47 | return false; // Only logged-in users |
| 48 | |
| 49 | $adminActivity = ClassRegistry::init('AdminActivity'); |
| 50 | $adminActivity->create(); |
| 51 | |
| 52 | $data = [ |
| 53 | 'AdminActivity' => [ |
| 54 | 'user_id' => $userId, |
| 55 | 'tsumego_id' => $tsumegoId, |
| 56 | 'set_id' => $setId, |
| 57 | 'type' => $type, |
| 58 | 'old_value' => $oldValue, |
| 59 | 'new_value' => $newValue, |
| 60 | ], |
| 61 | ]; |
| 62 | |
| 63 | return (bool) $adminActivity->save($data, false); // Skip validation for performance |
| 64 | } |
| 65 | } |