audit_log.module in Audit Log 7
Same filename and directory in other branches
Hook implemenations for the Audit log module.
File
audit_log.moduleView source
<?php
/**
* @file
* Hook implemenations for the Audit log module.
*/
define('AUDIT_LOG_DO_LOG', 'do log');
define('AUDIT_LOG_DO_NOT_LOG', 'do not log');
/**
* Log an audit log.
*
* @param mixed $entity
* The entity on which the action is performed.
* @param string $entity_type
* The entity type of the entity on which the action is performed.
* @param string $action
* The action that was performed ('view', 'insert', 'update' or 'delete).
* @param object $account
* The user that performed the action.
* @param string $url
* The url on which the action was performed.
* @param int $timestamp
* The timestamp when the action was performed.
* @param array $params
* Optional array to pass extra parameters.
*
* @see hook_audit_log_alter()
* @see hook_audit_log()
* @see AuditLog::log()
* @see hook_audit_log_insert()
*/
function audit_log($entity, $entity_type, $action = 'view', $account = NULL, $url = NULL, $timestamp = REQUEST_TIME, $params = array()) {
list($id, , $bundle) = entity_extract_ids($entity_type, $entity);
if (!$account) {
global $user;
$account = $user;
}
if (!$url) {
$url = request_path();
}
$values = array(
'entity_id' => $id,
'entity_type' => $entity_type,
'entity_label' => entity_label($entity_type, $entity),
'bundle' => $bundle,
'uid' => $account ? $account->uid : NULL,
'url' => $url,
'timestamp' => $timestamp,
'audit_action' => $action,
);
if (isset($params) && is_array($params)) {
foreach ($params as $property => $param) {
$values[$property] = $param;
}
}
$log = new Auditlog(array_filter($values));
$context = array(
'entity' => $entity,
'entity_type' => $entity_type,
'action' => $action,
'account' => $account,
'url' => $url,
'timestamp' => $timestamp,
);
// Does this need to be logged.
$log_it = module_invoke_all('audit_log_it', $log, $context, $account);
if (in_array(AUDIT_LOG_DO_NOT_LOG, $log_it, TRUE)) {
// Inform other modules it has not been logged.
module_invoke_all('audit_log_skipped', $log);
return;
}
// Allow other modules to alter the log object.
drupal_alter('audit_log', $log, $context);
// Log the object.
$log
->log();
// Inform other modules it has been logged.
module_invoke_all('audit_log_insert', $log);
}
/**
* Implements hook_entity_view().
*/
function audit_log_entity_view($entity, $entity_type) {
audit_log($entity, $entity_type);
}
/**
* Implements hook_entity_insert().
*/
function audit_log_entity_insert($entity, $entity_type) {
audit_log($entity, $entity_type, 'insert');
}
/**
* Implements hook_entity_update().
*/
function audit_log_entity_update($entity, $entity_type) {
audit_log($entity, $entity_type, 'update');
}
/**
* Implements hook_entity_delete().
*/
function audit_log_entity_delete($entity, $entity_type) {
audit_log($entity, $entity_type, 'delete');
}
/**
* Helper function to get all possible audit actions.
*/
function audit_log_action_options() {
$actions = module_invoke_all('audit_log_action_options');
return $actions;
}
/**
* Implements hook_audit_log_action_options().
*
* Provide actions implemented by default.
*/
function audit_log_audit_log_action_options() {
return drupal_map_assoc(array(
'view',
'insert',
'update',
'delete',
), 'ucwords');
}
Functions
Name | Description |
---|---|
audit_log | Log an audit log. |
audit_log_action_options | Helper function to get all possible audit actions. |
audit_log_audit_log_action_options | Implements hook_audit_log_action_options(). |
audit_log_entity_delete | Implements hook_entity_delete(). |
audit_log_entity_insert | Implements hook_entity_insert(). |
audit_log_entity_update | Implements hook_entity_update(). |
audit_log_entity_view | Implements hook_entity_view(). |
Constants
Name | Description |
---|---|
AUDIT_LOG_DO_LOG | @file Hook implemenations for the Audit log module. |
AUDIT_LOG_DO_NOT_LOG |