17 use Doctrine\DBAL\Driver\Statement;
18 use Psr\Http\Message\ServerRequestInterface;
95 public $internal = [
'res_count' => 0,
'results_at_a_time' => 20,
'maxPages' => 10,
'currentRow' => [],
'currentTable' =>
''];
249 $this->templateService = GeneralUtility::makeInstance(MarkerBasedTemplateService::class);
251 if ($this->prefixId) {
252 $this->piVars = GeneralUtility::_GPmerged($this->prefixId);
262 if ($this->pi_checkCHash && !empty($this->piVars)) {
263 $this->frontendController->reqCHash();
268 $this->LLkey = $siteLanguage->getTypo3Language();
269 } elseif (!empty($this->frontendController->config[
'config'][
'language'])) {
270 $this->LLkey = $this->frontendController->config[
'config'][
'language'];
273 if (empty($this->frontendController->config[
'config'][
'language_alt'])) {
275 $locales = GeneralUtility::makeInstance(Locales::class);
276 if (in_array($this->LLkey,
$locales->getLocales())) {
277 $this->altLLkey =
'';
278 foreach (
$locales->getLocaleDependencies($this->LLkey) as $language) {
279 $this->altLLkey .= $language .
',';
281 $this->altLLkey = rtrim($this->altLLkey,
',');
284 $this->altLLkey = $this->frontendController->config[
'config'][
'language_alt'];
297 foreach (
$conf as $key => $confNextLevel) {
298 if (strpos($key,
'.') !==
false) {
299 $key = substr($key, 0, -1);
302 foreach ($confNextLevel as $subKey => $subConfNextLevel) {
303 if (is_array($subConfNextLevel) && strpos($subKey,
'.') !==
false && $subKey !==
'stdWrap.') {
309 foreach ($confNextLevel as $subKey => $subConfNextLevel) {
310 if (is_array($subConfNextLevel) && $subKey ===
'stdWrap.') {
311 $conf[$key] = $this->cObj->stdWrap(
$conf[$key] ??
'',
$conf[$key .
'.'][
'stdWrap.'] ?? []);
312 unset(
$conf[$key .
'.'][
'stdWrap.']);
313 if (empty(
$conf[$key .
'.'])) {
314 unset(
$conf[$key .
'.']);
328 if (isset($this->conf[
'_DEFAULT_PI_VARS.']) && is_array($this->conf[
'_DEFAULT_PI_VARS.'])) {
330 $tmp = $this->conf[
'_DEFAULT_PI_VARS.'];
332 $this->piVars = $tmp;
355 public function pi_getPageLink($id, $target =
'', $urlParameters = [])
357 return $this->cObj->getTypoLink_URL($id, $urlParameters, $target);
372 public function pi_linkToPage($str, $id, $target =
'', $urlParameters = [])
374 return $this->cObj->getTypoLink($str, $id, $urlParameters, $target);
388 public function pi_linkTP($str, $urlParameters = [], $cache =
false, $altPageId = 0)
391 $conf[
'useCacheHash'] = $this->pi_USER_INT_obj ? 0 : $cache;
392 $conf[
'no_cache'] = $this->pi_USER_INT_obj ? 0 : !$cache;
393 $conf[
'parameter'] = $altPageId ? $altPageId : ($this->pi_tmpPageId ? $this->pi_tmpPageId : $this->frontendController->id);
395 return $this->cObj->typoLink($str,
$conf);
411 public function pi_linkTP_keepPIvars($str, $overrulePIvars = [], $cache =
false, $clearAnyway =
false, $altPageId = 0)
413 if (is_array($this->piVars) && is_array($overrulePIvars) && !$clearAnyway) {
418 if ($this->pi_autoCacheEn) {
422 return $this->
pi_linkTP($str, [$this->prefixId => $overrulePIvars], $cache, $altPageId);
439 return $this->cObj->lastTypoLinkUrl;
455 public function pi_list_linkSingle($str, $uid, $cache =
false, $mergeArr = [], $urlOnly =
false, $altPageId = 0)
457 if ($this->prefixId) {
459 $overrulePIvars = $uid ? [
'showUid' => $uid] : [];
460 $overrulePIvars = array_merge($overrulePIvars, (array)$mergeArr);
461 $str = $this->
pi_linkTP($str, [$this->prefixId => $overrulePIvars], $cache, $altPageId);
463 $overrulePIvars = [
'showUid' => $uid ?:
''];
464 $overrulePIvars = array_merge($overrulePIvars, (array)$mergeArr);
469 $str = $this->cObj->lastTypoLinkUrl;
483 public function pi_openAtagHrefInJSwindow($str, $winName =
'', $winParams =
'width=670,height=500,status=0,menubar=0,scrollbars=1,resizable=1')
485 if (preg_match(
'/(.*)(<a[^>]*>)(.*)/i', $str, $match)) {
487 $aTagContent = GeneralUtility::get_tag_attributes($match[2],
true);
488 $onClick =
'vHWin=window.open('
489 . GeneralUtility::quoteJSvalue($this->frontendController->baseUrlWrap($aTagContent[
'href'])) .
','
490 . GeneralUtility::quoteJSvalue($winName ?: md5($aTagContent[
'href'])) .
','
491 . GeneralUtility::quoteJSvalue($winParams) .
');vHWin.focus();return false;';
492 $match[2] =
'<a href="#" onclick="' . htmlspecialchars($onClick) .
'">';
493 $str = $match[1] . $match[2] . $match[3];
527 public function pi_list_browseresults($showResultCount = 1, $tableParams =
'', $wrapArr = [], $pointerName =
'pointer', $hscText =
true, $forceOutput =
false)
529 foreach (
$GLOBALS[
'TYPO3_CONF_VARS'][
'SC_OPTIONS'][self::class][
'pi_list_browseresults'] ?? [] as $classRef) {
530 $hookObj = GeneralUtility::makeInstance($classRef);
531 if (method_exists($hookObj,
'pi_list_browseresults')) {
532 $pageBrowser = $hookObj->pi_list_browseresults($showResultCount, $tableParams, $wrapArr, $pointerName, $hscText, $forceOutput, $this);
533 if (is_string($pageBrowser) && trim($pageBrowser) !==
'') {
549 $pointer = (int)$this->piVars[$pointerName];
550 $count = (int)$this->
internal[
'res_count'];
552 $totalPages = ceil($count / $results_at_a_time);
555 if (!$forceOutput && $count <= $results_at_a_time) {
562 $showResultCount = (int)$showResultCount;
564 $showFirstLast = !empty($this->
internal[
'showFirstLast']);
567 if (isset($this->
internal[
'pagefloat'])) {
568 if (strtoupper($this->
internal[
'pagefloat']) ===
'CENTER') {
569 $pagefloat = ceil(($maxPages - 1) / 2);
579 $wrapper[
'disabledLinkWrap'] =
'<td class="nowrap"><p>|</p></td>';
580 $wrapper[
'inactiveLinkWrap'] =
'<td class="nowrap"><p>|</p></td>';
581 $wrapper[
'activeLinkWrap'] =
'<td' . $this->
pi_classParam(
'browsebox-SCell') .
' class="nowrap"><p>|</p></td>';
582 $wrapper[
'browseLinksWrap'] = rtrim(
'<table ' . $tableParams) .
'><tr>|</tr></table>';
583 $wrapper[
'showResultsWrap'] =
'<p>|</p>';
584 $wrapper[
'browseBoxWrap'] =
'
592 $wrapper = array_merge($wrapper, $wrapArr);
594 if ($showResultCount != 2) {
595 if ($pagefloat > -1) {
596 $lastPage = min($totalPages, max($pointer + 1 + $pagefloat, $maxPages));
597 $firstPage = max(0, $lastPage - $maxPages);
605 if ($showFirstLast) {
607 $label = $this->
pi_getLL(
'pi_list_browseresults_first',
'<< First');
610 $label = $this->
pi_getLL(
'pi_list_browseresults_first',
'<< First');
611 $links[] = $this->cObj->wrap($hscText ? htmlspecialchars($label) : $label, $wrapper[
'disabledLinkWrap']);
615 if ($alwaysPrev >= 0) {
617 $label = $this->
pi_getLL(
'pi_list_browseresults_prev',
'< Previous');
618 $links[] = $this->cObj->wrap($this->
pi_linkTP_keepPIvars($hscText ? htmlspecialchars($label) : $label, [$pointerName => ($pointer - 1) ?:
''],
$pi_isOnlyFields), $wrapper[
'inactiveLinkWrap']);
619 } elseif ($alwaysPrev) {
620 $label = $this->
pi_getLL(
'pi_list_browseresults_prev',
'< Previous');
621 $links[] = $this->cObj->wrap($hscText ? htmlspecialchars($label) : $label, $wrapper[
'disabledLinkWrap']);
625 for ($a = $firstPage; $a < $lastPage; $a++) {
626 if ($this->
internal[
'showRange']) {
627 $pageText = ($a * $results_at_a_time + 1) .
'-' . min($count, ($a + 1) * $results_at_a_time);
629 $label = $this->
pi_getLL(
'pi_list_browseresults_page',
'Page');
630 $pageText = trim(($hscText ? htmlspecialchars($label) : $label) .
' ' . ($a + 1));
633 if ($pointer == $a) {
634 if ($this->
internal[
'dontLinkActivePage']) {
635 $links[] = $this->cObj->wrap($pageText, $wrapper[
'activeLinkWrap']);
643 if ($pointer < $totalPages - 1 || $showFirstLast) {
645 if ($pointer >= $totalPages - 1) {
646 $label = $this->
pi_getLL(
'pi_list_browseresults_next',
'Next >');
647 $links[] = $this->cObj->wrap($hscText ? htmlspecialchars($label) : $label, $wrapper[
'disabledLinkWrap']);
649 $label = $this->
pi_getLL(
'pi_list_browseresults_next',
'Next >');
650 $links[] = $this->cObj->wrap($this->
pi_linkTP_keepPIvars($hscText ? htmlspecialchars($label) : $label, [$pointerName => $pointer + 1],
$pi_isOnlyFields), $wrapper[
'inactiveLinkWrap']);
654 if ($showFirstLast) {
655 if ($pointer < $totalPages - 1) {
656 $label = $this->
pi_getLL(
'pi_list_browseresults_last',
'Last >>');
657 $links[] = $this->cObj->wrap($this->
pi_linkTP_keepPIvars($hscText ? htmlspecialchars($label) : $label, [$pointerName => $totalPages - 1],
$pi_isOnlyFields), $wrapper[
'inactiveLinkWrap']);
659 $label = $this->
pi_getLL(
'pi_list_browseresults_last',
'Last >>');
660 $links[] = $this->cObj->wrap($hscText ? htmlspecialchars($label) : $label, $wrapper[
'disabledLinkWrap']);
663 $theLinks = $this->cObj->wrap(implode(LF, $links), $wrapper[
'browseLinksWrap']);
667 $pR1 = $pointer * $results_at_a_time + 1;
668 $pR2 = $pointer * $results_at_a_time + $results_at_a_time;
669 if ($showResultCount) {
670 if ($wrapper[
'showResultsNumbersWrap']) {
673 $markerArray[
'###FROM###'] = $this->cObj->wrap($this->
internal[
'res_count'] > 0 ? $pR1 : 0, $wrapper[
'showResultsNumbersWrap']);
674 $markerArray[
'###TO###'] = $this->cObj->wrap(min($this->
internal[
'res_count'], $pR2), $wrapper[
'showResultsNumbersWrap']);
675 $markerArray[
'###OUT_OF###'] = $this->cObj->wrap($this->
internal[
'res_count'], $wrapper[
'showResultsNumbersWrap']);
676 $markerArray[
'###FROM_TO###'] = $this->cObj->wrap(($this->
internal[
'res_count'] > 0 ? $pR1 : 0) .
' ' . $this->
pi_getLL(
'pi_list_browseresults_to',
'to') .
' ' . min($this->
internal[
'res_count'], $pR2), $wrapper[
'showResultsNumbersWrap']);
677 $markerArray[
'###CURRENT_PAGE###'] = $this->cObj->wrap($pointer + 1, $wrapper[
'showResultsNumbersWrap']);
678 $markerArray[
'###TOTAL_PAGES###'] = $this->cObj->wrap($totalPages, $wrapper[
'showResultsNumbersWrap']);
680 $resultCountMsg = $this->templateService->substituteMarkerArray($this->
pi_getLL(
'pi_list_browseresults_displays',
'Displaying results ###FROM### to ###TO### out of ###OUT_OF###'), $markerArray);
683 $resultCountMsg = sprintf(str_replace(
'###SPAN_BEGIN###',
'<span' . $this->
pi_classParam(
'browsebox-strong') .
'>', $this->
pi_getLL(
'pi_list_browseresults_displays',
'Displaying results ###SPAN_BEGIN###%s to %s</span> out of ###SPAN_BEGIN###%s</span>')), $count > 0 ? $pR1 : 0, min($count, $pR2), $count);
685 $resultCountMsg = $this->cObj->wrap($resultCountMsg, $wrapper[
'showResultsWrap']);
687 $resultCountMsg =
'';
689 $sTables = $this->cObj->wrap($resultCountMsg . $theLinks, $wrapper[
'browseBoxWrap']);
703 foreach ($items as $k => $v) {
710 Mode selector (menu for list):
713 <' . rtrim(
'table ' . $tableParams) .
'>
715 ' . implode(
'', $cells) .
'
738 $this->
internal[
'currentRow'] =
'';
742 while ($this->
internal[
'currentRow'] = $statement->fetch()) {
752 <' . rtrim(
'table ' . $tableParams) .
'>
753 ' . implode(
'', $tRows) .
'
770 return '<tr' . ($c % 2 ? $this->
pi_classParam(
'listrow-odd') :
'') .
'><td><p>[dummy row]</p></td></tr>';
782 return '<tr' . $this->
pi_classParam(
'listrow-header') .
'><td><p>[dummy header row]</p></td></tr>';
798 return str_replace(
'_',
'-', $this->prefixId) . ($this->prefixId ?
'-' :
'') . $class;
813 $classNames = GeneralUtility::trimExplode(
',', $class);
814 foreach ($classNames as $className) {
817 $additionalClassNames = GeneralUtility::trimExplode(
',', $addClasses);
818 foreach ($additionalClassNames as $additionalClassName) {
819 $output .=
' ' . $additionalClassName;
821 return ' class="' . trim(
$output) .
'"';
833 $content =
'<div class="' . str_replace(
'_',
'-', $this->prefixId) .
'">
837 if (!$this->frontendController->config[
'config'][
'disablePrefixComment']) {
843 BEGIN: Content of extension "' . $this->extKey .
'", plugin "' . $this->prefixId .
'"
847 <!-- END: Content of extension "' . $this->extKey .
'", plugin "' . $this->prefixId .
'" -->
872 if (!$row || !$tablename) {
873 $row = $this->
internal[
'currentRow'];
874 $tablename = $this->
internal[
'currentTable'];
876 if ($this->frontendController->isBackendUserLoggedIn()) {
878 if (!is_object($this->pi_EPtemp_cObj)) {
879 $this->pi_EPtemp_cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);
880 $this->pi_EPtemp_cObj->setParent($this->cObj->data, $this->cObj->currentRecord);
883 $this->pi_EPtemp_cObj->start($row, $tablename);
885 $conf[
'allow'] =
'edit,new,delete,move,hide';
886 $panel = $this->pi_EPtemp_cObj->cObjGetSingle(
'EDITPANEL',
$conf,
'editpanel');
890 return '<!-- BEGIN: EDIT PANEL --><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td valign="top">' . $label .
'</td><td valign="top" align="right">' . $panel .
'</td></tr></table><!-- END: EDIT PANEL -->';
892 return '<!-- BEGIN: EDIT PANEL -->' . $panel .
'<!-- END: EDIT PANEL -->';
912 if ($this->frontendController->isBackendUserLoggedIn()) {
913 if (!$row || !$tablename) {
914 $row = $this->
internal[
'currentRow'];
915 $tablename = $this->
internal[
'currentTable'];
917 $conf = array_merge([
918 'beforeLastTag' => 1,
919 'iconTitle' => $title
921 $content = $this->cObj->editIcons($content, $tablename .
':' .
$fields,
$conf, $tablename .
':' . $row[
'uid'], $row,
'&viewUrl=' . rawurlencode(GeneralUtility::getIndpEnv(
'REQUEST_URI')));
939 public function pi_getLL($key, $alternativeLabel =
'')
942 if (!empty($this->LOCAL_LANG[$this->LLkey][$key][0][
'target'])
943 || isset($this->LOCAL_LANG_UNSET[$this->LLkey][$key])
946 } elseif ($this->altLLkey) {
947 $alternativeLanguageKeys = GeneralUtility::trimExplode(
',', $this->altLLkey,
true);
948 $alternativeLanguageKeys = array_reverse($alternativeLanguageKeys);
949 foreach ($alternativeLanguageKeys as $languageKey) {
950 if (!empty($this->LOCAL_LANG[$languageKey][$key][0][
'target'])
951 || isset($this->LOCAL_LANG_UNSET[$languageKey][$key])
954 $word = $this->LOCAL_LANG[$languageKey][$key][0][
'target'];
959 if ($word ===
null) {
960 if (!empty($this->LOCAL_LANG[
'default'][$key][0][
'target'])
961 || isset($this->LOCAL_LANG_UNSET[
'default'][$key])
964 $word = $this->LOCAL_LANG[
'default'][$key][0][
'target'];
967 $word = isset($this->LLtestPrefixAlt) ? $this->LLtestPrefixAlt . $alternativeLabel : $alternativeLabel;
970 return isset($this->LLtestPrefix) ? $this->LLtestPrefix . $word : $word;
983 public function pi_loadLL($languageFilePath =
'')
985 if ($this->LOCAL_LANG_loaded) {
989 if ($languageFilePath ===
'' && $this->scriptRelPath) {
990 $languageFilePath =
'EXT:' . $this->extKey .
'/' .
PathUtility::dirname($this->scriptRelPath) .
'/locallang.xlf';
992 if ($languageFilePath !==
'') {
994 $languageFactory = GeneralUtility::makeInstance(LocalizationFactory::class);
995 $this->LOCAL_LANG = $languageFactory->getParsedData($languageFilePath, $this->LLkey);
996 $alternativeLanguageKeys = GeneralUtility::trimExplode(
',', $this->altLLkey,
true);
997 foreach ($alternativeLanguageKeys as $languageKey) {
998 $tempLL = $languageFactory->getParsedData($languageFilePath, $languageKey);
999 if ($this->LLkey !==
'default' && isset($tempLL[$languageKey])) {
1000 $this->LOCAL_LANG[$languageKey] = $tempLL[$languageKey];
1004 if (isset($this->conf[
'_LOCAL_LANG.'])) {
1006 $this->LOCAL_LANG_UNSET = [];
1007 foreach ($this->conf[
'_LOCAL_LANG.'] as $languageKey => $languageArray) {
1009 $languageKey = substr($languageKey, 0, -1);
1011 if (is_array($languageArray) && isset($this->LOCAL_LANG[$languageKey])) {
1012 foreach ($languageArray as $labelKey => $labelValue) {
1013 if (!is_array($labelValue)) {
1014 $this->LOCAL_LANG[$languageKey][$labelKey][0][
'target'] = $labelValue;
1015 if ($labelValue ===
'') {
1016 $this->LOCAL_LANG_UNSET[$languageKey][$labelKey] =
'';
1024 $this->LOCAL_LANG_loaded =
true;
1046 public function pi_exec_query($table, $count =
false, $addWhere =
'', $mm_cat =
'', $groupBy =
'', $orderBy =
'', $query =
'')
1048 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
1049 $queryBuilder->from($table);
1055 $queryBuilder->setRestrictions(GeneralUtility::makeInstance(FrontendRestrictionContainer::class));
1060 $pidList = GeneralUtility::intExplode(
',', $this->
pi_getPidList($this->conf[
'pidList'], $this->conf[
'recursive']),
true);
1061 if (is_array($mm_cat)) {
1062 $queryBuilder->from($mm_cat[
'table'])
1063 ->from($mm_cat[
'mmtable'])
1065 $queryBuilder->expr()->eq($table .
'.uid', $queryBuilder->quoteIdentifier($mm_cat[
'mmtable'] .
'.uid_local')),
1066 $queryBuilder->expr()->eq($mm_cat[
'table'] .
'.uid', $queryBuilder->quoteIdentifier($mm_cat[
'mmtable'] .
'.uid_foreign')),
1067 $queryBuilder->expr()->in(
1069 $queryBuilder->createNamedParameter($pidList, Connection::PARAM_INT_ARRAY)
1072 if (strcmp($mm_cat[
'catUidList'],
'')) {
1073 $queryBuilder->andWhere(
1074 $queryBuilder->expr()->in(
1075 $mm_cat[
'table'] .
'.uid',
1076 $queryBuilder->createNamedParameter(
1077 GeneralUtility::intExplode(
',', $mm_cat[
'catUidList'],
true),
1078 Connection::PARAM_INT_ARRAY
1084 $queryBuilder->where(
1085 $queryBuilder->expr()->in(
1087 $queryBuilder->createNamedParameter($pidList, Connection::PARAM_INT_ARRAY)
1093 $queryBuilder->getRestrictions()->removeAll();
1096 list($tableListFragment, $whereFragment) = preg_split(
'/WHERE/i', trim($query), 2);
1098 list($tableName, $tableAlias) = $tableNameAndAlias;
1099 $queryBuilder->from($tableName, $tableAlias);
1109 if ($this->piVars[
'sword'] && $this->
internal[
'searchFieldList']) {
1111 $this->cObj->searchWhere($this->piVars[
'sword'], $this->internal[
'searchFieldList'], $table)
1113 if (!empty($searchWhere)) {
1114 $queryBuilder->andWhere($searchWhere);
1119 $queryBuilder->count(
'*');
1123 $queryBuilder->select(...GeneralUtility::trimExplode(
',',
$fields,
true));
1126 if (!$orderBy && $this->
internal[
'orderBy']) {
1127 if (GeneralUtility::inList($this->
internal[
'orderByList'], $this->
internal[
'orderBy'])) {
1128 $sorting = $this->
internal[
'descFlag'] ?
' DESC' :
'ASC';
1129 $queryBuilder->orderBy($table .
'.' . $this->
internal[
'orderBy'], $sorting);
1131 } elseif ($orderBy) {
1133 list($fieldName, $sorting) = $fieldNameAndSorting;
1134 $queryBuilder->addOrderBy($fieldName, $sorting);
1139 $pointer = (int)$this->piVars[
'pointer'];
1141 $queryBuilder->setFirstResult($pointer * $results_at_a_time)
1142 ->setMaxResults($results_at_a_time);
1145 if (!empty($groupBy)) {
1150 return $queryBuilder->execute();
1162 public function pi_getRecord($table, $uid, $checkPage =
false)
1164 return $this->frontendController->sys_page->checkRecord($table, $uid, $checkPage);
1176 if (!strcmp($pid_list,
'')) {
1177 $pid_list = $this->frontendController->id;
1180 $pid_list_arr = array_unique(GeneralUtility::trimExplode(
',', $pid_list,
true));
1182 foreach ($pid_list_arr as $val) {
1185 $_list = $this->cObj->getTreeList(-1 * $val, $recursive);
1187 $pid_list[] = $_list;
1191 return implode(
',', $pid_list);
1203 $list = GeneralUtility::trimExplode(
',', $fieldList,
true);
1205 foreach ($list as $listItem) {
1206 $return[] = $table .
'.' . $listItem;
1208 return implode(
',', $return);
1224 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
1225 $queryBuilder->setRestrictions(GeneralUtility::makeInstance(FrontendRestrictionContainer::class));
1226 $queryBuilder->select(
'*')
1229 $queryBuilder->expr()->eq(
1231 $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)
1236 if (!empty($orderBy)) {
1238 list($fieldName, $sorting) = $fieldNameAndSorting;
1239 $queryBuilder->addOrderBy($fieldName, $sorting);
1243 if (!empty($groupBy)) {
1247 if (!empty($limit)) {
1248 $limitValues = GeneralUtility::intExplode(
',', $limit,
true);
1249 if (count($limitValues) === 1) {
1250 $queryBuilder->setMaxResults($limitValues[0]);
1252 $queryBuilder->setFirstResult($limitValues[0])
1253 ->setMaxResults($limitValues[1]);
1257 $result = $queryBuilder->execute();
1259 while ($row = $result->fetch()) {
1260 $outArr[$row[
'uid']] = $row;
1280 $lowerThan = $lowerThan == -1 ? $this->pi_lowerThan : $lowerThan;
1281 $fList = GeneralUtility::trimExplode(
',', $fList,
true);
1283 foreach ($fList as $k) {
1285 unset($tempPiVars[$k]);
1288 if (empty($tempPiVars)) {
1306 if (is_array($inArray)) {
1307 foreach ($inArray as $fN => $fV) {
1308 if (!strcmp($inArray[$fN],
'')) {
1309 unset($inArray[$fN]);
1310 } elseif (is_array($this->pi_autoCacheFields[$fN])) {
1311 if (is_array($this->pi_autoCacheFields[$fN][
'range']) && (
int)$inArray[$fN] >= (
int)$this->pi_autoCacheFields[$fN][
'range'][0] && (
int)$inArray[$fN] <= (
int)$this->pi_autoCacheFields[$fN][
'range'][1]) {
1312 unset($inArray[$fN]);
1314 if (is_array($this->pi_autoCacheFields[$fN][
'list']) && in_array($inArray[$fN], $this->pi_autoCacheFields[$fN][
'list'])) {
1315 unset($inArray[$fN]);
1320 if (empty($inArray)) {
1337 $parseFunc = $this->frontendController->tmpl->setup[
'lib.'][
'parseFunc_RTE.'];
1338 if (is_array($parseFunc)) {
1339 $str = $this->cObj->parseFunc($str, $parseFunc);
1357 if (!is_array($this->cObj->data[$field]) && $this->cObj->data[$field]) {
1358 $this->cObj->data[$field] = GeneralUtility::xml2array($this->cObj->data[$field]);
1359 if (!is_array($this->cObj->data[$field])) {
1360 $this->cObj->data[$field] = [];
1375 public function pi_getFFvalue($T3FlexForm_array, $fieldName, $sheet =
'sDEF', $lang =
'lDEF', $value =
'vDEF')
1377 $sheetArray = is_array($T3FlexForm_array) ? $T3FlexForm_array[
'data'][$sheet][$lang] :
'';
1378 if (is_array($sheetArray)) {
1396 $tempArr = $sheetArray;
1397 foreach ($fieldNameArr as $k => $v) {
1399 if (is_array($tempArr)) {
1401 foreach ($tempArr as $values) {
1410 $tempArr = $tempArr[$v];
1413 return $tempArr[$value];
1423 $request =
$GLOBALS[
'TYPO3_REQUEST'] ??
null;
1425 && $request instanceof ServerRequestInterface
1426 && $request->getAttribute(
'language') instanceof
SiteLanguage
1427 ? $request->getAttribute(
'language')