diff --git a/app/classes/Framadate/Services/AdminPollService.php b/app/classes/Framadate/Services/AdminPollService.php index 62912c8ccd3611bededd1a519c31da5865d0ee32..e86bbb8b0314e51148ebe67e90890ad9464dc22d 100644 --- a/app/classes/Framadate/Services/AdminPollService.php +++ b/app/classes/Framadate/Services/AdminPollService.php @@ -91,7 +91,15 @@ class AdminPollService { */ function deleteEntirePoll($poll_id) { $poll = $this->pollRepository->findById($poll_id); - $this->logService->log('DELETE_POLL', "id:$poll->id, format:$poll->format, admin:$poll->admin_name, mail:$poll->admin_mail"); + $this->logService->logEntries( + 'DELETE_POLL', + [ + "id:$poll->id", + "format:$poll->format", + "admin:$poll->admin_name", + "mail:$poll->admin_mail" + ] + ); // Delete the entire poll $this->voteRepository->deleteByPollId($poll_id); @@ -110,7 +118,10 @@ class AdminPollService { * @return bool true if action succeeded */ public function deleteDateSlot($poll, $slot) { - $this->logService->log('DELETE_SLOT', 'id:' . $poll->id . ', slot:' . json_encode($slot)); + $this->logService->logEntries( + 'DELETE_SLOT', + ["id:$poll->id", 'slot:' . json_encode($slot)] + ); $datetime = $slot->title; $moment = $slot->moment; @@ -158,7 +169,9 @@ class AdminPollService { } public function deleteClassicSlot($poll, $slot_title) { - $this->logService->log('DELETE_SLOT', 'id:' . $poll->id . ', slot:' . $slot_title); + $this->logService->logEntries( + ['DELETE_SLOT', "id:$poll->id", "slot:$slot_title"] + ); $slots = $this->pollService->allSlotsByPoll($poll); @@ -200,7 +213,10 @@ class AdminPollService { * @throws \Doctrine\DBAL\ConnectionException */ public function addDateSlot($poll_id, $datetime, $new_moment) { - $this->logService->log('ADD_COLUMN', 'id:' . $poll_id . ', datetime:' . $datetime . ', moment:' . str_replace(',', '-', $new_moment)); + $this->logService->logEntries( + 'ADD_COLUMN', + ["id:$poll_id", "datetime:$datetime", "moment:$new_moment"] + ); try { $slots = $this->slotRepository->listByPollId($poll_id); @@ -252,7 +268,10 @@ class AdminPollService { * @throws \Doctrine\DBAL\DBALException */ public function addClassicSlot($poll_id, $title) { - $this->logService->log('ADD_COLUMN', 'id:' . $poll_id . ', title:' . str_replace(',', '-', $title)); + $this->logService->logEntries( + 'ADD_COLUMN', + ["id:$poll_id", "title:$title"] + ); $slots = $this->slotRepository->listByPollId($poll_id); diff --git a/app/classes/Framadate/Services/LogService.php b/app/classes/Framadate/Services/LogService.php index 9242df12656b68b0c5872e0992ff8ceb43375d2e..1f703d752e6babca0387a51e59c49a1cda1e9bae 100644 --- a/app/classes/Framadate/Services/LogService.php +++ b/app/classes/Framadate/Services/LogService.php @@ -19,5 +19,19 @@ class LogService { function log($tag, $message) { error_log(date('Ymd His') . ' [' . $tag . '] ' . $message . "\n", 3, ROOT_DIR . LOG_FILE); } + + /** + * Log a list of entries as a single message to the log file. + * + * @param $tag string A tag is used to quickly found a message when reading log file + * @param $entries array some entries to join with comma into a single message + */ + function logEntries($tag, $entries) { + $escapeCommas = function($value) { + return str_replace(',', '-', $value); + }; + $message = join(', ', array_map($escapeCommas, $entries)); + + error_log(date('Ymd His') . ' [' . $tag . '] ' . $message . "\n", 3, ROOT_DIR . LOG_FILE); + } } - \ No newline at end of file