Example #1
0
 /**
  * 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;
 }