Source of file OwnershipExtension.php
Size: 1,718 Bytes - Last Modified: 2021-12-23T10:00:20+00:00
/var/www/docs.ssmods.com/process/src/src/OwnershipExtension.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | <?php namespace LeKoala\CommonExtensions; use SilverStripe\ORM\DataObject; use SilverStripe\Security\Member; use SilverStripe\ORM\DataExtension; use SilverStripe\Security\Permission; /** * Make a DataObject have a Member owner * * @property DataObject $owner * @property int $OwnerID * @method \SilverStripe\Security\Member Owner() */ class OwnershipExtension extends DataExtension { private static $has_one = [ "Owner" => Member::class, ]; public function onBeforeWrite() { // Make sure we have a owner if (!$this->owner->OwnerID) { $this->owner->OwnerID = Member::currentUserID(); } } public function IsOwner() { return $this->owner->OwnerID == Member::currentUserID(); } public function IsNotOwner() { return $this->owner->OwnerID != Member::currentUserID(); } /** * @param Member $member * @return boolean */ public function canView($member = null) { // Can always view if ($this->IsOwner()) { return true; } return Permission::check('ADMIN', 'any', $member); } /** * @param Member $member * @return boolean */ public function canEdit($member = null) { // Can always view if ($this->IsOwner()) { return true; } return Permission::check('ADMIN', 'any', $member); } /** * @param Member $member * @return boolean */ public function canDelete($member = null) { // Can always view if ($this->IsOwner()) { return true; } return Permission::check('ADMIN', 'any', $member); } } |