diff -r fcf75e232c5b -r 0ff3ba646492 web/drupal/modules/dblog/dblog.module --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/drupal/modules/dblog/dblog.module Fri Aug 21 16:26:26 2009 +0000 @@ -0,0 +1,164 @@ +'. t('The dblog module monitors your system, capturing system events in a log to be reviewed by an authorized individual at a later time. This is useful for site administrators who want a quick overview of activities on their site. The logs also record the sequence of events, so it can be useful for debugging site errors.') .'

'; + $output .= '

'. t('The dblog log is simply a list of recorded events containing usage data, performance data, errors, warnings and operational information. Administrators should check the dblog report on a regular basis to ensure their site is working properly.') .'

'; + $output .= '

'. t('For more information, see the online handbook entry for Dblog module.', array('@dblog' => 'http://drupal.org/handbook/modules/dblog/')) .'

'; + return $output; + case 'admin/reports/dblog': + return '

'. t('The dblog module monitors your website, capturing system events in a log to be reviewed by an authorized individual at a later time. The dblog log is simply a list of recorded events containing usage data, performance data, errors, warnings and operational information. It is vital to check the dblog report on a regular basis as it is often the only way to tell what is going on.') .'

'; + } +} + +/** + * Implementation of hook_theme() + */ +function dblog_theme() { + return array( + 'dblog_filters' => array( + 'arguments' => array('form' => NULL), + ), + ); +} + +/** + * Implementation of hook_menu(). + */ +function dblog_menu() { + $items['admin/settings/logging/dblog'] = array( + 'title' => 'Database logging', + 'description' => 'Settings for logging to the Drupal database logs. This is the most common method for small to medium sites on shared hosting. The logs are viewable from the admin pages.', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('dblog_admin_settings'), + 'access arguments' => array('administer site configuration'), + 'file' => 'dblog.admin.inc', + ); + + $items['admin/reports/dblog'] = array( + 'title' => 'Recent log entries', + 'description' => 'View events that have recently been logged.', + 'page callback' => 'dblog_overview', + 'access arguments' => array('access site reports'), + 'weight' => -1, + 'file' => 'dblog.admin.inc', + ); + $items['admin/reports/page-not-found'] = array( + 'title' => "Top 'page not found' errors", + 'description' => "View 'page not found' errors (404s).", + 'page callback' => 'dblog_top', + 'page arguments' => array('page not found'), + 'access arguments' => array('access site reports'), + 'file' => 'dblog.admin.inc', + ); + $items['admin/reports/access-denied'] = array( + 'title' => "Top 'access denied' errors", + 'description' => "View 'access denied' errors (403s).", + 'page callback' => 'dblog_top', + 'page arguments' => array('access denied'), + 'access arguments' => array('access site reports'), + 'file' => 'dblog.admin.inc', + ); + $items['admin/reports/event/%'] = array( + 'title' => 'Details', + 'page callback' => 'dblog_event', + 'page arguments' => array(3), + 'access arguments' => array('access site reports'), + 'type' => MENU_CALLBACK, + 'file' => 'dblog.admin.inc', + ); + return $items; +} + +function dblog_init() { + if (arg(0) == 'admin' && arg(1) == 'reports') { + // Add the CSS for this module + drupal_add_css(drupal_get_path('module', 'dblog') .'/dblog.css', 'module', 'all', FALSE); + } +} + + + +/** + * Implementation of hook_cron(). + * + * Remove expired log messages and flood control events. + */ +function dblog_cron() { + // Cleanup the watchdog table + $max = db_result(db_query('SELECT MAX(wid) FROM {watchdog}')); + db_query('DELETE FROM {watchdog} WHERE wid <= %d', $max - variable_get('dblog_row_limit', 1000)); +} + +/** + * Implementation of hook_user(). + */ +function dblog_user($op, &$edit, &$user) { + if ($op == 'delete') { + db_query('UPDATE {watchdog} SET uid = 0 WHERE uid = %d', $user->uid); + } +} + +function _dblog_get_message_types() { + $types = array(); + + $result = db_query('SELECT DISTINCT(type) FROM {watchdog} ORDER BY type'); + while ($object = db_fetch_object($result)) { + $types[] = $object->type; + } + + return $types; +} + +function dblog_watchdog($log = array()) { + $current_db = db_set_active(); + db_query("INSERT INTO {watchdog} + (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) + VALUES + (%d, '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', %d)", + $log['user']->uid, + $log['type'], + $log['message'], + serialize($log['variables']), + $log['severity'], + $log['link'], + $log['request_uri'], + $log['referer'], + $log['ip'], + $log['timestamp']); + + if ($current_db) { + db_set_active($current_db); + } +} + +/** + * Theme dblog administration filter selector. + * + * @ingroup themeable + */ +function theme_dblog_filters($form) { + $output = ''; + foreach (element_children($form['status']) as $key) { + $output .= drupal_render($form['status'][$key]); + } + $output .= '
'. drupal_render($form['buttons']) .'
'; + return $output; +} +