Revert "[TASK] Rebuild the calcAge functionality"
[Packages/TYPO3.CMS.git] / typo3 / sysext / indexed_search / Classes / Controller / SearchController.php
index 758f0d1..27d6e0e 100644 (file)
@@ -1,31 +1,18 @@
 <?php
 namespace TYPO3\CMS\IndexedSearch\Controller;
 
-/***************************************************************
- *  Copyright notice
- *
- *  (c) 2011-2013 Benjamin Mack (benni@typo3.org)
- *  All rights reserved
- *
- *  This script is part of the TYPO3 project. The TYPO3 project is
- *  free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  The GNU General Public License can be found at
- *  http://www.gnu.org/copyleft/gpl.html.
- *  A copy is found in the textfile GPL.txt and important notices to the license
- *  from the author is found in LICENSE.txt distributed with these scripts.
+/**
+ * This file is part of the TYPO3 CMS project.
  *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
  *
- *  This script is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
  *
- *  This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
+ * The TYPO3 project - inspiring people to share!
+ */
 
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
@@ -129,7 +116,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                $this->searchWords = $this->getSearchWords($searchData['defaultOperand']);
                // This is the id of the site root.
                // This value may be a commalist of integer (prepared for this)
-               $this->searchRootPageIdList = intval($GLOBALS['TSFE']->config['rootLine'][0]['uid']);
+               $this->searchRootPageIdList = (int)$GLOBALS['TSFE']->config['rootLine'][0]['uid'];
                // Setting the list of root PIDs for the search. Notice, these page IDs MUST
                // have a TypoScript template with root flag on them! Basically this list is used
                // to select on the "rl0" field and page ids are registered as "rl0" only if
@@ -189,7 +176,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                        // Create header if we are searching more than one indexing configuration
                        if (count($indexCfgs) > 1) {
                                if ($freeIndexUid > 0) {
-                                       $indexCfgRec = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('title', 'index_config', 'uid=' . intval($freeIndexUid) . $GLOBALS['TSFE']->cObj->enableFields('index_config'));
+                                       $indexCfgRec = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('title', 'index_config', 'uid=' . (int)$freeIndexUid . $GLOBALS['TSFE']->cObj->enableFields('index_config'));
                                        $categoryTitle = $indexCfgRec['title'];
                                } else {
                                        $categoryTitle = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('indexingConfigurationHeader.' . $freeIndexUid, 'indexed_search');
@@ -349,7 +336,6 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                        }
                }
                $title = $resultData['item_title'] . $resultData['titleaddition'];
