[TASK] Deprecate 3rd parameter of pi_getLL 62/48662/4
authorWouter Wolters <typo3@wouterwolters.nl>
Thu, 23 Jun 2016 19:23:37 +0000 (21:23 +0200)
committerGeorg Ringer <georg.ringer@gmail.com>
Mon, 27 Jun 2016 11:50:11 +0000 (13:50 +0200)
Resolves: #76653
Releases: master
Change-Id: Ie8a7974a4c15a8ec8580a4dfbe7b24a2266bafb4
Reviewed-on: https://review.typo3.org/48662
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Bamboo TYPO3com <info@typo3.com>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
typo3/sysext/compatibility7/Classes/Controller/SearchFormController.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-71917-DeprecateTheArgumentHscForGetLLGetLLLAndSL.rst
typo3/sysext/felogin/Classes/Controller/FrontendLoginController.php
typo3/sysext/frontend/Classes/Plugin/AbstractPlugin.php

index 783cf52..a58c888 100755 (executable)
@@ -689,14 +689,14 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
                 // Browsing nav, bottom.
                 $content = $browseBox1 . $rowcontent . $browseBox2;
             } else {
-                $content = '<p' . $this->pi_classParam('noresults') . '>' . $this->pi_getLL('noResults', '', true) . '</p>';
+                $content = '<p' . $this->pi_classParam('noresults') . '>' . htmlspecialchars($this->pi_getLL('noResults')) . '</p>';
             }
             $this->timeTracker->pull();
         } else {
-            $content .= '<p' . $this->pi_classParam('noresults') . '>' . $this->pi_getLL('noResults', '', true) . '</p>';
+            $content .= '<p' . $this->pi_classParam('noresults') . '>' . htmlspecialchars($this->pi_getLL('noResults')) . '</p>';
         }
         // Print a message telling which words we searched for, and in which sections etc.
-        $what = $this->tellUsWhatIsSeachedFor($sWArr) . (substr($this->piVars['sections'], 0, 2) == 'rl' ? ' ' . $this->pi_getLL('inSection', '', true) . ' "' . $this->getPathFromPageId(substr($this->piVars['sections'], 4)) . '"' : '');
+        $what = $this->tellUsWhatIsSeachedFor($sWArr) . (substr($this->piVars['sections'], 0, 2) == 'rl' ? ' ' . htmlspecialchars($this->pi_getLL('inSection')) . ' "' . $this->getPathFromPageId(substr($this->piVars['sections'], 4)) . '"' : '');
         $what = '<div' . $this->pi_classParam('whatis') . '>' . $this->cObj->stdWrap($what, $this->conf['whatis_stdWrap.']) . '</div>';
         $content = $what . $content;
         // Return content:
