[BUGFIX] Fix several typos in php comments
[Packages/TYPO3.CMS.git] / typo3 / sysext / recycler / Classes / Utility / RecyclerUtility.php
index f605b9a..3da23e9 100644 (file)
@@ -16,12 +16,12 @@ namespace TYPO3\CMS\Recycler\Utility;
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Database\ConnectionPool;
-use TYPO3\CMS\Core\Database\Query\QueryContextType;
 use TYPO3\CMS\Core\Type\Bitmask\Permission;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * Helper class for the 'recycler' extension.
+ * @internal
  */
 class RecyclerUtility
 {
@@ -35,13 +35,21 @@ class RecyclerUtility
      * as well as the table access rights of the user.
      *
      * @param string $table The table to check access for
-     * @param string $row Record array
+     * @param array $row Record array
      * @return bool Returns TRUE is the user has access, or FALSE if not
      */
     public static function checkAccess($table, $row)
     {
         $backendUser = static::getBackendUser();
 
+        if ($backendUser->isAdmin()) {
+            return true;
+        }
+
+        if (!$backendUser->check('tables_modify', $table)) {
+            return false;
+        }
+
         // Checking if the user has permissions? (Only working as a precaution, because the final permission check is always down in TCE. But it's good to notify the user on beforehand...)
         // First, resetting flags.
         $hasAccess = false;
@@ -61,9 +69,6 @@ class RecyclerUtility
                 $hasAccess = $backendUser->recordEditAccessInternals($table, $calcPRec);
             }
         }
-        if (!$backendUser->check('tables_modify', $table)) {
-            $hasAccess = false;
-        }
         return $hasAccess;
     }
 
@@ -73,22 +78,18 @@ class RecyclerUtility
      * Deleted pages are filtered out.
      *
      * @param int $uid Page uid for which to create record path
-     * @param string $clause is additional where clauses, eg.
-     * @param int $titleLimit Title limit
-     * @param int $fullTitleLimit Title limit of Full title (typ. set to 1000 or so)
-     * @return mixed Path of record (string) OR array with short/long title if $fullTitleLimit is set.
+     * @return string Path of record (string) OR array with short/long title if $fullTitleLimit is set.
      */
-    public static function getRecordPath($uid, $clause = '', $titleLimit = 1000, $fullTitleLimit = 0)
+    public static function getRecordPath($uid)
     {
         $uid = (int)$uid;
-        $output = ($fullOutput = '/');
+        $output = '/';
         if ($uid === 0) {
             return $output;
         }
         $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
-        $queryBuilder->getQueryContext()->setContext(QueryContextType::UNRESTRICTED);
+        $queryBuilder->getRestrictions()->removeAll();
 
-        $clause = trim($clause);
         $loopCheck = 100;
         while ($loopCheck > 0) {
             $loopCheck--;
@@ -96,23 +97,17 @@ class RecyclerUtility
             $queryBuilder
                 ->select('uid', 'pid', 'title', 'deleted', 't3ver_oid', 't3ver_wsid')
                 ->from('pages')
-                ->where($queryBuilder->expr()->eq('uid', (int)$uid));
-            if (!empty($clause)) {
-                $queryBuilder->andWhere($clause);
-            }
+                ->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)));
             $row = $queryBuilder->execute()->fetch();
             if ($row !== false) {
                 BackendUtility::workspaceOL('pages', $row);
                 if (is_array($row)) {
                     BackendUtility::fixVersioningPid('pages', $row);
                     $uid = (int)$row['pid'];
-                    $output = '/' . htmlspecialchars(GeneralUtility::fixed_lgd_cs($row['title'], $titleLimit)) . $output;
+                    $output = '/' . htmlspecialchars(GeneralUtility::fixed_lgd_cs($row['title'], 1000)) . $output;
                     if ($row['deleted']) {
                         $output = '<span class="text-danger">' . $output . '</span>';
                     }
-                    if ($fullTitleLimit) {
-                        $fullOutput = '/' . htmlspecialchars(GeneralUtility::fixed_lgd_cs($row['title'], $fullTitleLimit)) . $fullOutput;
-                    }
                 } else {
                     break;
                 }
@@ -120,11 +115,7 @@ class RecyclerUtility
                 break;
             }
         }
-        if ($fullTitleLimit) {
-            return array($output, $fullOutput);
-        } else {
-            return $output;
-        }
+        return $output;
     }
 
     /**
@@ -154,12 +145,12 @@ class RecyclerUtility
             return false;
         }
         $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
-        $queryBuilder->getQueryContext()->setContext(QueryContextType::UNRESTRICTED);
+        $queryBuilder->getRestrictions()->removeAll();
 
         $deleted = $queryBuilder
             ->select('deleted')
             ->from('pages')
-            ->where($queryBuilder->expr()->eq('uid', (int)$pid))
+            ->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)))
             ->execute()
             ->fetchColumn();
 
@@ -176,12 +167,12 @@ class RecyclerUtility
     public static function getPidOfUid($uid, $table)
     {
         $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
-        $queryBuilder->getQueryContext()->setContext(QueryContextType::UNRESTRICTED);
+        $queryBuilder->getRestrictions()->removeAll();
 
         $pid = $queryBuilder
             ->select('pid')
             ->from($table)
-            ->where($queryBuilder->expr()->eq('uid', (int)$uid))
+            ->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)))
             ->execute()
             ->fetchColumn();
 
@@ -192,7 +183,7 @@ class RecyclerUtility
      * Gets the TCA of the table used in the current context.
      *
      * @param string $tableName Name of the table to get TCA for
-     * @return array|FALSE TCA of the table used in the current context
+     * @return array|false TCA of the table used in the current context
      */
     public static function getTableTCA($tableName)
     {
@@ -216,7 +207,7 @@ class RecyclerUtility
     /**
      * Returns an instance of LanguageService
      *
-     * @return \TYPO3\CMS\Lang\LanguageService
+     * @return \TYPO3\CMS\Core\Localization\LanguageService
      */
     protected static function getLanguageService()
     {
@@ -224,11 +215,11 @@ class RecyclerUtility
     }
 
     /**
-     * Returns the modifyable tables of the current user
+     * Returns the modifiable tables of the current user
      */
     public static function getModifyableTables()
     {
-        if ((bool)$GLOBALS['BE_USER']->user['admin']) {
+        if ($GLOBALS['BE_USER']->isAdmin()) {
             $tables = array_keys($GLOBALS['TCA']);
         } else {
             $tables = explode(',', $GLOBALS['BE_USER']->groupData['tables_modify']);