/** * Setup the social forum singleton. * * @param integer $socialForum Social forum to setup as * * @return ThemeHouse_SocialGroups_SocialForum */ public static function setup($socialForum) { $visitor = XenForo_Visitor::getInstance(); $object = new self(); $socialForumModel = self::getSocialForumModel(); $fetchOptions = array('readUserId' => $visitor['user_id'], 'watchUserId' => $visitor['user_id'], 'join' => ThemeHouse_SocialGroups_Model_SocialForum::FETCH_SOCIAL_MEMBER); if (is_numeric($socialForum) || is_string($socialForum)) { $socialForum = $socialForumModel->getCurrentSocialForumById($socialForum, $fetchOptions); } if ($socialForum) { $object->_socialForum = $socialForum; } else { self::$_instance = null; return null; } if (!isset($object->_socialForum['social_forum_title']) && isset($object->_socialForum['title'])) { $object->_socialForum['social_forum_title'] = $object->_socialForum['title']; } if (isset($object->_socialForum['social_forum_id'])) { $object->_members = XenForo_Model::create('ThemeHouse_SocialGroups_Model_SocialForumMember')->getSocialForumUsers(array('social_forum_id' => $object->_socialForum['social_forum_id'])); } self::$_instance = $object; if (isset($object->_socialForum['social_forum_id'])) { $nodePermissions = $socialForumModel->getNodePermissions($object->_socialForum, $object->getSocialForumMembers()); self::$_instance['node_permissions'] = $nodePermissions; XenForo_Visitor::getInstance()->setNodePermissions($object->_socialForum['node_id'], $nodePermissions); } return self::$_instance; }