@@ -756,7 +756,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
                             $sectionName = substr($sectionName, 1);
                         }
                         if (!trim($sectionName)) {
-                            $sectionTitleLinked = $this->pi_getLL('unnamedSection', '', true) . ':';
+                            $sectionTitleLinked = htmlspecialchars($this->pi_getLL('unnamedSection')) . ':';
                         } elseif ($this->conf['linkSectionTitles']) {
                             $quotedPrefix = GeneralUtility::quoteJSvalue($this->prefixId);
                             $onclick = 'document.forms[' . $quotedPrefix . '][' . GeneralUtility::quoteJSvalue($this->prefixId . '[_sections]') . '].value=' . GeneralUtility::quoteJSvalue($theRLid) . ';document.forms[' . $quotedPrefix . '].submit();return false;';
@@ -1334,9 +1334,9 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
         // Multilangual text
         $substituteArray = array('legend', 'searchFor', 'extResume', 'atATime', 'orderBy', 'fromSection', 'searchIn', 'match', 'style', 'freeIndexUid');
         foreach ($substituteArray as $marker) {
-            $markerArray['###FORM_' . GeneralUtility::strtoupper($marker) . '###'] = $this->pi_getLL('form_' . $marker, '', true);
+            $markerArray['###FORM_' . GeneralUtility::strtoupper($marker) . '###'] = htmlspecialchars($this->pi_getLL('form_' . $marker));
         }
-        $markerArray['###FORM_SUBMIT###'] = $this->pi_getLL('submit_button_label', '', true);
+        $markerArray['###FORM_SUBMIT###'] = htmlspecialchars($this->pi_getLL('submit_button_label'));
         // Adding search field value
         $markerArray['###SWORD_VALUE###'] = '';
         $markerArray['###PLACEHOLDER###'] = '';
@@ -1354,7 +1354,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
         if ($this->conf['show.']['clearSearchBox'] && $this->conf['show.']['clearSearchBox.']['enableSubSearchCheckBox']) {
             $markerArray['###SWORD_PREV_VALUE###'] = htmlspecialchars($this->conf['show.']['clearSearchBox'] ? '' : $this->piVars['sword']);
             $markerArray['###SWORD_PREV_INCLUDE_CHECKED###'] = $this->piVars['sword_prev_include'] ? ' checked="checked"' : '';
-            $markerArray['###ADD_TO_CURRENT_SEARCH###'] = $this->pi_getLL('makerating_addToCurrentSearch', '', true);
+            $markerArray['###ADD_TO_CURRENT_SEARCH###'] = htmlspecialchars($this->pi_getLL('makerating_addToCurrentSearch'));
         } else {
             $html = $this->cObj->substituteSubpart($html, '###ADDITONAL_KEYWORD###', '');
         }
@@ -1451,7 +1451,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
         }
         if ($this->conf['show.']['advancedSearchLink']) {
             $linkToOtherMode = $this->piVars['ext'] ? $this->pi_getPageLink($this->frontendController->id, $this->frontendController->sPre) : $this->pi_getPageLink($this->frontendController->id, $this->frontendController->sPre, array($this->prefixId . '[ext]' => 1));
-            $markerArray['###LINKTOOTHERMODE###'] = '<a href="' . htmlspecialchars($linkToOtherMode) . '">' . $this->pi_getLL(($this->piVars['ext'] ? 'link_regularSearch' : 'link_advancedSearch'), '', true) . '</a>';
+            $markerArray['###LINKTOOTHERMODE###'] = '<a href="' . htmlspecialchars($linkToOtherMode) . '">' . htmlspecialchars($this->pi_getLL(($this->piVars['ext'] ? 'link_regularSearch' : 'link_advancedSearch'))) . '</a>';
         } else {
             $markerArray['###LINKTOOTHERMODE###'] = '';
         }
@@ -1496,8 +1496,8 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
             return '';
         }
         $html = $this->cObj->getSubpart($this->templateCode, '###RULES###');
-        $markerArray['###RULES_HEADER###'] = $this->pi_getLL('rules_header', '', true);
-        $markerArray['###RULES_TEXT###'] = nl2br(trim($this->pi_getLL('rules_text', '', true)));
+        $markerArray['###RULES_HEADER###'] = htmlspecialchars($this->pi_getLL('rules_header'));
+        $markerArray['###RULES_TEXT###'] = nl2br(trim(htmlspecialchars($this->pi_getLL('rules_text'))));
         $substitutedContent = $this->cObj->substituteMarkerArrayCached($html, $markerArray, array(), array());
         return $this->cObj->stdWrap($substitutedContent, $this->conf['rules_stdWrap.']);
     }
@@ -1519,7 +1519,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
         foreach ($this->resultSections as $id => $dat) {
             $markerArray = array();
             $aBegin = '<a href="' . htmlspecialchars($anchorPrefix . '#anchor_' . md5($id)) . '">';
-            $aContent = (trim($dat[0]) ? trim($dat[0]) : htmlspecialchars($this->pi_getLL('unnamedSection'))) . ' (' . $dat[1] . ' ' . $this->pi_getLL(($dat[1] > 1 ? 'word_pages' : 'word_page'), '', true) . ')';
+            $aContent = (trim($dat[0]) ? trim($dat[0]) : htmlspecialchars($this->pi_getLL('unnamedSection'))) . ' (' . $dat[1] . ' ' . htmlspecialchars($this->pi_getLL(($dat[1] > 1 ? 'word_pages' : 'word_page'))) . ')';
             $aEnd = '</a>';
             $markerArray['###LINK###'] = $aBegin . $aContent . $aEnd;
             $links[] = $this->cObj->substituteMarkerArrayCached($item, $markerArray, array(), array());
@@ -1579,21 +1579,21 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
                 }
             }
             // Description text
