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;
  }
 
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc