[BUGFIX] Catch exception in filelist when file is missing
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Classes / Utility / BackendUtility.php
index 79680ed..66af510 100644 (file)
@@ -29,6 +29,7 @@ namespace TYPO3\CMS\Backend\Utility;
 
 use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Resource\File;
 use TYPO3\CMS\Core\Resource\ProcessedFile;
 use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser;
@@ -66,7 +67,7 @@ class BackendUtility {
         */
        static public function deleteClause($table, $tableAlias = '') {
                if ($GLOBALS['TCA'][$table]['ctrl']['delete']) {
-                       return ' AND ' . ($tableAlias ? $tableAlias : $table) . '.' . $GLOBALS['TCA'][$table]['ctrl']['delete'] . '=0';
+                       return ' AND ' . ($tableAlias ?: $table) . '.' . $GLOBALS['TCA'][$table]['ctrl']['delete'] . '=0';
                } else {
                        return '';
                }
@@ -88,7 +89,7 @@ class BackendUtility {
         */
        static public function getRecord($table, $uid, $fields = '*', $where = '', $useDeleteClause = TRUE) {
                if ($GLOBALS['TCA'][$table]) {
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, 'uid=' . intval($uid) . ($useDeleteClause ? self::deleteClause($table) : '') . $where);
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, 'uid=' . (int)$uid . ($useDeleteClause ? self::deleteClause($table) : '') . $where);
                        $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
                        $GLOBALS['TYPO3_DB']->sql_free_result($res);
                        if ($row) {
@@ -216,7 +217,7 @@ class BackendUtility {
                                $val = strrev($val);
                                $parts = explode('_', $val, 2);
                                if ((string) trim($parts[0]) != '') {
-                                       $theID = intval(strrev($parts[0]));
+                                       $theID = (int)strrev($parts[0]);
                                        $theTable = trim($parts[1]) ? strrev(trim($parts[1])) : $default_tablename;
                                        if ($theTable == $tablename) {
                                                $list[] = $theID;
@@ -277,7 +278,7 @@ class BackendUtility {
                $recordLocalization = FALSE;
                if (self::isTableLocalizable($table)) {
                        $tcaCtrl = $GLOBALS['TCA'][$table]['ctrl'];
-                       $recordLocalization = self::getRecordsByField($table, $tcaCtrl['transOrigPointerField'], $uid, 'AND ' . $tcaCtrl['languageField'] . '=' . intval($language) . ($andWhereClause ? ' ' . $andWhereClause : ''), '', '', '1');
+                       $recordLocalization = self::getRecordsByField($table, $tcaCtrl['transOrigPointerField'], $uid, 'AND ' . $tcaCtrl['languageField'] . '=' . (int)$language . ($andWhereClause ? ' ' . $andWhereClause : ''), '', '', '1');
                }
                return $recordLocalization;
        }
@@ -360,7 +361,7 @@ class BackendUtility {
                if (is_array($getPageForRootline_cache[$ident])) {
                        $row = $getPageForRootline_cache[$ident];
                } else {
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('pid,uid,title,TSconfig,is_siteroot,storage_pid,t3ver_oid,t3ver_wsid,t3ver_state,t3ver_stage,backend_layout_next_level', 'pages', 'uid=' . intval($uid) . ' ' . self::deleteClause('pages') . ' ' . $clause);
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('pid,uid,title,TSconfig,is_siteroot,storage_pid,t3ver_oid,t3ver_wsid,t3ver_state,t3ver_stage,backend_layout_next_level', 'pages', 'uid=' . (int)$uid . ' ' . self::deleteClause('pages') . ' ' . $clause);
                        $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
                        if ($row) {
                                $newLocation = FALSE;
@@ -466,12 +467,13 @@ class BackendUtility {
                // All TCA keys
                $tableNamesFromTca = array_keys($GLOBALS['TCA']);
                // Fetch translations for table names
+               $tableToTranslation = array();
                foreach ($tableNamesFromTca as $table) {
-                       $tableNamesFromTca[$table] = $GLOBALS['LANG']->sl($GLOBALS['TCA'][$table]['ctrl']['title']);
+                       $tableToTranslation[$table] = $GLOBALS['LANG']->sl($GLOBALS['TCA'][$table]['ctrl']['title']);
                }
                // Sort by translations
-               asort($tableNamesFromTca);
-               foreach ($tableNamesFromTca as $table => $translatedTable) {
+               asort($tableToTranslation);
+               foreach ($tableToTranslation as $table => $translatedTable) {
                        $excludeArrayTable = array();
 
                        // All field names configured and not restricted to admins
@@ -490,7 +492,7 @@ class BackendUtility {
                                }
                        }
                        // All FlexForm fields
-                       $flexFormArray = self::getRegisteredFlexForms($table);
+                       $flexFormArray = static::getRegisteredFlexForms($table);
                        foreach ($flexFormArray as $tableField => $flexForms) {
                                // Prefix for field label, e.g. "Plugin Options:"
                                $labelPrefix = '';
@@ -680,7 +682,7 @@ class BackendUtility {
         */
        static public function readPageAccess($id, $perms_clause) {
                if ((string) $id != '') {
-                       $id = intval($id);
+                       $id = (int)$id;
                        if (!$id) {
                                if ($GLOBALS['BE_USER']->isAdmin()) {
                                        $path = '/';
@@ -693,7 +695,7 @@ class BackendUtility {
                                        self::workspaceOL('pages', $pageinfo);
                                        if (is_array($pageinfo)) {
                                                self::fixVersioningPid('pages', $pageinfo);
-                                               list($pageinfo['_thePath'], $pageinfo['_thePathFull']) = self::getRecordPath(intval($pageinfo['uid']), $perms_clause, 15, 1000);
+                                               list($pageinfo['_thePath'], $pageinfo['_thePathFull']) = self::getRecordPath((int)$pageinfo['uid'], $perms_clause, 15, 1000);
                                                return $pageinfo;
                                        }
                                }
@@ -933,7 +935,7 @@ class BackendUtility {
                                // Used to avoid looping, if any should happen.
                                $subFieldPointer = $conf['ds_pointerField_searchParent_subField'];
                                while (!$srcPointer) {
-                                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,' . $ds_pointerField . ',' . $ds_searchParentField . ($subFieldPointer ? ',' . $subFieldPointer : ''), $table, 'uid=' . intval(($newRecordPidValue ? $newRecordPidValue : $rr[$ds_searchParentField])) . self::deleteClause($table));
+                                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid,' . $ds_pointerField . ',' . $ds_searchParentField . ($subFieldPointer ? ',' . $subFieldPointer : ''), $table, 'uid=' . (int)($newRecordPidValue ?: $rr[$ds_searchParentField]) . self::deleteClause($table));
                                        $newRecordPidValue = 0;
                                        $rr = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
                                        $GLOBALS['TYPO3_DB']->sql_free_result($res);
@@ -1092,7 +1094,7 @@ class BackendUtility {
         * @return      void
         */
        static public function storeHash($hash, $data, $ident) {
-               $GLOBALS['typo3CacheManager']->getCache('cache_hash')->set($hash, $data, array('ident_' . $ident), 0);
+               GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Cache\\CacheManager')->getCache('cache_hash')->set($hash, $data, array('ident_' . $ident), 0);
        }
 
        /**
@@ -1102,12 +1104,12 @@ class BackendUtility {
         * IDENTICAL to the function by same name found in \TYPO3\CMS\Frontend\Page\PageRepository
         *
         * @param string $hash The hash-string which was used to store the data value
-        * @param integer $expTime Variabele is not used in the function
+        * @param integer $expTime Variable is not used in the function
         * @return mixed The "data" from the cache
         */
        static public function getHash($hash, $expTime = 0) {
                $hashContent = NULL;
-               $cacheEntry = $GLOBALS['typo3CacheManager']->getCache('cache_hash')->get($hash);
+               $cacheEntry = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Cache\\CacheManager')->getCache('cache_hash')->get($hash);
                if ($cacheEntry) {
                        $hashContent = $cacheEntry;
                }
@@ -1131,7 +1133,7 @@ class BackendUtility {
        static public function getPagesTSconfig($id, $rootLine = NULL, $returnPartArray = FALSE) {
                static $pagesTSconfig_cache = array();
 
-               $id = intval($id);
+               $id = (int)$id;
                if ($returnPartArray === FALSE
                        && $rootLine === NULL
                        && isset($pagesTSconfig_cache[$id])
@@ -1180,64 +1182,6 @@ class BackendUtility {
        }
 
        /**
-        * Updates Page TSconfig for a page with $id
-        * The function seems to take $pageTS as an array with properties and compare the values with those that already exists for the "object string", $TSconfPrefix, for the page, then sets those values which were not present.
-        * $impParams can be supplied as already known Page TSconfig, otherwise it's calculated.
-        *
-        * THIS DOES NOT CHECK ANY PERMISSIONS. SHOULD IT?
-        * More documentation is needed.
-        *
-        * @param integer $id Page id
-        * @param array $pageTS Page TS array to write
-        * @param string $TSconfPrefix Prefix for object paths
-        * @param array $impParams [Description needed.]
-        * @return      void
-        * @internal
-        * @see implodeTSParams(), getPagesTSconfig()
-        */
-       static public function updatePagesTSconfig($id, $pageTS, $TSconfPrefix, $impParams = '') {
-               $id = intval($id);
-               if (is_array($pageTS) && $id > 0) {
-                       if (!is_array($impParams)) {
-                               $impParams = self::implodeTSParams(self::getPagesTSconfig($id));
-                       }
-                       $set = array();
-                       foreach ($pageTS as $f => $v) {
-                               $f = $TSconfPrefix . $f;
-                               if (!isset($impParams[$f]) && trim($v) || trim($impParams[$f]) !== trim($v)) {
-                                       $set[$f] = trim($v);
-                               }
-                       }
-                       if (count($set)) {
-                               // Get page record and TS config lines
-                               $pRec = self::getRecord('pages', $id);
-                               $TSlines = explode(LF, $pRec['TSconfig']);
-                               $TSlines = array_reverse($TSlines);
-                               // Reset the set of changes.
-                               foreach ($set as $f => $v) {
-                                       $inserted = 0;
-                                       foreach ($TSlines as $ki => $kv) {
-                                               if (substr($kv, 0, strlen($f) + 1) == $f . '=') {
-                                                       $TSlines[$ki] = $f . '=' . $v;
-                                                       $inserted = 1;
-                                                       break;
-                                               }
-                                       }
-                                       if (!$inserted) {
-                                               $TSlines = array_reverse($TSlines);
-                                               $TSlines[] = $f . '=' . $v;
-                                               $TSlines = array_reverse($TSlines);
-                                       }
-                               }
-                               $TSlines = array_reverse($TSlines);
-                               // Store those changes
-                               $TSconf = implode(LF, $TSlines);
-                               $GLOBALS['TYPO3_DB']->exec_UPDATEquery('pages', 'uid=' . intval($id), array('TSconfig' => $TSconf));
-                       }
-               }
-       }
-
-       /**
         * Implodes a multi dimensional TypoScript array, $p, into a one-dimentional array (return value)
         *
         * @param array $p TypoScript structure
@@ -1339,7 +1283,7 @@ class BackendUtility {
        static public function getListGroupNames($fields = 'title, uid') {
                $exQ = ' AND hide_in_lists=0';
                if (!$GLOBALS['BE_USER']->isAdmin()) {
-                       $exQ .= ' AND uid IN (' . ($GLOBALS['BE_USER']->user['usergroup_cached_list'] ? $GLOBALS['BE_USER']->user['usergroup_cached_list'] : 0) . ')';
+                       $exQ .= ' AND uid IN (' . ($GLOBALS['BE_USER']->user['usergroup_cached_list'] ?: 0) . ')';
                }
                return self::getGroupNames($fields, $exQ);
        }
@@ -1428,7 +1372,7 @@ class BackendUtility {
         * @return string Formatted time
         */
        static public function date($tstamp) {
-               return date($GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'], (int) $tstamp);
+               return date($GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'], (int)$tstamp);
        }
 
        /**
@@ -1536,7 +1480,7 @@ class BackendUtility {
                $sizeParts = array(64, 64);
                if ($size = trim($size)) {
                        $sizeParts = explode('x', $size . 'x' . $size);
-                       if (!intval($sizeParts[0])) {
+                       if (!(int)$sizeParts[0]) {
                                $size = '';
                        }
                }
@@ -1549,7 +1493,7 @@ class BackendUtility {
                                'sys_file_reference',
                                'tablenames = ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($table, 'sys_file_reference')
                                        . ' AND fieldname=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($field, 'sys_file_reference')
-                                       . ' AND uid_foreign=' . intval($row['uid'])
+                                       . ' AND uid_foreign=' . (int)$row['uid']
                                        . self::deleteClause('sys_file_reference')
                                        . self::versioningPlaceholderClause('sys_file_reference'),
                                '',
@@ -1574,7 +1518,7 @@ class BackendUtility {
                                        $imgTag = '<img src="' . $imageUrl . '" alt="' . htmlspecialchars($fileReferenceObject->getName()) . '" />';
                                } else {
                                        // Icon
-                                       $imgTag = IconUtility::getSpriteIconForFile(strtolower($fileObject->getExtension()), array('title' => $fileObject->getName()));
+                                       $imgTag = IconUtility::getSpriteIconForResource($fileObject, array('title' => $fileObject->getName()));
                                }
                                if ($linkInfoPopup) {
                                        $onClick = 'top.launchView(\'_FILE\',\'' . $fileObject->getUid() . '\',\'' . $backPath . '\'); return false;';
@@ -1595,15 +1539,26 @@ class BackendUtility {
                        foreach ($thumbs as $theFile) {
                                if ($theFile) {
                                        $fileName = trim($uploaddir . '/' . $theFile, '/');
-                                       $fileObject = ResourceFactory::getInstance()->retrieveFileOrFolderObject($fileName);
-                                       $fileExtension = $fileObject->getExtension();
-
-                                       if ($fileObject->isMissing()) {
-                                               $flashMessage = \TYPO3\CMS\Core\Resource\Utility\BackendUtility::getFlashMessageForMissingFile($fileObject);
+                                       try {
+                                               /** @var File $fileObject */
+                                               $fileObject = ResourceFactory::getInstance()->retrieveFileOrFolderObject($fileName);
+                                               if ($fileObject->isMissing()) {
+                                                       $flashMessage = \TYPO3\CMS\Core\Resource\Utility\BackendUtility::getFlashMessageForMissingFile($fileObject);
+                                                       $thumbData .= $flashMessage->render();
+                                                       continue;
+                                               }
+                                       } catch (\TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException $exception) {
+                                               /** @var \TYPO3\CMS\Core\Messaging\FlashMessage $flashMessage */
+                                               $flashMessage = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Messaging\\FlashMessage',
+                                                       htmlspecialchars($exception->getMessage()),
+                                                       $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:warning.file_missing', TRUE),
+                                                       \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR
+                                               );
                                                $thumbData .= $flashMessage->render();
                                                continue;
                                        }
 
+                                       $fileExtension = $fileObject->getExtension();
                                        if ($fileExtension == 'ttf' || GeneralUtility::inList($GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'], $fileExtension)) {
                                                $imageUrl = $fileObject->process(ProcessedFile::CONTEXT_IMAGEPREVIEW, array(
                                                        'width' => $sizeParts[0],
@@ -1618,7 +1573,7 @@ class BackendUtility {
                                                }
                                        } else {
                                                // Gets the icon
-                                               $fileIcon = IconUtility::getSpriteIconForFile($fileExtension, array('title' => $fileObject->getName()));
+                                               $fileIcon = IconUtility::getSpriteIconForResource($fileObject, array('title' => $fileObject->getName()));
                                                if ($linkInfoPopup) {
                                                        $onClick = 'top.launchView(\'_FILE\', \'' . $fileName . '\',\'\',\'' . $backPath . '\'); return false;';
                                                        $thumbData .= '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $fileIcon . '</a> ';
@@ -1689,9 +1644,9 @@ class BackendUtility {
                        $parts[] = $GLOBALS['LANG']->sL($GLOBALS['TCA']['pages']['columns']['url']['label']) . ' ' . $row['url'];
                } elseif ($row['doktype'] == PageRepository::DOKTYPE_SHORTCUT) {
                        if ($perms_clause) {
-                               $label = self::getRecordPath(intval($row['shortcut']), $perms_clause, 20);
+                               $label = self::getRecordPath((int)$row['shortcut'], $perms_clause, 20);
                        } else {
-                               $row['shortcut'] = intval($row['shortcut']);
+                               $row['shortcut'] = (int)$row['shortcut'];
                                $lRec = self::getRecordWSOL('pages', $row['shortcut'], 'title');
                                $label = $lRec['title'] . ' (id=' . $row['shortcut'] . ')';
                        }
@@ -1701,9 +1656,9 @@ class BackendUtility {
                        $parts[] = $GLOBALS['LANG']->sL($GLOBALS['TCA']['pages']['columns']['shortcut']['label']) . ' ' . $label;
                } elseif ($row['doktype'] == PageRepository::DOKTYPE_MOUNTPOINT) {
                        if ($perms_clause) {
-                               $label = self::getRecordPath(intval($row['mount_pid']), $perms_clause, 20);
+                               $label = self::getRecordPath((int)$row['mount_pid'], $perms_clause, 20);
                        } else {
-                               $lRec = self::getRecordWSOL('pages', intval($row['mount_pid']), 'title');
+                               $lRec = self::getRecordWSOL('pages', (int)$row['mount_pid'], 'title');
                                $label = $lRec['title'];
                        }
                        $parts[] = $GLOBALS['LANG']->sL($GLOBALS['TCA']['pages']['columns']['mount_pid']['label']) . ' ' . $label;
@@ -1828,7 +1783,7 @@ class BackendUtility {
         * @return string Label for item entry
         */
        static public function getLabelFromItemListMerged($pageId, $table, $column, $key) {
-               $pageTsConfig = self::getPagesTSconfig($pageId);
+               $pageTsConfig = static::getPagesTSconfig($pageId);
                $label = '';
                if (is_array($pageTsConfig['TCEFORM.']) && is_array($pageTsConfig['TCEFORM.'][$table . '.']) && is_array($pageTsConfig['TCEFORM.'][$table . '.'][$column . '.'])) {
                        if (is_array($pageTsConfig['TCEFORM.'][$table . '.'][$column . '.']['addItems.']) && isset($pageTsConfig['TCEFORM.'][$table . '.'][$column . '.']['addItems.'][$key])) {
@@ -1892,7 +1847,7 @@ class BackendUtility {
                        return $GLOBALS['TCA'][$table]['columns'][$col]['label'];
                }
                if ($printAllWrap) {
-                       \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog('The third parameter of getItemLabel() is deprecated with TYPO3 CMS 6.2 and will be removed two versions later.');
+                       GeneralUtility::deprecationLog('The third parameter of getItemLabel() is deprecated with TYPO3 CMS 6.2 and will be removed two versions later.');
                        $parts = explode('|', $printAllWrap);
                        return $parts[0] . $col . $parts[1];
                }
@@ -1906,7 +1861,7 @@ class BackendUtility {
         *
         * @param string $table Table name, present in TCA
         * @param array $row Row from table
-        * @param boolean $prep If set, result is prepared for output: The output is cropped to a limited lenght (depending on BE_USER->uc['titleLen']) and if no value is found for the title, '<em>[No title]</em>' is returned (localized). Further, the output is htmlspecialchars()'ed
+        * @param boolean $prep If set, result is prepared for output: The output is cropped to a limited length (depending on BE_USER->uc['titleLen']) and if no value is found for the title, '<em>[No title]</em>' is returned (localized). Further, the output is htmlspecialchars()'ed
         * @param boolean $forceResult If set, the function always returns an output. If no value is found for the title, '[No title]' is returned (localized).
         * @return string
         */
@@ -1961,7 +1916,7 @@ class BackendUtility {
        }
 
        /**
-        * Crops a title string to a limited lenght and if it really was cropped, wrap it in a <span title="...">|</span>,
+        * Crops a title string to a limited length and if it really was cropped, wrap it in a <span title="...">|</span>,
         * which offers a tooltip with the original title when moving mouse over it.
         *
         * @param string $title The title string to be cropped
@@ -2085,7 +2040,7 @@ class BackendUtility {
                                                                $rParts = GeneralUtility::trimExplode(',', $value, TRUE);
                                                                $lA = array();
                                                                foreach ($rParts as $rVal) {
-                                                                       $rVal = intval($rVal);
+                                                                       $rVal = (int)$rVal;
                                                                        if ($rVal > 0) {
                                                                                $r = self::getRecordWSOL($theColConf['foreign_table'], $rVal);
                                                                        } else {
@@ -2100,6 +2055,10 @@ class BackendUtility {
                                                                $l = implode(', ', $lA);
                                                        }
                                                }
+                                               if (empty($l) && !empty($value)) {
+                                                       // Use plain database value when label is empty
+                                                       $l = $value;
+                                               }
                                        }
                                        break;
                                case 'group':
@@ -2253,7 +2212,7 @@ class BackendUtility {
         * @return string File icon filename
         */
        static public function getFileIcon($ext) {
-               return $GLOBALS['FILEICONS'][$ext] ? $GLOBALS['FILEICONS'][$ext] : $GLOBALS['FILEICONS']['default'];
+               return $GLOBALS['FILEICONS'][$ext] ?: $GLOBALS['FILEICONS']['default'];
        }
 
        /**
@@ -2682,7 +2641,7 @@ class BackendUtility {
                                $domain = rtrim(GeneralUtility::getIndpEnv('TYPO3_SITE_URL'), '/');
                        }
                        // Append port number if lockSSLPort is not the standard port 443
-                       $portNumber = intval($GLOBALS['TYPO3_CONF_VARS']['BE']['lockSSLPort']);
+                       $portNumber = (int)$GLOBALS['TYPO3_CONF_VARS']['BE']['lockSSLPort'];
                        if ($portNumber > 0 && $portNumber !== 443 && $portNumber < 65536 && $protocol === 'https') {
                                $domain .= ':' . strval($portNumber);
                        }
@@ -2699,7 +2658,7 @@ class BackendUtility {
         * @return array
         */
        static public function getModTSconfig($id, $TSref) {
-               $pageTS_modOptions = $GLOBALS['BE_USER']->getTSConfig($TSref, self::getPagesTSconfig($id));
+               $pageTS_modOptions = $GLOBALS['BE_USER']->getTSConfig($TSref, static::getPagesTSconfig($id));
                $BE_USER_modOptions = $GLOBALS['BE_USER']->getTSConfig($TSref);
                if (is_null($BE_USER_modOptions['value'])) {
                        unset($BE_USER_modOptions['value']);
@@ -2725,21 +2684,21 @@ class BackendUtility {
                if (!is_array($menuItems) || count($menuItems) <= 1) {
                        return '';
                }
-
                if (!is_array($mainParams)) {
                        $mainParams = array('id' => $mainParams);
                }
-               $mainParams = GeneralUtility::implodeArrayForUrl('', $mainParams);
                if (!$script) {
-                       $script = basename(PATH_thisScript);
-                       $mainParams .= GeneralUtility::_GET('M') ? '&M=' . rawurlencode(GeneralUtility::_GET('M')) : '';
+                       $scriptUrl = self::getModuleUrl(GeneralUtility::_GET('M'), $mainParams) . $addparams;
+               } else {
+                       $mainParams = GeneralUtility::implodeArrayForUrl('', $mainParams);
+                       $scriptUrl = $script . '?' . $mainParams . $addparams;
                }
                $options = array();
                foreach ($menuItems as $value => $label) {
-                       $options[] = '<option value="' . htmlspecialchars($value) . '"' . ((string)$currentValue === (string)$value ? ' selected="selected"' : '') . '>' . GeneralUtility::deHSCentities(htmlspecialchars($label)) . '</option>';
+                       $options[] = '<option value="' . htmlspecialchars($value) . '"' . ((string)$currentValue === (string)$value ? ' selected="selected"' : '') . '>' . htmlspecialchars($label, ENT_COMPAT, 'UTF-8', FALSE) . '</option>';
                }
                if (count($options)) {
-                       $onChange = 'jumpToUrl(\'' . $script . '?' . $mainParams . $addparams . '&' . $elementName . '=\'+this.options[this.selectedIndex].value,this);';
+                       $onChange = 'jumpToUrl(' . GeneralUtility::quoteJSvalue($scriptUrl . '&' . $elementName . '=') . '+this.options[this.selectedIndex].value,this);';
                        return '
 
                                <!-- Function Menu of module -->
@@ -2768,12 +2727,13 @@ class BackendUtility {
                if (!is_array($mainParams)) {
                        $mainParams = array('id' => $mainParams);
                }
-               $mainParams = GeneralUtility::implodeArrayForUrl('', $mainParams);
                if (!$script) {
-                       $script = basename(PATH_thisScript);
-                       $mainParams .= GeneralUtility::_GET('M') ? '&M=' . rawurlencode(GeneralUtility::_GET('M')) : '';
+                       $scriptUrl = self::getModuleUrl(GeneralUtility::_GET('M'), $mainParams) . $addparams;
+               } else {
+                       $mainParams = GeneralUtility::implodeArrayForUrl('', $mainParams);
+                       $scriptUrl = $script . '?' . $mainParams . $addparams;
                }
-               $onClick = 'jumpToUrl(' . GeneralUtility::quoteJSvalue($script . '?' . $mainParams . $addparams . '&' . $elementName . '=') . '+(this.checked?1:0),this);';
+               $onClick = 'jumpToUrl(' . GeneralUtility::quoteJSvalue($scriptUrl . '&' . $elementName . '=') . '+(this.checked?1:0),this);';
 
                return
                '<input' .
@@ -2804,12 +2764,13 @@ class BackendUtility {
                if (!is_array($mainParams)) {
                        $mainParams = array('id' => $mainParams);
                }
-               $mainParams = GeneralUtility::implodeArrayForUrl('', $mainParams);
                if (!$script) {
-                       $script = basename(PATH_thisScript);
-                       $mainParams .= GeneralUtility::_GET('M') ? '&M=' . rawurlencode(GeneralUtility::_GET('M')) : '';
+                       $scriptUrl = self::getModuleUrl(GeneralUtility::_GET('M'), $mainParams) . $addparams;
+               } else {
+                       $mainParams = GeneralUtility::implodeArrayForUrl('', $mainParams);
+                       $scriptUrl = $script . '?' . $mainParams . $addparams;
                }
-               $onChange = 'jumpToUrl(\'' . $script . '?' . $mainParams . $addparams . '&' . $elementName . '=\'+escape(this.value),this);';
+               $onChange = 'jumpToUrl(' . GeneralUtility::quoteJSvalue($scriptUrl . '&' . $elementName . '=') . '+escape(this.value),this);';
                return '<input type="text"' . $GLOBALS['TBE_TEMPLATE']->formWidth($size) . ' name="' . $elementName . '" value="' . htmlspecialchars($currentValue) . '" onchange="' . htmlspecialchars($onChange) . '" />';
        }
 
@@ -2988,21 +2949,48 @@ class BackendUtility {
         * @param array $urlParameters URL parameters that should be added as key value pairs
         * @param boolean/string $backPathOverride backpath that should be used instead of the global $BACK_PATH
         * @param boolean $returnAbsoluteUrl If set to TRUE, the URL returned will be absolute, $backPathOverride will be ignored in this case
-        * @return boolean/string Calculated URL or FALSE
+        * @return string Calculated URL
         */
        static public function getModuleUrl($moduleName, $urlParameters = array(), $backPathOverride = FALSE, $returnAbsoluteUrl = FALSE) {
-               if (!$GLOBALS['BE_USER']->check('modules', $moduleName)) {
-                       return FALSE;
-               }
                if ($backPathOverride === FALSE) {
-                       $backPath = $GLOBALS['BACK_PATH'];
+                       $backPath = isset($GLOBALS['BACK_PATH']) ? $GLOBALS['BACK_PATH'] : '';
                } else {
                        $backPath = $backPathOverride;
                }
-               $allUrlParameters = array();
-               $allUrlParameters['M'] = $moduleName;
-               $allUrlParameters = array_merge($allUrlParameters, $urlParameters);
-               $url = 'mod.php?' . GeneralUtility::implodeArrayForUrl('', $allUrlParameters, '', TRUE);
+               $urlParameters = array(
+                       'M' => $moduleName,
+                       'moduleToken' => \TYPO3\CMS\Core\FormProtection\FormProtectionFactory::get()->generateToken('moduleCall', $moduleName)
+               ) + $urlParameters;
+               $url = 'mod.php?' . ltrim(GeneralUtility::implodeArrayForUrl('', $urlParameters, '', TRUE, TRUE), '&');
+               if ($returnAbsoluteUrl) {
+                       return GeneralUtility::getIndpEnv('TYPO3_REQUEST_DIR') . $url;
+               } else {
+                       return $backPath . $url;
+               }
+       }
+
+       /**
+        * Returns the Ajax URL for a given AjaxID including a CSRF token.
+        *
+        * @param string $ajaxIdentifier Identifier of the AJAX callback
+        * @param array $urlParameters URL parameters that should be added as key value pairs
+        * @param bool/string $backPathOverride Backpath that should be used instead of the global $BACK_PATH
+        * @param bool $returnAbsoluteUrl If set to TRUE, the URL returned will be absolute, $backPathOverride will be ignored in this case
+        * @return string Calculated URL
+        */
+       static public function getAjaxUrl($ajaxIdentifier, array $urlParameters = array(), $backPathOverride = FALSE, $returnAbsoluteUrl = FALSE) {
+               if ($backPathOverride) {
+                       $backPath = $backPathOverride;
+               } else {
+                       $backPath = isset($GLOBALS['BACK_PATH']) ? $GLOBALS['BACK_PATH'] : '';
+               }
+               $additionalUrlParameters = array(
+                       'ajaxID' => $ajaxIdentifier
+               );
+               if (!empty($GLOBALS['TYPO3_CONF_VARS']['BE']['AJAX'][$ajaxIdentifier]['csrfTokenCheck'])) {
+                       $additionalUrlParameters['ajaxToken'] = \TYPO3\CMS\Core\FormProtection\FormProtectionFactory::get()->generateToken('ajaxCall', $ajaxIdentifier);
+               }
+               $url = 'ajax.php?' . ltrim(GeneralUtility::implodeArrayForUrl('', ($additionalUrlParameters + $urlParameters), '', TRUE, TRUE), '&');
                if ($returnAbsoluteUrl) {
                        return GeneralUtility::getIndpEnv('TYPO3_REQUEST_DIR') . $url;
                } else {
@@ -3020,7 +3008,7 @@ class BackendUtility {
         */
        static public function getListViewLink($urlParameters = array(), $linkTitle = '', $linkText = '') {
                $url = self::getModuleUrl('web_list', $urlParameters);
-               if (!ExtensionManagementUtility::isLoaded('recordlist') || $url === FALSE) {
+               if ($url === FALSE) {
                        return '';
                } else {
                        return '<a href="' . htmlspecialchars($url) . '" title="' . htmlspecialchars($linkTitle) . '">' . IconUtility::getSpriteIcon('actions-system-list-open') . htmlspecialchars($linkText) . '</a>';
@@ -3056,7 +3044,7 @@ class BackendUtility {
         */
        static public function lockRecords($table = '', $uid = 0, $pid = 0) {
                if (isset($GLOBALS['BE_USER']->user['uid'])) {
-                       $user_id = intval($GLOBALS['BE_USER']->user['uid']);
+                       $user_id = (int)$GLOBALS['BE_USER']->user['uid'];
                        if ($table && $uid) {
                                $fields_values = array(
                                        'userid' => $user_id,
@@ -3069,7 +3057,7 @@ class BackendUtility {
                                );
                                $GLOBALS['TYPO3_DB']->exec_INSERTquery('sys_lockedrecords', $fields_values);
                        } else {
-                               $GLOBALS['TYPO3_DB']->exec_DELETEquery('sys_lockedrecords', 'userid=' . intval($user_id));
+                               $GLOBALS['TYPO3_DB']->exec_DELETEquery('sys_lockedrecords', 'userid=' . (int)$user_id);
                        }
                }
        }
@@ -3087,7 +3075,7 @@ class BackendUtility {
        static public function isRecordLocked($table, $uid) {
                if (!is_array($GLOBALS['LOCKED_RECORDS'])) {
                        $GLOBALS['LOCKED_RECORDS'] = array();
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_lockedrecords', 'sys_lockedrecords.userid<>' . intval($GLOBALS['BE_USER']->user['uid']) . '
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_lockedrecords', 'sys_lockedrecords.userid<>' . (int)$GLOBALS['BE_USER']->user['uid'] . '
                                                                AND sys_lockedrecords.tstamp > ' . ($GLOBALS['EXEC_TIME'] - 2 * 3600));
                        while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                                // Get the type of the user that locked this record:
@@ -3218,12 +3206,12 @@ class BackendUtility {
                                '###PAGE_TSCONFIG_STR###'
                        ),
                        array(
-                               intval($tsConfig['_CURRENT_PID']),
-                               intval($tsConfig['_THIS_UID']),
-                               intval($tsConfig['_THIS_CID']),
-                               intval($tsConfig['_STORAGE_PID']),
-                               intval($tsConfig['_SITEROOT']),
-                               intval($tsConfig[$field]['PAGE_TSCONFIG_ID']),
+                               (int)$tsConfig['_CURRENT_PID'],
+                               (int)$tsConfig['_THIS_UID'],
+                               (int)$tsConfig['_THIS_CID'],
+                               (int)$tsConfig['_STORAGE_PID'],
+                               (int)$tsConfig['_SITEROOT'],
+                               (int)$tsConfig[$field]['PAGE_TSCONFIG_ID'],
                                $GLOBALS['TYPO3_DB']->cleanIntList($tsConfig[$field]['PAGE_TSCONFIG_IDLIST']),
                                $GLOBALS['TYPO3_DB']->quoteStr($tsConfig[$field]['PAGE_TSCONFIG_STR'], $table)
                        ),
@@ -3268,10 +3256,10 @@ class BackendUtility {
                $rootLine = self::BEgetRootLine($TScID, '', TRUE);
                foreach ($rootLine as $rC) {
                        if (!$res['_STORAGE_PID']) {
-                               $res['_STORAGE_PID'] = intval($rC['storage_pid']);
+                               $res['_STORAGE_PID'] = (int)$rC['storage_pid'];
                        }
                        if (!$res['_SITEROOT']) {
-                               $res['_SITEROOT'] = $rC['is_siteroot'] ? intval($rC['uid']) : 0;
+                               $res['_SITEROOT'] = $rC['is_siteroot'] ? (int)$rC['uid'] : 0;
                        }
                }
                return $res;
@@ -3293,7 +3281,7 @@ class BackendUtility {
        static public function getTSconfig_pidValue($table, $uid, $pid) {
                // If pid is an integer this takes precedence in our lookup.
                if (MathUtility::canBeInterpretedAsInteger($pid)) {
-                       $thePidValue = intval($pid);
+                       $thePidValue = (int)$pid;
                        // If ref to another record, look that record up.
                        if ($thePidValue < 0) {
                                $pidRec = self::getRecord($table, abs($thePidValue), 'pid');
@@ -3362,13 +3350,11 @@ class BackendUtility {
         * @return string Domain name, if found.
         */
        static public function firstDomainRecord($rootLine) {
-               if (ExtensionManagementUtility::isLoaded('cms')) {
-                       foreach ($rootLine as $row) {
-                               $dRec = self::getRecordsByField('sys_domain', 'pid', $row['uid'], ' AND redirectTo=\'\' AND hidden=0', '', 'sorting');
-                               if (is_array($dRec)) {
-                                       $dRecord = reset($dRec);
-                                       return rtrim($dRecord['domainName'], '/');
-                               }
+               foreach ($rootLine as $row) {
+                       $dRec = self::getRecordsByField('sys_domain', 'pid', $row['uid'], ' AND redirectTo=\'\' AND hidden=0', '', 'sorting');
+                       if (is_array($dRec)) {
+                               $dRecord = reset($dRec);
+                               return rtrim($dRecord['domainName'], '/');
                        }
                }
        }
@@ -3381,21 +3367,19 @@ class BackendUtility {
         * @return array Domain record, if found
         */
        static public function getDomainStartPage($domain, $path = '') {
-               if (ExtensionManagementUtility::isLoaded('cms')) {
-                       $domain = explode(':', $domain);
-                       $domain = strtolower(preg_replace('/\\.$/', '', $domain[0]));
-                       // Path is calculated.
-                       $path = trim(preg_replace('/\\/[^\\/]*$/', '', $path));
-                       // Stuff
-                       $domain .= $path;
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('sys_domain.*', 'pages,sys_domain', '
-                               pages.uid=sys_domain.pid
-                               AND sys_domain.hidden=0
-                               AND (sys_domain.domainName=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($domain, 'sys_domain') . ' OR sys_domain.domainName=' . $GLOBALS['TYPO3_DB']->fullQuoteStr(($domain . '/'), 'sys_domain') . ')' . self::deleteClause('pages'), '', '', '1');
-                       $result = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
-                       $GLOBALS['TYPO3_DB']->sql_free_result($res);
-                       return $result;
-               }
+               $domain = explode(':', $domain);
+               $domain = strtolower(preg_replace('/\\.$/', '', $domain[0]));
+               // Path is calculated.
+               $path = trim(preg_replace('/\\/[^\\/]*$/', '', $path));
+               // Stuff
+               $domain .= $path;
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('sys_domain.*', 'pages,sys_domain', '
+                       pages.uid=sys_domain.pid
+                       AND sys_domain.hidden=0
+                       AND (sys_domain.domainName=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($domain, 'sys_domain') . ' OR sys_domain.domainName=' . $GLOBALS['TYPO3_DB']->fullQuoteStr(($domain . '/'), 'sys_domain') . ')' . self::deleteClause('pages'), '', '', '1');
+               $result = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
+               $GLOBALS['TYPO3_DB']->sql_free_result($res);
+               return $result;
        }
 
        /**
@@ -3550,7 +3534,7 @@ class BackendUtility {
                                        return '';
                                }
                        } else {
-                               $condition = 'ref_uid=' . intval($ref);
+                               $condition = 'ref_uid=' . (int)$ref;
                        }
                        $count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('*', 'sys_refindex', 'ref_table=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($table, 'sys_refindex') . ' AND ' . $condition . ' AND deleted=0');
                }
@@ -3567,7 +3551,7 @@ class BackendUtility {
         */
        static public function translationCount($table, $ref, $msg = '') {
                if (empty($GLOBALS['TCA'][$table]['ctrl']['transForeignTable']) && $GLOBALS['TCA'][$table]['ctrl']['languageField'] && $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] && !$GLOBALS['TCA'][$table]['ctrl']['transOrigPointerTable']) {
-                       $where = $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] . '=' . intval($ref) . ' AND ' . $GLOBALS['TCA'][$table]['ctrl']['languageField'] . '<>0';
+                       $where = $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] . '=' . (int)$ref . ' AND ' . $GLOBALS['TCA'][$table]['ctrl']['languageField'] . '<>0';
                        if (!empty($GLOBALS['TCA'][$table]['ctrl']['delete'])) {
                                $where .= ' AND ' . $GLOBALS['TCA'][$table]['ctrl']['delete'] . '=0';
                        }
@@ -3602,7 +3586,7 @@ class BackendUtility {
                                $outputRows[] = $row;
                        } else {
                                // Select UID version:
-                               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, 'uid=' . intval($uid) . ($includeDeletedRecords ? '' : self::deleteClause($table)));
+                               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, 'uid=' . (int)$uid . ($includeDeletedRecords ? '' : self::deleteClause($table)));
                                // Add rows to output array:
                                if ($res) {
                                        $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
@@ -3615,7 +3599,7 @@ class BackendUtility {
                                }
                        }
                        // Select all offline versions of record:
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, 'pid=-1 AND uid<>' . intval($uid) . ' AND t3ver_oid=' . intval($uid) . ($workspace != 0 ? ' AND t3ver_wsid=' . intval($workspace) : '') . ($includeDeletedRecords ? '' : self::deleteClause($table)), '', 't3ver_id DESC');
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, 'pid=-1 AND uid<>' . (int)$uid . ' AND t3ver_oid=' . (int)$uid . ($workspace != 0 ? ' AND t3ver_wsid=' . (int)$workspace : '') . ($includeDeletedRecords ? '' : self::deleteClause($table)), '', 't3ver_id DESC');
                        // Add rows to output array:
                        while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                                $outputRows[] = $row;
@@ -3709,7 +3693,7 @@ class BackendUtility {
                                // If version was found, swap the default record with that one.
                                if (is_array($wsAlt)) {
                                        // Check if this is in move-state:
-                                       if ($previewMovePlaceholders && !$movePldSwap && ($table == 'pages' || (int) $GLOBALS['TCA'][$table]['ctrl']['versioningWS'] >= 2) && $unsetMovePointers) {
+                                       if ($previewMovePlaceholders && !$movePldSwap && ($table == 'pages' || (int)$GLOBALS['TCA'][$table]['ctrl']['versioningWS'] >= 2) && $unsetMovePointers) {
                                                // Only for WS ver 2... (moving)
                                                // If t3ver_state is not found, then find it... (but we like best if it is here...)
                                                if (!isset($wsAlt['t3ver_state'])) {
@@ -3762,7 +3746,7 @@ class BackendUtility {
         */
        static public function movePlhOL($table, &$row) {
                // Only for WS ver 2... (moving)
-               if ($table == 'pages' || (int) $GLOBALS['TCA'][$table]['ctrl']['versioningWS'] >= 2) {
+               if ($table == 'pages' || (int)$GLOBALS['TCA'][$table]['ctrl']['versioningWS'] >= 2) {
                        // If t3ver_move_id or t3ver_state is not found, then find it... (but we like best if it is here...)
                        if (!isset($row['t3ver_move_id']) || !isset($row['t3ver_state'])) {
                                $moveIDRec = self::getRecord($table, $row['uid'], 't3ver_move_id, t3ver_state');
@@ -3796,7 +3780,7 @@ class BackendUtility {
                if (ExtensionManagementUtility::isLoaded('version')) {
                        if ($workspace !== 0 && $GLOBALS['TCA'][$table] && $GLOBALS['TCA'][$table]['ctrl']['versioningWS']) {
                                // Select workspace version of record:
-                               $row = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow($fields, $table, 'pid=-1 AND ' . 't3ver_oid=' . intval($uid) . ' AND ' . 't3ver_wsid=' . intval($workspace) . self::deleteClause($table));
+                               $row = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow($fields, $table, 'pid=-1 AND ' . 't3ver_oid=' . (int)$uid . ' AND ' . 't3ver_wsid=' . (int)$workspace . self::deleteClause($table));
                                if (is_array($row)) {
                                        return $row;
                                }
@@ -3847,7 +3831,7 @@ class BackendUtility {
         */
        static public function versioningPlaceholderClause($table) {
                if ($GLOBALS['TCA'][$table] && $GLOBALS['TCA'][$table]['ctrl']['versioningWS']) {
-                       $currentWorkspace = intval($GLOBALS['BE_USER']->workspace);
+                       $currentWorkspace = (int)$GLOBALS['BE_USER']->workspace;
                        return ' AND (' . $table . '.t3ver_state <= ' . new VersionState(VersionState::DEFAULT_STATE) . ' OR ' . $table . '.t3ver_wsid = ' . $currentWorkspace . ')';
                }
        }
@@ -3865,7 +3849,7 @@ class BackendUtility {
                        if (is_null($workspaceId)) {
                                $workspaceId = $GLOBALS['BE_USER']->workspace;
                        }
-                       $workspaceId = intval($workspaceId);
+                       $workspaceId = (int)$workspaceId;
                        $pidOperator = $workspaceId === 0 ? '!=' : '=';
                        $whereClause = ' AND ' . $table . '.t3ver_wsid=' . $workspaceId . ' AND ' . $table . '.pid' . $pidOperator . '-1';
                }
@@ -3886,7 +3870,7 @@ class BackendUtility {
                                if ($tableName != 'pages' && $cfg['ctrl']['versioningWS']) {
                                        // Select all records from this table in the database from the workspace
                                        // This joins the online version with the offline version as tables A and B
-                                       $output[$tableName] = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('B.uid as live_uid, A.uid as offline_uid', $tableName . ' A,' . $tableName . ' B', 'A.pid=-1' . ' AND B.pid=' . intval($pageId) . ' AND A.t3ver_wsid=' . intval($workspace) . ' AND A.t3ver_oid=B.uid' . self::deleteClause($tableName, 'A') . self::deleteClause($tableName, 'B'));
+                                       $output[$tableName] = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('B.uid as live_uid, A.uid as offline_uid', $tableName . ' A,' . $tableName . ' B', 'A.pid=-1' . ' AND B.pid=' . (int)$pageId . ' AND A.t3ver_wsid=' . (int)$workspace . ' AND A.t3ver_oid=B.uid' . self::deleteClause($tableName, 'A') . self::deleteClause($tableName, 'B'));
                                        if (!is_array($output[$tableName]) || !count($output[$tableName])) {
                                                unset($output[$tableName]);
                                        }
@@ -3921,13 +3905,13 @@ class BackendUtility {
         */
        static public function getMovePlaceholder($table, $uid, $fields = '*') {
                $workspace = $GLOBALS['BE_USER']->workspace;
-               if ($workspace !== 0 && $GLOBALS['TCA'][$table] && (int) $GLOBALS['TCA'][$table]['ctrl']['versioningWS'] >= 2) {
+               if ($workspace !== 0 && $GLOBALS['TCA'][$table] && (int)$GLOBALS['TCA'][$table]['ctrl']['versioningWS'] >= 2) {
                        // Select workspace version of record:
                        $row = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
                                $fields,
                                $table,
                                'pid<>-1 AND t3ver_state=' . new VersionState(VersionState::MOVE_PLACEHOLDER) . ' AND t3ver_move_id='
-                                       . intval($uid) . ' AND t3ver_wsid=' . intval($workspace) . self::deleteClause($table)
+                                       . (int)$uid . ' AND t3ver_wsid=' . (int)$workspace . self::deleteClause($table)
                        );
                        if (is_array($row)) {
                                return $row;