-            $markerArray['###TEXT_ITEM_SIZE###'] = $this->pi_getLL('res_size', '', true);
-            $markerArray['###TEXT_ITEM_CRDATE###'] = $this->pi_getLL('res_created', '', true);
-            $markerArray['###TEXT_ITEM_MTIME###'] = $this->pi_getLL('res_modified', '', true);
-            $markerArray['###TEXT_ITEM_PATH###'] = $this->pi_getLL('res_path', '', true);
+            $markerArray['###TEXT_ITEM_SIZE###'] = htmlspecialchars($this->pi_getLL('res_size'));
+            $markerArray['###TEXT_ITEM_CRDATE###'] = htmlspecialchars($this->pi_getLL('res_created'));
+            $markerArray['###TEXT_ITEM_MTIME###'] = htmlspecialchars($this->pi_getLL('res_modified'));
+            $markerArray['###TEXT_ITEM_PATH###'] = htmlspecialchars($this->pi_getLL('res_path'));
             $html = $this->cObj->substituteMarkerArrayCached($html, $markerArray, array(), array());
             // If there are subrows (eg. subpages in a PDF-file or if a duplicate page is selected due to user-login (phash_grouping))
             if (is_array($row['_sub'])) {
                 if ($this->multiplePagesType($row['item_type'])) {
-                    $html = str_replace('###TEXT_ROW_SUB###', $this->pi_getLL('res_otherMatching', '', true), $html);
+                    $html = str_replace('###TEXT_ROW_SUB###', htmlspecialchars($this->pi_getLL('res_otherMatching')), $html);
                     foreach ($row['_sub'] as $subRow) {
                         $html .= $this->printResultRow($subRow, 1);
                     }
                 } else {
-                    $markerArray['###TEXT_ROW_SUB###'] = $this->pi_getLL('res_otherMatching', '', true);
-                    $html = str_replace('###TEXT_ROW_SUB###', $this->pi_getLL('res_otherPageAsWell', '', true), $html);
+                    $markerArray['###TEXT_ROW_SUB###'] = htmlspecialchars($this->pi_getLL('res_otherMatching'));
+                    $html = str_replace('###TEXT_ROW_SUB###', htmlspecialchars($this->pi_getLL('res_otherPageAsWell')), $html);
                 }
             }
             return $html;
@@ -1625,7 +1625,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
             // Make browse-table/links:
             if ($pointer > 0) {
                 // all pages after the 1st one
-                $links[] = '<li>' . $this->makePointerSelector_link($this->pi_getLL('pi_list_browseresults_prev', '< Previous', true), $pointer - 1, $freeIndexUid) . '</li>';
+                $links[] = '<li>' . $this->makePointerSelector_link(htmlspecialchars($this->pi_getLL('pi_list_browseresults_prev', '< Previous')), $pointer - 1, $freeIndexUid) . '</li>';
             }
             $minPage = $pointer - (int)floor($maxPages / 2);
             $maxPage = $minPage + $maxPages - 1;
@@ -1637,7 +1637,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
                 $minPage -= $maxPage - $pageCount + 1;
                 $maxPage = $pageCount - 1;
             }
-            $pageLabel = $this->pi_getLL('pi_list_browseresults_page', 'Page', true);
+            $pageLabel = htmlspecialchars($this->pi_getLL('pi_list_browseresults_page', 'Page'));
             for ($a = $minPage; $a <= $maxPage; $a++) {
                 $label = trim($pageLabel . ' ' . ($a + 1));
                 $link = $this->makePointerSelector_link($label, $a, $freeIndexUid);
@@ -1648,7 +1648,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
                 }
             }
             if ($pointer + 1 < $pageCount) {
-                $links[] = '<li>' . $this->makePointerSelector_link($this->pi_getLL('pi_list_browseresults_next', 'Next >', true), $pointer + 1, $freeIndexUid) . '</li>';
+                $links[] = '<li>' . $this->makePointerSelector_link(htmlspecialchars($this->pi_getLL('pi_list_browseresults_next', 'Next >')), $pointer + 1, $freeIndexUid) . '</li>';
             }
         }
         if (!empty($links)) {
@@ -1761,17 +1761,17 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
             if ($c) {
                 switch ($v['oper']) {
                     case 'OR':
-                        $searchingFor .= ' ' . $this->pi_getLL('searchFor_or', '', true) . ' ' . $this->wrapSW($v['sword']);
+                        $searchingFor .= ' ' . htmlspecialchars($this->pi_getLL('searchFor_or')) . ' ' . $this->wrapSW($v['sword']);
                         break;
                     case 'AND NOT':
-                        $searchingFor .= ' ' . $this->pi_getLL('searchFor_butNot', '', true) . ' ' . $this->wrapSW($v['sword']);
+                        $searchingFor .= ' ' . htmlspecialchars($this->pi_getLL('searchFor_butNot')) . ' ' . $this->wrapSW($v['sword']);
                         break;
                     default:
                         // AND...
-                        $searchingFor .= ' ' . $this->pi_getLL('searchFor_and', '', true) . ' ' . $this->wrapSW($v['sword']);
+                        $searchingFor .= ' ' . htmlspecialchars($this->pi_getLL('searchFor_and')) . ' ' . $this->wrapSW($v['sword']);
                 }
             } else {
-                $searchingFor = $this->pi_getLL('searchFor', '', true) . ' ' . $this->wrapSW($v['sword']);
+                $searchingFor = htmlspecialchars($this->pi_getLL('searchFor')) . ' ' . $this->wrapSW($v['sword']);
             }
             $c++;
         }
@@ -1956,7 +1956,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
             }
             $output = $outputStr ?: $markedSW;
         } else {
-            $output = '<span class="noResume">' . $this->pi_getLL('res_noResume', '', true) . '</span>';
+            $output = '<span class="noResume">' . htmlspecialchars($this->pi_getLL('res_noResume')) . '</span>';
         }
         return $output;
     }
