‪TYPO3CMS  11.5
PagePermissionAssembler.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use TYPO3\CMS\Backend\Utility\BackendUtility;
24 
34 {
40  protected ‪$defaultPermissions = [
41  'user' => 'show,edit,delete,new,editcontent',
42  'group' => 'show,edit,new,editcontent',
43  'everybody' => '',
44  ];
45 
46  public function ‪__construct(array ‪$defaultPermissions = null)
47  {
48  // Initializing default permissions for pages
49  if (isset(‪$defaultPermissions['user'])) {
50  $this->defaultPermissions['user'] = ‪$defaultPermissions['user'];
51  }
52  if (isset(‪$defaultPermissions['group'])) {
53  $this->defaultPermissions['group'] = ‪$defaultPermissions['group'];
54  }
55  if (isset(‪$defaultPermissions['everybody'])) {
56  $this->defaultPermissions['everybody'] = ‪$defaultPermissions['everybody'];
57  }
58  }
59 
69  public function ‪applyDefaults(array $fieldArray, int $pid, int $backendUserId, int $backendUserGroupId): array
70  {
71  $fieldArray['perms_userid'] = $backendUserId;
72  $fieldArray['perms_groupid'] = $backendUserGroupId;
73  $fieldArray['perms_user'] = $this->‪assemblePermissions($this->defaultPermissions['user']);
74  $fieldArray['perms_group'] = $this->‪assemblePermissions($this->defaultPermissions['group']);
75  $fieldArray['perms_everybody'] = $this->‪assemblePermissions($this->defaultPermissions['everybody']);
76  $TSConfig = BackendUtility::getPagesTSconfig($pid)['TCEMAIN.'] ?? [];
77  if (isset($TSConfig['permissions.']) && is_array($TSConfig['permissions.'])) {
78  return $this->‪setTSconfigPermissions($fieldArray, $TSConfig['permissions.']);
79  }
80  return $fieldArray;
81  }
82 
91  protected function ‪setTSconfigPermissions(array $fieldArray, array $tsconfig): array
92  {
93  if ((string)($tsconfig['userid'] ?? '') !== '') {
94  $fieldArray['perms_userid'] = (int)$tsconfig['userid'];
95  }
96  if ((string)($tsconfig['groupid'] ?? '') !== '') {
97  $fieldArray['perms_groupid'] = (int)$tsconfig['groupid'];
98  }
99  if ((string)($tsconfig['user'] ?? '') !== '') {
100  $fieldArray['perms_user'] = $this->‪assemblePermissions($tsconfig['user']);
101  }
102  if ((string)($tsconfig['group'] ?? '') !== '') {
103  $fieldArray['perms_group'] = $this->‪assemblePermissions($tsconfig['group']);
104  }
105  if ((string)($tsconfig['everybody'] ?? '') !== '') {
106  $fieldArray['perms_everybody'] = $this->‪assemblePermissions($tsconfig['everybody']);
107  }
108  return $fieldArray;
109  }
110 
117  protected function ‪assemblePermissions($listOfPermissions): int
118  {
119  // Already set as integer, so this one is used.
120  if (‪MathUtility::canBeInterpretedAsInteger($listOfPermissions)) {
121  return (int)$listOfPermissions;
122  }
123  $keyArr = ‪GeneralUtility::trimExplode(',', $listOfPermissions, true);
124  $value = 0;
125  $permissionMap = ‪Permission::getMap();
126  foreach ($keyArr as $key) {
127  if ($key && isset($permissionMap[$key])) {
128  $value |= $permissionMap[$key];
129  }
130  }
131  return $value;
132  }
133 }
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static list< string > trimExplode($delim, $string, $removeEmptyValues=false, $limit=0)
Definition: GeneralUtility.php:999
‪TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger
‪static bool canBeInterpretedAsInteger($var)
Definition: MathUtility.php:74
‪TYPO3\CMS\Core\DataHandling
Definition: DataHandler.php:16
‪TYPO3\CMS\Core\DataHandling\PagePermissionAssembler\$defaultPermissions
‪array $defaultPermissions
Definition: PagePermissionAssembler.php:39
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:26
‪TYPO3\CMS\Core\DataHandling\PagePermissionAssembler\setTSconfigPermissions
‪array setTSconfigPermissions(array $fieldArray, array $tsconfig)
Definition: PagePermissionAssembler.php:90
‪TYPO3\CMS\Core\Type\Bitmask\Permission\getMap
‪static array getMap()
Definition: Permission.php:69
‪TYPO3\CMS\Core\DataHandling\PagePermissionAssembler\assemblePermissions
‪int assemblePermissions($listOfPermissions)
Definition: PagePermissionAssembler.php:116
‪TYPO3\CMS\Core\DataHandling\PagePermissionAssembler
Definition: PagePermissionAssembler.php:34
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:22
‪TYPO3\CMS\Core\DataHandling\PagePermissionAssembler\applyDefaults
‪array applyDefaults(array $fieldArray, int $pid, int $backendUserId, int $backendUserGroupId)
Definition: PagePermissionAssembler.php:68
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Core\DataHandling\PagePermissionAssembler\__construct
‪__construct(array $defaultPermissions=null)
Definition: PagePermissionAssembler.php:45