Loading README.md +2 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ the user (using the forms) are saved in the database and can be viewed on the page admin/reports/events-track. You could use this to track number of times the CUD operation performed by which users. Added Event Log Track UI to see the logs directly. Currently, the following sub modules of Events Log Track are supported: - Menu (custom menu's and menu items CUD operations) - Node (CUD operations) Loading event_log_track.install +13 −0 Original line number Diff line number Diff line Loading @@ -122,3 +122,16 @@ function event_log_track_update_8102($sandbox) { $schema->changeField('event_log_track', 'path', 'path', $field); return t('"path" field size increased.'); } /** * Install event_log_track_ui submodule. */ function event_log_track_update_9401($sandbox) { $moduleHandler = \Drupal::service('module_handler'); if (!$moduleHandler->moduleExists('event_log_track_ui')) { $installer = \Drupal::service('module_installer'); $installer->install(['event_log_track_ui']); drupal_flush_all_caches(); } } event_log_track.links.menu.yml +0 −6 Original line number Diff line number Diff line event_log_track.report_form: title: 'Events Log Track' parent: system.admin_reports description: 'Get report about cud operation performed by the user on the website.' weight: -5 route_name: event_log_track.report_form event_log_track.settings_form: title: 'Events Log Track' route_name: event_log_track.settings_form Loading event_log_track.module +0 −93 Original line number Diff line number Diff line Loading @@ -5,9 +5,7 @@ * Track the logs of form submissions or other actions that performed by user. */ use Drupal\Core\Render\Element; use Drupal\Core\Url; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Routing\RouteMatchInterface; /** Loading Loading @@ -131,97 +129,6 @@ function event_log_track_insert(array &$log, bool $logOnCLI = FALSE) { } } /** * Returns all existing event handlers. * * @return array * An array with the event log handlers. */ function event_log_track_get_event_handlers(): array { $handlers = drupal_static(__FUNCTION__); if ($handlers === NULL) { $handlers = Drupal::moduleHandler()->invokeAll('event_log_track_handlers'); \Drupal::moduleHandler()->alter('event_log_track_handlers', $handlers); } return $handlers; } /** * Form submission callback. */ function event_log_track_form_submit(&$form, FormStateInterface $form_state) { if (!empty($form_state->__event_log_track_logged)) { // Some forms are submitted twice, for instance the node_form. // We will only call the submit callback once. return; } $form_state->__event_log_track_logged = TRUE; // Get form id. $form_id = $form['#form_id']; // Dispatch the submission to the correct event handler. $handlers = event_log_track_get_event_handlers(); foreach ($handlers as $type => $handler) { $dispatch = FALSE; if (!empty($handler['form_ids']) && in_array($form_id, $handler['form_ids'])) { $dispatch = TRUE; } elseif (!empty($handler['form_ids_regexp'])) { foreach ($handler['form_ids_regexp'] as $regexp) { if (preg_match($regexp, $form_id)) { $dispatch = TRUE; break; } } } if ($dispatch) { // Dispatch! $function = $handler['form_submit_callback']; if (function_exists($function)) { $log = $function($form, $form_state, $form_id); if (!empty($log)) { // Log the event. $log['type'] = $type; event_log_track_insert($log); } } } } } /** * Implements hook_form_alter(). */ function event_log_track_form_alter(&$form, FormStateInterface $form_state, $form_id) { // Add submit callback to ANY form action. event_log_track_add_submit_handler($form, 'event_log_track_form_submit'); } /** * Adds a submit handler to all submit hooks in the form tree. * * @param array &$element * A form element or the form itself. * @param string $callback * The callback to be added. */ function event_log_track_add_submit_handler(array &$element, string $callback) { if (array_key_exists("#submit", $element)) { if ((!empty($element['#type']) && $element['#type'] == 'form') || count($element["#submit"])) { $element["#submit"][] = $callback; } } $keys = Element::children($element); foreach ($keys as $key) { if (is_array($element[$key])) { event_log_track_add_submit_handler($element[$key], $callback); } } } /** * Implements hook_cron(). */ Loading event_log_track.routing.yml +0 −7 Original line number Diff line number Diff line event_log_track.report_form: path: '/admin/reports/events-track' defaults: _controller: '\Drupal\event_log_track\Controller\AdminController::adminPage' _title: 'Event log track' requirements: _permission: 'access event log track' event_log_track.settings_form: path: '/admin/config/system/events-log-track' defaults: Loading Loading
README.md +2 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ the user (using the forms) are saved in the database and can be viewed on the page admin/reports/events-track. You could use this to track number of times the CUD operation performed by which users. Added Event Log Track UI to see the logs directly. Currently, the following sub modules of Events Log Track are supported: - Menu (custom menu's and menu items CUD operations) - Node (CUD operations) Loading
event_log_track.install +13 −0 Original line number Diff line number Diff line Loading @@ -122,3 +122,16 @@ function event_log_track_update_8102($sandbox) { $schema->changeField('event_log_track', 'path', 'path', $field); return t('"path" field size increased.'); } /** * Install event_log_track_ui submodule. */ function event_log_track_update_9401($sandbox) { $moduleHandler = \Drupal::service('module_handler'); if (!$moduleHandler->moduleExists('event_log_track_ui')) { $installer = \Drupal::service('module_installer'); $installer->install(['event_log_track_ui']); drupal_flush_all_caches(); } }
event_log_track.links.menu.yml +0 −6 Original line number Diff line number Diff line event_log_track.report_form: title: 'Events Log Track' parent: system.admin_reports description: 'Get report about cud operation performed by the user on the website.' weight: -5 route_name: event_log_track.report_form event_log_track.settings_form: title: 'Events Log Track' route_name: event_log_track.settings_form Loading
event_log_track.module +0 −93 Original line number Diff line number Diff line Loading @@ -5,9 +5,7 @@ * Track the logs of form submissions or other actions that performed by user. */ use Drupal\Core\Render\Element; use Drupal\Core\Url; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Routing\RouteMatchInterface; /** Loading Loading @@ -131,97 +129,6 @@ function event_log_track_insert(array &$log, bool $logOnCLI = FALSE) { } } /** * Returns all existing event handlers. * * @return array * An array with the event log handlers. */ function event_log_track_get_event_handlers(): array { $handlers = drupal_static(__FUNCTION__); if ($handlers === NULL) { $handlers = Drupal::moduleHandler()->invokeAll('event_log_track_handlers'); \Drupal::moduleHandler()->alter('event_log_track_handlers', $handlers); } return $handlers; } /** * Form submission callback. */ function event_log_track_form_submit(&$form, FormStateInterface $form_state) { if (!empty($form_state->__event_log_track_logged)) { // Some forms are submitted twice, for instance the node_form. // We will only call the submit callback once. return; } $form_state->__event_log_track_logged = TRUE; // Get form id. $form_id = $form['#form_id']; // Dispatch the submission to the correct event handler. $handlers = event_log_track_get_event_handlers(); foreach ($handlers as $type => $handler) { $dispatch = FALSE; if (!empty($handler['form_ids']) && in_array($form_id, $handler['form_ids'])) { $dispatch = TRUE; } elseif (!empty($handler['form_ids_regexp'])) { foreach ($handler['form_ids_regexp'] as $regexp) { if (preg_match($regexp, $form_id)) { $dispatch = TRUE; break; } } } if ($dispatch) { // Dispatch! $function = $handler['form_submit_callback']; if (function_exists($function)) { $log = $function($form, $form_state, $form_id); if (!empty($log)) { // Log the event. $log['type'] = $type; event_log_track_insert($log); } } } } } /** * Implements hook_form_alter(). */ function event_log_track_form_alter(&$form, FormStateInterface $form_state, $form_id) { // Add submit callback to ANY form action. event_log_track_add_submit_handler($form, 'event_log_track_form_submit'); } /** * Adds a submit handler to all submit hooks in the form tree. * * @param array &$element * A form element or the form itself. * @param string $callback * The callback to be added. */ function event_log_track_add_submit_handler(array &$element, string $callback) { if (array_key_exists("#submit", $element)) { if ((!empty($element['#type']) && $element['#type'] == 'form') || count($element["#submit"])) { $element["#submit"][] = $callback; } } $keys = Element::children($element); foreach ($keys as $key) { if (is_array($element[$key])) { event_log_track_add_submit_handler($element[$key], $callback); } } } /** * Implements hook_cron(). */ Loading
event_log_track.routing.yml +0 −7 Original line number Diff line number Diff line event_log_track.report_form: path: '/admin/reports/events-track' defaults: _controller: '\Drupal\event_log_track\Controller\AdminController::adminPage' _title: 'Event log track' requirements: _permission: 'access event log track' event_log_track.settings_form: path: '/admin/config/system/events-log-track' defaults: Loading