| Server IP : 180.180.241.3 / Your IP : 216.73.216.216 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/models/ |
Upload File : |
<?php
/**
* Abstract admin file
*
* PHP version 5
*
* @category JFusion
* @package Models
* @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');
require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jfusion' . DS . 'defines.php';
/**
* Abstract interface for all JFusion functions that are accessed through the Joomla administrator interface
*
* @category JFusion
* @package Models
* @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 JFusionAdmin
{
/**
* returns the name of this JFusion plugin
*
* @return string name of current JFusion plugin
*/
function getJname()
{
return '';
}
/**
* Returns the a list of users of the integrated software
* @param int $limitstart optional
* @param int $limit optional
* @return array List of usernames/emails
*/
function getUserList($limitstart = 0, $limit = 0)
{
return array();
}
/**
* Returns the the number of users in the integrated software. Allows for fast retrieval total number of users for the usersync
*
* @return integer Number of registered users
*/
function getUserCount()
{
return 0;
}
/**
* Returns the a list of usersgroups of the integrated software
*
* @return array List of usergroups
*/
function getUsergroupList()
{
return array();
}
/**
* Function used to display the default usergroup in the JFusion plugin overview
*
* @return string Default usergroup name
*/
function getDefaultUsergroup()
{
return '';
}
/**
* Checks if the software allows new users to register
*
* @return boolean True if new user registration is allowed, otherwise returns false
*/
function allowRegistration()
{
return true;
}
/**
* returns the name of user table of integrated software
*
* @return string table name
*/
function getTablename()
{
return '';
}
/**
* Function finds config file of integrated software and automatically configures the JFusion plugin
*
* @param string $softwarePath path to root of integrated software
*
* @return array array with ne newly found configuration
*/
function setupFromPath($softwarePath)
{
return array();
}
/**
* Function that checks if the plugin has a valid config
*
* @return array result of the config check
*/
function checkConfig()
{
$status = array();
$jname = $this->getJname();
//for joomla_int check to see if the source_url does not equal the default
$params = JFusionFactory::getParams($jname);
if ($jname == 'joomla_int') {
$source_url = $params->get('source_url');
if (!empty($source_url)) {
$status['config'] = 1;
$status['message'] = JText::_('GOOD_CONFIG');
} else {
$status['config'] = 0;
$status['message'] = JText::_('NOT_CONFIGURED');
}
} else {
$db = JFusionFactory::getDatabase($jname);
$jdb = JFactory::getDBO();
if (JError::isError($db) || !$db || strpos($db->name, 'mysql') === FALSE) {
$status['config'] = 0;
$status['message'] = $jname.' '.JText::_('NO_DATABASE');
} elseif (JError::isError($jdb) || !$jdb || strpos($jdb->name, 'mysql') === FALSE) {
$status['config'] = 0;
$status['message'] = $jname.' -> joomla_int '.JText::_('NO_DATABASE');
} elseif (!$db->connected()) {
$status['config'] = 0;
$status['message'] = $jname.' '.JText::_('NO_DATABASE');
} elseif (!$jdb->connected()) {
$status['config'] = 0;
$status['message'] = $jname.' -> joomla_int '. JText::_('NO_DATABASE');
} else {
//added check for missing files of copied plugins after upgrade
$path = JFUSION_PLUGIN_PATH . DS . $jname . DS;
if (!file_exists($path.'admin.php')) {
$status['config'] = 0;
$status['message'] = JText::_('NO_FILES').' admin.php';
} else if (!file_exists($path.'user.php')) {
$status['config'] = 0;
$status['message'] = JText::_('NO_FILES').' user.php';
} else {
$cookie_domain = $params->get('cookie_domain');
$jfc = JFusionFactory::getCookies();
list($url) = $jfc->getApiUrl($cookie_domain);
if ($url) {
require_once(JPATH_SITE.DS.'components'.DS.'com_jfusion'.DS.'jfusionapi.php');
$joomla_int = JFusionFactory::getParams('joomla_int');
$api = new JFusionAPI($url,$joomla_int->get('secret'));
if (!$api->ping()) {
list ($message) = $api->getError();
$status['config'] = 0;
$status['message'] = $api->url. ' ' .$message;
return $status;
}
}
$source_path = $params->get('source_path');
if ($source_path && (strpos($source_path, 'http://') === 0 || strpos($source_path, 'https://') === 0)) {
$status['config'] = 0;
$status['message'] = JText::_('ERROR_SOURCE_PATH'). ' : '.$source_path ;
} else {
//get the user table name
$tablename = $this->getTablename();
// lets check if the table exists, now using the Joomla API
$table_list = $db->getTableList();
$table_prefix = $db->getPrefix();
if (!is_array($table_list)) {
$status['config'] = 0;
$status['message'] = $table_prefix . $tablename . ': ' . JText::_('NO_TABLE');
} else {
if (array_search($table_prefix . $tablename, $table_list) === false) {
//do a final check for case insensitive windows servers
if (array_search(strtolower($table_prefix . $tablename), $table_list) === false) {
$status['config'] = 0;
$status['message'] = $table_prefix . $tablename . ': ' . JText::_('NO_TABLE');
} else {
$status['config'] = 1;
$status['message'] = JText::_('GOOD_CONFIG');
}
} else {
$status['config'] = 1;
$status['message'] = JText::_('GOOD_CONFIG');
}
}
}
}
}
}
return $status;
}
/**
* Function that checks if the plugin has a valid config
* jerror is used for output
*
* @return void
*/
function debugConfig()
{
//get registration status
$new_registration = $this->allowRegistration();
$jname = $this->getJname();
//get the data about the JFusion plugins
$db = JFactory::getDBO();
$query = 'SELECT * from #__jfusion WHERE name = ' . $db->Quote($jname);
$db->setQuery($query);
$plugin = $db->loadObject();
//output a warning to the administrator if the allowRegistration setting is wrong
if ($new_registration && $plugin->slave == 1) {
JError::raiseNotice(0, $jname . ': ' . JText::_('DISABLE_REGISTRATION'));
}
if (!$new_registration && $plugin->master == 1) {
JError::raiseNotice(0, $jname . ': ' . JText::_('ENABLE_REGISTRATION'));
}
//most dual login problems are due to incorrect cookie domain settings
//therefore we should check it and output a warning if needed.
$params = JFusionFactory::getParams($jname);
$cookie_domain = $params->get('cookie_domain',-1);
if ($cookie_domain!==-1) {
$cookie_domain = str_replace(array('http://', 'https://'), array('', ''), $cookie_domain);
$correct_domain = '';
$correct_array = explode('.', html_entity_decode($_SERVER['SERVER_NAME']));
//check for domain names with double extentions
if (isset($correct_array[count($correct_array) - 2]) && isset($correct_array[count($correct_array) - 1])) {
//domain array
$domain_array = array('com', 'net', 'org', 'co', 'me');
if (in_array($correct_array[count($correct_array) - 2], $domain_array)) {
$correct_domain = '.' . $correct_array[count($correct_array) - 3] . '.' . $correct_array[count($correct_array) - 2] . '.' . $correct_array[count($correct_array) - 1];
} else {
$correct_domain = '.' . $correct_array[count($correct_array) - 2] . '.' . $correct_array[count($correct_array) - 1];
}
if ($correct_domain != $cookie_domain && !$this->allowEmptyCookieDomain()) {
JError::raiseNotice(0, $jname . ': ' . JText::_('BEST_COOKIE_DOMAIN') . ' ' . $correct_domain);
}
}
}
//also check the cookie path as it can interfere with frameless
$cookie_path = $params->get('cookie_path',-1);
if ($cookie_path!==-1) {
if ($cookie_path != '/' && !$this->allowEmptyCookiePath()) {
JError::raiseNotice(0, $jname . ': ' . JText::_('BEST_COOKIE_PATH') . ' /');
}
}
//check that master plugin does not have advanced group mode data stored
$master = JFusionFunction::getMaster();
if (!empty($master) && $master->name == $jname && JFusionFunction::isAdvancedUsergroupMode($jname)) {
JError::raiseWarning(0, $jname . ': ' . JText::_('ADVANCED_GROUPMODE_ONLY_SUPPORTED_FORSLAVES'));
}
// allow additional checking of the configuration
$this->debugConfigExtra();
}
/**
* Function that determines if the empty cookie path is allowed
*
* @return bool
*/
function allowEmptyCookiePath()
{
return false;
}
/**
* Function that determines if the empty cookie domain is allowed
*
* @return bool
*/
function allowEmptyCookieDomain()
{
return false;
}
/**
* Function to implement any extra debug checks for plugins
*
* @return void
*/
function debugConfigExtra()
{
}
/**
* Get an usergroup element
*
* @param string $name name of element
* @param string $value value of element
* @param string $node node of element
* @param string $control_name name of controller
*
* @return string html
*/
function usergroup($name, $value, $node, $control_name)
{
$jname = $this->getJname();
//get the master plugin to be throughout
$master = JFusionFunction::getMaster();
$advanced = 0;
if(JFusionFunction::isJoomlaVersion('1.6')){
// set output format options in 1.6 only
JHTML::setFormatOptions(array('format.eol' => "", 'format.indent' => ""));
}
//detect is value is a serialized array
if (substr($value, 0, 2) == 'a:') {
$value = unserialize($value);
//use advanced only if this plugin is not set as master
if (!empty($master) && $master->name != $this->getJname()) {
$advanced = 1;
}
}
if (JFusionFunction::validPlugin($this->getJname())) {
$usergroups = $this->getUsergroupList();
if (!empty($usergroups)) {
$simple_usergroup = '<table style="width:100%; border:0">';
$simple_usergroup.= '<tr><td>' . JText::_('DEFAULT_USERGROUP') . '</td><td>' . JHTML::_('select.genericlist', $usergroups, $control_name . '[' . $name . ']', '', 'id', 'name', $value) . '</td></tr>';
$simple_usergroup.= '</table>';
//escape single quotes to prevent JS errors
$simple_usergroup = str_replace("'", "\'", $simple_usergroup);
} else {
$simple_usergroup = '';
}
} else {
return JText::_('SAVE_CONFIG_FIRST');
}
//check to see if current plugin is a slave
$db = JFactory::getDBO();
$query = 'SELECT slave FROM #__jfusion WHERE name = ' . $db->Quote($jname);
$db->setQuery($query);
$slave = $db->loadResult();
$list_box = '<select onchange="usergroupSelect(this.selectedIndex);">';
if ($advanced == 1) {
$list_box.= '<option value="0">'.JText::_('SIMPLE').'</option>';
} else {
$list_box.= '<option value="0" selected="selected">'.JText::_('SIMPLE').'</option>';
}
if ($slave == 1 && !empty($master) && JFusionFunction::hasFeature($jname,'updateusergroup')) {
//allow usergroup sync
if ($advanced == 1) {
$list_box.= '<option selected="selected" value="1">'.JText::_('ADVANCED').'</option>';
} else {
$list_box.= '<option value="1">'.JText::_('ADVANCED').'</option>';
}
//prepare the advanced options
$JFusionMaster = JFusionFactory::getAdmin($master->name);
$master_usergroups = $JFusionMaster->getUsergroupList();
$advanced_usergroup = '<table class="usergroups">';
if ($advanced == 1) {
foreach ($master_usergroups as $master_usergroup) {
$select_value = (!isset($value[$master_usergroup->id])) ? '' : $value[$master_usergroup->id];
$advanced_usergroup.= '<tr><td>' . $master_usergroup->name . '</td>';
$advanced_usergroup.= '<td>' . JHTML::_('select.genericlist', $usergroups, $control_name . '[' . $name . '][' . $master_usergroup->id . ']', '', 'id', 'name', $select_value) . '</td></tr>';
}
} else {
foreach ($master_usergroups as $master_usergroup) {
$advanced_usergroup.= '<tr><td>' . $master_usergroup->name . '</td>';
$advanced_usergroup.= '<td>' . JHTML::_('select.genericlist', $usergroups, $control_name . '[' . $name . '][' . $master_usergroup->id . ']', '', 'id', 'name', '') . '</td></tr>';
}
}
$advanced_usergroup.= '</table>';
//escape single quotes to prevent JS errors
$advanced_usergroup = str_replace("'", "\'", $advanced_usergroup);
} else {
$advanced_usergroup = '';
}
$list_box.= '</select>';
$document = JFactory::getDocument();
$js = <<<JS
function usergroupSelect(option)
{
var myArray = [];
myArray[0] = '{$simple_usergroup}';
myArray[1] = '{$advanced_usergroup}';
$('JFusionUsergroup').innerHTML = myArray[option];
}
JS;
$document->addScriptDeclaration($js);
$return = '<table><tr><td>'.JText::_('USERGROUP'). ' '. JText::_('MODE').'</td><td>'.$list_box.'</td></tr><tr><td COLSPAN=2><div id="JFusionUsergroup">';
if ($advanced == 1) {
$return .= $advanced_usergroup;
} else {
$return .= $simple_usergroup;
}
$return .= '</div></td></tr></table>';
return $return;
}
/**
* Get an multiusergroup element
*
* @param string $name name of element
* @param string $value value of element
* @param string $node node of element
* @param string $control_name name of controller
*
* @return string html
*/
function multiusergroup($name, $value, $node, $control_name)
{
$jname = $this->getJname();
//get the master plugin to be throughout
$master = JFusionFunction::getMaster();
$advanced = 0;
if(JFusionFunction::isJoomlaVersion('1.6')){
// set output format options in 1.6 only
JHTML::setFormatOptions(array('format.eol' => '', 'format.indent' => ''));
}
//detect is value is a serialized array
if (substr($value, 0, 2) == 'a:') {
$value = unserialize($value);
//use advanced only if this plugin is not set as master
if (!empty($master) && $master->name != $this->getJname()) {
$advanced = 1;
}
}
if (JFusionFunction::validPlugin($this->getJname())) {
$usergroups = $this->getUsergroupList();
if (!empty($usergroups)) {
$simple_usergroup = '<table style="width:100%; border:0">';
$simple_usergroup.= '<tr><td>' . JText::_('DEFAULT_USERGROUP') . '</td><td>' . JHTML::_('select.genericlist', $usergroups, $control_name . '[' . $name . ']', '', 'id', 'name', $value) . '</td></tr>';
$simple_usergroup.= '</table>';
//escape single quotes to prevent JS errors
$simple_usergroup = str_replace("'", "\'", $simple_usergroup);
} else {
$simple_usergroup = '';
}
} else {
return JText::_('SAVE_CONFIG_FIRST');
}
$params = JFusionFactory::getParams($jname);
$multiusergroupdefault = $params->get('multiusergroupdefault');
$master_usergroups = array();
$JFusionMaster = null;
if ( !empty($master) ) {
$JFusionMaster = JFusionFactory::getAdmin($master->name);
$master_usergroups = $JFusionMaster->getUsergroupList();
}
//check to see if current plugin is a slave
$db = JFactory::getDBO();
$query = 'SELECT slave FROM #__jfusion WHERE name = ' . $db->Quote($jname);
$db->setQuery($query);
$slave = $db->loadResult();
$list_box = '<select onchange="usergroupSelect(this.selectedIndex);">';
if ($advanced == 1) {
$list_box.= '<option value="0">'.JText::_('SIMPLE').'</option>';
} else {
$list_box.= '<option value="0" selected="selected">'.JText::_('SIMPLE').'</option>';
}
$jfGroupCount = 0;
if ($slave == 1 && $JFusionMaster && JFusionFunction::hasFeature($jname,'updateusergroup')) {
//allow usergroup sync
if ($advanced == 1) {
$list_box.= '<option selected="selected" value="1">'.JText::_('ADVANCED').'</option>';
} else {
$list_box.= '<option value="1">'.JText::_('ADVANCED').'</option>';
}
//prepare the advanced options
$advanced_usergroup = '<table id="usergroups" class="usergroups">';
$advanced_usergroup.= '<tr><td>'.$JFusionMaster->getJname().'</td><td>'.$this->getJname().'</td><td>Default Group</td><td></td></tr>';
$master_control_name = $control_name . '[' . $name . ']['.$JFusionMaster->getJname().']';
$this_control_name = $control_name . '[' . $name . ']['.$this->getJname().']';
if ($advanced == 1) {
if ( isset($value[$JFusionMaster->getJname()]) && isset($value[$this->getJname()]) && count($value[$JFusionMaster->getJname()]) < count($value[$this->getJname()])) {
$groups = isset($value[$this->getJname()]) ? $value[$this->getJname()] : array();
} else {
$groups = isset($value[$JFusionMaster->getJname()]) ? $value[$JFusionMaster->getJname()] : array();
}
foreach ($groups as $key => $select_value) {
$jfGroupCount++;
$select_value = isset($value[$JFusionMaster->getJname()][$key]) ? $value[$JFusionMaster->getJname()][$key] : array();
$advanced_usergroup.= '<tr id="usergroups_row'.$jfGroupCount.'">';
if ($JFusionMaster->isMultiGroup()) {
$advanced_usergroup.= '<td>' . JHTML::_('select.genericlist', $master_usergroups , $master_control_name.'['.$jfGroupCount.'][]', 'MULTIPLE SIZE="10"', 'id', 'name', $select_value) . '</td>';
} else {
$advanced_usergroup.= '<td>' . JHTML::_('select.genericlist', $master_usergroups , $master_control_name.'['.$jfGroupCount.'][]', '', 'id', 'name', $select_value) . '</td>';
}
$select_value = isset($value[$this->getJname()][$key]) ? $value[$this->getJname()][$key] : array();
if ($this->isMultiGroup()) {
$advanced_usergroup.= '<td>' . JHTML::_('select.genericlist', $usergroups, $this_control_name.'['.$jfGroupCount.'][]', 'MULTIPLE SIZE="10"', 'id', 'name', $select_value) . '</td>';
} else {
$advanced_usergroup.= '<td>' . JHTML::_('select.genericlist', $usergroups, $this_control_name.'['.$jfGroupCount.'][]', '', 'id', 'name', $select_value) . '</td>';
}
$checked = '';
if ($multiusergroupdefault == $key) {
$checked = 'checked';
}
$advanced_usergroup.= '<td><input type="radio" '.$checked.' name="'.$control_name . '[' . $name . 'default]" value="'.$jfGroupCount.'"></td>';
$advanced_usergroup.= '<td><a href="javascript:removeRow('.$jfGroupCount.')">'. JText::_('REMOVE').'</a></td>';
$advanced_usergroup.= '</tr>';
}
} else {
$jfGroupCount++;
$select_value = '';
$advanced_usergroup.= '<tr id="usergroups_row'.$jfGroupCount.'">';
if ($JFusionMaster->isMultiGroup()) {
$advanced_usergroup.= '<td>' . JHTML::_('select.genericlist', $master_usergroups , $master_control_name.'['.$jfGroupCount.'][]', 'MULTIPLE SIZE="10"', 'id', 'name', $select_value) . '</td>';
} else {
$advanced_usergroup.= '<td>' . JHTML::_('select.genericlist', $master_usergroups , $master_control_name.'['.$jfGroupCount.'][]', '', 'id', 'name', $select_value) . '</td>';
}
$select_value = '';
if ($this->isMultiGroup()) {
$advanced_usergroup.= '<td>' . JHTML::_('select.genericlist', $usergroups, $this_control_name.'['.$jfGroupCount.'][]', 'MULTIPLE SIZE="10"', 'id', 'name', $select_value) . '</td>';
} else {
$advanced_usergroup.= '<td>' . JHTML::_('select.genericlist', $usergroups, $this_control_name.'['.$jfGroupCount.'][]', '', 'id', 'name', $select_value) . '</td>';
}
$checked = 'checked';
$advanced_usergroup.= '<td><input type="radio" '.$checked.' name="'.$control_name . '[' . $name . 'default]" value="'.$jfGroupCount.'"></td>';
$advanced_usergroup.= '<td><a href="javascript:removeRow('.$jfGroupCount.')">'.JText::_('REMOVE').'</a></td>';
$advanced_usergroup.= '</tr>';
}
$advanced_usergroup.= '</table>';
//escape single quotes to prevent JS errors
$advanced_usergroup = str_replace("'", "\'", $advanced_usergroup);
} else {
$advanced_usergroup = '';
}
$list_box.= '</select>';
$plugin = array();
if ($JFusionMaster) {
$plugin['name'] = $this->getJname();
$plugin['master'] = $JFusionMaster->getJname();
$plugin['count'] = $jfGroupCount;
$plugin[$this->getJname()]['groups'] = $usergroups;
$plugin[$this->getJname()]['type'] = $this->isMultiGroup() ? 'multi':'single';
$plugin[$JFusionMaster->getJname()]['groups'] = $master_usergroups;
$plugin[$JFusionMaster->getJname()]['type'] = $JFusionMaster->isMultiGroup() ? 'multi':'single';
}
$document = JFactory::getDocument();
$plugin = json_encode($plugin);
$js = <<<JS
var jfPlugin = {$plugin};
function usergroupSelect(option)
{
var myArray = [];
myArray[0] = '{$simple_usergroup}';
myArray[1] = '{$advanced_usergroup}';
$('JFusionUsergroup').innerHTML = myArray[option];
var addgroupset = $('addgroupset');
if (option == 1) {
addgroupset.style.display = 'block';
} else {
addgroupset.style.display = 'none';
}
}
function addRow() {
jfPlugin['count']++;
var count = jfPlugin['count'];
var master = jfPlugin['master'];
var name = jfPlugin['name'];
var elTrNew = document.createElement('tr');
elTrNew.id = 'usergroups_row'+count;
var elTdmaster = document.createElement('td');
elTdmaster.appendChild(createSelect(master));
var elTdjname = document.createElement('td');
elTdjname.appendChild(createSelect(name));
var elInputNew = document.createElement('input');
elInputNew.type = 'radio';
elInputNew.name = 'params[multiusergroupdefault]';
elInputNew.value = count;
var elTddefault = document.createElement('td');
elTddefault.appendChild(elInputNew);
var elANew = document.createElement('a');
elANew.href = 'javascript:removeRow('+count+')';
elANew.innerHTML = 'Remove';
var elTdremove = document.createElement('td');
elTdremove.appendChild(elANew);
elTrNew.appendChild(elTdmaster);
elTrNew.appendChild(elTdjname);
elTrNew.appendChild(elTddefault);
elTrNew.appendChild(elTdremove);
var divEls = $('usergroups');
divEls.appendChild(elTrNew);
}
function removeRow(row) {
var trEl = $("usergroups_row"+row);
trEl.style.display = 'none';
trEl.innerHTML = '';
}
function createSelect(name) {
var count = jfPlugin['count'];
var type = jfPlugin[name]['type'];
var groups = jfPlugin[name]['groups'];
var elSelNew = document.createElement('select');
if (type == 'multi') {
elSelNew.size=10;
elSelNew.multiple='multiple';
}
elSelNew.name='params[multiusergroup]['+name+']['+count+'][]';
var x;
for (x in groups) {
if (groups.hasOwnProperty(x)) {
var elOptNew = document.createElement('option');
elOptNew.text = groups[x].name;
elOptNew.value = groups[x].id;
elSelNew.appendChild(elOptNew);
}
}
return elSelNew;
}
JS;
$document->addScriptDeclaration($js);
$addbutton='<a id="addgroupset"></a>';
$return = '<table><tr><td>'.JText::_('USERGROUP'). ' '. JText::_('MODE').'</td><td>'.$list_box.'</td></tr><tr><td colspan="2"><div id="JFusionUsergroup">';
if ($advanced == 1) {
if (($JFusionMaster && $JFusionMaster->isMultiGroup()) || $this->isMultiGroup()) {
$addbutton = '<a id="addgroupset" href="javascript:addRow()">'. JText::_('ADD_GROUP_PAIR').'</a>';
}
$return .= $advanced_usergroup;
} else {
if (($JFusionMaster && $JFusionMaster->isMultiGroup()) || $this->isMultiGroup()) {
$addbutton = '<a id="addgroupset" style="display: none;" href="javascript:addRow()">'. JText::_('ADD_GROUP_PAIR').'</a>';
}
$return .= $simple_usergroup;
}
$return .= '</div>'.$addbutton.'</td></tr></table>';
return $return;
}
/**
* Function returns the path to the modfile
*
* @param string $filename file name
* @param int &$error error number
* @param string &$reason error reason
*
* @return string $mod_file path and file of the modfile.
*/
function getModFile($filename, &$error, &$reason)
{
//check to see if a path is defined
$params = JFusionFactory::getParams($this->getJname());
$path = $params->get('source_path');
if (empty($path)) {
$error = 1;
$reason = JText::_('SET_PATH_FIRST');
}
//check for trailing slash and generate file path
if (substr($path, -1) == DS) {
$mod_file = $path . $filename;
} else {
$mod_file = $path . DS . $filename;
}
//see if the file exists
if (!file_exists($mod_file) && $error == 0) {
$error = 1;
$reason = JText::_('NO_FILE_FOUND');
}
return $mod_file;
}
/**
* Called when JFusion is uninstalled so that plugins can run uninstall processes such as removing auth mods
* @return array [0] boolean true if successful uninstall
* [1] mixed reason(s) why uninstall was unsuccessful
*/
function uninstall()
{
return array(true, '');
}
/**
* do plugin support multi usergroups
*
* @return bool
*/
function isMultiGroup()
{
static $muiltisupport;
if (!isset($muiltisupport)) {
$params = JFusionFactory::getParams($this->getJname());
$multiusergroup = $params->get('multiusergroup',null);
if ($multiusergroup !== null) {
$muiltisupport = true;
} else {
$muiltisupport = false;
}
}
return $muiltisupport;
}
/**
* @return string UNKNOWN or JNO or JYES or ??
*/
function requireFileAccess()
{
return 'UNKNOWN';
}
/**
* @return bool do the plugin support multi instance
*/
function multiInstance()
{
return true;
}
/**
* Function to check if a given itemid is configured for the plugin in question.
*
* @param int $itemid
* @return bool
*/
function isValidItemID($itemid)
{
$result = false;
if ($itemid) {
$app = JFactory::getApplication();
$menus = $app->getMenu('site');
$params = $menus->getParams($itemid);
if ($params) {
$jPluginParam = unserialize(base64_decode($params->get('JFusionPluginParam')));
if (is_array($jPluginParam) && $jPluginParam['jfusionplugin'] == $this->getJname()) {
$result = true;
}
}
}
return $result;
}
}