ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
ilMailAttachmentStakeholder Class Reference
+ Inheritance diagram for ilMailAttachmentStakeholder:
+ Collaboration diagram for ilMailAttachmentStakeholder:

Public Member Functions

 getId ()
 
 areNewResourcesConfidential ()
 
 getOwnerOfNewResources ()
 
 getOwnerOfResource (ResourceIdentification $identification)
 
 canBeAccessedByCurrentUser (ResourceIdentification $identification)
 
- Public Member Functions inherited from ILIAS\ResourceStorage\Stakeholder\AbstractResourceStakeholder
 __construct (?int $user_id_of_owner=null)
 
 setOwner (int $user_id_of_owner)
 
 getFullyQualifiedClassName ()
 
 isResourceInUse (ResourceIdentification $identification)
 
 canBeAccessedByCurrentUser (ResourceIdentification $identification)
 
 resourceHasBeenDeleted (ResourceIdentification $identification)
 
 getOwnerOfResource (ResourceIdentification $identification)
 
 getConsumerNameForPresentation ()
 
 getLocationURIForResourceUsage (ResourceIdentification $identification)
 
- Public Member Functions inherited from ILIAS\ResourceStorage\Stakeholder\ResourceStakeholder
 __construct ()
 Constructor must not have any parameters. More...
 
 getId ()
 
 getConsumerNameForPresentation ()
 
 getFullyQualifiedClassName ()
 
 canBeAccessedByCurrentUser (ResourceIdentification $identification)
 
 isResourceInUse (ResourceIdentification $identification)
 
 resourceHasBeenDeleted (ResourceIdentification $identification)
 
 getOwnerOfResource (ResourceIdentification $identification)
 
 getOwnerOfNewResources ()
 
 getLocationURIForResourceUsage (ResourceIdentification $identification)
 
 areNewResourcesConfidential ()
 

Private Member Functions

 collectionsOfUser (ilDBInterface $db, int $user_id)
 
 anyCollectionContains (ResourceStorage $irss, array $rcids, ResourceIdentification $identification)
 

Additional Inherited Members

- Protected Attributes inherited from ILIAS\ResourceStorage\Stakeholder\AbstractResourceStakeholder
int $default_owner
 
int $current_user
 

Detailed Description

Definition at line 28 of file class.ilMailAttachmentStakeholder.php.

Member Function Documentation

◆ anyCollectionContains()

ilMailAttachmentStakeholder::anyCollectionContains ( ResourceStorage  $irss,
array  $rcids,
ResourceIdentification  $identification 
)
private
Parameters
list<string>$rcids

Definition at line 131 of file class.ilMailAttachmentStakeholder.php.

135 : bool {
136 if ($rcids === []) {
137 return false;
138 }
139
140 $irss->preloadCollections($rcids);
141 foreach ($rcids as $rcid) {
142 try {
143 if ($irss->collection()->get(new ResourceCollectionIdentification($rcid))->isIn($identification)) {
144 return true;
145 }
146 } catch (Throwable) {
147 }
148 }
149
150 return false;
151 }

Referenced by canBeAccessedByCurrentUser().

+ Here is the caller graph for this function:

◆ areNewResourcesConfidential()

ilMailAttachmentStakeholder::areNewResourcesConfidential ( )

Implements ILIAS\ResourceStorage\Stakeholder\ConfidentialStakeholder.

Definition at line 35 of file class.ilMailAttachmentStakeholder.php.

35 : bool
36 {
37 return true;
38 }

◆ canBeAccessedByCurrentUser()

ilMailAttachmentStakeholder::canBeAccessedByCurrentUser ( ResourceIdentification  $identification)

Reimplemented from ILIAS\ResourceStorage\Stakeholder\AbstractResourceStakeholder.

Definition at line 50 of file class.ilMailAttachmentStakeholder.php.