-               $title = htmlspecialchars($title);
                // If external media, link to the media-file instead.
                if ($row['item_type']) {
                        if ($row['show_resume']) {
@@ -358,7 +344,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                                if ($GLOBALS['TSFE']->config['config']['fileTarget']) {
                                        $targetAttribute = ' target="' . htmlspecialchars($GLOBALS['TSFE']->config['config']['fileTarget']) . '"';
                                }
-                               $title = '<a href="' . htmlspecialchars($row['data_filename']) . '"' . $targetAttribute . '>' . $title . '</a>';
+                               $title = '<a href="' . htmlspecialchars($row['data_filename']) . '"' . $targetAttribute . '>' . htmlspecialchars($title) . '</a>';
                        } else {
                                // Suspicious, so linking to page instead...
                                $copiedRow = $row;
@@ -370,7 +356,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                        // Prepare search words for markup in content:
                        if ($this->settings['forwardSearchWordsInResultLink']) {
                                $markUpSwParams = array('no_cache' => 1);
-                               foreach ($this->sWArr as $d) {
+                               foreach ($this->searchWords as $d) {
                                        $markUpSwParams['sword_list'][] = $d['sword'];
                                }
                        } else {
@@ -394,7 +380,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                        }
                        $resultData['path'] = '<a href="' . htmlspecialchars($row['data_filename']) . '"' . $targetAttribute . '>' . htmlspecialchars($row['data_filename']) . '</a>';
                } else {
-                       $pathId = $row['data_page_id'] ? $row['data_page_id'] : $row['page_id'];
+                       $pathId = $row['data_page_id'] ?: $row['page_id'];
                        $pathMP = $row['data_page_id'] ? $row['data_page_mp'] : '';
                        $pathStr = htmlspecialchars($this->getPathFromPageId($pathId, $pathMP));
                        $resultData['path'] = $this->linkPage($pathId, $pathStr, array(
@@ -433,7 +419,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
         * @return array Configuration array
         */
        protected function getSpecialConfigForResultRow($row) {
-               $pathId = $row['data_page_id'] ? $row['data_page_id'] : $row['page_id'];
+               $pathId = $row['data_page_id'] ?: $row['page_id'];
                $pathMP = $row['data_page_id'] ? $row['data_page_mp'] : '';
                $rl = $GLOBALS['TSFE']->sys_page->getRootLine($pathId, $pathMP);
                $specConf = $this->settings['specialConfiguration.']['0.'];
@@ -502,18 +488,19 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                if ((string) $row['item_type'] === '0') {
                        // If TypoScript is used to render the flag:
                        if (is_array($this->settings['flagRendering.'])) {
+                               /** @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer $cObj */
                                $cObj = GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer');
                                $cObj->setCurrentVal($row['sys_language_uid']);
                                $output = $cObj->cObjGetSingle($this->settings['flagRendering'], $this->settings['flagRendering.']);
                        } else {
                                // ... otherwise, get flag from sys_language record:
-                               $languageRow = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('flag, title', 'sys_language', 'uid=' . intval($row['sys_language_uid']) . $GLOBALS['TSFE']->cObj->enableFields('sys_language'));
+                               $languageRow = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('flag, title', 'sys_language', 'uid=' . (int)$row['sys_language_uid'] . $GLOBALS['TSFE']->cObj->enableFields('sys_language'));
                                // Flag code:
                                $flag = $languageRow['flag'];
                                if ($flag) {
                                        // FIXME not all flags from typo3/gfx/flags
                                        // are available in media/flags/
-                                       $file = substr(PATH_tslib, strlen(PATH_site)) . 'media/flags/flag_' . $flag;
+                                       $file = \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(PATH_tslib) . 'media/flags/flag_' . $flag;
                                        $imgInfo = @getimagesize((PATH_site . $file));
                                        if (is_array($imgInfo)) {
                                                $output = '<img src="' . $file . '" ' . $imgInfo[3] . ' title="' . htmlspecialchars($languageRow['title']) . '" alt="' . htmlspecialchars($languageRow['title']) . '" />';
@@ -561,7 +548,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                                        $fullPath = GeneralUtility::getFileAbsFileName($icon);
                                        if ($fullPath) {
                                                $info = @getimagesize($fullPath);
-                                               $iconPath = substr($fullPath, strlen(PATH_site));
+                                               $iconPath = \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix($fullPath);
                                                $this->iconFileNameCache[$imageType] = is_array($info) ? '<img src="' . $iconPath . '" ' . $info[3] . ' title="' . htmlspecialchars($alt) . '" alt="" />' : '';
                                        }
                                }
@@ -583,7 +570,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                if ($row['show_resume']) {
                        if (!$noMarkup) {
                                $markedSW = '';
-                               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'index_fulltext', 'phash=' . intval($row['phash']));
+                               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'index_fulltext', 'phash=' . (int)$row['phash']);
                                if ($ftdrow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                                        // Cut HTTP references after some length
                                        $content = preg_replace('/(http:\\/\\/[^ ]{60})([^ ]+)/i', '$1...', $ftdrow['fulltextdata']);
@@ -595,7 +582,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                                $outputStr = $GLOBALS['TSFE']->csConvObj->crop('utf-8', $row['item_description'], $length);
                                $outputStr = htmlspecialchars($outputStr);
                        }
-                       $output = $outputStr ? $outputStr : $markedSW;
+                       $output = $outputStr ?: $markedSW;
                        $output = $GLOBALS['TSFE']->csConv($output, 'utf-8');
                } else {
                        $output = '<span class="noResume">' . \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('result.noResume', 'indexed_search') . '</span>';
@@ -604,7 +591,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
        }
 
        /**
-        * Marks up the search words from $this->sWarr in the $str with a color.
+        * Marks up the search words from $this->searchWords in the $str with a color.
         *
         * @param string $str Text in which to find and mark up search words. This text is assumed to be UTF-8 like the search words internally is.
         * @return string Processed content
@@ -615,7 +602,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                $str = preg_replace('/\\s\\s+/', ' ', $str);
                $swForReg = array();
                // Prepare search words for regex:
-               foreach ($this->sWArr as $d) {
+               foreach ($this->searchWords as $d) {
                        $swForReg[] = preg_quote($d['sword'], '/');
                }
                $regExString = '(' . implode('|', $swForReg) . ')';
@@ -684,13 +671,13 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                $insertFields = array(
                        'searchstring' => $this->sword,
                        'searchoptions' => serialize(array($searchParams, $searchWords, $pt)),
-                       'feuser_id' => intval($GLOBALS['TSFE']->fe_user->user['uid']),
+                       'feuser_id' => (int)$GLOBALS['TSFE']->fe_user->user['uid'],
                        // cookie as set or retrieved. If people has cookies disabled this will vary all the time
                        'cookie' => $GLOBALS['TSFE']->fe_user->id,
                        // Remote IP address
                        'IP' => GeneralUtility::getIndpEnv('REMOTE_ADDR'),
                        // Number of hits on the search
-                       'hits' => intval($count),
+                       'hits' => (int)$count,
                        // Time stamp
                        'tstamp' => $GLOBALS['EXEC_TIME']
                );
@@ -1197,7 +1184,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
        protected function getMenuOfPages($pageUid) {
                if ($this->settings['displayLevelxAllTypes']) {
                        $menu = array();
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('title,uid', 'pages', 'pid=' . intval($pageUid) . $GLOBALS['TSFE']->cObj->enableFields('pages'), '', 'sorting');
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('title,uid', 'pages', 'pid=' . (int)$pageUid . $GLOBALS['TSFE']->cObj->enableFields('pages'), '', 'sorting');
                        while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                                $menu[$row['uid']] = $GLOBALS['TSFE']->sys_page->getPageOverlay($row);
                        }
@@ -1257,7 +1244,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
         * @return string Domain name
         */
        protected function getFirstSysDomainRecordForPage($id) {
-               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('domainName', 'sys_domain', 'pid=' . intval($id) . $GLOBALS['TSFE']->cObj->enableFields('sys_domain'), '', 'sorting');
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('domainName', 'sys_domain', 'pid=' . (int)$id . $GLOBALS['TSFE']->cObj->enableFields('sys_domain'), '', 'sorting');
                $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
                return rtrim($row['domainName'], '/');
        }