foldershare-8.x-1.2/src/Entity/FolderShareTraits/GetSetOwnerTrait.php
src/Entity/FolderShareTraits/GetSetOwnerTrait.php
<?php
namespace Drupal\foldershare\Entity\FolderShareTraits;
use Drupal\user\UserInterface;
/**
* Get/set FolderShare entity owner field.
*
* This trait includes get and set methods for FolderShare entity
* owner field.
*
* <B>Internal trait</B>
* This trait is internal to the FolderShare module and used to define
* features of the FolderShare entity class. It is a mechanism to group
* functionality to improve code management.
*
* @ingroup foldershare
*/
trait GetSetOwnerTrait {
/*---------------------------------------------------------------------
*
* Owner field.
*
* Implements EntityOwnerInterface.
*
*---------------------------------------------------------------------*/
/**
* {@inheritdoc}
*/
public function isOwnedBy(int $uid) {
return ($this->getOwnerId() === $uid);
}
/**
* {@inheritdoc}
*/
public function getOwner() {
return $this->get('uid')->entity;
}
/**
* {@inheritdoc}
*/
public function getOwnerId() {
return (int) $this->get('uid')->target_id;
}
/**
* {@inheritdoc}
*/
public function setOwner(UserInterface $account = NULL) {
if ($account === NULL) {
$account = \Drupal::currentUser();
}
return $this->setOwnerId($account->id());
}
/**
* {@inheritdoc}
*/
public function setOwnerId($ownerUid) {
// The generic EntityOwnerInterface implemented by this class forces
// this method to be public. But setting the owner field by code
// outside of this class could corrupt the file system by failing to
// keep other values uptodate.
//
// Set the item's owner.
$this->setOwnerIdInternal($ownerUid);
// If this item is a root item, clear its access grants back to their
// defaults (which only grant the owner access).
if ($this->isRootItem() === TRUE) {
$this->clearAccessGrants();
}
$this->save();
// If there is a file or image, update it as well.
$file = $this->getFile();
if ($file !== NULL) {
$file->setOwnerId($ownerUid);
$file->save();
}
$file = $this->getImage();
if ($file !== NULL) {
$file->setOwnerId($ownerUid);
$file->save();
}
$media = $this->getMedia();
if ($media !== NULL) {
$media->setOwnerId($ownerUid);
$media->save();
}
return $this;
}
/**
* Sets the owner ID.
*
* <B>This method is internal and strictly for use by the FolderShare
* module itself.</B>
*
* This function changes the owner ID and does not update access grants,
* wrapped items, or usage tracking. This is the responsability of the
* caller.
*
* The user ID is not validated. It is presumed to be a valid entity
* ID for a User entity.
*
* The caller must call save() for the change to take effect.
*
* System hidden and disabled items are also affected.
*
* <B>Process locks</B>
* This method does not lock access. The caller should lock around changes
* to the entity.
*
* @param int $ownerUid
* The user ID of the new owner. The value is not validated and is
* assumed to be a valid user ID.
*/
private function setOwnerIdInternal(int $ownerUid) {
$this->set('uid', $ownerUid);
return $this;
}
}
