|
Server : Apache System : Linux vps.urbanovitalino.adv.br 3.10.0-1062.12.1.el7.x86_64 #1 SMP Tue Feb 4 23:02:59 UTC 2020 x86_64 User : urbanovitalinoad ( 1001) PHP Version : 7.3.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/urbanovitalinoad/public_html/enel/components/com_jevents/libraries/ |
Upload File : |
<?php
/**
* JEvents Component for Joomla! 3.x
*
* @version $Id: registry.php 2484 2011-08-24 10:22:46Z geraintedwards $
* @package JEvents
* @copyright Copyright (C) 2008-2019 GWE Systems Ltd, 2006-2008 JEvents Project Group
* @license GNU/GPLv2, see http://www.gnu.org/licenses/gpl-2.0.html
* @link http://www.jevents.net
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
// on some servers with Xcache both classes seem to be 'compiled' and it throws an error but if we add this second test its ok - go figure .
if (!defined("JEVREGISTRY"))
{
define("JEVREGISTRY", 1);
class JevRegistry extends JRegistry
{
static function &getInstance($id, $namespace = 'default')
{
static $instances;
if (!isset($instances))
{
$instances = array();
}
if (empty($instances[$id]))
{
$instances[$id] = new JevRegistry($namespace);
}
return $instances[$id];
}
function setReference($regpath, & $value)
{
// Explode the registry path into an array
$nodes = explode('.', $regpath);
// Get the namespace
$count = count($nodes);
if ($count < 2)
{
$namespace = $this->_defaultNameSpace;
}
else
{
$namespace = array_shift($nodes);
$count--;
}
if (!isset($this->_registry[$namespace]))
{
$this->makeNameSpace($namespace);
}
$ns = &$this->_registry[$namespace]['data'];
$pathNodes = $count - 1;
if ($pathNodes < 0)
{
$pathNodes = 0;
}
for ($i = 0; $i < $pathNodes; $i++)
{
// If any node along the registry path does not exist, create it
if (!isset($ns->{$nodes[$i]}))
{
$ns->{$nodes[$i]} = new stdClass();
}
$ns = &$ns->{$nodes[$i]};
}
// Get the old value if exists so we can return it
$ns->{$nodes[$i]} = &$value;
return $ns->{$nodes[$i]};
}
function & getReference($regpath, $default = null)
{
$result = $default;
// Explode the registry path into an array
if ($nodes = explode('.', $regpath))
{
// Get the namespace
//$namespace = array_shift($nodes);
$count = count($nodes);
if ($count < 2)
{
$namespace = $this->_defaultNameSpace;
$nodes[1] = $nodes[0];
}
else
{
$namespace = $nodes[0];
}
if (isset($this->_registry[$namespace]))
{
$ns = &$this->_registry[$namespace]['data'];
$pathNodes = $count - 1;
//for ($i = 0; $i < $pathNodes; $i ++) {
for ($i = 1; $i < $pathNodes; $i++)
{
if ((isset($ns->{$nodes[$i]})))
$ns = &$ns->{$nodes[$i]};
}
if (isset($ns->{$nodes[$i]}))
{
$result = $ns->{$nodes[$i]};
}
}
}
return $result;
}
/* GWE Function to allow storing references *?
*
*/
function makeNameSpace($namespace)
{
$this->_registry[$namespace] = array('data' => new stdClass());
return true;
}
}
}