@@ -2140,7 +2140,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
     public function makeAccessIndication($id)
     {
         if (is_array($this->fe_groups_required[$id]) && !empty($this->fe_groups_required[$id])) {
-            return '<img src="' . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath('indexed_search') . 'Resources/Public/Icons/FileTypes/locked.gif" width="12" height="15" vspace="5" title="' . sprintf($this->pi_getLL('res_memberGroups', '', true), implode(',', array_unique($this->fe_groups_required[$id]))) . '" alt="" />';
+            return '<img src="' . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath('indexed_search') . 'Resources/Public/Icons/FileTypes/locked.gif" width="12" height="15" vspace="5" title="' . sprintf(htmlspecialchars($this->pi_getLL('res_memberGroups')), implode(',', array_unique($this->fe_groups_required[$id]))) . '" alt="" />';
         }
 
         return '';
index 29d87f4..05a05a3 100644 (file)
@@ -1,6 +1,6 @@
-===========================================================================
-Deprecation: #71917 - Deprecate the argument 'hsc' for getLL, getLLL and sL
-===========================================================================
+=====================================================================================
+Deprecation: #71917 - Deprecate the argument 'hsc' for getLL, getLLL, sL and pi_getLL
+=====================================================================================
 
 Description
 ===========
@@ -11,11 +11,15 @@ The parameter :php:`$hsc` within the following methods of :php:`TYPO3\CMS\Lang\L
 * :php:`getLLL()`
 * :php:`sL()`
 
+The parameter :php:`$hsc` within the following method of :php:`TYPO3\CMS\Frontend\Plugin\AbstractPlugin` has been marked as deprecated:
+
+* :php:`pi_getLL()`
+
 
 Impact
 ======
 
-Directly or indirectly using any of the methods :php:`getLL()`, :php:`getLLL()` or :php:`sL()` with the parameter :php:`$hsc` will trigger a deprecation log entry.
+Directly or indirectly using any of the methods :php:`getLL()`, :php:`getLLL()`, :php:`sL()` or :php:`pi_getLL()` with the parameter :php:`$hsc` will trigger a deprecation log entry.
 
 
 Affected Installations
@@ -27,4 +31,4 @@ Any installation with a third-party extension calling one of the methods in its
 Migration
 =========
 
-If the return value of these methods is output in HTML context use :php:`htmlspecialchars` directly to properly escape the content.
\ No newline at end of file
+If the return value of these methods is output in HTML context use :php:`htmlspecialchars` directly to properly escape the content.
index 5b95ca2..04f5bed 100644 (file)
@@ -275,15 +275,15 @@ class FrontendLoginController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
             $markerArray['###STATUS_MESSAGE###'] = $this->getDisplayText('forgot_reset_message', $this->conf['forgotMessage_stdWrap.']);
             $markerArray['###BACKLINK_LOGIN###'] = '';
         }
-        $markerArray['###BACKLINK_LOGIN###'] = $this->getPageLink($this->pi_getLL('ll_forgot_header_backToLogin', '', true), array());
+        $markerArray['###BACKLINK_LOGIN###'] = $this->getPageLink(htmlspecialchars($this->pi_getLL('ll_forgot_header_backToLogin')), array());
         $markerArray['###STATUS_HEADER###'] = $this->getDisplayText('forgot_header', $this->conf['forgotHeader_stdWrap.']);
-        $markerArray['###LEGEND###'] = $this->pi_getLL('legend', $this->pi_getLL('reset_password'), true);
+        $markerArray['###LEGEND###'] = htmlspecialchars($this->pi_getLL('legend', $this->pi_getLL('reset_password')));
         $markerArray['###ACTION_URI###'] = $this->getPageLink('', array($this->prefixId . '[forgot]' => 1), true);
-        $markerArray['###EMAIL_LABEL###'] = $this->pi_getLL('your_email', '', true);
-        $markerArray['###FORGOT_PASSWORD_ENTEREMAIL###'] = $this->pi_getLL('forgot_password_enterEmail', '', true);
+        $markerArray['###EMAIL_LABEL###'] = htmlspecialchars($this->pi_getLL('your_email'));
+        $markerArray['###FORGOT_PASSWORD_ENTEREMAIL###'] = htmlspecialchars($this->pi_getLL('forgot_password_enterEmail'));
         $markerArray['###FORGOT_EMAIL###'] = $this->prefixId . '[forgot_email]';
-        $markerArray['###SEND_PASSWORD###'] = $this->pi_getLL('reset_password', '', true);
-        $markerArray['###DATA_LABEL###'] = $this->pi_getLL('ll_enter_your_data', '', true);
+        $markerArray['###SEND_PASSWORD###'] = htmlspecialchars($this->pi_getLL('reset_password'));
+        $markerArray['###DATA_LABEL###'] = htmlspecialchars($this->pi_getLL('ll_enter_your_data'));
         $markerArray = array_merge($markerArray, $this->getUserFieldMarkers());
         // Generate hash
         $hash = md5($this->generatePassword(3));
@@ -381,7 +381,7 @@ class FrontendLoginController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
                         $done = true;
                         $subpartArray['###CHANGEPASSWORD_FORM###'] = '';
                         $markerArray['###BACKLINK_LOGIN###'] = $this->getPageLink(
-                            $this->pi_getLL('ll_forgot_header_backToLogin', '', true),
+                            htmlspecialchars($this->pi_getLL('ll_forgot_header_backToLogin')),
                             array($this->prefixId . '[redirectReferrer]' => 'off')
                         );
                     }
@@ -392,13 +392,13 @@ class FrontendLoginController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
                         $this->prefixId . '[user]' => $user['uid'],
                         $this->prefixId . '[forgothash]' => $piHash
                     ), true);
-                    $markerArray['###LEGEND###'] = $this->pi_getLL('change_password', '', true);
-                    $markerArray['###NEWPASSWORD1_LABEL###'] = $this->pi_getLL('newpassword_label1', '', true);
-                    $markerArray['###NEWPASSWORD2_LABEL###'] = $this->pi_getLL('newpassword_label2', '', true);
+                    $markerArray['###LEGEND###'] = htmlspecialchars($this->pi_getLL('change_password'));
+                    $markerArray['###NEWPASSWORD1_LABEL###'] = htmlspecialchars($this->pi_getLL('newpassword_label1'));
+                    $markerArray['###NEWPASSWORD2_LABEL###'] = htmlspecialchars($this->pi_getLL('newpassword_label2'));
                     $markerArray['###NEWPASSWORD1###'] = $this->prefixId . '[password1]';
                     $markerArray['###NEWPASSWORD2###'] = $this->prefixId . '[password2]';
                     $markerArray['###STORAGE_PID###'] = $this->spid;
-                    $markerArray['###SEND_PASSWORD###'] = $this->pi_getLL('change_password', '', true);
+                    $markerArray['###SEND_PASSWORD###'] = htmlspecialchars($this->pi_getLL('change_password'));
                     $markerArray['###FORGOTHASH###'] = $piHash;
                 }
             }
@@ -494,13 +494,13 @@ class FrontendLoginController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
         $markerArray['###STATUS_HEADER###'] = $this->getDisplayText('status_header', $this->conf['logoutHeader_stdWrap.']);
         $markerArray['###STATUS_MESSAGE###'] = $this->getDisplayText('status_message', $this->conf['logoutMessage_stdWrap.']);
         $this->cObj->stdWrap($this->flexFormValue('message', 's_status'), $this->conf['logoutMessage_stdWrap.']);
-        $markerArray['###LEGEND###'] = $this->pi_getLL('logout', '', true);
+        $markerArray['###LEGEND###'] = htmlspecialchars($this->pi_getLL('logout'));
         $markerArray['###ACTION_URI###'] = $this->getPageLink('', array(), true);
-        $markerArray['###LOGOUT_LABEL###'] = $this->pi_getLL('logout', '', true);
+        $markerArray['###LOGOUT_LABEL###'] = htmlspecialchars($this->pi_getLL('logout'));
         $markerArray['###NAME###'] = htmlspecialchars($this->frontendController->fe_user->user['name']);
         $markerArray['###STORAGE_PID###'] = $this->spid;
         $markerArray['###USERNAME###'] = htmlspecialchars($this->frontendController->fe_user->user['username']);
-        $markerArray['###USERNAME_LABEL###'] = $this->pi_getLL('username', '', true);
+        $markerArray['###USERNAME_LABEL###'] = htmlspecialchars($this->pi_getLL('username'));
         $markerArray['###NOREDIRECT###'] = $this->noRedirect ? '1' : '0';
         $markerArray['###PREFIXID###'] = $this->prefixId;
         $markerArray = array_merge($markerArray, $this->getUserFieldMarkers());
@@ -522,7 +522,7 @@ class FrontendLoginController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
         $subpart = $this->cObj->getSubpart($this->template, '###TEMPLATE_LOGIN###');
         $subpartArray = ($linkpartArray = ($markerArray = array()));
         $gpRedirectUrl = '';
-        $markerArray['###LEGEND###'] = $this->pi_getLL('oLabel_header_welcome', '', true);
+        $markerArray['###LEGEND###'] = htmlspecialchars($this->pi_getLL('oLabel_header_welcome'));
         if ($this->logintype === 'login') {
             if ($this->userIsLoggedIn) {
                 // login success
@@ -611,20 +611,20 @@ class FrontendLoginController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
         $markerArray['###ACTION_URI###'] = $this->getPageLink('', array(), true);
         // Used by kb_md5fepw extension...
         $markerArray['###EXTRA_HIDDEN###'] = $extraHidden;
-        $markerArray['###LEGEND###'] = $this->pi_getLL('login', '', true);
-        $markerArray['###LOGIN_LABEL###'] = $this->pi_getLL('login', '', true);
+        $markerArray['###LEGEND###'] = htmlspecialchars($this->pi_getLL('login'));
+        $markerArray['###LOGIN_LABEL###'] = htmlspecialchars($this->pi_getLL('login'));
         // Used by kb_md5fepw extension...
         $markerArray['###ON_SUBMIT###'] = $onSubmit;
-        $markerArray['###PASSWORD_LABEL###'] = $this->pi_getLL('password', '', true);
+        $markerArray['###PASSWORD_LABEL###'] = htmlspecialchars($this->pi_getLL('password'));
         $markerArray['###STORAGE_PID###'] = $this->spid;
-        $markerArray['###USERNAME_LABEL###'] = $this->pi_getLL('username', '', true);
+        $markerArray['###USERNAME_LABEL###'] = htmlspecialchars($this->pi_getLL('username'));
         $markerArray['###REDIRECT_URL###'] = htmlspecialchars($gpRedirectUrl);
         $markerArray['###NOREDIRECT###'] = $this->noRedirect ? '1' : '0';
         $markerArray['###PREFIXID###'] = $this->prefixId;
         $markerArray = array_merge($markerArray, $this->getUserFieldMarkers());
         if ($this->conf['showForgotPasswordLink']) {
             $linkpartArray['###FORGOT_PASSWORD_LINK###'] = explode('|', $this->getPageLink('|', array($this->prefixId . '[forgot]' => 1)));
-            $markerArray['###FORGOT_PASSWORD###'] = $this->pi_getLL('ll_forgot_header', '', true);
+            $markerArray['###FORGOT_PASSWORD###'] = htmlspecialchars($this->pi_getLL('ll_forgot_header'));
         } else {
             $subpartArray['###FORGOTP_VALID###'] = '';
         }
@@ -636,7 +636,7 @@ class FrontendLoginController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin
             && ($permalogin === 0 || $permalogin === 1)
             && $GLOBALS['TYPO3_CONF_VARS']['FE']['lifetime'] > 0
         ) {
-            $markerArray['###PERMALOGIN###'] = $this->pi_getLL('permalogin', '', true);
+            $markerArray['###PERMALOGIN###'] = htmlspecialchars($this->pi_getLL('permalogin'));
             if ($permalogin === 1) {
                 $markerArray['###PERMALOGIN_HIDDENFIELD_ATTRIBUTES###'] = 'disabled="disabled"';
                 $markerArray['###PERMALOGIN_CHECKBOX_ATTRIBUTES###'] = 'checked="checked"';
index 3f709ce..4056b0d 100644 (file)
@@ -504,7 +504,7 @@ class AbstractPlugin
      * @param string $tableParams Attributes for the table tag which is wrapped around the table cells containing the browse links
      * @param array $wrapArr Array with elements to overwrite the default $wrapper-array.
      * @param string $pointerName varname for the pointer.
-     * @param bool $hscText Enable htmlspecialchars() for the pi_getLL function (set this to FALSE if you want f.e use images instead of text for links like 'previous' and 'next').
+     * @param bool $hscText Enable htmlspecialchars() on language labels
      * @param bool $forceOutput Forces the output of the page browser if you set this option to "TRUE" (otherwise it's only drawn if enough entries are available)
      * @return string Output HTML-Table, wrapped in <div>-tags with a class attribute (if $wrapArr is not passed,
      */
@@ -579,17 +579,21 @@ class AbstractPlugin
             // Link to first page
             if ($showFirstLast) {
                 if ($pointer > 0) {
-                    $links[] = $this->cObj->wrap($this->pi_linkTP_keepPIvars($this->pi_getLL('pi_list_browseresults_first', '<< First', $hscText), array($pointerName => null), $pi_isOnlyFields), $wrapper['inactiveLinkWrap']);
+                    $label = $this->pi_getLL('pi_list_browseresults_first', '<< First');
+                    $links[] = $this->cObj->wrap($this->pi_linkTP_keepPIvars($hscText ? htmlspecialchars($label) : $label, array($pointerName => null), $pi_isOnlyFields), $wrapper['inactiveLinkWrap']);
                 } else {
-                    $links[] = $this->cObj->wrap($this->pi_getLL('pi_list_browseresults_first', '<< First', $hscText), $wrapper['disabledLinkWrap']);
+                    $label = $this->pi_getLL('pi_list_browseresults_first', '<< First');
+                    $links[] = $this->cObj->wrap(hscText ? htmlspecialchars($label) : $label, $wrapper['disabledLinkWrap']);
                 }
             }
             // Link to previous page
             if ($alwaysPrev >= 0) {
                 if ($pointer > 0) {
-                    $links[] = $this->cObj->wrap($this->pi_linkTP_keepPIvars($this->pi_getLL('pi_list_browseresults_prev', '< Previous', $hscText), array($pointerName => ($pointer - 1) ?: ''), $pi_isOnlyFields), $wrapper['inactiveLinkWrap']);
+                    $label = $this->pi_getLL('pi_list_browseresults_prev', '< Previous');
+                    $links[] = $this->cObj->wrap($this->pi_linkTP_keepPIvars($hscText ? htmlspecialchars($label) : $label, array($pointerName => ($pointer - 1) ?: ''), $pi_isOnlyFields), $wrapper['inactiveLinkWrap']);
                 } elseif ($alwaysPrev) {
-                    $links[] = $this->cObj->wrap($this->pi_getLL('pi_list_browseresults_prev', '< Previous', $hscText), $wrapper['disabledLinkWrap']);
+                    $label = $this->pi_getLL('pi_list_browseresults_prev', '< Previous');
+                    $links[] = $this->cObj->wrap($hscText ? htmlspecialchars($label) : $label, $wrapper['disabledLinkWrap']);
                 }
             }
             // Links to pages
@@ -597,7 +601,8 @@ class AbstractPlugin
                 if ($this->internal['showRange']) {
                     $pageText = ($a * $results_at_a_time + 1) . '-' . min($count, ($a + 1) * $results_at_a_time);
                 } else {
-                    $pageText = trim($this->pi_getLL('pi_list_browseresults_page', 'Page', $hscText) . ' ' . ($a + 1));
+                    $label = $this->pi_getLL('pi_list_browseresults_page', 'Page');
+                    $pageText = trim($hscText ? htmlspecialchars($label) : $label . ' ' . ($a + 1));
                 }
                 // Current page
                 if ($pointer == $a) {
@@ -613,17 +618,21 @@ class AbstractPlugin
             if ($pointer < $totalPages - 1 || $showFirstLast) {
                 // Link to next page
                 if ($pointer >= $totalPages - 1) {
-                    $links[] = $this->cObj->wrap($this->pi_getLL('pi_list_browseresults_next', 'Next >', $hscText), $wrapper['disabledLinkWrap']);
+                    $label = $this->pi_getLL('pi_list_browseresults_next', 'Next >');
+                    $links[] = $this->cObj->wrap($hscText ? htmlspecialchars($label) : $label, $wrapper['disabledLinkWrap']);
                 } else {
-                    $links[] = $this->cObj->wrap($this->pi_linkTP_keepPIvars($this->pi_getLL('pi_list_browseresults_next', 'Next >', $hscText), array($pointerName => $pointer + 1), $pi_isOnlyFields), $wrapper['inactiveLinkWrap']);
+                    $label = $this->pi_getLL('pi_list_browseresults_next', 'Next >');
+                    $links[] = $this->cObj->wrap($this->pi_linkTP_keepPIvars($hscText ? htmlspecialchars($label) : $label, array($pointerName => $pointer + 1), $pi_isOnlyFields), $wrapper['inactiveLinkWrap']);
                 }
             }
             // Link to last page
             if ($showFirstLast) {
                 if ($pointer < $totalPages - 1) {
-                    $links[] = $this->cObj->wrap($this->pi_linkTP_keepPIvars($this->pi_getLL('pi_list_browseresults_last', 'Last >>', $hscText), array($pointerName => $totalPages - 1), $pi_isOnlyFields), $wrapper['inactiveLinkWrap']);
+                    $label = $this->pi_getLL('pi_list_browseresults_last', 'Last >>');
+                    $links[] = $this->cObj->wrap($this->pi_linkTP_keepPIvars($hscText ? htmlspecialchars($label) : $label, array($pointerName => $totalPages - 1), $pi_isOnlyFields), $wrapper['inactiveLinkWrap']);
                 } else {
-                    $links[] = $this->cObj->wrap($this->pi_getLL('pi_list_browseresults_last', 'Last >>', $hscText), $wrapper['disabledLinkWrap']);
+                    $label = $this->pi_getLL('pi_list_browseresults_last', 'Last >>');
+                    $links[] = $this->cObj->wrap($hscText ? htmlspecialchars($label) : $label, $wrapper['disabledLinkWrap']);
                 }
             }
             $theLinks = $this->cObj->wrap(implode(LF, $links), $wrapper['browseLinksWrap']);
@@ -938,6 +947,9 @@ class AbstractPlugin
         }
         $output = isset($this->LLtestPrefix) ? $this->LLtestPrefix . $word : $word;
         if ($hsc) {
+            GeneralUtility::deprecationLog(
+                'Calling pi_getLL() with argument \'hsc\' has been deprecated.'
+            );
             $output = htmlspecialchars($output);
         }
         return $output;