‪TYPO3CMS  10.4
ContentObjectRendererTest.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
18 use Doctrine\DBAL\Platforms\SQLServerPlatform;
19 use Psr\Log\NullLogger;
31 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
32 
36 class ‪ContentObjectRendererTest extends FunctionalTestCase
37 {
39 
43  protected const ‪LANGUAGE_PRESETS = [
44  'EN' => ['id' => 0, 'title' => 'English', 'locale' => 'en_US.UTF8'],
45  ];
46 
50  protected ‪$subject;
51 
56 
57  protected function ‪setUp(): void
58  {
59  parent::setUp();
61  'test',
62  $this->‪buildSiteConfiguration(1, '/'),
63  [
64  $this->‪buildDefaultLanguageConfiguration('EN', '/en/'),
65  ],
66  [
67  $this->‪buildErrorHandlingConfiguration('Fluid', [404])
68  ]
69  );
70  $_SERVER['HTTP_HOST'] = 'example.com';
71  $_SERVER['REQUEST_URI'] = '/en/';
72  $_GET['id'] = 1;
73  GeneralUtility::flushInternalRuntimeCaches();
74  $site = GeneralUtility::makeInstance(SiteFinder::class)->getSiteByIdentifier('test');
75 
76  $this->typoScriptFrontendController = GeneralUtility::makeInstance(
77  TypoScriptFrontendController::class,
78  GeneralUtility::makeInstance(Context::class),
79  $site,
80  $site->getDefaultLanguage(),
81  new ‪PageArguments(1, '0', [])
82  );
83  $this->typoScriptFrontendController->sys_page = GeneralUtility::makeInstance(PageRepository::class);
84  $this->typoScriptFrontendController->tmpl = GeneralUtility::makeInstance(TemplateService::class);
85  $this->subject = GeneralUtility::makeInstance(ContentObjectRenderer::class, $this->typoScriptFrontendController);
86  }
87 
94  public function ‪getQueryDataProvider(): array
95  {
96  $data = [
97  'testing empty conf' => [
98  'tt_content',
99  [],
100  [
101  'SELECT' => '*'
102  ]
103  ],
104  'testing #17284: adding uid/pid for workspaces' => [
105  'tt_content',
106  [
107  'selectFields' => 'header,bodytext'
108  ],
109  [
110  'SELECT' => 'header,bodytext, [tt_content].[uid] AS [uid], [tt_content].[pid] AS [pid], [tt_content].[t3ver_state] AS [t3ver_state]'
111  ]
112  ],
113  'testing #17284: no need to add' => [
114  'tt_content',
115  [
116  'selectFields' => 'tt_content.*'
117  ],
118  [
119  'SELECT' => 'tt_content.*'
120  ]
121  ],
122  'testing #17284: no need to add #2' => [
123  'tt_content',
124  [
125  'selectFields' => '*'
126  ],
127  [
128  'SELECT' => '*'
129  ]
130  ],
131  'testing #29783: joined tables, prefix tablename' => [
132  'tt_content',
133  [
134  'selectFields' => 'tt_content.header,be_users.username',
135  'join' => 'be_users ON tt_content.cruser_id = be_users.uid'
136  ],
137  [
138  'SELECT' => 'tt_content.header,be_users.username, [tt_content].[uid] AS [uid], [tt_content].[pid] AS [pid], [tt_content].[t3ver_state] AS [t3ver_state]'
139  ]
140  ],
141  'testing #34152: single count(*), add nothing' => [
142  'tt_content',
143  [
144  'selectFields' => 'count(*)'
145  ],
146  [
147  'SELECT' => 'count(*)'
148  ]
149  ],
150  'testing #34152: single max(crdate), add nothing' => [
151  'tt_content',
152  [
153  'selectFields' => 'max(crdate)'
154  ],
155  [
156  'SELECT' => 'max(crdate)'
157  ]
158  ],
159  'testing #34152: single min(crdate), add nothing' => [
160  'tt_content',
161  [
162  'selectFields' => 'min(crdate)'
163  ],
164  [
165  'SELECT' => 'min(crdate)'
166  ]
167  ],
168  'testing #34152: single sum(is_siteroot), add nothing' => [
169  'tt_content',
170  [
171  'selectFields' => 'sum(is_siteroot)'
172  ],
173  [
174  'SELECT' => 'sum(is_siteroot)'
175  ]
176  ],
177  'testing #34152: single avg(crdate), add nothing' => [
178  'tt_content',
179  [
180  'selectFields' => 'avg(crdate)'
181  ],
182  [
183  'SELECT' => 'avg(crdate)'
184  ]
185  ],
186  'single distinct, add nothing' => [
187  'tt_content',
188  [
189  'selectFields' => 'DISTINCT crdate'
190  ],
191  [
192  'SELECT' => 'DISTINCT crdate'
193  ]
194  ]
195  ];
196 
197  return $data;
198  }
199 
209  public function ‪getQuery(string $table, array $conf, array $expected)
210  {
211  ‪$GLOBALS['TCA'] = [
212  'pages' => [
213  'ctrl' => [
214  'enablecolumns' => [
215  'disabled' => 'hidden'
216  ]
217  ]
218  ],
219  'tt_content' => [
220  'ctrl' => [
221  'enablecolumns' => [
222  'disabled' => 'hidden'
223  ],
224  'versioningWS' => true
225  ]
226  ],
227  ];
228 
229  $result = $this->subject->getQuery($table, $conf, true);
230 
231  $databasePlatform = (new ‪ConnectionPool())->getConnectionForTable('tt_content')->getDatabasePlatform();
232  foreach ($expected as $field => $value) {
233  if (!($databasePlatform instanceof SQLServerPlatform)) {
234  // Replace the MySQL backtick quote character with the actual quote character for the DBMS,
235  if ($field === 'SELECT') {
236  $quoteChar = $databasePlatform->getIdentifierQuoteCharacter();
237  $value = str_replace(['[', ']'], [$quoteChar, $quoteChar], $value);
238  }
239  }
240  self::assertEquals($value, $result[$field]);
241  }
242  }
243 
248  {
249  $this->subject = $this->getAccessibleMock(ContentObjectRenderer::class, ['getTreeList'], [$this->typoScriptFrontendController]);
250  $this->subject->start([], 'tt_content');
251 
252  $conf = [
253  'recursive' => '15',
254  'pidInList' => '16, -35'
255  ];
256 
257  $this->subject->expects(self::exactly(2))
258  ->method('getTreeList')
259  ->withConsecutive([-16, 15], [-35, 15])
260  ->willReturnOnConsecutiveCalls('15,16', '15,35');
261 
262  $this->subject->getQuery('tt_content', $conf, true);
263  }
264 
269  {
270  $this->typoScriptFrontendController->id = 27;
271 
272  $this->subject = $this->getAccessibleMock(ContentObjectRenderer::class, ['getTreeList'], [$this->typoScriptFrontendController]);
273  $this->subject->start([], 'tt_content');
274 
275  $conf = [
276  'pidInList' => 'this',
277  'recursive' => '4'
278  ];
279 
280  $this->subject->expects(self::once())
281  ->method('getTreeList')
282  ->with(-27)
283  ->willReturn('27');
284 
285  $this->subject->getQuery('tt_content', $conf, true);
286  }
287 
292  {
293  return [
294  [
295  [
296  'tt_content' => [
297  'ctrl' => [
298  ],
299  'columns' => [
300  ]
301  ],
302  ],
303  'tt_content',
304  [
305  'uidInList' => '42',
306  'pidInList' => 43,
307  'where' => 'tt_content.cruser_id=5',
308  'groupBy' => 'tt_content.title',
309  'orderBy' => 'tt_content.sorting',
310  ],
311  'WHERE (`tt_content`.`uid` IN (42)) AND (`tt_content`.`pid` IN (43)) AND (tt_content.cruser_id=5) GROUP BY `tt_content`.`title` ORDER BY `tt_content`.`sorting`',
312  ],
313  [
314  [
315  'tt_content' => [
316  'ctrl' => [
317  'delete' => 'deleted',
318  'enablecolumns' => [
319  'disabled' => 'hidden',
320  'starttime' => 'startdate',
321  'endtime' => 'enddate',
322  ],
323  'languageField' => 'sys_language_uid',
324  'transOrigPointerField' => 'l18n_parent',
325  ],
326  'columns' => [
327  ]
328  ],
329  ],
330  'tt_content',
331  [
332  'uidInList' => 42,
333  'pidInList' => 43,
334  'where' => 'tt_content.cruser_id=5',
335  'groupBy' => 'tt_content.title',
336  'orderBy' => 'tt_content.sorting',
337  ],
338  'WHERE (`tt_content`.`uid` IN (42)) AND (`tt_content`.`pid` IN (43)) AND (tt_content.cruser_id=5) AND (`tt_content`.`sys_language_uid` = 13) AND ((`tt_content`.`deleted` = 0) AND (`tt_content`.`hidden` = 0) AND (`tt_content`.`startdate` <= 4242) AND ((`tt_content`.`enddate` = 0) OR (`tt_content`.`enddate` > 4242))) GROUP BY `tt_content`.`title` ORDER BY `tt_content`.`sorting`',
339  ],
340  [
341  [
342  'tt_content' => [
343  'ctrl' => [
344  'languageField' => 'sys_language_uid',
345  'transOrigPointerField' => 'l18n_parent',
346  ],
347  'columns' => [
348  ]
349  ],
350  ],
351  'tt_content',
352  [
353  'uidInList' => 42,
354  'pidInList' => 43,
355  'where' => 'tt_content.cruser_id=5',
356  'languageField' => 0,
357  ],
358  'WHERE (`tt_content`.`uid` IN (42)) AND (`tt_content`.`pid` IN (43)) AND (tt_content.cruser_id=5)',
359  ],
360  ];
361  }
362 
367  {
368  return [
369  'Link to page' => [
370  'My page',
371  [
372  'parameter' => 42,
373  ],
374  [
375  'uid' => 42,
376  'title' => 'Page title',
377  ],
378  '<a href="index.php?id=42">My page</a>',
379  ],
380  'Link to page without link text' => [
381  '',
382  [
383  'parameter' => 42,
384  ],
385  [
386  'uid' => 42,
387  'title' => 'Page title',
388  ],
389  '<a href="index.php?id=42">Page title</a>',
390  ],
391  'Link to page with attributes' => [
392  'My page',
393  [
394  'parameter' => '42',
395  'ATagParams' => 'class="page-class"',
396  'target' => '_self',
397  'title' => 'Link to internal page',
398  ],
399  [
400  'uid' => 42,
401  'title' => 'Page title',
402  ],
403  '<a href="index.php?id=42" title="Link to internal page" target="_self" class="page-class">My page</a>',
404  ],
405  'Link to page with attributes in parameter' => [
406  'My page',
407  [
408  'parameter' => '42 _self page-class "Link to internal page"',
409  ],
410  [
411  'uid' => 42,
412  'title' => 'Page title',
413  ],
414  '<a href="index.php?id=42" title="Link to internal page" target="_self" class="page-class">My page</a>',
415  ],
416  'Link to page with bold tag in title' => [
417  '',
418  [
419  'parameter' => 42,
420  ],
421  [
422  'uid' => 42,
423  'title' => 'Page <b>title</b>',
424  ],
425  '<a href="index.php?id=42">Page <b>title</b></a>',
426  ],
427  'Link to page with script tag in title' => [
428  '',
429  [
430  'parameter' => 42,
431  ],
432  [
433  'uid' => 42,
434  'title' => '<script>alert(123)</script>Page title',
435  ],
436  '<a href="index.php?id=42">&lt;script&gt;alert(123)&lt;/script&gt;Page title</a>',
437  ],
438  ];
439  }
440 
449  public function ‪typolinkReturnsCorrectLinksForPages($linkText, $configuration, $pageArray, $expectedResult)
450  {
451  // @todo Merge with existing link generation test
452  // reason for failing is, that PageLinkBuilder is using a context-specific
453  // instance of PageRepository instead of reusing a shared global instance
454  self::markTestIncomplete('This test has side effects and is based on non-asserted assumptions');
455 
456  $pageRepositoryMockObject = $this->getMockBuilder(PageRepository::class)
457  ->setMethods(['getPage'])
458  ->getMock();
459  $pageRepositoryMockObject->expects(self::any())->method('getPage')->willReturn($pageArray);
460 
461  ‪$typoScriptFrontendController = $this->getMockBuilder(TypoScriptFrontendController::class)
462  ->setConstructorArgs([null, 1, 0])
463  ->setMethods(['dummy'])
464  ->getMock();
466  'config' => [],
467  ];
468  ‪$typoScriptFrontendController->sys_page = $pageRepositoryMockObject;
469  ‪$typoScriptFrontendController->tmpl = GeneralUtility::makeInstance(TemplateService::class);
470  ‪$typoScriptFrontendController->tmpl->setup = [
471  'lib.' => [
472  'parseFunc.' => $this->‪getLibParseFunc(),
473  ],
474  ];
476 
477  ‪$subject = GeneralUtility::makeInstance(ContentObjectRenderer::class);
478  self::assertEquals($expectedResult, ‪$subject->‪typoLink($linkText, $configuration));
479  }
480 
485  {
486  $expected = '<a href="mailto:test@example.com">Send me an email</a>';
488  $result = ‪$subject->‪typoLink('Send me an email', ['parameter' => 'mailto:test@example.com']);
489  self::assertEquals($expected, $result);
490 
491  $result = ‪$subject->‪typoLink('Send me an email', ['parameter' => 'test@example.com']);
492  self::assertEquals($expected, $result);
493  }
494 
499  {
500  $tsfe = $this->getMockBuilder(TypoScriptFrontendController::class)->disableOriginalConstructor()->getMock();
502 
503  $tsfe->spamProtectEmailAddresses = 1;
504  $result = ‪$subject->‪typoLink('Send me an email', ['parameter' => 'mailto:test@example.com']);
505  self::assertEquals('<a href="javascript:linkTo_UnCryptMailto(%27nbjmup%2BuftuAfybnqmf%5C%2Fdpn%27);">Send me an email</a>', $result);
506 
507  $tsfe->spamProtectEmailAddresses = 'ascii';
508  $result = ‪$subject->‪typoLink('Send me an email', ['parameter' => 'mailto:test@example.com']);
509  self::assertEquals('<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#116;&#101;&#115;&#116;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">Send me an email</a>', $result);
510  }
511 
516  {
517  // @todo Merge with existing link generation test
518  // reason for failing is, that PageLinkBuilder is using a context-specific
519  // instance of PageRepository instead of reusing a shared global instance
520  self::markTestIncomplete('This test has side effects and is based on non-asserted assumptions');
521 
522  $pageRepositoryMockObject = $this->getMockBuilder(PageRepository::class)
523  ->setMethods(['getPage'])
524  ->getMock();
525  $pageRepositoryMockObject->expects(self::any())->method('getPage')->willReturn([
526  'uid' => 1,
527  'title' => 'Page title',
528  ]);
529 
530  $templateServiceMockObject = $this->getMockBuilder(TemplateService::class)
531  ->getMock();
532  $templateServiceMockObject->setup = [
533  'lib.' => [
534  'parseFunc.' => $this->‪getLibParseFunc(),
535  ],
536  ];
537 
538  ‪$subject = GeneralUtility::makeInstance(ContentObjectRenderer::class);
539  $pageLinkBuilder = $this->getMockBuilder(PageLinkBuilder::class)
540  ->setMethods(['createTotalUrlAndLinkData'])
541  ->setConstructorArgs([‪$subject])
542  ->getMock();
543  $pageLinkBuilder->expects($this::once())->method('createTotalUrlAndLinkData')->willReturn([
544  'url' => '/index.php?id=1',
545  'target' => '',
546  'type' => '',
547  'orig_type' => '',
548  'no_cache' => '',
549  'linkVars' => '',
550  'sectionIndex' => '',
551  'totalURL' => '/',
552  ]);
553  GeneralUtility::addInstance(PageLinkBuilder::class, $pageLinkBuilder);
554 
555  ‪$typoScriptFrontendController = $this->getMockBuilder(TypoScriptFrontendController::class)
556  ->setConstructorArgs([null, 1, 0])
557  ->setMethods(['dummy'])
558  ->getMock();
560  'config' => [],
561  ];
562  ‪$typoScriptFrontendController->sys_page = $pageRepositoryMockObject;
563  ‪$typoScriptFrontendController->tmpl = $templateServiceMockObject;
565 
566  $configuration = [
567  'parameter' => 1,
568  'section' => 'content',
569  ];
570 
571  self::assertEquals('<a href="#content">Page title</a>', ‪$subject->‪typoLink('', $configuration));
572  }
573 
578  {
579  $tsfe = $this->getMockBuilder(TypoScriptFrontendController::class)->disableOriginalConstructor()->getMock();
581  ‪$subject->‪start([], 'tt_content');
582 
583  $expected = '';
584  $actual = ‪$subject->‪searchWhere('ab', 'header,bodytext', 'tt_content');
585  self::assertEquals($expected, $actual);
586  }
587 
592  {
593  $tsfe = $this->getMockBuilder(TypoScriptFrontendController::class)->disableOriginalConstructor()->getMock();
595  ‪$subject->setLogger(new NullLogger());
596  $input = 'This is a simple inline text, no wrapping configured';
597  $result = ‪$subject->‪parseFunc($input, $this->‪getLibParseFunc());
598  self::assertEquals($input, $result);
599 
600  $input = '<p>A one liner paragraph</p>';
601  $result = ‪$subject->‪parseFunc($input, $this->‪getLibParseFunc());
602  self::assertEquals($input, $result);
603 
604  $input = 'A one liner paragraph
605 And another one';
606  $result = ‪$subject->‪parseFunc($input, $this->‪getLibParseFunc());
607  self::assertEquals($input, $result);
608 
609  $input = '<p>A one liner paragraph</p><p>And another one and the spacing is kept</p>';
610  $result = ‪$subject->‪parseFunc($input, $this->‪getLibParseFunc());
611  self::assertEquals($input, $result);
612 
613  $input = '<p>text to a <a href="https://www.example.com">an external page</a>.</p>';
614  $result = ‪$subject->‪parseFunc($input, $this->‪getLibParseFunc());
615  self::assertEquals($input, $result);
616  }
617 
621  protected function ‪getLibParseFunc()
622  {
623  return [
624  'makelinks' => '1',
625  'makelinks.' => [
626  'http.' => [
627  'keep' => '{$styles.content.links.keep}',
628  'extTarget' => '',
629  'mailto.' => [
630  'keep' => 'path',
631  ],
632  ],
633  ],
634  'tags.' => [
635  'link' => 'TEXT',
636  'link.' => [
637  'current' => '1',
638  'typolink.' => [
639  'parameter.' => [
640  'data' => 'parameters : allParams',
641  ],
642  ],
643  'parseFunc.' => [
644  'constants' => '1',
645  ],
646  ],
647  'a' => 'TEXT',
648  'a.' => [
649  'current' => '1',
650  'typolink.' => [
651  'parameter.' => [
652  'data' => 'parameters:href',
653  ],
654  ],
655  ],
656  ],
657 
658  'allowTags' => 'a, abbr, acronym, address, article, aside, b, bdo, big, blockquote, br, caption, center, cite, code, col, colgroup, dd, del, dfn, dl, div, dt, em, font, footer, header, h1, h2, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, meta, nav, ol, p, pre, q, samp, sdfield, section, small, span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var',
659  'denyTags' => '*',
660  'sword' => '<span class="csc-sword">|</span>',
661  'constants' => '1',
662  'nonTypoTagStdWrap.' => [
663  'HTMLparser' => '1',
664  'HTMLparser.' => [
665  'keepNonMatchedTags' => '1',
666  'htmlSpecialChars' => '2',
667  ],
668  ],
669  ];
670  }
671 }
‪TYPO3\CMS\Core\Routing\PageArguments
Definition: PageArguments.php:26
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\typolinkReturnsCorrectLinksForPages
‪typolinkReturnsCorrectLinksForPages($linkText, $configuration, $pageArray, $expectedResult)
Definition: ContentObjectRendererTest.php:446
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildErrorHandlingConfiguration
‪array buildErrorHandlingConfiguration(string $handler, array $codes)
Definition: SiteBasedTestTrait.php:184
‪TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer\start
‪start($data, $table='')
Definition: ContentObjectRenderer.php:533
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\typolinkReturnsCorrectLinkForEmails
‪typolinkReturnsCorrectLinkForEmails()
Definition: ContentObjectRendererTest.php:481
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\typolinkReturnsCorrectLinkForSectionToHomePageWithUrlRewriting
‪typolinkReturnsCorrectLinkForSectionToHomePageWithUrlRewriting()
Definition: ContentObjectRendererTest.php:512
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait
Definition: SiteBasedTestTrait.php:36
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\getQueryCallsGetTreeListWithNegativeValuesIfRecursiveIsSet
‪getQueryCallsGetTreeListWithNegativeValuesIfRecursiveIsSet()
Definition: ContentObjectRendererTest.php:244
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\writeSiteConfiguration
‪writeSiteConfiguration(string $identifier, array $site=[], array $languages=[], array $errorHandling=[])
Definition: SiteBasedTestTrait.php:58
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\$typoScriptFrontendController
‪TypoScriptFrontendController $typoScriptFrontendController
Definition: ContentObjectRendererTest.php:52
‪TYPO3\CMS\Core\Site\SiteFinder
Definition: SiteFinder.php:31
‪TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer\typoLink
‪string typoLink($linkText, $conf)
Definition: ContentObjectRenderer.php:5088
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\setUp
‪setUp()
Definition: ContentObjectRendererTest.php:54
‪TYPO3\CMS\Core\Context\Context
Definition: Context.php:53
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildDefaultLanguageConfiguration
‪array buildDefaultLanguageConfiguration(string $identifier, string $base)
Definition: SiteBasedTestTrait.php:124
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\getLibParseFunc
‪array getLibParseFunc()
Definition: ContentObjectRendererTest.php:618
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\getQuery
‪getQuery(string $table, array $conf, array $expected)
Definition: ContentObjectRendererTest.php:206
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\typolinkReturnsCorrectLinkForSpamEncryptedEmails
‪typolinkReturnsCorrectLinkForSpamEncryptedEmails()
Definition: ContentObjectRendererTest.php:495
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\getQueryDataProvider
‪array getQueryDataProvider()
Definition: ContentObjectRendererTest.php:91
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest
Definition: ContentObjectRendererTest.php:37
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\LANGUAGE_PRESETS
‪const LANGUAGE_PRESETS
Definition: ContentObjectRendererTest.php:42
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\getWhereReturnCorrectQueryDataProvider
‪array getWhereReturnCorrectQueryDataProvider()
Definition: ContentObjectRendererTest.php:288
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\typolinkReturnsCorrectLinksForPagesDataProvider
‪array typolinkReturnsCorrectLinksForPagesDataProvider()
Definition: ContentObjectRendererTest.php:363
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\$subject
‪ContentObjectRenderer $subject
Definition: ContentObjectRendererTest.php:48
‪TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer\parseFunc
‪string parseFunc($theValue, $conf, $ref='')
Definition: ContentObjectRenderer.php:3747
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\libParseFuncProperlyKeepsTagsUnescaped
‪libParseFuncProperlyKeepsTagsUnescaped()
Definition: ContentObjectRendererTest.php:588
‪TYPO3\CMS\Core\TypoScript\TemplateService
Definition: TemplateService.php:46
‪TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController
Definition: TypoScriptFrontendController.php:98
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildSiteConfiguration
‪array buildSiteConfiguration(int $rootPageId, string $base='')
Definition: SiteBasedTestTrait.php:109
‪TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
Definition: ContentObjectRenderer.php:97
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\searchWhereWithTooShortSearchWordWillReturnValidWhereStatement
‪searchWhereWithTooShortSearchWordWillReturnValidWhereStatement()
Definition: ContentObjectRendererTest.php:574
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject\ContentObjectRendererTest\getQueryCallsGetTreeListWithCurrentPageIfThisIsSet
‪getQueryCallsGetTreeListWithCurrentPageIfThisIsSet()
Definition: ContentObjectRendererTest.php:265
‪TYPO3\CMS\Core\Domain\Repository\PageRepository
Definition: PageRepository.php:52
‪TYPO3\CMS\Frontend\Tests\Functional\ContentObject
Definition: ContentObjectRendererTest.php:16
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer\searchWhere
‪string searchWhere($searchWords, $searchFieldList, $searchTable)
Definition: ContentObjectRenderer.php:6181
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46