Exemplo n.º 1
0
 /** 
  * Return the url of the avatar or gravatar of the selected user.
  * Checks to see if the current user has an avatar, if they do use it
  * otherwise query gravatar.com
  * 
  * @return String
  */
 function getFormattedAvatar()
 {
     $default = "forum/images/forummember_holder.gif";
     $currentTheme = Config::inst()->get('SSViewer', 'theme');
     if (file_exists('themes/' . $currentTheme . '_forum/images/forummember_holder.gif')) {
         $default = 'themes/' . $currentTheme . '_forum/images/forummember_holder.gif';
     }
     // if they have uploaded an image
     if ($this->owner->AvatarID) {
         $avatar = Image::get()->byID($this->owner->AvatarID);
         if (!$avatar) {
             return $default;
         }
         $resizedAvatar = $avatar->SetWidth(80);
         if (!$resizedAvatar) {
             return $default;
         }
         return $resizedAvatar->URL;
     }
     //If Gravatar is enabled, allow the selection of the type of default Gravatar.
     if ($holder = ForumHolder::get()->filter('AllowGravatars', 1)->first()) {
         // If the GravatarType is one of the special types, then set it otherwise use the
         //default image from above forummember_holder.gif
         if ($holder->GravatarType) {
             $default = $holder->GravatarType;
         } else {
             // we need to get the absolute path for the default forum image
             return $default;
         }
         // ok. no image but can we find a gravatar. Will return the default image as defined above if not.
         return "http://www.gravatar.com/avatar/" . md5($this->owner->Email) . "?default=" . urlencode($default) . "&size=80";
     }
     return $default;
 }
 public function ListForums()
 {
     $forum_holders = ForumHolder::get();
     return $forum_holders;
 }
 /**
  * Ensure that any categories that exist with no forum holder are updated to be owned by the first forum holder
  * if there is one. This is required now that multiple forum holds are allowed, and categories belong to holders.
  *
  * @see sapphire/core/model/DataObject#requireDefaultRecords()
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $forumCategories = ForumCategory::get()->filter('ForumHolderID', 0);
     if (!$forumCategories->exists()) {
         return;
     }
     $forumHolder = ForumHolder::get()->first();
     if (!$forumHolder) {
         return;
     }
     foreach ($forumCategories as $forumCategory) {
         $forumCategory->ForumHolderID = $forumHolder->ID;
         $forumCategory->write();
     }
 }
 /**
  * Register a new member
  *
  * @param array $data User submitted data
  * @param Form $form The used form
  */
 function doregister($data, $form)
 {
     // Check if the honeypot has been filled out
     if (ForumHolder::$use_honeypot_on_register) {
         if (@$data['username']) {
             SS_Log::log(sprintf('Forum honeypot triggered (data: %s)', http_build_query($data)), SS_Log::NOTICE);
             return $this->httpError(403);
         }
     }
     $forumGroup = Group::get()->filter('Code', 'forum-members')->first();
     if ($member = Member::get()->filter('Email', $data['Email'])->first()) {
         if ($member) {
             $form->addErrorMessage("Blurb", _t('ForumMemberProfile.EMAILEXISTS', 'Sorry, that email address already exists. Please choose another.'), "bad");
             // Load errors into session and post back
             Session::set("FormInfo.Form_RegistrationForm.data", $data);
             return $this->redirectBack();
         }
     } elseif ($this->getForumHolder()->OpenIDAvailable() && isset($data['IdentityURL']) && ($member = Member::get()->filter('IdentityURL', $data['IdentityURL'])->first())) {
         $errorMessage = _t('ForumMemberProfile.OPENIDEXISTS', 'Sorry, that OpenID is already registered. Please choose another or register without OpenID.');
         $form->addErrorMessage("Blurb", $errorMessage, "bad");
         // Load errors into session and post back
         Session::set("FormInfo.Form_RegistrationForm.data", $data);
         return $this->redirectBack();
     } elseif ($member = Member::get()->filter('Nickname', $data['Nickname'])->first()) {
         $errorMessage = _t('ForumMemberProfile.NICKNAMEEXISTS', 'Sorry, that nickname already exists. Please choose another.');
         $form->addErrorMessage("Blurb", $errorMessage, "bad");
         // Load errors into session and post back
         Session::set("FormInfo.Form_RegistrationForm.data", $data);
         return $this->redirectBack();
     }
     // create the new member
     $member = Object::create('Member');
     $form->saveInto($member);
     $member->write();
     $member->login();
     $member->Groups()->add($forumGroup);
     $member->extend('onForumRegister', $this->request);
     if (isset($data['BackURL']) && $data['BackURL']) {
         return $this->redirect($data['BackURL']);
     }
     return array("Form" => ForumHolder::get()->first()->ProfileAdd);
 }
Exemplo n.º 5
0
 /**
  * Add default records to database
  *
  * This function is called whenever the database is built, after the
  * database tables have all been created.
  */
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $code = "ACCESS_FORUM";
     if (!($forumGroup = Group::get()->filter('Code', 'forum-members')->first())) {
         $group = new Group();
         $group->Code = 'forum-members';
         $group->Title = "Forum Members";
         $group->write();
         Permission::grant($group->ID, $code);
         DB::alteration_message(_t('Forum.GROUPCREATED', 'Forum Members group created'), 'created');
     } else {
         if (!Permission::get()->filter(array('GroupID' => $forumGroup->ID, 'Code' => $code))->exists()) {
             Permission::grant($forumGroup->ID, $code);
         }
     }
     if (!($category = ForumCategory::get()->first())) {
         $category = new ForumCategory();
         $category->Title = _t('Forum.DEFAULTCATEGORY', 'General');
         $category->write();
     }
     if (!ForumHolder::get()->exists()) {
         $forumholder = new ForumHolder();
         $forumholder->Title = "Forums";
         $forumholder->URLSegment = "forums";
         $forumholder->Content = "<p>" . _t('Forum.WELCOMEFORUMHOLDER', 'Welcome to SilverStripe Forum Module! This is the default ForumHolder page. You can now add forums.') . "</p>";
         $forumholder->Status = "Published";
         $forumholder->write();
         $forumholder->publish("Stage", "Live");
         DB::alteration_message(_t('Forum.FORUMHOLDERCREATED', 'ForumHolder page created'), "created");
         $forum = new Forum();
         $forum->Title = _t('Forum.TITLE', 'General Discussion');
         $forum->URLSegment = "general-discussion";
         $forum->ParentID = $forumholder->ID;
         $forum->Content = "<p>" . _t('Forum.WELCOMEFORUM', 'Welcome to SilverStripe Forum Module! This is the default Forum page. You can now add topics.') . "</p>";
         $forum->Status = "Published";
         $forum->CategoryID = $category->ID;
         $forum->write();
         $forum->publish("Stage", "Live");
         DB::alteration_message(_t('Forum.FORUMCREATED', 'Forum page created'), "created");
     }
 }