File Manager

Current Directory: /home/astoriaah/www/old15/administrator/components/com_admintools/models
Viewing File: /home/astoriaah/www/old15/administrator/components/com_admintools/models/logs.php
<?php /** * @package AdminTools * @copyright Copyright (c)2010-2015 Nicholas K. Dionysopoulos * @license GNU General Public License version 3, or later * @version $Id$ */ // Protect from unauthorized access defined('_JEXEC') or die; class AdmintoolsModelLogs extends F0FModel { public function buildQuery($overrideLimits = false) { $db = $this->getDbo(); $query = $db->getQuery(true) ->from($db->quoteName('#__admintools_log') . ' AS ' . $db->quoteName('l')); if ($this->getState('groupbydate', 0) == 1) { $query->select(array( 'DATE(' . $db->quoteName('l') . '.' . $db->qn('logdate') . ') AS ' . $db->qn('date'), 'COUNT(' . $db->quoteName('l') . '.' . $db->qn('id') . ') AS ' . $db->qn('exceptions') )); } elseif ($this->getState('groupbytype', 0) == 1) { $query->select(array( $db->qn('l') . '.' . $db->qn('reason'), 'COUNT(' . $db->quoteName('l') . '.' . $db->qn('id') . ') AS ' . $db->qn('exceptions') )); } else { $query ->select(array( $db->quoteName('l') . '.*', 'CASE COALESCE(' . $db->qn('b') . '.' . $db->qn('ip') . ', ' . $db->quote(0) . ') WHEN ' . $db->q(0) . ' THEN ' . $db->q('0') . ' ELSE ' . $db->q('1') . ' END AS ' . $db->qn('block') )) ->join('LEFT OUTER', $db->quoteName('#__admintools_ipblock') . ' AS ' . $db->quoteName('b') . 'ON (' . $db->quoteName('b') . '.' . $db->quoteName('ip') . ' = ' . $db->quoteName('l') . '.' . $db->quoteName('ip') . ')' ); } JLoader::import('joomla.utilities.date'); $fltDateFrom = $this->getState('datefrom', null, 'string'); if ($fltDateFrom) { $regex = '/^\d{1,4}(\/|-)\d{1,2}(\/|-)\d{2,4}[[:space:]]{0,}(\d{1,2}:\d{1,2}(:\d{1,2}){0,1}){0,1}$/'; if (!preg_match($regex, $fltDateFrom)) { $fltDateFrom = '2000-01-01 00:00:00'; $this->setState('datefrom', ''); } $date = new JDate($fltDateFrom); $query->where($db->quoteName('logdate') . ' >= ' . $db->Quote($date->toSql())); } $fltDateTo = $this->getState('dateto', null, 'string'); if ($fltDateTo) { $regex = '/^\d{1,4}(\/|-)\d{1,2}(\/|-)\d{2,4}[[:space:]]{0,}(\d{1,2}:\d{1,2}(:\d{1,2}){0,1}){0,1}$/'; if (!preg_match($regex, $fltDateTo)) { $fltDateTo = '2037-01-01 00:00:00'; $this->setState('dateto', ''); } $date = new JDate($fltDateTo); $query->where($db->quoteName('logdate') . ' <= ' . $db->Quote($date->toSql())); } $fltIP = $this->getState('ip', null, 'string'); if ($fltIP) { $fltIP = '%' . $fltIP . '%'; $query->where($db->quoteName('l') . '.' . $db->quoteName('ip') . ' LIKE ' . $db->quote($fltIP)); } $fltURL = $this->getState('url', null, 'string'); if ($fltURL) { $fltURL = '%' . $fltURL . '%'; $query->where($db->quoteName('url') . ' LIKE ' . $db->Quote($fltURL)); } $fltReason = $this->getState('reason', null, 'cmd'); if ($fltReason) { $query->where($db->quoteName('reason') . ' = ' . $db->quote($fltReason)); } $this->_buildQueryGroup($query); if ($this->getState('groupbydate', 0) == 1) { $query->order('DATE(' . $db->qn('l') . '.' . $db->qn('logdate') . ') ASC'); } elseif ($this->getState('groupbytype', 0) == 1) { $query->order($db->qn('l') . '.' . $db->qn('reason') . ' ASC'); } elseif (!$overrideLimits) { $order = $this->getState('filter_order', null, 'cmd'); if (!in_array($order, array_keys($this->getTable()->getData()))) { $order = 'logdate'; } $dir = $this->getState('filter_order_Dir', 'DESC', 'cmd'); $query->order($order . ' ' . $dir); } return $query; } protected function _buildQueryGroup($query) { $db = $this->getDbo(); if ($this->getState('groupbydate', 0) == 1) { $query->group(array( 'DATE(' . $db->qn('l') . '.' . $db->qn('logdate') . ')' )); } elseif ($this->getState('groupbytype', 0) == 1) { $query->group(array( $db->qn('l') . '.' . $db->qn('reason') )); } } private function isPostgreSQL() { $config = JFactory::getConfig(); if ($config->get('dbtype') != 'postgresql') { return false; } return true; } }