50 : bool
51 {
52 global $DIC;
53
54 if (!$DIC->isDependencyAvailable('user') || !$DIC->isDependencyAvailable('database')) {
55 return false;
56 }
57
58 if (!$DIC->isDependencyAvailable('resourceStorage')) {
59 return false;
60 }
61
62 $user_id = $DIC->user()->getId();
63 // Notifications are sent by the anonymous user, a visitor must not own their attachments
65 return false;
66 }
67 $irss = $DIC->resourceStorage();
68
69 try {
70 if ($irss->manage()->getCurrentRevision($identification)->getOwnerId() === $user_id) {
71 return true;
72 }
73 } catch (Throwable) {
74 }
75
76 return $this->anyCollectionContains(
77 $irss,
78 $this->collectionsOfUser($DIC->database(), $user_id),
79 $identification
80 );
81 }
anyCollectionContains(ResourceStorage $irss, array $rcids, ResourceIdentification $identification)
collectionsOfUser(ilDBInterface $db, int $user_id)
const ANONYMOUS_USER_ID
Definition: constants.php:27
global $DIC
Definition: shib_login.php:26

References $DIC, $user_id, ANONYMOUS_USER_ID, anyCollectionContains(), and collectionsOfUser().

+ Here is the call graph for this function:

◆ collectionsOfUser()

ilMailAttachmentStakeholder::collectionsOfUser ( ilDBInterface  $db,
int  $user_id 
)
private
Returns
list<string> Collections of the user's mails, attachment pool and compose stage

Definition at line 86 of file class.ilMailAttachmentStakeholder.php.

86 : array
87 {
88 $rcids = [];
89
90 $res = $db->queryF(
91 'SELECT DISTINCT ma.rcid FROM mail_attachment ma
92 INNER JOIN mail m ON m.mail_id = ma.mail_id
93 WHERE m.user_id = %s AND ma.rcid IS NOT NULL',
95 [$user_id]
96 );
97 while ($row = $db->fetchAssoc($res)) {
98 $rcids[] = (string) $row['rcid'];
99 }
100
101 $res = $db->queryF(
102 'SELECT value FROM usr_pref WHERE usr_id = %s AND keyword = %s',
105 );
106 while ($row = $db->fetchAssoc($res)) {
107 $rcids[] = (string) $row['value'];
108 }
109
110 $res = $db->queryF(
111 'SELECT attachments FROM mail_saved WHERE user_id = %s',
113 [$user_id]
114 );
115 while ($row = $db->fetchAssoc($res)) {
116 $stage = MailAttachments::fromDb(is_string($row['attachments'] ?? null) ? $row['attachments'] : null);
117 if ($stage !== null && $stage->isIrss()) {
118 $rcids[] = $stage->rcid()->serialize();
119 }
120 }
121
122 return array_values(array_unique(array_filter(
123 $rcids,
124 static fn(string $rcid): bool => $rcid !== '' && $rcid !== '-'
125 )));
126 }
const string POOL_RCID_PREF_KEY
fetchAssoc(ilDBStatement $statement)
queryF(string $query, array $types, array $values)
foreach($_POST as $key=> $value) $res

References $res, $user_id, ilDBInterface\fetchAssoc(), ilFileDataMail\POOL_RCID_PREF_KEY, ilDBInterface\queryF(), ilDBConstants\T_INTEGER, and ilDBConstants\T_TEXT.

Referenced by canBeAccessedByCurrentUser().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getId()

ilMailAttachmentStakeholder::getId ( )
Returns
string not longer than 64 characters

Implements ILIAS\ResourceStorage\Stakeholder\ResourceStakeholder.

Definition at line 30 of file class.ilMailAttachmentStakeholder.php.

30 : string
31 {
32 return 'mail_attachments';
33 }

◆ getOwnerOfNewResources()

◆ getOwnerOfResource()

ilMailAttachmentStakeholder::getOwnerOfResource ( ResourceIdentification  $identification)

The documentation for this class was generated from the following file: