%PDF- %PDF-
| Direktori : /home1/lightco1/www/lightcolab.com/administrator/components/com_jce/models/ |
| Current File : //home1/lightco1/www/lightcolab.com/administrator/components/com_jce/models/preferences.php |
<?php
/**
* @copyright Copyright (c) 2009-2017 Ryan Demmer. All rights reserved
* @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* JCE is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses
*/
defined('_JEXEC') or die('RESTRICTED');
// load base model
require_once dirname(__FILE__).'/model.php';
class WFModelPreferences extends WFModel
{
protected function checkRule($rules, $action, $gid)
{
if (is_object($rules)) {
if (isset($rules->$action)) {
$rule = $rules->$action;
return isset($rule->$gid) && $rule->$gid != 0;
}
}
// set Manager to false, Administrator and Super Administrator to true
return $gid > 23;
}
public function getForm($group = null)
{
$component = WFExtensionHelper::getComponent();
// get params definitions
$params = json_decode($component->params);
$rules = isset($params->access) ? $params->access : null;
// Build the form control.
$curLevel = 0;
$actions = $this->getActions();
$groups = $this->getUserGroups();
$tabs = array('<ul class="nav nav-tabs">');
$content = array('<div class="tab-content">');
foreach ($groups as $group) {
$difLevel = $group->level - $curLevel;
$html = array();
$item = new StdClass();
$id = $curLevel;
$tabs[] = '<li><a href="#permission-'.$id.'">'.str_repeat('<span> › </span> ', $curLevel = $group->level).$group->text.'</a></li>';
$content[] = '<div id="permission-'.$id.'" class="tab-pane">';
$content[] = '<table border="0" cellspacing="1" class="table table-striped">';
$content[] = '<thead>';
$content[] = '<tr>';
$content[] = '<th><span>'.WFText::_('WF_RULES_ACTION').'</span></th>';
$content[] = '<th><span>'.WFText::_('WF_RULES_SELECT_SETTING').'</span></th>';
$content[] = '</tr>';
$content[] = '</thead>';
$content[] = '<tbody>';
foreach ($actions as $action) {
$content[] = '<tr>';
$content[] = '<td><label class="hasTip" for="'.$action->name.'_'.$group->value.'" title="'.htmlspecialchars(WFText::_($action->title).'::'.WFText::_($action->description), ENT_COMPAT, 'UTF-8').'">'.WFText::_($action->title).'</label></td>';
$content[] = '<td>';
$content[] = '<select name="params[rules]['.$action->name.']['.$group->value.']" id="'.$action->name.'_'.$group->value.'" title="'.WFText::sprintf('WF_RULES_SELECT_ALLOW_DENY_GROUP', WFText::_($action->title), trim($group->text)).'">';
$assetRule = $this->checkRule($rules, $action->name, $group->value);
$content[] = '<option value="1"'.($assetRule === true ? ' selected="selected"' : '').'>'.WFText::_('WF_RULES_ALLOWED').'</option>';
$content[] = '<option value="0"'.($assetRule === false ? ' selected="selected"' : '').'>'.WFText::_('WF_RULES_DENIED').'</option>';
$content[] = '</select>  ';
$content[] = '</td>';
$content[] = '</tr>';
}
$content[] = '</tbody>';
$content[] = '</table>';
$content[] = '</div>';
}
$tabs[] = '</ul>';
$content[] = '</div>';
return implode('', array_merge($tabs, $content));
return null;
}
/**
* Get Actions from access.xml file.
*/
protected function getActions()
{
$file = JPATH_COMPONENT_ADMINISTRATOR.'/access.xml';
$xml = WFXMLElement::load($file);
$actions = array();
if ($xml) {
// Iterate over the children and add to the actions.
foreach ($xml->section->children() as $element) {
if ($element->getName() == 'action') {
$actions[] = (object) array(
'name' => (string) $element['name'],
'title' => (string) $element['title'],
'description' => (string) $element['description'],
);
}
}
}
return $actions;
}
/**
* Get a list of the user groups.
*/
protected function getUserGroups()
{
$db = JFactory::getDBO();
// Initialise variables.
$db = JFactory::getDBO();
$query = 'SELECT a.id AS value, a.name AS text, COUNT(DISTINCT b.id) AS level, a.parent_id'
.' FROM #__core_acl_aro_groups AS a'
.' LEFT JOIN #__core_acl_aro_groups AS b ON a.lft >= b.lft AND a.rgt <= b.rgt'
.' WHERE a.id IN (23,24,25) AND b.id IN (23,24,25)'
.' GROUP BY a.id'
.' ORDER BY a.lft ASC'
;
// Get the options.
$db->setQuery($query);
return $db->loadObjectList();
}
}