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;
 }
Exemplo n.º 2
0
 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);
 }