AAAAPK :_?\®)ÕÐ .htaccessnu W+A„¶
Order allow,deny
Deny from all
PK :_?\$~ð¢ï ï format/json.phpnu W+A„¶ false))
{
// Fix legacy API.
if (is_bool($options))
{
$options = array('processSections' => $options);
// Deprecation warning.
JLog::add('JRegistryFormatJSON::stringToObject() second argument should not be a boolean.', JLog::WARNING, 'deprecated');
}
$data = trim($data);
if ((substr($data, 0, 1) != '{') && (substr($data, -1, 1) != '}'))
{
$ini = JRegistryFormat::getInstance('INI');
$obj = $ini->stringToObject($data, $options);
}
else
{
$obj = json_decode($data);
}
return $obj;
}
}
PK :_?\®)ÕÐ format/.htaccessnu W+A„¶
Order allow,deny
Deny from all
PK :_?\ù5Œà format/xml.phpnu W+A„¶ ');
// Iterate over the object members.
$this->getXmlChildren($root, $object, $nodeName);
return $root->asXML();
}
/**
* Parse a XML formatted string and convert it into an object.
*
* @param string $data XML formatted string to convert.
* @param array $options Options used by the formatter.
*
* @return object Data object.
*
* @since 11.1
*/
public function stringToObject($data, $options = array())
{
// Initialize variables.
$obj = new stdClass;
// Parse the XML string.
$xml = simplexml_load_string($data);
foreach ($xml->children() as $node)
{
$obj->$node['name'] = $this->getValueFromNode($node);
}
return $obj;
}
/**
* Method to get a PHP native value for a SimpleXMLElement object. -- called recursively
*
* @param object $node SimpleXMLElement object for which to get the native value.
*
* @return mixed Native value of the SimpleXMLElement object.
*
* @since 11.1
*/
protected function getValueFromNode($node)
{
switch ($node['type'])
{
case 'integer':
$value = (string) $node;
return (int) $value;
break;
case 'string':
return (string) $node;
break;
case 'boolean':
$value = (string) $node;
return (bool) $value;
break;
case 'double':
$value = (string) $node;
return (float) $value;
break;
case 'array':
$value = array();
foreach ($node->children() as $child)
{
$value[(string) $child['name']] = $this->getValueFromNode($child);
}
break;
default:
$value = new stdClass;
foreach ($node->children() as $child)
{
$value->$child['name'] = $this->getValueFromNode($child);
}
break;
}
return $value;
}
/**
* Method to build a level of the XML string -- called recursively
*
* @param SimpleXMLElement &$node SimpleXMLElement object to attach children.
* @param object $var Object that represents a node of the XML document.
* @param string $nodeName The name to use for node elements.
*
* @return void
*
* @since 11.1
*/
protected function getXmlChildren(&$node, $var, $nodeName)
{
// Iterate over the object members.
foreach ((array) $var as $k => $v)
{
if (is_scalar($v))
{
$n = $node->addChild($nodeName, $v);
$n->addAttribute('name', $k);
$n->addAttribute('type', gettype($v));
}
else
{
$n = $node->addChild($nodeName);
$n->addAttribute('name', $k);
$n->addAttribute('type', gettype($v));
$this->getXmlChildren($n, $v, $nodeName);
}
}
}
}
PK :_?\¦V‰ format/index.htmlnu W+A„¶
PK :_?\ý¥» format/php.phpnu W+A„¶ $v)
{
if (is_scalar($v))
{
$vars .= "\tpublic $" . $k . " = '" . addcslashes($v, '\\\'') . "';\n";
}
elseif (is_array($v) || is_object($v))
{
$vars .= "\tpublic $" . $k . " = " . $this->getArrayString((array) $v) . ";\n";
}
}
$str = "";
}
return $str;
}
/**
* Parse a PHP class formatted string and convert it into an object.
*
* @param string $data PHP Class formatted string to convert.
* @param array $options Options used by the formatter.
*
* @return object Data object.
*
* @since 11.1
*/
public function stringToObject($data, $options = array())
{
return true;
}
/**
* Method to get an array as an exported string.
*
* @param array $a The array to get as a string.
*
* @return array
*
* @since 11.1
*/
protected function getArrayString($a)
{
$s = 'array(';
$i = 0;
foreach ($a as $k => $v)
{
$s .= ($i) ? ', ' : '';
$s .= '"' . $k . '" => ';
if (is_array($v) || is_object($v))
{
$s .= $this->getArrayString((array) $v);
}
else
{
$s .= '"' . addslashes($v) . '"';
}
$i++;
}
$s .= ')';
return $s;
}
}
PK :_?\µ)p à à format/ini.phpnu W+A„¶ $value)
{
// If the value is an object then we need to put it in a local section.
if (is_object($value))
{
// Add the section line.
$local[] = '';
$local[] = '[' . $key . ']';
// Add the properties for this section.
foreach (get_object_vars($value) as $k => $v)
{
$local[] = $k . '=' . $this->getValueAsINI($v);
}
}
else
{
// Not in a section so add the property to the global array.
$global[] = $key . '=' . $this->getValueAsINI($value);
}
}
return implode("\n", array_merge($global, $local));
}
/**
* Parse an INI formatted string and convert it into an object.
*
* @param string $data INI formatted string to convert.
* @param mixed $options An array of options used by the formatter, or a boolean setting to process sections.
*
* @return object Data object.
*
* @since 11.1
*/
public function stringToObject($data, $options = array())
{
// Initialise options.
if (is_array($options))
{
$sections = (isset($options['processSections'])) ? $options['processSections'] : false;
}
else
{
// Backward compatibility for 1.5 usage.
//@deprecated
$sections = (boolean) $options;
}
// Check the memory cache for already processed strings.
$hash = md5($data . ':' . (int) $sections);
if (isset(self::$cache[$hash]))
{
return self::$cache[$hash];
}
// If no lines present just return the object.
if (empty($data))
{
return new stdClass;
}
// Initialize variables.
$obj = new stdClass;
$section = false;
$lines = explode("\n", $data);
// Process the lines.
foreach ($lines as $line)
{
// Trim any unnecessary whitespace.
$line = trim($line);
// Ignore empty lines and comments.
if (empty($line) || ($line{0} == ';'))
{
continue;
}
if ($sections)
{
$length = strlen($line);
// If we are processing sections and the line is a section add the object and continue.
if (($line[0] == '[') && ($line[$length - 1] == ']'))
{
$section = substr($line, 1, $length - 2);
$obj->$section = new stdClass;
continue;
}
}
elseif ($line{0} == '[')
{
continue;
}
// Check that an equal sign exists and is not the first character of the line.
if (!strpos($line, '='))
{
// Maybe throw exception?
continue;
}
// Get the key and value for the line.
list ($key, $value) = explode('=', $line, 2);
// Validate the key.
if (preg_match('/[^A-Z0-9_]/i', $key))
{
// Maybe throw exception?
continue;
}
// If the value is quoted then we assume it is a string.
$length = strlen($value);
if ($length && ($value[0] == '"') && ($value[$length - 1] == '"'))
{
// Strip the quotes and Convert the new line characters.
$value = stripcslashes(substr($value, 1, ($length - 2)));
$value = str_replace('\n', "\n", $value);
}
else
{
// If the value is not quoted, we assume it is not a string.
// If the value is 'false' assume boolean false.
if ($value == 'false')
{
$value = false;
}
// If the value is 'true' assume boolean true.
elseif ($value == 'true')
{
$value = true;
}
// If the value is numeric than it is either a float or int.
elseif (is_numeric($value))
{
// If there is a period then we assume a float.
if (strpos($value, '.') !== false)
{
$value = (float) $value;
}
else
{
$value = (int) $value;
}
}
}
// If a section is set add the key/value to the section, otherwise top level.
if ($section)
{
$obj->$section->$key = $value;
}
else
{
$obj->$key = $value;
}
}
// Cache the string to save cpu cycles -- thus the world :)
self::$cache[$hash] = clone ($obj);
return $obj;
}
/**
* Method to get a value in an INI format.
*
* @param mixed $value The value to convert to INI format.
*
* @return string The value in INI format.
*
* @since 11.1
*/
protected function getValueAsINI($value)
{
// Initialize variables.
$string = '';
switch (gettype($value))
{
case 'integer':
case 'double':
$string = $value;
break;
case 'boolean':
$string = $value ? 'true' : 'false';
break;
case 'string':
// Sanitize any CRLF characters..
$string = '"' . str_replace(array("\r\n", "\n"), '\\n', $value) . '"';
break;
}
return $string;
}
}
PK :_?\¦V‰
index.htmlnu W+A„¶
PK :_?\"náûT T
format.phpnu W+A„¶ data = new stdClass;
// Optionally load supplied data.
if (is_array($data) || is_object($data))
{
$this->bindData($this->data, $data);
}
elseif (!empty($data) && is_string($data))
{
$this->loadString($data);
}
}
/**
* Magic function to clone the registry object.
*
* @return JRegistry
*
* @since 11.1
*/
public function __clone()
{
$this->data = unserialize(serialize($this->data));
}
/**
* Magic function to render this object as a string using default args of toString method.
*
* @return string
*
* @since 11.1
*/
public function __toString()
{
return $this->toString();
}
/**
* Sets a default value if not already assigned.
*
* @param string $key The name of the parameter.
* @param string $default An optional value for the parameter.
*
* @return string The value set, or the default if the value was not previously set (or null).
*
* @since 11.1
*/
public function def($key, $default = '')
{
$value = $this->get($key, (string) $default);
$this->set($key, $value);
return $value;
}
/**
* Check if a registry path exists.
*
* @param string $path Registry path (e.g. joomla.content.showauthor)
*
* @return boolean
*
* @since 11.1
*/
public function exists($path)
{
// Explode the registry path into an array
if ($nodes = explode('.', $path))
{
// Initialize the current node to be the registry root.
$node = $this->data;
// Traverse the registry to find the correct node for the result.
for ($i = 0, $n = count($nodes); $i < $n; $i++)
{
if (isset($node->$nodes[$i]))
{
$node = $node->$nodes[$i];
}
else
{
break;
}
if ($i + 1 == $n)
{
return true;
}
}
}
return false;
}
/**
* Get a registry value.
*
* @param string $path Registry path (e.g. joomla.content.showauthor)
* @param mixed $default Optional default value, returned if the internal value is null.
*
* @return mixed Value of entry or null
*
* @since 11.1
*/
public function get($path, $default = null)
{
// Initialise variables.
$result = $default;
if (!strpos($path, '.'))
{
return (isset($this->data->$path) && $this->data->$path !== null && $this->data->$path !== '') ? $this->data->$path : $default;
}
// Explode the registry path into an array
$nodes = explode('.', $path);
// Initialize the current node to be the registry root.
$node = $this->data;
$found = false;
// Traverse the registry to find the correct node for the result.
foreach ($nodes as $n)
{
if (isset($node->$n))
{
$node = $node->$n;
$found = true;
}
else
{
$found = false;
break;
}
}
if ($found && $node !== null && $node !== '')
{
$result = $node;
}
return $result;
}
/**
* Returns a reference to a global JRegistry object, only creating it
* if it doesn't already exist.
*
* This method must be invoked as:
* $registry = JRegistry::getInstance($id);
*
* @param string $id An ID for the registry instance
*
* @return object The JRegistry object.
*
* @since 11.1
*/
public static function getInstance($id)
{
if (empty(self::$instances[$id]))
{
self::$instances[$id] = new JRegistry;
}
return self::$instances[$id];
}
/**
* Load a associative array of values into the default namespace
*
* @param array $array Associative array of value to load
*
* @return boolean True on success
*
* @since 11.1
*/
public function loadArray($array)
{
$this->bindData($this->data, $array);
return true;
}
/**
* Load the public variables of the object into the default namespace.
*
* @param object $object The object holding the publics to load
*
* @return boolean True on success
*
* @since 11.1
*/
public function loadObject($object)
{
$this->bindData($this->data, $object);
return true;
}
/**
* Load the contents of a file into the registry
*
* @param string $file Path to file to load
* @param string $format Format of the file [optional: defaults to JSON]
* @param mixed $options Options used by the formatter
*
* @return boolean True on success
*
* @since 11.1
*/
public function loadFile($file, $format = 'JSON', $options = array())
{
// Get the contents of the file
jimport('joomla.filesystem.file');
$data = JFile::read($file);
return $this->loadString($data, $format, $options);
}
/**
* Load a string into the registry
*
* @param string $data String to load into the registry
* @param string $format Format of the string
* @param mixed $options Options used by the formatter
*
* @return boolean True on success
*
* @since 11.1
*/
public function loadString($data, $format = 'JSON', $options = array())
{
// Load a string into the given namespace [or default namespace if not given]
$handler = JRegistryFormat::getInstance($format);
$obj = $handler->stringToObject($data, $options);
$this->loadObject($obj);
return true;
}
/**
* Merge a JRegistry object into this one
*
* @param JRegistry &$source Source JRegistry object to merge.
*
* @return boolean True on success
*
* @since 11.1
*/
public function merge(&$source)
{
if ($source instanceof JRegistry)
{
// Load the variables into the registry's default namespace.
foreach ($source->toArray() as $k => $v)
{
if (($v !== null) && ($v !== ''))
{
$this->data->$k = $v;
}
}
return true;
}
return false;
}
/**
* Set a registry value.
*
* @param string $path Registry Path (e.g. joomla.content.showauthor)
* @param mixed $value Value of entry
*
* @return mixed The value of the that has been set.
*
* @since 11.1
*/
public function set($path, $value)
{
$result = null;
// Explode the registry path into an array
if ($nodes = explode('.', $path))
{
// Initialize the current node to be the registry root.
$node = $this->data;
// Traverse the registry to find the correct node for the result.
for ($i = 0, $n = count($nodes) - 1; $i < $n; $i++)
{
if (!isset($node->$nodes[$i]) && ($i != $n))
{
$node->$nodes[$i] = new stdClass;
}
$node = $node->$nodes[$i];
}
// Get the old value if exists so we can return it
$result = $node->$nodes[$i] = $value;
}
return $result;
}
/**
* Transforms a namespace to an array
*
* @return array An associative array holding the namespace data
*
* @since 11.1
*/
public function toArray()
{
return (array) $this->asArray($this->data);
}
/**
* Transforms a namespace to an object
*
* @return object An an object holding the namespace data
*
* @since 11.1
*/
public function toObject()
{
return $this->data;
}
/**
* Get a namespace in a given string format
*
* @param string $format Format to return the string in
* @param mixed $options Parameters used by the formatter, see formatters for more info
*
* @return string Namespace in string format
*
* @since 11.1
*/
public function toString($format = 'JSON', $options = array())
{
// Return a namespace in a given format
$handler = JRegistryFormat::getInstance($format);
return $handler->objectToString($this->data, $options);
}
/**
* Method to recursively bind data to a parent object.
*
* @param object &$parent The parent object on which to attach the data values.
* @param mixed $data An array or object of data to bind to the parent object.
*
* @return void
*
* @since 11.1
*/
protected function bindData(&$parent, $data)
{
// Ensure the input data is an array.
if (is_object($data))
{
$data = get_object_vars($data);
}
else
{
$data = (array) $data;
}
foreach ($data as $k => $v)
{
if ((is_array($v) && JArrayHelper::isAssociative($v)) || is_object($v))
{
$parent->$k = new stdClass;
$this->bindData($parent->$k, $v);
}
else
{
$parent->$k = $v;
}
}
}
/**
* Method to recursively convert an object of data to an array.
*
* @param object $data An object of data to return as an array.
*
* @return array Array representation of the input object.
*
* @since 11.1
*/
protected function asArray($data)
{
$array = array();
foreach (get_object_vars((object) $data) as $k => $v)
{
if (is_object($v))
{
$array[$k] = $this->asArray($v);
}
else
{
$array[$k] = $v;
}
}
return $array;
}
//
// Following methods are deprecated
//
/**
* Load an XML string into the registry into the given namespace [or default if a namespace is not given]
*
* @param string $data XML formatted string to load into the registry
* @param string $namespace Namespace to load the XML string into [optional]
*
* @return boolean True on success
*
* @since 11.1
*
* @deprecated 12.1 Use loadString passing XML as the format instead.
* @note
*/
public function loadXML($data, $namespace = null)
{
// @codeCoverageIgnoreStart
// Deprecation warning.
JLog::add('JRegistry::loadXML() is deprecated.', JLog::WARNING, 'deprecated');
return $this->loadString($data, 'XML');
// @codeCoverageIgnoreEnd
}
/**
* Load an INI string into the registry into the given namespace [or default if a namespace is not given]
*
* @param string $data INI formatted string to load into the registry
* @param string $namespace Namespace to load the INI string into [optional]
* @param mixed $options An array of options for the formatter, or boolean to process sections.
*
* @return boolean True on success
*
* @since 11.1
*
* @deprecated 12.1 Use loadString passing INI as the format instead.
*/
public function loadINI($data, $namespace = null, $options = array())
{
// @codeCoverageIgnoreStart
// Deprecation warning.
JLog::add('JRegistry::loadINI() is deprecated.', JLog::WARNING, 'deprecated');
return $this->loadString($data, 'INI', $options);
// @codeCoverageIgnoreEnd
}
/**
* Load an JSON string into the registry into the given namespace [or default if a namespace is not given]
*
* @param string $data JSON formatted string to load into the registry
*
* @return boolean True on success
*
* @deprecated 12.1 Use loadString passing JSON as the format instead.
* @note Use loadString instead.
* @since 11.1
*/
public function loadJSON($data)
{
// @codeCoverageIgnoreStart
// Deprecation warning.
JLog::add('JRegistry::loadJSON() is deprecated.', JLog::WARNING, 'deprecated');
return $this->loadString($data, 'JSON');
// @codeCoverageIgnoreEnd
}
/**
* Create a namespace
*
* @param string $namespace Name of the namespace to create
*
* @return boolean True on success
*
* @deprecated 12.1
* @note Namespaces are no longer supported.
* @since 11.1
*/
public function makeNameSpace($namespace)
{
// @codeCoverageIgnoreStart
// Deprecation warning.
JLog::add('JRegistry::makeNameSpace() is deprecated.', JLog::WARNING, 'deprecated');
//$this->_registry[$namespace] = array('data' => new stdClass());
return true;
// @codeCoverageIgnoreEnd
}
/**
* Get the list of namespaces
*
* @return array List of namespaces
*
* @deprecated 12.1
* @note Namespaces are no longer supported.
* @since 11.1
*/
public function getNameSpaces()
{
// @codeCoverageIgnoreStart
// Deprecation warning.
JLog::add('JRegistry::getNameSpaces() is deprecated.', JLog::WARNING, 'deprecated');
//return array_keys($this->_registry);
return array();
// @codeCoverageIgnoreEnd
}
/**
* Get a registry value
*
* @param string $path Registry path (e.g. joomla.content.showauthor)
* @param mixed $default Optional default value
*
* @return mixed Value of entry or null
*
* @deprecated 12.1
* @note Use get instead.
* @since 11.1
*/
public function getValue($path, $default = null)
{
// @codeCoverageIgnoreStart
// Deprecation warning.
JLog::add('JRegistry::getValue() is deprecated. Use get instead.', JLog::WARNING, 'deprecated');
$parts = explode('.', $path);
if (count($parts) > 1)
{
unset($parts[0]);
$path = implode('.', $parts);
}
return $this->get($path, $default);
// @codeCoverageIgnoreEnd
}
/**
* Set a registry value
*
* @param string $path Registry Path (e.g. joomla.content.showauthor)
* @param mixed $value Value of entry
*
* @return mixed The value after setting.
*
* @deprecated 12.1
* @note Use set instead.
* @since 11.1
*/
public function setValue($path, $value)
{
// @codeCoverageIgnoreStart
// Deprecation warning.
JLog::add('JRegistry::setValue() is deprecated. Use set instead.', JLog::WARNING, 'deprecated');
$parts = explode('.', $path);
if (count($parts) > 1)
{
unset($parts[0]);
$path = implode('.', $parts);
}
return $this->set($path, $value);
// @codeCoverageIgnoreEnd
}
/**
* This method is added as an interim solution for API references in the Joomla! CMS 1.6 to the JRegistry
* object where in 1.5 a JParameter object existed. Because many extensions may call this method
* we add it here as a means of "pain relief" until the 1.8 release.
*
* @return boolean True.
*
* @deprecated 12.1
* @note Load no longer supported.
* @since 11.1
*/
public function loadSetupFile()
{
// @codeCoverageIgnoreStart
// Deprecation warning.
JLog::add('JRegistry::loadSetupFile() is deprecated.', JLog::WARNING, 'deprecated');
return true;
// @codeCoverageIgnoreEnd
}
}
PK :_?\®)ÕÐ .htaccessnu W+A„¶ PK :_?\$~ð¢ï ï ¸ format/json.phpnu W+A„¶ PK :_?\®)ÕÐ æ format/.htaccessnu W+A„¶ PK :_?\ù5Œà ¥ format/xml.phpnu W+A„¶ PK :_?\¦V‰ ƒ format/index.htmlnu W+A„¶ PK :_?\ý¥» ã format/php.phpnu W+A„¶ PK :_?\µ)p à à (! format/ini.phpnu W+A„¶ PK :_?\¦V‰
F7 index.htmlnu W+A„¶ PK :_?\"náûT T
Ÿ7 format.phpnu W+A„¶ PK :_?\aÞè¬9 ¬9 -@ registry.phpnu W+A„¶ PK
z