/** * Assign values needed to display the logs page to the theme based on handlervars and parameters. * */ private function fetch_logs($params = NULL) { $locals = array('do_delete' => false, 'log_ids' => null, 'nonce' => '', 'timestamp' => '', 'PasswordDigest' => '', 'change' => '', 'limit' => 20, 'offset' => 0, 'user' => 0, 'date' => 'any', 'module' => '0', 'type' => '0', 'severity' => 'any', 'address' => '0', 'search' => '', 'do_search' => false, 'index' => 1); foreach ($locals as $varname => $default) { ${$varname} = isset($this->handler_vars[$varname]) ? $this->handler_vars[$varname] : $default; $this->theme->{$varname} = ${$varname}; } if ($do_delete && isset($log_ids)) { $okay = true; if (empty($nonce) || empty($timestamp) || empty($PasswordDigest)) { $okay = false; } $wsse = Utils::WSSE($nonce, $timestamp); if ($PasswordDigest != $wsse['digest']) { $okay = false; } if ($okay) { foreach ($log_ids as $id) { $ids[] = array('id' => $id); } $to_delete = EventLog::get(array('nolimit' => 1)); $count = 0; foreach ($to_delete as $log) { $log->delete(); $count++; } Session::notice(_t('Deleted %d logs', array($count))); } Utils::redirect(); } $this->theme->severities = LogEntry::list_severities(); $any = array('0' => 'Any'); $modulelist = LogEntry::list_logentry_types(); $modules = array(); $types = array(); $addresses = $any; $ips = DB::get_column('SELECT DISTINCT(ip) FROM {log}'); foreach ($ips as $ip) { $addresses[$ip] = long2ip($ip); } $this->theme->addresses = $addresses; foreach ($modulelist as $modulename => $typearray) { $modules['0,' . implode(',', $typearray)] = $modulename; foreach ($typearray as $typename => $typevalue) { if (!isset($types[$typename])) { $types[$typename] = '0'; } $types[$typename] .= ',' . $typevalue; } } $types = array_flip($types); $this->theme->types = array_merge($any, $types); $this->theme->modules = array_merge($any, $modules); // set up the users $users_temp = DB::get_results('SELECT DISTINCT username, user_id FROM {users} JOIN {log} ON {users}.id = {log}.user_id ORDER BY username ASC'); array_unshift($users_temp, new QueryRecord(array('username' => 'All', 'user_id' => 0))); foreach ($users_temp as $user_temp) { $users[$user_temp->user_id] = $user_temp->username; } $this->theme->users = $users; // set up dates. $dates = DB::get_column('SELECT timestamp FROM {log} ORDER BY timestamp DESC'); $dates = array_map(create_function('$date', 'return HabariDateTime::date_create( $date )->get(\'Y-m\');'), $dates); array_unshift($dates, 'Any'); $dates = array_combine($dates, $dates); $this->theme->dates = $dates; // prepare the WSSE tokens $this->theme->wsse = Utils::WSSE(); $arguments = array('severity' => LogEntry::severity($severity), 'limit' => $limit, 'offset' => $offset); // deduce type_id from module and type $r_type = explode(',', substr($type, 2)); $r_module = explode(',', substr($module, 2)); if ($type != '0' && $module != '0') { $arguments['type_id'] = array_intersect($r_type, $r_module); } elseif ($type == '0') { $arguments['type_id'] = $r_module; } elseif ($module == '0') { $arguments['type_id'] = $r_type; } if ('0' != $address) { $arguments['ip'] = $address; } if ('any' != strtolower($date)) { list($arguments['year'], $arguments['month']) = explode('-', $date); } if ('' != $search) { $arguments['criteria'] = $search; } if ('0' != $user) { $arguments['user_id'] = $user; } if (is_array($params)) { $arguments = array_merge($arguments, $params); } $this->theme->logs = EventLog::get($arguments); $monthcts = EventLog::get(array_merge($arguments, array('month_cts' => true))); foreach ($monthcts as $month) { if (isset($years[$month->year])) { $years[$month->year][] = $month; } else { $years[$month->year] = array($month); } } if (isset($years)) { $this->theme->years = $years; } else { $this->theme->years = array(); } }
private function fetch_log_modules_types() { $module_list = LogEntry::list_logentry_types(); $modules = $types = array('any' => 'Any'); foreach ($module_list as $module_name => $type_array) { // Utils::slugify() gives us a safe key to use - this is what will be handed to the filter after a POST as well $modules[Utils::slugify($module_name)] = $module_name; foreach ($type_array as $type_name => $type_value) { $types[Utils::slugify($type_name)] = $type_name; } } return array('modules' => $modules, 'types' => $types); }