| Server IP : 180.180.241.3 / Your IP : 216.73.216.80 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/AppServ/www/news/administrator/components/com_jfusion/views/advancedparam/ |
Upload File : |
<?php
/**
* This is view file for advancedparam
*
* PHP version 5
*
* @category JFusion
* @package ViewsAdmin
* @subpackage Advancedparam
* @author JFusion Team <webmaster@jfusion.org>
* @copyright 2008 JFusion. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.jfusion.org
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.view');
/**
* Renders the JFusion Advanced Param view
*
* @category JFusion
* @package ViewsAdmin
* @subpackage Advancedparam
* @author JFusion Team <webmaster@jfusion.org>
* @copyright 2008 JFusion. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.jfusion.org
*/
class jfusionViewadvancedparam extends JView
{
var $featureArray = array('config' => 'config.xml',
'activity' => 'activity.xml',
'search' => 'search.xml',
'whosonline' => 'whosonline.xml',
'useractivity' => 'useractivity.xml');
var $isJ16;
/**
* displays the view
*
* @param string $tpl template name
*
* @return mixed html output of view
*/
function display($tpl = null)
{
$this->isJ16 = JFusionFunction::isJoomlaVersion('1.6');
if ($this->isJ16) {
//include some J1.6+ classes
jimport('joomla.form.form');
jimport('joomla.form.formfield');
jimport('joomla.html.pane');
}
$mainframe = JFactory::getApplication();
$lang = JFactory::getLanguage();
$lang->load('com_jfusion');
//Load Current feature
$feature = JRequest::getVar('feature');
if (empty($feature)) {
$feature = 'any';
}
switch ($feature) {
case 'whosonline':
$lang->load('mod_jfusion_whosonline', JPATH_SITE);
break;
case 'search':
$lang->load('mod_jfusion_search', JPATH_SITE);
break;
case 'activity':
$lang->load('mod_jfusion_activity', JPATH_SITE);
break;
case 'useractivity':
$lang->load('mod_jfusion_user_activity', JPATH_SITE);
break;
}
//Load multiselect
$multiselect = JRequest::getVar('multiselect');
if ($multiselect) {
$multiselect = true;
//Load Plugin XML Parameter
$params = $this->loadXMLParamMulti($feature);
//Load enabled Plugin List
list($output, $js) = $this->loadElementMulti($params, $feature);
} else {
$multiselect = false;
//Load Plugin XML Parameter
$params = $this->loadXMLParamSingle($feature);
//Load enabled Plugin List
list($output, $js) = $this->loadElementSingle($params, $feature);
}
//load the element number for multiple advanceparam elements
$ename = JRequest::getInt('ename');
$this->assignRef('ename', $ename);
//Add Document dependent things like javascript, css
$document = JFactory::getDocument();
$document->setTitle('Plugin Selection');
$template = $mainframe->getTemplate();
$document->addStyleSheet("templates/$template/css/general.css");
$document->addStyleSheet('components/com_jfusion/css/jfusion.css');
$css = 'table.adminlist, table.admintable{ font-size:11px; }';
$document->addStyleDeclaration($css);
if ( $js ) {
$document->addScriptDeclaration($js);
}
$this->assignRef('output', $output);
//for J1.6+ single select modes, params is an array
if ($this->isJ16 && empty($multiselect)) {
$this->assignRef('comp', $params['params']);
} else {
$this->assignRef('comp', $params);
}
JHTML::_('behavior.modal');
JHTML::_('behavior.tooltip');
parent::display($multiselect ? 'multi' : 'single');
}
/**
* Loads a single element
*
* @param JParameter $params parameters
* @param string $feature feature
*
* @return string html
*/
function loadElementSingle($params, $feature)
{
if ($this->isJ16) {
$JPlugin = (!empty($params['jfusionplugin'])) ? $params['jfusionplugin'] : '';
} else {
$JPlugin = $params->get('jfusionplugin', '');
}
$db = JFactory::getDBO();
$query = 'SELECT name as id, name as name from #__jfusion WHERE status = 1';
$db->setQuery($query);
$rows = $db->loadObjectList();
foreach ($rows as $key => &$row) {
if (!JFusionFunction::hasFeature($row->name,$feature)) {
unset($rows[$key]);
}
}
$noSelected = new stdClass();
$noSelected->id = null;
$noSelected->name = JText::_('SELECT_ONE');
$rows = array_merge(array($noSelected), $rows);
$attributes = array('size' => '1', 'class' => 'inputbox');
$output = JHTML::_('select.genericlist', $rows, 'params[jfusionplugin]', $attributes, 'id', 'name', $JPlugin);
$featureLink = '';
if (isset($this->featureArray[$feature])) {
$featureLink = '&feature=' . $feature;
}
$js = null;
return array($output, $js);
}
/**
* Loads a single xml param
*
* @param string $feature feature
*
* @return array|JParameter html
*/
function loadXMLParamSingle($feature)
{
$option = JRequest::getCmd('option');
//Load current Parameter
$value = $this->getParam();
if ($this->isJ16) {
global $jname;
$jname = (!empty($value['jfusionplugin'])) ? $value['jfusionplugin'] : '';
if (isset($this->featureArray[$feature]) && !empty($jname)) {
$path = JFUSION_PLUGIN_PATH . DS . $jname . DS . $this->featureArray[$feature];
$defaultPath = JPATH_ADMINISTRATOR . DS . 'components' . DS . $option . DS . 'views' . DS . 'advancedparam' . DS . 'paramfiles' . DS . $this->featureArray[$feature];
$xml_path = (file_exists($path)) ? $path : $defaultPath;
$form = false;
$xml = JFusionFunction::getXml($xml_path);
if ($xml) {
$fields = $xml->getElementByPath('fields');
if ($fields) {
$data = $fields->toString();
//make sure it is surround by <form>
if (substr($data, 0, 5) != '<form>') {
$data = '<form>' . $data . '</form>';
}
/**
* @ignore
* @var $form JForm
*/
$form = JForm::getInstance($jname, $data, array('control' => "params[$jname]"));
//add JFusion's fields
$form->addFieldPath(JPATH_COMPONENT.DS.'fields');
if (isset($value[$jname])) {
$form->bind($value[$jname]);
}
}
}
$value['params'] = $form;
}
} else {
//Load Plugin XML Parameter
$params = new JParameter('');
$params->loadArray($value);
$params->addElementPath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jfusion' . DS . 'elements');
$JPlugin = $params->get('jfusionplugin', '');
if (isset($this->featureArray[$feature]) && !empty($JPlugin)) {
global $jname;
$jname = $JPlugin;
$path = JFUSION_PLUGIN_PATH . DS . $JPlugin . DS . $this->featureArray[$feature];
$defaultPath = JPATH_ADMINISTRATOR . DS . 'components' . DS . $option . DS . 'views' . DS . 'advancedparam' . DS . 'paramfiles' . DS . $this->featureArray[$feature];
$xml_path = (file_exists($path)) ? $path : $defaultPath;
$xml = JFusionFunction::getXml($xml_path);
if ($xml) {
/**
* @ignore
* @var $xmlparams JSimpleXMLElement
*/
$xmlparams = $xml->getElementByPath('params');
$params->setXML($xmlparams);
}
}
$value = $params;
}
return $value;
}
/**
* Loads a multi element
*
* @param array $params parameters
* @param string $feature feature
*
* @return string html
*/
function loadElementMulti($params, $feature)
{
$db = JFactory::getDBO();
$query = 'SELECT name as id, name as name from #__jfusion WHERE status = 1';
$db->setQuery($query);
$rows = $db->loadObjectList();
foreach ($rows as $key => &$row) {
if (!JFusionFunction::hasFeature($row->name,$feature)) {
unset($rows[$key]);
}
}
//remove plugins that have already been selected
foreach ($rows AS $k => $v) {
if (array_key_exists($v->name, $params)) {
unset($rows[$k]);
}
}
$noSelected = new stdClass();
$noSelected->id = null;
$noSelected->name = JText::_('SELECT_ONE');
$rows = array_merge(array($noSelected), $rows);
$attributes = array('size' => '1', 'class' => 'inputbox');
$output = JHTML::_('select.genericlist', $rows, 'jfusionplugin', $attributes, 'id', 'name');
$output.= ' <input type="button" value="add" name="add" onclick="jPluginAdd(this);" />';
$featureLink = '';
if (isset($this->featureArray[$feature])) {
$featureLink = '&feature=' . $feature;
}
$js = <<<JS
function jPluginAdd(button) {
button.form.jfusion_task.value = 'add';
button.form.task.value = 'advancedparam';
button.form.submit();
}
function jPluginRemove(button, value) {
button.form.jfusion_task.value = 'remove';
button.form.jfusion_value.value = value;
button.form.task.value = 'advancedparam';
button.form.submit();
}
JS;
return array($output, $js);
}
/**
* @return array
*/
function getParam()
{
$hash = JRequest::getVar(JRequest::getVar('ename'));
$session = JFactory::getSession();
$encoded_pairs = $session->get($hash);
$value = @unserialize(base64_decode($encoded_pairs));
if (!is_array($value)) {
$value = array();
}
return $value;
}
/**
* @param array $data
*/
function saveParam($data)
{
$hash = JRequest::getVar(JRequest::getVar('ename'));
$session = JFactory::getSession();
$data = base64_encode(serialize($data));
$session->set($hash, $data);
}
/**
* Loads a multi XML param
*
* @param string $feature feature
*
* @return array html
*/
function loadXMLParamMulti($feature)
{
global $jname;
$option = JRequest::getCmd('option');
//Load current Parameter
$value = $this->getParam();
$task = JRequest::getVar('jfusion_task');
if ($task == 'add') {
$newPlugin = JRequest::getVar('jfusionplugin');
if ($newPlugin) {
if (!array_key_exists($newPlugin, $value)) {
$value[$newPlugin] = array('jfusionplugin' => $newPlugin);
} else {
$this->assignRef('error', JText::_('NOT_ADDED_TWICE'));
}
} else {
$this->assignRef('error', JText::_('MUST_SELLECT_PLUGIN'));
}
$this->saveParam($value);
} else if ($task == 'remove') {
$rmPlugin = JRequest::getVar('jfusion_value');
if (array_key_exists($rmPlugin, $value)) {
unset($value[$rmPlugin]);
} else {
$this->assignRef('error', JText::_('NOT_PLUGIN_REMOVE'));
}
$this->saveParam($value);
}
foreach (array_keys($value) as $key) {
if ($this->isJ16) {
$jname = $value[$key]['jfusionplugin'];
if (isset($this->featureArray[$feature]) && !empty($jname)) {
$path = JFUSION_PLUGIN_PATH . DS . $jname . DS . $this->featureArray[$feature];
$defaultPath = JPATH_ADMINISTRATOR . DS . 'components' . DS . $option . DS . 'views' . DS . 'advancedparam' . DS . 'paramfiles' . DS . $this->featureArray[$feature];
$xml_path = (file_exists($path)) ? $path : $defaultPath;
$xml = JFusionFunction::getXml($xml_path);
if ($xml) {
$fields = $xml->getElementByPath('fields');
if ($fields) {
$data = $fields->toString();
//make sure it is surround by <form>
if (substr($data, 0, 5) != '<form>') {
$data = '<form>' . $data . '</form>';
}
/**
* @ignore
* @var $form JForm
*/
$form = JForm::getInstance($jname, $data, array('control' => "params[$jname]"));
//add JFusion's fields
$form->addFieldPath(JPATH_COMPONENT.DS.'fields');
//bind values
$form->bind($value[$key]);
$value[$key]['params'] = $form;
}
}
}
} else {
$params = new JParameter('');
$params->loadArray($value[$key]);
$params->addElementPath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jfusion' . DS . 'elements');
$jname = $params->get('jfusionplugin', '');
if (isset($this->featureArray[$feature]) && !empty($jname)) {
$path = JFUSION_PLUGIN_PATH . DS . $jname . DS . $this->featureArray[$feature];
$defaultPath = JPATH_ADMINISTRATOR . DS . 'components' . DS . $option . DS . 'views' . DS . 'advancedparam' . DS . 'paramfiles' . DS . $this->featureArray[$feature];
$xml_path = (file_exists($path)) ? $path : $defaultPath;
$xml = JFusionFunction::getXml($xml_path);
if ($xml) {
/**
* @ignore
* @var $xmlparams JSimpleXMLElement
*/
$xmlparams = $xml->getElementByPath('params');
$params->setXML($xmlparams);
}
}
$value[$key]['params'] = $params;
}
}
return $value;
}
}