1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-05-18 05:19:43 +02:00

[ticket/10714] Use new phpbb_log class in add_log function

PHPBB3-10714
This commit is contained in:
Joas Schilling 2012-03-17 23:52:01 +01:00
parent cf651ef81d
commit 3fbac076ce

View File

@ -3357,65 +3357,74 @@ function parse_cfg_file($filename, $lines = false)
*/ */
function add_log() function add_log()
{ {
global $db, $user; // This is all just an ugly hack to add "Dependency Injection" to a function
// the only real code is the function call which maps this function to a method.
static $static_log = null;
// In phpBB 3.1.x i want to have logging in a class to be able to control it $args = func_get_args();
// For now, we need a quite hakish approach to circumvent logging for some actions $log = (isset($args[0])) ? $args[0] : false;
// @todo implement cleanly
if (!empty($GLOBALS['skip_add_log'])) if ($log instanceof phpbb_log_interface)
{
$static_log = $log;
return true;
}
else if ($log === false)
{ {
return false; return false;
} }
$args = func_get_args(); $tmp_log = $static_log;
$mode = array_shift($args); // no log class set, create a temporary one ourselves to keep backwards compatability
$reportee_id = ($mode == 'user') ? intval(array_shift($args)) : ''; if ($tmp_log === null)
$forum_id = ($mode == 'mod') ? intval(array_shift($args)) : ''; {
$topic_id = ($mode == 'mod') ? intval(array_shift($args)) : ''; $tmp_log = new phpbb_log(LOG_TABLE);
$action = array_shift($args); }
$data = (!sizeof($args)) ? '' : serialize($args);
$sql_ary = array( $mode = array_shift($args);
'user_id' => (empty($user->data)) ? ANONYMOUS : $user->data['user_id'],
'log_ip' => $user->ip,
'log_time' => time(),
'log_operation' => $action,
'log_data' => $data,
);
// This looks kind of dirty, but add_log has some additional data before the log_operation
$additional_data = array();
switch ($mode) switch ($mode)
{ {
case 'admin': case 'admin':
$sql_ary['log_type'] = LOG_ADMIN;
break;
case 'mod':
$sql_ary += array(
'log_type' => LOG_MOD,
'forum_id' => $forum_id,
'topic_id' => $topic_id
);
break;
case 'user':
$sql_ary += array(
'log_type' => LOG_USERS,
'reportee_id' => $reportee_id
);
break;
case 'critical': case 'critical':
$sql_ary['log_type'] = LOG_CRITICAL;
break; break;
case 'mod':
// forum_id
$additional_data[] = array_shift($args);
// topic_id
$additional_data[] = array_shift($args);
break;
case 'user':
// reportee_id
$additional_data[] = array_shift($args);
break;
default: default:
return false; /**
* @todo: enable when events are merged
*
global $phpbb_dispatcher;
if ($phpbb_dispatcher != null)
{
$vars = array('mode', 'args', 'additional_data');
$event = new phpbb_event_data(compact($vars));
$phpbb_dispatcher->dispatch('core.function_add_log', $event);
extract($event->get_data_filtered($vars));
}
*/
} }
$log_operation = array_shift($args);
$additional_data = array_merge($additional_data, $args);
$db->sql_query('INSERT INTO ' . LOG_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); global $user;
return $db->sql_nextid(); $user_id = (empty($user->data)) ? ANONYMOUS : $user->data['user_id'];
$user_ip = (empty($user->ip)) ? '' : $user->ip;
return $tmp_log->add($mode, $user_id, $user_ip, $log_operation, time(), $additional_data);
} }
/** /**