258 lines
7.3 KiB
PHP
258 lines
7.3 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: k2parameter.php 1829 2013-01-25 15:36:59Z lefteris.kavadas $
|
|
* @package K2
|
|
* @author JoomlaWorks http://www.joomlaworks.net
|
|
* @copyright Copyright (c) 2006 - 2013 JoomlaWorks Ltd. All rights reserved.
|
|
* @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
|
|
*/
|
|
|
|
// no direct access
|
|
defined('_JEXEC') or die ;
|
|
|
|
if (K2_JVERSION == '30')
|
|
{
|
|
class K2Parameter
|
|
{
|
|
function __construct($data, $path = '', $namespace)
|
|
{
|
|
$this->namespace = $namespace;
|
|
$this->values = new JRegistry($data);
|
|
}
|
|
|
|
function get($path, $default = null)
|
|
{
|
|
return $this->values->get($this->namespace.$path, $default);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
jimport('joomla.html.parameter');
|
|
|
|
/**
|
|
* Parameter handler
|
|
*
|
|
* @package Joomla.Framework
|
|
* @subpackage Parameter
|
|
* @since 1.5
|
|
*/
|
|
class K2Parameter extends JParameter
|
|
{
|
|
|
|
/**
|
|
* optional namespace
|
|
*
|
|
* @access private
|
|
* @var array
|
|
* @since 1.5
|
|
*/
|
|
var $namespace = null;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @access protected
|
|
* @param string The raw parms text
|
|
* @param string Path to the xml setup file
|
|
* @param string Namespace to the xml setup file
|
|
* @since 1.5
|
|
*/
|
|
function __construct($data, $path = '', $namespace)
|
|
{
|
|
parent::__construct('_default');
|
|
|
|
// Set base path
|
|
$this->_elementPath[] = JPATH_COMPONENT_ADMINISTRATOR.DS.'elements';
|
|
|
|
if (trim($data))
|
|
{
|
|
$this->loadINI($data);
|
|
}
|
|
|
|
if ($path)
|
|
{
|
|
@$this->loadSetupFile($path);
|
|
}
|
|
|
|
if ($namespace)
|
|
{
|
|
$this->namespace = $namespace;
|
|
}
|
|
|
|
$this->_raw = $data;
|
|
|
|
if (K2_JVERSION != '15')
|
|
{
|
|
$this->bind($data);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get a value
|
|
*
|
|
* @access public
|
|
* @param string The name of the param
|
|
* @param mixed The default value if not found
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
function get($key, $default = '', $group = '_default')
|
|
{
|
|
if (K2_JVERSION != '15')
|
|
{
|
|
return parent::get($this->namespace.$key, $default);
|
|
}
|
|
$value = $this->getValue($group.'.'.$this->namespace.$key);
|
|
$result = (empty($value) && ($value !== 0) && ($value !== '0')) ? $default : $value;
|
|
//if($group != '_default') { echo ($group); }
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Render a parameter type
|
|
*
|
|
* @param object A param tag node
|
|
* @param string The control name
|
|
* @return array Any array of the label, the form element and the tooltip
|
|
* @since 1.5
|
|
*/
|
|
function getParam(&$node, $control_name = 'params', $group = '_default')
|
|
{
|
|
//get the type of the parameter
|
|
$type = $node->attributes('type');
|
|
|
|
//remove any occurance of a mos_ prefix
|
|
$type = str_replace('mos_', '', $type);
|
|
|
|
$element = $this->loadElement($type);
|
|
|
|
// error happened
|
|
if ($element === false)
|
|
{
|
|
$result = array();
|
|
$result[0] = $node->attributes('name');
|
|
$result[1] = JText::_('K2_ELEMENT_NOT_DEFINED_FOR_TYPE').' = '.$type;
|
|
$result[5] = $result[0];
|
|
return $result;
|
|
}
|
|
|
|
//get value
|
|
$value = $this->get($node->attributes('name'), $node->attributes('default'), $group);
|
|
|
|
//set name
|
|
$node->_attributes['name'] = $this->namespace.$node->_attributes['name'];
|
|
|
|
return $element->render($node, $value, $control_name);
|
|
}
|
|
|
|
/**
|
|
* Get a registry value
|
|
*
|
|
* @access public
|
|
* @param string $regpath Registry path (e.g. joomla.content.showauthor)
|
|
* @param mixed $default Optional default value
|
|
* @return mixed Value of entry or null
|
|
* @since 1.5
|
|
*/
|
|
function getValue($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;
|
|
}
|
|
|
|
/**
|
|
* Render
|
|
*
|
|
* @access public
|
|
* @param string The name of the control, or the default text area if a setup file is not found
|
|
* @return string HTML
|
|
* @since 1.5
|
|
*/
|
|
function render($name = 'params', $group = '_default')
|
|
{
|
|
if (!isset($this->_xml[$group]))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
$params = $this->getParams($name, $group);
|
|
$html = array();
|
|
$html[] = '<table class="paramlist admintable" cellspacing="1">';
|
|
|
|
if ($description = $this->_xml[$group]->attributes('description'))
|
|
{
|
|
// add the params description to the display
|
|
$desc = JText::_($description);
|
|
$html[] = '<tr><td class="paramlist_description" colspan="2">'.$desc.'</td></tr>';
|
|
}
|
|
|
|
foreach ($params as $param)
|
|
{
|
|
$html[] = '<tr>';
|
|
|
|
if ($param[0])
|
|
{
|
|
$html[] = '<td class="paramlist_key"><span class="editlinktip">'.$param[0].'</span></td>';
|
|
$html[] = '<td class="paramlist_value">'.$param[1].'</td>';
|
|
}
|
|
else
|
|
{
|
|
$html[] = '<td class="paramlist_value" colspan="2">'.$param[1].'</td>';
|
|
}
|
|
|
|
$html[] = '</tr>';
|
|
}
|
|
|
|
if (count($params) < 1)
|
|
{
|
|
$html[] = "<tr><td colspan=\"2\"><i>".(K2_JVERSION != '15') ? JText::_('JLIB_HTML_NO_PARAMETERS_FOR_THIS_ITEM') : JText::_('There are no Parameters for this item')."</i></td></tr>";
|
|
}
|
|
|
|
$html[] = '</table>';
|
|
|
|
return implode("\n", $html);
|
|
}
|
|
|
|
}
|
|
|
|
}
|