function getPermission($forum, $type = "access") { global $xoopsUser, $xoopsModule; static $_cachedPerms; if ($type == "all") { return true; } if (newbb_isAdministrator()) { return true; } if (is_int($forum)) { $forum = $this->get($forum); } if ($forum->getVar('forum_type')) { return false; } // if forum inactive, all has no access except admin $category_handler =& xoops_getmodulehandler('category', 'newbb'); $categoryPerm =& $category_handler->getPermission($forum->getVar('cat_id')); if (!$categoryPerm) { return false; } $type = strtolower($type); if ("moderate" == $type) { $permission = newbb_isModerator($forum) ? 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', 'newbb'); $_cachedPerms[$perm_type] = $getpermission->getPermissions($perm_type); } $permission = isset($_cachedPerms[$perm_type][$forum->getVar('forum_id')][$perm_item]) ? 1 : 0; } return $permission; }
function &show_online() { global $xoopsModuleConfig, $forumImage; if ($this->forumtopic) { $num_total = $this->getCount(new Criteria('online_topic', $this->forumtopic)); } elseif ($this->forum) { $num_total = $this->getCount(new Criteria('online_forum', $this->forum)); } else { $num_total = $this->getCount(); } if ($this->forumtopic) { $criteria = new CriteriaCompo(new Criteria('online_topic', $this->forumtopic)); $criteria->add(new Criteria('online_uid', '0', '<>')); } elseif ($this->forum) { $criteria = new CriteriaCompo(new Criteria('online_forum', $this->forum)); $criteria->add(new Criteria('online_uid', '0', '<>')); } else { $criteria = new Criteria('online_uid', '0', '<>'); } $users =& $this->getAll($criteria); $num_user = count($users); $num_anonymous = $num_total - $num_user; $online = array(); $online['image'] = newbb_displayImage($forumImage['whosonline']); $online['num_total'] = $num_total; $online['num_user'] = $num_user; $online['num_anonymous'] = $num_anonymous; for ($i = 0; $i < $num_user; $i++) { $online['users'][$i]['link'] = XOOPS_URL . "/userinfo.php?uid=" . $users[$i]['online_uid']; $online['users'][$i]['uname'] = $users[$i]['online_uname']; if (newbb_isAdministrator($users[$i]['online_uid'])) { $online['users'][$i]['color'] = $xoopsModuleConfig['wol_admin_col']; } elseif (newbb_isModerator($this->forum_object, $users[$i]['online_uid'])) { $online['users'][$i]['color'] = $xoopsModuleConfig['wol_mod_col']; } else { $online['users'][$i]['color'] = ""; } } return $online; }
function getPermission($forum, $type = "access", $checkCategory = true) { global $xoopsUser, $xoopsModule; static $_cachedPerms; if ($type == "all") { return true; } if ($GLOBALS["xoopsUserIsAdmin"] && $xoopsModule->getVar("dirname") == "newbb") { return true; } if (!is_object($forum)) { $forum =& $this->get($forum); } if (!empty($checkCategory)) { $category_handler =& xoops_getmodulehandler('category', 'newbb'); $categoryPerm = $category_handler->getPermission($forum->getVar('cat_id')); if (!$categoryPerm) { return false; } } $type = strtolower($type); if ("moderate" == $type) { require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.user.php"; $permission = newbb_isModerator($forum); } else { $forum_id = $forum->getVar('forum_id'); $perm_handler =& xoops_getmodulehandler('permission', 'newbb'); $permission = $perm_handler->getPermission("forum", $type, $forum_id); } return $permission; }