/** * prepare frontend group render * * @param int $id * @param UserTable $user */ private function showGroup( $id, $user ) { global $_CB_framework; $row = CBGroupJive::getGroup( $id ); $returnUrl = $_CB_framework->pluginClassUrl( $this->element, false, array( 'action' => 'categories', 'func' => 'show', 'id' => (int) $row->get( 'category' ) ) ); if ( ! CBGroupJive::canAccessGroup( $row, $user ) ) { CBGroupJive::returnRedirect( $returnUrl, CBTxt::T( 'Group does not exist.' ), 'error' ); } CBGroupJive::getTemplate( 'group' ); $groupInvite = CBGroupJive::getGroupInvited( $user, $row ); $row->set( '_invite_id', $groupInvite ); $userStatus = CBGroupJive::getGroupStatus( $user, $row ); $row->set( '_user_status', $userStatus ); $users = $this->showGroupUsers( $row, $user ); $invites = $this->showGroupInvites( $row, $user ); HTML_groupjiveGroup::showGroup( $row, $users, $invites, $user, $this ); }
/** * @param GroupTable $group * @param UserTable $user * @return bool */ static public function canAccessGroup( $group, $user ) { global $_PLUGINS; if ( ! $group->get( 'id' ) ) { return false; } elseif ( CBGroupJive::isModerator( $user->get( 'id' ) ) ) { return true; } static $params = null; if ( ! $params ) { $plugin = $_PLUGINS->getLoadedPlugin( 'user', 'cbgroupjive' ); $params = $_PLUGINS->getPluginParams( $plugin ); } static $cache = array(); $groupId = (int) $group->get( 'id' ); $userId = (int) $user->get( 'id' ); if ( ! isset( $cache[$userId][$groupId] ) ) { $access = true; if ( ( ! $group->category()->get( 'id' ) ) && ( ! $params->get( 'groups_uncategorized', 1 ) ) ) { $access = false; } elseif ( $group->category()->get( 'id' ) && ( ( ! $group->category()->get( 'published' ) ) || ( ! CBGroupJive::canAccess( (int) $group->category()->get( 'access' ), (int) $user->get( 'id' ) ) ) ) ) { $access = false; } elseif ( ( $group->get( 'published' ) != 1 ) && ( $user->get( 'id' ) != $group->get( 'user_id' ) ) ) { $access = false; } elseif ( $user->get( 'id' ) != $group->get( 'user_id' ) ) { $userStatus = CBGroupJive::getGroupStatus( $user, $group ); if ( $userStatus == -1 ) { $access = false; } elseif ( ( $group->get( 'type' ) == 3 ) && ( ( $userStatus === false ) || ( $userStatus === null ) ) && ( ! CBGroupJive::getGroupInvited( $user, $group ) ) ) { $access = false; } } $cache[$userId][$groupId] = $access; } return $cache[$userId][$groupId]; }