/** * 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); }
/** * 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"); } }