Example #1
0
    function &show_online()
    {
        global $xoopsModuleConfig, $xforumImage;

        if ($this->forumtopic) {
	        $criteria = new Criteria('online_topic', $this->forumtopic);
        } elseif ($this->forum) {
	        $criteria = new Criteria('online_forum', $this->forum);
        } else {
	        $criteria = null;
        }
        $users =& $this->getAll($criteria);
        $num_total = count($users);

		$num_user = 0;
		$users_id = array();
		$users_online = array();
        for ($i = 0; $i < $num_total; $i++) {
	        if(empty($users[$i]['online_uid'])) continue;
	        $users_id[] = $users[$i]['online_uid'];
	        $users_online[$users[$i]['online_uid']] = array(
	        	"link" => XOOPS_URL . "/userinfo.php?uid=" . $users[$i]['online_uid'],
	        	"uname" => $users[$i]['online_uname'],
	        );
	        $num_user ++;
        }
        $num_anonymous = $num_total - $num_user;
        $online = array();
        $online['image'] = forum_displayImage($xforumImage['whosonline']);
		$online['num_total'] = $num_total;
		$online['num_user'] = $num_user;
		$online['num_anonymous'] = $num_anonymous;
        $administrator_list = forum_isModuleAdministrators($users_id, $GLOBALS["xoopsModule"]->getVar("mid"));
        foreach ($users_online as $uid=>$user) {
            if(!empty($administrator_list[$uid])){
                $user['level']= 2;
            }
            elseif(forum_isModerator($this->forum_object, $uid)){
                $user['level']= 1;
            }
            else{
                $user['level']= 0;
            }
            $online["users"][] = $user;
        }

        return $online;
    }
Example #2
0
    function getPermission($xforum, $type = "access", $checkCategory = true)
    {
        global $xoopsUser, $xoopsModule;
        static $_cachedPerms;
		include_once XOOPS_ROOT_PATH.'/modules/xforum/include/functions.php';

        if($type == "all") return true;
        if (forum_isAdministrator()) return true;
        if (!is_object($xforum)) $xforum =& $this->get($xforum);
        if ($xforum->getVar('forum_type')) return false;// if forum inactive, all has no access except admin

		if(!empty($checkCategory)){
            $category_handler =& xoops_getmodulehandler('category', 'xforum');
            $categoryPerm = $category_handler->getPermission($xforum->getVar('cat_id'));
        	if (!$categoryPerm) return false;
    	}

        $type = strtolower($type);
        if ("moderate" == $type) {
            $permission = (forum_isModerator($xforum))?1:0;
        } else {
			$perms = array_map("trim",explode(',', FORUM_PERM_ITEMS));
           	$perm_type = 'forum';
            $perm_item = (in_array($type, $perms))?'forum_' . $type:"forum_access";
			if (!isset($_cachedPerms[$perm_type])) {
				$getpermission =& xoops_getmodulehandler('permission', 'xforum');
				$_cachedPerms[$perm_type] = $getpermission->getPermissions($perm_type);
			}
        	$permission = (isset($_cachedPerms[$perm_type][$xforum->getVar('forum_id')][$perm_item])) ? 1 : 0;
        }
        return $permission;
    }