Current Directory: /home/astoriaah/www/old15/administrator/components/com_akeeba/alice/utils
Viewing File: /home/astoriaah/www/old15/administrator/components/com_akeeba/alice/utils/tempvars.php
<?php
/**
* Akeeba Engine
* The modular PHP5 site backup engine
*
* @copyright Copyright (c)2009-2014 Nicholas K. Dionysopoulos
* @license GNU GPL version 3 or, at your option, any later version
* @package akeebaengine
*
*/
// Protection against direct access
defined('AKEEBAENGINE') or die();
/**
* Temporary variables management class. Everything is stored serialized in an INI
* file on the temporary directory. The code is copied from AEUtilTempvars, I just forced
* the storage inside filesystem instead of db.
* I couldn't extend the extisting one since there were a lot of "self" calls instead of "static",
* and inheritance wouldn't work.
*/
class AliceUtilTempvars
{
static $storageEngine = '';
static public function getStorageEngine()
{
if (empty(self::$storageEngine))
{
self::setStorageEngine();
}
return self::$storageEngine;
}
/**
* Always use file as storage, so we can avoid creating new tables
*/
static public function setStorageEngine($engine = null)
{
if (empty($engine))
{
$engine = 'file';
}
self::$storageEngine = $engine;
}
/**
* Returns the fully qualified path to the storage file.
* Overrided to avoid loading from Akeeba Backup config
*
* @param null $tag
*
* @return string
*/
static public function get_storage_filename($tag = null)
{
static $basepath = null;
if (self::getStorageEngine() == 'db')
{
return empty($tag) ? 'storage' : $tag;
}
else
{
if (is_null($basepath))
{
$basepath = JPATH_ROOT . '/tmp/';
}
if (empty($tag))
{
$tag = 'storage';
}
return $basepath . 'akeeba_' . $tag . '.php';
}
}
/**
* Resets the storage. This method removes all stored values.
*
* @param null $tag
*
* @return bool True on success
*/
public static function reset($tag = null)
{
switch (self::getStorageEngine())
{
case 'file':
default :
$filename = self::get_storage_filename($tag);
if ( !is_file($filename) && !is_link($filename))
{
return false;
}
return @unlink(self::get_storage_filename($tag));
break;
}
}
public static function set(&$value, $tag = null)
{
$storage_filename = self::get_storage_filename($tag);
switch (self::getStorageEngine())
{
case 'file':
default :
// Remove old file (if exists)
if (file_exists($storage_filename))
{
@unlink($storage_filename);
}
// Open the new file
$fp = @fopen($storage_filename, 'wb');
if ($fp === false)
{
return false;
}
// Add a header
fputs($fp, "<?php die('Access denied'); ?>\n");
fwrite($fp, self::encode($value));
fclose($fp);
return true;
break;
}
}
public static function &get($tag = null)
{
$storage_filename = self::get_storage_filename($tag);
$ret = false;
switch (self::getStorageEngine())
{
case 'file':
default :
$rawdata = @file_get_contents($storage_filename);
if ($rawdata === false)
{
return $ret;
}
if (strpos($rawdata, "\n") === false)
{
return $ret;
}
list($header, $data) = explode("\n", $rawdata);
unset($rawdata);
unset($header);
break;
}
$ret = self::decode($data);
unset($data);
return $ret;
}
public static function encode(&$data)
{
// Should I base64-encode?
if (function_exists('base64_encode') && function_exists('base64_decode'))
{
return base64_encode($data);
}
elseif (function_exists('convert_uuencode') && function_exists('convert_uudecode'))
{
return convert_uuencode($data);
}
else
{
return $data;
}
}
public static function decode(&$data)
{
if (function_exists('base64_encode') && function_exists('base64_decode'))
{
return base64_decode($data);
}
elseif (function_exists('convert_uuencode') && function_exists('convert_uudecode'))
{
return convert_uudecode($data);
}
else
{
return $data;
}
}
}