Source of file MembersAccountPage_Controller.php
Size: 3,925 Bytes - Last Modified: 2021-12-23T11:00:39+00:00
/var/www/docs.ssmods.com/process/src/code/controller/MembersAccountPage_Controller.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | <?php /** * MembersProfilePage_Controller.php * * @link http://github.com/zucchi/Silverstripe-Members for the canonical source repository * @copyright Copyright (c) 2005-2013 Zucchi Limited. (http://zucchi.co.uk) * @license http://zucchi.co.uk/legals/bsd-license New BSD License */ /** * Class MembersProfilePage_Controller * * Provides controller for displaying MembersProfilePage */ class MembersAccountPage_Controller extends Page_Controller { private static $allowed_actions = array ( 'index', 'update' ); protected $member; public function init() { parent::init(); $this->member = Member::currentUser(); } public function index() { if (!$this->member) { return Security::permissionFailure($this); } $form = $this->update(); if ($this->member) { $form->loadDataFrom($this->member); } return array( 'Member' => $this->member, 'Form' => $form, ); } public function update() { if (!$this->member) { return Security::permissionFailure($this); } $form = new Form( $this, 'update', $this->getAccountFields(), new FieldList( FormAction::create('save')->setTitle('Save') ) ); return $form; } /** * Updates an existing Member's profile. */ public function save(array $data, Form $form) { $form->saveInto($this->member); try { $this->member->write(); } catch(ValidationException $e) { $form->sessionMessage($e->getResult()->message(), 'bad'); return $this->redirectBack(); } $form->sessionMessage ( _t('MemberProfiles.PROFILEUPDATED', 'Your profile has been updated.'), 'good' ); return $this->redirectBack(); } /** * @param string $context * @return FieldSet */ protected function getAccountFields($member = false) { $accountFields = $this->Fields(); $fields = new FieldList(); // depending on the context, load fields from the current member if($member) { $memberFields = $member->getMemberFormFields(); } else { $memberFields = singleton('Member')->getMemberFormFields(); } foreach($accountFields as $accountField) { $visible = ($accountField->Visibility !== 'Hidden'); $editable = $accountField->Editable; $name = $accountField->MemberField; $memberField = $memberFields->dataFieldByName($name); // handle the special case of the Groups control so that only allowed groups can be selected // if ($name == 'Groups') { // $availableGroups = $this->data()->SelectableGroups(); // $memberField->setSource($availableGroups); // } if(!$memberField || !$visible) continue; $field = clone $memberField; if ($field instanceof UploadField) { $field->setCanAttachExisting(false); $field->setOverwriteWarning(false); } if(!$editable) { $field->performReadonlyTransformation(); } $field->setTitle($accountField->Title); $field->setDescription($accountField->Note); if(!$member && $accountField->DefaultValue) { $field->setValue($accountField->DefaultValue); } if($accountField->CustomError) { $field->setCustomValidationMessage($accountField->CustomError); } $fields->push($field); } $this->extend('updateMemberAccountFields', $fields); return $fields; } } |