Source of file MembersDirectoryPage.php
Size: 1,717 Bytes - Last Modified: 2021-12-23T10:06:26+00:00
/var/www/docs.ssmods.com/process/src/code/pages/MembersDirectoryPage.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | <?php /** * Page for displaying members, * and serving as a parent for viewing individual members. */ class MembersDirectoryPage extends Page{ private static $has_one = array( 'Group' => 'Group' ); public function getCMSFields(){ $fields = parent::getCMSFields(); $fields->addFieldToTab("Root.Main", DropdownField::create("GroupID","Group", Group::get()->map()->toArray() )->setHasEmptyDefault(true) ); return $fields; } /** * Get the members list. */ public function getMembers(){ $members = Member::get(); $group = $this->Group(); if($group->exists()){ $members = $members->innerJoin("Group_Members", "\"Group_Members\".\"MemberID\" = \"Member\".\"ID\"") ->filter("Group_Members.GroupID", $group->ID); } $this->extend('updateMembersList', $members); return $members; } } class MembersDirectoryPage_Controller extends Page_Controller{ private static $allowed_actions = array( 'view' => true ); /** * View an individual member. */ public function view() { if($member = $this->getMemberFromRequest()) { //shift the request params $this->request->shiftAllParams(); $this->request->shift(); $record = new MemberProfilePage(array( 'ID' => -1, 'Content' => '', 'ParentID' => $this->ID, 'MemberID' => $member->ID, 'URLSegment' => 'view/'.$member->ID )); $cont = new MemberProfilePage_Controller($record); $cont->setMember($member); return $cont; } return $this->httpError(404); } /** * Get an invidual member using the URL ID parameter * @return Member|null */ protected function getMemberFromRequest() { return $this->getMembers()->byID( (int)$this->request->param('ID') ); } } |