| Current Path : /var/www/iplanru/data/old/www/i-plan.ru/administrator/components/com_cache/ |
| Current File : /var/www/iplanru/data/old/www/i-plan.ru/administrator/components/com_cache/cache.class.php |
<?php
/**
* @version $Id: cache.class.php 11074 2008-10-13 04:54:12Z ian $
* @package Joomla
* @subpackage Cache
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
/**
* Class used to hold Cache data
*
* @package Joomla
* @subpackage Cache
* @since 1.5
*/
class CacheData extends JObject
{
/**
* An Array of CacheItems indexed by cache group ID
*
* @access protected
* @var Array
*/
var $_items = null;
/**
* The cache path
*
* @access protected
* @var String
*/
var $_path = null;
/**
* Class constructor
*
* @access protected
*/
function __construct( $path )
{
$this->_path = $path;
$this->_parse();
}
/**
* Parse $path for cache file groups. Any files identifided as cache are logged
* in a group and stored in $this->items.
*
* @access private
* @param String $path
*/
function _parse()
{
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
$folders = JFolder::folders($this->_path);
foreach ($folders as $folder)
{
$files = array();
$files = JFolder::files($this->_path.DS.$folder);
$this->_items[$folder] = new CacheItem( $folder );
foreach ($files as $file)
{
$this->_items[$folder]->updateSize( filesize( $this->_path.DS.$folder.DS.$file )/ 1024 );
}
}
}
/**
* Get the number of current Cache Groups
*
* @access public
* @return int
*/
function getGroupCount()
{
return count($this->_items);
}
/**
* Retrun an Array containing a sub set of the total
* number of Cache Groups as defined by the params.
*
* @access public
* @param Int $start
* @param Int $limit
* @return Array
*/
function getRows( $start, $limit )
{
$i = 0;
$rows = array();
if (!is_array($this->_items)) {
return null;
}
foreach ($this->_items as $item)
{
if ( (($i >= $start) && ($i < $start+$limit)) || ($limit == 0) ) {
$rows[] = $item;
}
$i++;
}
return $rows;
}
/**
* Clean out a cache group as named by param.
* If no param is passed clean all cache groups.
*
* @param String $group
*/
function cleanCache( $group='' )
{
$cache =& JFactory::getCache('', 'callback', 'file');
$cache->clean( $group );
}
function cleanCacheList( $array )
{
foreach ($array as $group) {
$this->cleanCache( $group );
}
}
}
/**
* This Class is used by CacheData to store group cache data.
*
* @package Joomla
* @subpackage Cache
* @since 1.5
*/
class CacheItem
{
var $group = "";
var $size = 0;
var $count = 0;
function CacheItem ( $group )
{
$this->group = $group;
}
function updateSize( $size )
{
$this->size = number_format( $this->size + $size, 2 );
$this->count++;
}
}