/** * See the details of a given search criteria, be it IP address, session, or user. */ public function details(){ $view = $this->getView(); $request = $this->getPageRequest(); $listing = new Core\ListingTable\Table(); $listing->setName('useractivity-details'); $listing->setLimit(100); $listing->addFilter( 'text', ['name' => 'user_id', 'title' => 'User ID', 'link' => FilterForm::LINK_TYPE_STANDARD] ); $listing->addFilter( 'text', ['name' => 'ip_addr', 'title' => 'IP Address', 'link' => FilterForm::LINK_TYPE_STANDARD] ); $listing->addFilter( 'text', ['name' => 'session_id', 'title' => 'Session ID', 'link' => FilterForm::LINK_TYPE_STANDARD] ); $pages = PageModel::Find(null, null, 'baseurl'); $allPages = ['' => '-- ' . t('STRING_ALL_PAGES') . ' --']; foreach($pages as $p){ /** @var PageModel $p */ $allPages[$p->get('baseurl')] = $p->get('baseurl'); } $listing->addFilter( 'select', [ 'name' => 'baseurl', 'title' => 'Page', 'options' => $allPages, 'link' => FilterForm::LINK_TYPE_STANDARD, ] ); $listing->addColumn('Time', 'datetime'); $listing->addColumn('User & Browser'); $listing->addColumn('Type', 'type'); $listing->addColumn('URL & Referrer', 'request'); $listing->addColumn('Referrer', 'referrer', false); $listing->addColumn('Session', 'session_id', false); $listing->addColumn('IP Address', 'ip_addr', false); $listing->addColumn('User Agent', 'useragent', false); $listing->addColumn('Generation', 'processing_time', false); $listing->addColumn('DB Reads', 'db_reads', false); $listing->addColumn('DB Writes', 'db_writes', false); $listing->setModelName('UserActivityModel'); $listing->setDefaultSort('datetime', 'DESC'); $listing->loadFiltersFromRequest($request); $view->title = 'User Activity Details'; $view->assign('listings', $listing); }
/** * Display a list of system logs that have been recorded. * * @return int */ public function log(){ $view = $this->getView(); $request = $this->getPageRequest(); if(!\Core\user()->checkAccess('p:/core/systemlog/view')){ return View::ERROR_ACCESSDENIED; } $codes = ['' => '-- All --']; $ds = Dataset::Init() ->table('system_log') ->select('code') ->unique(true) ->order('code') ->execute(); foreach($ds as $row){ $codes[$row['code']] = $row['code']; } $listings = new Core\ListingTable\Table(); $listings->setModelName('SystemLogModel'); $listings->setName('system-log'); $listings->setDefaultSort('datetime'); $listings->addFilter( 'select', array( 'title' => 'Type', 'name' => 'type', 'options' => array( '' => '-- All --', 'info' => 'Informative', 'error' => 'Warning/Error', 'security' => 'Security', ), 'link' => FilterForm::LINK_TYPE_STANDARD, ) ); $listings->addFilter( 'select', [ 'title' => 'Code', 'name' => 'code', 'options' => $codes, 'link' => FilterForm::LINK_TYPE_STANDARD, ] ); $listings->addFilter( 'date', [ 'title' => 'On or After', 'name' => 'datetime_onafter', 'linkname' => 'datetime', 'link' => FilterForm::LINK_TYPE_GE, ] ); $listings->addFilter( 'date', [ 'title' => 'On or Before', 'name' => 'datetime_onbefore', 'linkname' => 'datetime', 'link' => FilterForm::LINK_TYPE_LE, 'linkvaluesuffix' => ' 23:59:59' ] ); /*$filters->addElement( 'select', array( 'title' => 'Cron', 'name' => 'cron', 'options' => array( '' => '-- All --', 'hourly' => 'hourly', 'daily' => 'daily', 'weekly' => 'weekly', 'monthly' => 'monthly' ), 'link' => FilterForm::LINK_TYPE_STANDARD, ) ); $filters->addElement( 'select', array( 'title' => 'Status', 'name' => 'status', 'options' => array( '' => '-- All --', 'pass' => 'pass', 'fail' => 'fail' ), 'link' => FilterForm::LINK_TYPE_STANDARD, ) );*/ $listings->addFilter( 'hidden', array( 'title' => 'Session', 'name' => 'session_id', 'link' => FilterForm::LINK_TYPE_STANDARD, ) ); $listings->addFilter( 'user', array( 'title' => 'User', 'name' => 'affected_user_id', 'linkname' => [ 'affected_user_id', 'user_id', ] //'link' => FilterForm::LINK_TYPE_STANDARD, ) ); $listings->addFilter( 'text', [ 'title' => 'IP Address', 'name' => 'ip_addr', 'link' => FilterForm::LINK_TYPE_STARTSWITH, ] ); $listings->addColumn('Type', 'type'); $listings->addColumn('Date/Time', 'datetime'); $listings->addColumn('IP Address', 'ip_addr'); $listings->addColumn('Message', 'message'); //$listings->addColumn('Session', 'session_id'); $listings->addColumn('User', 'user_id', false); $listings->addColumn('Affected User', 'affected_user_id', false); $listings->loadFiltersFromRequest($request); $view->mastertemplate = 'admin'; $view->title = 't:STRING_SYSTEM_LOG'; $view->assign('listings', $listings); }