function getTables() { $tables = array(); $data = array(); $data[] = array('<b>' . JText::_('URL') . '</b>', $this->_logRecord->url); if ($this->_logRecord->ip) { $ipBlocked = JD_Block_Helper::isIPBlocked($this->_logRecord->ip); $src = $ipBlocked ? JURI::base() . 'components/com_jdefender/images/locked.gif' : JURI::base() . 'components/com_jdefender/images/unlocked.gif'; $img = JHTML::image($src, JText::_('Block/Unblock user'), array('id' => 'user_ip_img', 'onclick' => 'toggleLockImage(); xajax_jdBlockParam(\'user_ip_img\', \'ip\', \'' . $this->_logRecord->ip . '\')', 'title' => JText::_('Block/Unblock IP'), 'class' => 'hasTip', 'style' => 'cursor: pointer')); $data[] = array('<b>' . JText::_('IP Address') . '</b>', $img . ' ' . $this->_logRecord->ip); } if ($this->_logRecord->user_id) { $user =& JFactory::getUser($this->_logRecord->user_id); $isUserBlocked = JD_Block_Helper::isUserBlocked($user->get('id')); $src = $isUserBlocked ? JURI::base() . 'components/com_jdefender/images/locked.gif' : JURI::base() . 'components/com_jdefender/images/unlocked.gif'; $img = JHTML::image($src, JText::_('Block/Unblock user'), array('id' => 'user_img_' . $user->get('id'), 'onclick' => 'toggleLockImage(); xajax_jdBlockParam(\'user_img_' . $user->get('id') . '\', \'user\',' . $user->get('id') . ')', 'title' => JText::_('Block/Unblock user'), 'class' => 'hasTip', 'style' => 'cursor: pointer')); $userId = $img . ' ' . $user->get('id'); $data[] = array('<b>' . JText::_('User ID') . '</b>', $userId); $data[] = array('<b>' . JText::_('Username') . '</b>', $user->get('username')); $data[] = array('<b>' . JText::_('Name') . '</b>', $user->get('name')); $data[] = array('<b>' . JText::_('Email') . '</b>', JHTML::_('email.cloak', $user->get('email'))); } // unset($this->_logRecord->status); unset($this->_logRecord->url); $tables[] = $data; return $tables; }
function display($tpl = null) { global $mainframe, $option; $uri =& JFactory::getURI(); $document =& JFactory::getDocument(); $document->addStyleSheet(JURI::root() . 'administrator/components/com_jdefender/css/toolbar.css'); if (JRequest::getString('layout') == 'log_groups') { return $this->showLogGroups(); } if (JRequest::getString('layout') == 'options') { return $this->showOptions(); } if (JRequest::getString('layout') == 'report') { return $this->reportDeveloper(); } JToolBarHelper::title(JText::_('Detailed log'), 'log'); JToolBarHelper::unpublishList('ignore', JText::_('Ignore')); JToolBarHelper::deleteList(); // ------- $type = JRequest::getVar('cid'); $type = $type[0]; // Set title for specific log group if ($type) { $dummy = new stdClass(); $dummy->type = $type; $this->_decorateLogGroup($dummy); JToolBarHelper::title(JText::_('Detailed log') . ' - ' . JText::_($dummy->title), 'log'); } $filter_order = $mainframe->getUserStateFromRequest($option . '.' . $type . '.log.filter_order', 'filter_order', 'ctime'); $filter_order_Dir = $mainframe->getUserStateFromRequest($option . '.' . $type . '.log.filter_order_Dir', 'filter_order_Dir', ''); $limitstart = $mainframe->getUserStateFromRequest($option . '.' . $type . '.log.limitstart', 'limitstart', '0'); $limit = $mainframe->getUserStateFromRequest($option . '.' . $type . '.log.limit', 'limit', '15'); $state = $mainframe->getUserStateFromRequest($option . '.' . $type . '.log.filter_state', 'filter_state', ''); $search = $mainframe->getUserStateFromRequest($option . '.' . $type . '.log.filter_search', 'filter_search', ''); $extension = $mainframe->getUserStateFromRequest($option . '.' . $type . '.log.filter_extension', 'filter_extension', ''); $lists['order_Dir'] = $filter_order_Dir; $lists['order'] = $filter_order; $lists['limitstart'] = $filter_order_Dir; $lists['limit'] = $filter_order; $lists['state'] = $state; $lists['search'] = JString::strtolower($search); $lists['extension'] = JString::strtolower($extension); $model =& JModel::getInstance('Log', 'JDefenderModel'); $model->setState('type', $type); $model->setState('filter_order', $filter_order); $model->setState('filter_order_Dir', $filter_order_Dir); if ($limit) { $model->setState('limit', $limit); $model->setState('limitstart', $limitstart); } $model->setState('filter_state', $state); $model->setState('filter_search', $search); $model->setState('filter_extension', $extension); $states = $model->getStatusesForType($type); if ($state) { // Unset the state if it not exists $stateExists = false; foreach ($states as $s) { if ($s->status == $state) { $stateExists = true; break; } } if (!$stateExists) { $model->setState('filter_state', null); $state = null; } } $items =& $model->getData(); $total =& $model->getTotal(); $pagination =& $model->getPagination(); // toolbar $somethingToReport = true; if ($extension) { $model->_state = new JObject(); $model->setState('filter_extension', $extension); $model->setState('type', $type); $model->setState('filter_state', array('bad_functions', 'insecure')); $somethingToReport = $model->getTotal(); } $toolbarHelper =& ME_Defender_Options_Toolbar_Helper::getInstance(); if ($somethingToReport) { $toolbarHelper->makeButtons($type, $extension); } else { $toolbarHelper->makeButtons($type); } // override the toolbar. $nativeToolbar =& JToolBar::getInstance(); $nativeToolbar = $toolbarHelper->getToolbar(); if (!$total) { JError::raiseNotice('DEF_NO_LOGS', JText::_('Logs are empty')); } // Prepare the items for ($i = 0, $c = count($items); $i < $c; $i++) { $this->_decorateLogGroup($items[$i]); $this->_decorateLogRecord($items[$i]); $truncated = false; if ($items[$i]->ip) { // truncate the string $items[$i]->url = $items[$i]->ip . ' - ' . $items[$i]->url; if (JString::strlen($items[$i]->url) > 80) { $items[$i]->url = JString::substr($items[$i]->url, 0, 80); $truncated = true; } } $items[$i]->source = JHTML::link('index.php?option=com_jdefender&tmpl=component&task=showOptions&id=' . $items[$i]->id, $items[$i]->url, array('rel' => '{handler: \'iframe\', size: {x: 800, y: 600}}', 'class' => 'modal')); if ($truncated) { $items[$i]->source .= ' ... ' . JText::_('Truncated'); } if (!$items[$i]->blocked_ip) { $items[$i]->blocked_ip = JD_Block_Helper::isIPBlocked($items[$i]->ip, true); } $items[$i]->ctime = JD_Log_Helper::formatDate($items[$i]->ctime); } $logGroups =& $model->getLogGroups(); if (empty($logGroups)) { $logGroups = array(); } $uri =& JURI::getInstance(); $url = $uri->toString(); $options = array(); $options[] = JHTML::_('select.option', '', '- ' . JText::_('Change log section') . ' -'); // Preformat the log groups for ($i = 0, $c = count($logGroups); $i < $c; $i++) { // The controls for log groups $logGroups[$i]->id = $logGroups[$i]->type; $logGroups[$i]->editLink = 'index.php?option=com_jdefender&controller=log&task=showLog&cid[]=' . $logGroups[$i]->type; $this->_decorateLogGroup($logGroups[$i]); $options[] = JHTML::_('select.option', $logGroups[$i]->type, $logGroups[$i]->title); } $lists['quickjump'] = JHTML::_('select.genericlist', $options, 'quickjump', array('onchange' => 'window.location.href=\'index.php?option=com_jdefender&controller=log&task=showLog&cid[]=\' + this.value')); $options = array(); $options[] = JHTML::_('select.option', '', '- ' . JText::_('Select status') . ' -'); foreach ($states as $k => $v) { $options[] = JHTML::_('select.option', $v->status, JString::ucfirst(str_replace('_', ' ', $v->status))); } $lists['state'] = JHTML::_('select.genericlist', $options, 'filter_state', array('class' => 'inputbox', 'onchange' => 'submitform();'), 'value', 'text', $state); $loggedExtensions = $model->getLoggedExtensions(); $options = array(); $options[] = JHTML::_('select.option', '', '- ' . JText::_('Select extension') . ' -'); foreach ($loggedExtensions as $l) { $v = $l->extension; if (empty($v)) { continue; } $ext = explode('::', $v); if (count($ext) != 3) { continue; } /// type and extension must be set. if (empty($ext[0]) || empty($ext[2])) { continue; } $name = JString::ucwords(JText::_($ext[0])) . ': ' . JText::_($ext[2]); if ($ext[1]) { $name .= ' ' . JText::_('Group') . ': ' . $ext[1]; } $options[] = JHTML::_('select.option', $v, $name); } $lists['extension'] = JHTML::_('select.genericlist', $options, 'filter_extension', array('class' => 'inputbox', 'onchange' => 'submitform();'), 'value', 'text', $extension); $types = JRequest::getVar('types', array()); if (in_array($type, array('blocked_users_ips', 'php_injection', 'sql_injection'))) { $this->assign('showTotal', true); } else { $this->assign('showTotal', false); } $this->assignRef('lists', $lists); $this->assignRef('items', $items); $this->assignRef('total', $total); $this->assignRef('pagination', $pagination); $this->assignRef('request_url', $uri->toString()); $this->assignRef('types', $types); $this->assignRef('logType', $type); JHTML::_('behavior.modal'); JHTML::_('behavior.tooltip'); JD_Admin_Menu_Helper::decorate(); parent::display($tpl); }