30 protected $title =
'Rewrite binary file permissions into detailed list';
46 $description =
'There are backend users and backend groups with specified file permissions.' .
47 ' This update migrates old combined (binary) file permissions to new separate ones.';
48 $updateNeeded = FALSE;
50 if (!empty($updateStatements[
'add'])) {
54 $beUsersFieldInformation =
$GLOBALS[
'TYPO3_DB']->admin_get_fields(
'be_users');
55 if (isset($beUsersFieldInformation[
'fileoper_perms'])) {
57 $notMigratedRowsCount =
$GLOBALS[
'TYPO3_DB']->exec_SELECTcountRows(
62 if ($notMigratedRowsCount > 0) {
66 $beGroupsFieldInformation =
$GLOBALS[
'TYPO3_DB']->admin_get_fields(
'be_groups');
67 if (isset($beGroupsFieldInformation[
'fileoper_perms'])) {
69 $notMigratedRowsCount =
$GLOBALS[
'TYPO3_DB']->exec_SELECTcountRows(
74 if ($notMigratedRowsCount > 0) {
92 foreach ((array) $updateStatements[
'add'] as $query) {
93 $GLOBALS[
'TYPO3_DB']->admin_query($query);
94 $dbQueries[] = $query;
95 if (
$GLOBALS[
'TYPO3_DB']->sql_error()) {
96 $customMessages =
'SQL-ERROR: ' . htmlspecialchars(
$GLOBALS[
'TYPO3_DB']->sql_error());
102 $tablesToProcess = array(
'be_groups',
'be_users');
103 foreach ($tablesToProcess as $table) {
105 foreach ($records as $singleRecord) {
107 $updateArray = array(
108 'file_permissions' => $filePermission
110 $GLOBALS[
'TYPO3_DB']->exec_UPDATEquery($table,
'uid=' . (
int)$singleRecord[
'uid'], $updateArray);
112 $dbQueries[] = str_replace(chr(10),
' ',
$GLOBALS[
'TYPO3_DB']->debug_lastBuiltQuery);
114 if (
$GLOBALS[
'TYPO3_DB']->sql_error()) {
115 $customMessages =
'SQL-ERROR: ' . htmlspecialchars(
$GLOBALS[
'TYPO3_DB']->sql_error());
130 $updateStatements = array();
134 $fieldDefinitionsFromFile = $this->installToolSqlParser->getFieldDefinitions_fileContent($rawDefinitions);
135 if (count($fieldDefinitionsFromFile)) {
136 $fieldDefinitionsFromCurrentDatabase = $this->installToolSqlParser->getFieldDefinitions_database();
137 $diff = $this->installToolSqlParser->getDatabaseExtra($fieldDefinitionsFromFile, $fieldDefinitionsFromCurrentDatabase);
138 $updateStatements = $this->installToolSqlParser->getUpdateSuggestions($diff);
141 return $updateStatements;
151 if ($oldFileOperationPermissions == 0) {
154 $defaultOptions = array(
161 'renameFile' => TRUE,
163 'deleteFile' => TRUE,
166 'readFolder' => TRUE,
167 'writeFolder' => TRUE,
168 'copyFolder' => TRUE,
169 'moveFolder' => TRUE,
170 'renameFolder' => TRUE,
171 'deleteFolder' => TRUE,
172 'recursivedeleteFolder' => TRUE
174 if (!($oldFileOperationPermissions & 1)) {
175 unset($defaultOptions[
'addFile']);
176 unset($defaultOptions[
'readFile']);
177 unset($defaultOptions[
'writeFile']);
178 unset($defaultOptions[
'copyFile']);
179 unset($defaultOptions[
'moveFile']);
180 unset($defaultOptions[
'renameFile']);
181 unset($defaultOptions[
'deleteFile']);
183 if (!($oldFileOperationPermissions & 2)) {
184 unset($defaultOptions[
'unzipFile']);
186 if (!($oldFileOperationPermissions & 4)) {
187 unset($defaultOptions[
'addFolder']);
188 unset($defaultOptions[
'writeFolder']);
189 unset($defaultOptions[
'moveFolder']);
190 unset($defaultOptions[
'renameFolder']);
191 unset($defaultOptions[
'deleteFolder']);
193 if (!($oldFileOperationPermissions & 8)) {
194 unset($defaultOptions[
'copyFolder']);
196 if (!($oldFileOperationPermissions & 16)) {
197 unset($defaultOptions[
'recursivedeleteFolder']);
200 return implode(
',', array_keys($defaultOptions));
210 $fields = implode(
',', array(
'uid',
'fileoper_perms'));
221 return 'fileoper_perms>0 AND file_permissions IS NULL';
getRecordsFromTable($table)
checkForUpdate(&$description)
static extPath($key, $script='')
getFilePermissions($oldFileOperationPermissions)
static makeInstance($className)
static getUrl($url, $includeHeader=0, $requestHeaders=FALSE, &$report=NULL)
performUpdate(array &$dbQueries, &$customMessages)
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]