%PDF- %PDF-
| Direktori : /home1/lightco1/www/plugins/system/cachecleaner/ |
| Current File : //home1/lightco1/www/plugins/system/cachecleaner/helper.php |
<?php
/**
* @package Cache Cleaner
* @version 5.0.0
*
* @author Peter van Westen <info@regularlabs.com>
* @link http://www.regularlabs.com
* @copyright Copyright © 2016 Regular Labs All Rights Reserved
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
*/
defined('_JEXEC') or die;
require_once JPATH_LIBRARIES . '/regularlabs/helpers/functions.php';
RLFunctions::loadLanguage('plg_system_cachecleaner');
class PlgSystemCacheCleanerHelper
{
var $helpers = array();
var $type = '';
var $show_message = false;
public function __construct(&$params)
{
$params->size = 0;
$params->message = '';
$params->error = false;
$this->params = $params;
require_once __DIR__ . '/helpers/helpers.php';
$this->helpers = PlgSystemCacheCleanerHelpers::getInstance($params);
$this->type = $this->getCleanType();
}
function clean()
{
if (!$this->type)
{
return;
}
// Load language for messaging
RLFunctions::loadLanguage('mod_cachecleaner');
$this->purgeCache();
// only handle messages in html
if (JFactory::getDocument()->getType() != 'html')
{
return false;
}
$error = $this->helpers->getParams()->error;
if ($error)
{
$message = JText::_('CC_NOT_ALL_CACHE_COULD_BE_REMOVED');
$message .= $this->helpers->getParams()->error !== true ? '<br>' . $this->helpers->getParams()->error : '';
}
else
{
$message = $this->helpers->getParams()->message ?: JText::_('CC_CACHE_CLEANED');
if ($this->params->show_size && $this->helpers->getParams()->size)
{
$message .= ' (' . $this->helpers->get('cache')->getSize() . ')';
}
}
if (JFactory::getApplication()->input->getInt('break'))
{
echo (!$error ? '+' : '') . str_replace('<br>', ' - ', $message);
die;
}
if ($this->show_message && $message)
{
JFactory::getApplication()->enqueueMessage($message, ($error ? 'error' : 'message'));
}
}
function getCleanType()
{
$cleancache = trim(JFactory::getApplication()->input->getString('cleancache'));
// Clean via url
if (!empty($cleancache))
{
// Return if on frontend and no secret url key is given
if (JFactory::getApplication()->isSite() && $cleancache != $this->params->frontend_secret)
{
return '';
}
// Return if on login page
if (JFactory::getApplication()->isAdmin() && JFactory::getUser()->get('guest'))
{
return '';
}
if (JFactory::getApplication()->input->getWord('src') == 'button')
{
return 'button';
}
$this->show_message = true;
return 'clean';
}
// Clean via save task
if ($this->passTask())
{
return 'save';
}
return '';
}
function passTask()
{
if (!$task = JFactory::getApplication()->input->get('task'))
{
return false;
}
$task = explode('.', $task, 2);
$task = isset($task['1']) ? $task['1'] : $task['0'];
if (strpos($task, 'save') === 0)
{
$task = 'save';
}
$tasks = array_diff(array_map('trim', explode(',', $this->params->auto_save_tasks)), array(''));
if (empty($tasks) || !in_array($task, $tasks))
{
return false;
}
if (JFactory::getApplication()->isAdmin() && $this->params->auto_save_admin)
{
$this->show_message = $this->params->auto_save_admin_msg;
return true;
}
if (JFactory::getApplication()->isSite() && $this->params->auto_save_front)
{
$this->show_message = $this->params->auto_save_front_msg;
return true;
}
return false;
}
function purgeCache()
{
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
// Joomla cache
if ($this->passType('purge'))
{
$this->helpers->get('joomla')->purge();
}
// Folders
if ($this->passType('clean_tmp'))
{
$this->helpers->get('folders')->purge_tmp();
}
// Purge OPcache
if ($this->passType('purge_opcache'))
{
$this->helpers->get('joomla')->purgeOPcache();
}
// Purge expired cache
if ($this->passType('purge'))
{
$this->helpers->get('joomla')->purgeExpired();
}
// Purge update cache
if ($this->passType('purge_updates'))
{
$this->helpers->get('joomla')->purgeUpdates();
}
}
function passType($type)
{
if (empty($this->params->{$type}))
{
return false;
}
if ($this->params->{$type} == 2 && $this->type != 'button')
{
return false;
}
return true;
}
}