foldershare-8.x-1.2/src/Entity/FolderShareTraits/GetSetOwnerTrait.php
src/Entity/FolderShareTraits/GetSetOwnerTrait.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | <?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 ; } } |