Source of file CreatorLastEditorExtension.php
Size: 1,265 Bytes - Last Modified: 2021-12-23T10:58:34+00:00
/var/www/docs.ssmods.com/process/src/code/CreatorLastEditorExtension.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344 | <?php use SilverStripe\Security\Member; use SilverStripe\Forms\FieldList; use SilverStripe\Security\Permission; use SilverStripe\Forms\DropdownField; use SilverStripe\ORM\DataExtension; class CreatorLastEditorExtension extends DataExtension { /** * @var array has one relationships */ private static $has_one = array( 'Creator' => Member::class, 'LastEditor' => Member::class, ); /** 1) Save the creator as the current editing member if there is not creator already assigned 2) Save the last editor (e.g. an admin) as the person who last edited this document */ public function onBeforeWrite() { if ($this->owner->CreatorID == 0) { $this->owner->CreatorID = Member::currentUserID(); } $this->owner->LastEditorID = Member::currentUserID(); } /** Allow the admin to override the creator and last editor */ public function updateCMSFields(FieldList $fields) { if (Permission::check('ADMIN')) { $memberField = new DropdownField('CreatorID', 'Creator', Member::get()->map('ID', 'Username', '-- Please select --')); $fields->addFieldToTab('Root.Creator', $memberField); } return $fields; } } |