Project

General

Profile

Feature #17299 » 0005613_v17.patch

Administrator Admin, 2009-10-20 16:39

View differences:

tests/t3lib/matchcondition/t3lib_matchcondition_frontend_testcase.php (Revision 0)
<?php
/***************************************************************
* Copyright notice
*
* (c) 2009 Oliver Hader <oliver@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.
*
* 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Testcase for class t3lib_matchCondition_frontend.
*
* @author Oliver Hader <oliver@typo3.org>
* @package TYPO3
* @subpackage t3lib
*/
class t3lib_matchCondition_frontend_testcase extends tx_phpunit_testcase {
/**
* @var array
*/
private $backupGlobalVariables;
/**
* @var array
*/
private $rootline;
/**
* @var t3lib_matchCondition
*/
private $matchCondition;
public function setUp() {
$this->backupGlobalVariables = array(
'_ENV' => $_ENV,
'_GET' => $_GET,
'_POST' => $_POST,
'_SERVER' => $_SERVER,
'TYPO3_CONF_VARS' => $GLOBALS['TYPO3_CONF_VARS'],
'T3_VAR' => $GLOBALS['T3_VAR'],
);
$this->testGlobalNamespace = uniqid('TEST');
$GLOBALS[$this->testGlobalNamespace] = array();
$this->setUpTSFE();
$this->matchCondition = t3lib_div::makeInstance('t3lib_matchCondition_frontend');
}
public function tearDown() {
foreach ($this->backupGlobalVariables as $key => $data) {
$GLOBALS[$key] = $data;
}
unset($this->matchCondition);
unset($this->backupGlobalVariables);
unset($GLOBALS[$this->testGlobalNamespace]);
}
private function setUpTSFE() {
$this->rootline = array(
2 => array('uid' => 121, 'pid' => 111),
1 => array('uid' => 111, 'pid' => 101,),
0 => array('uid' => 101, 'pid' => 0,),
);
$GLOBALS['TSFE'] = $this->getMock('tslib_fe', array(), array(), '', FALSE);
$GLOBALS['TSFE']->tmpl = $this->getMock('t3lib_TStemplate');
}
/**
* Tests whether a faulty expression fails.
* @test
*/
public function simulateDisabledMatchAllConditionsFailsOnFaultyExpression() {
$this->matchCondition->matchAll = false;
$this->assertFalse($this->matchCondition->match('[nullCondition = This expression would return false in general]'));
}
/**
* Tests whether simulating positive matches for all conditions succeeds.
* @test
*/
public function simulateEnabledMatchAllConditionsSucceeds() {
$this->matchCondition->setSimulateMatchResult(true);
$this->assertTrue($this->matchCondition->match('[nullCondition = This expression would return false in general]'));
}
/**
* Tests whether simulating positive matches for specific conditions succeeds.
* @test
*/
public function simulateEnabledMatchSpecificConditionsSucceeds() {
$testCondition = '[' . uniqid('test') . ' = Any condition to simulate a positive match]';
$this->matchCondition->setSimulateMatchConditions(array($testCondition));
$this->assertTrue($this->matchCondition->match($testCondition));
}
/**
* Tests whether a condition matches Internet Explorer 7 on Windows.
*
* @return void
* @test
*/
public function conditionMatchesInternetExplorer7Windows() {
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)';
$result = $this->matchCondition->match('[browser = msie] && [version = 7] && [system = winNT]');
$this->assertTrue($result);
}
/**
* Tests whether a condition does not match Internet Explorer 7 on Windows.
*
* @return void
* @test
*/
public function conditionDoesNotMatchInternetExplorer7Windows() {
$_SERVER['HTTP_USER_AGENT'] = 'Opera/9.25 (Windows NT 6.0; U; en)';
$result = $this->matchCondition->match('[browser = msie] && [version = 7] && [system = winNT]');
$this->assertFalse($result);
}
/**
* Tests whether a device type condition matches a crawler.
* @test
*/
public function deviceConditionMatchesRobot() {
$_SERVER['HTTP_USER_AGENT'] = 'Googlebot/2.1 (+http://www.google.com/bot.html)';
$result = $this->matchCondition->match('[device = robot]');
$this->assertTrue($result);
}
/**
* Tests whether a device type condition does not match a crawler.
* @test
*/
public function deviceConditionDoesNotMatchRobot() {
$_SERVER['HTTP_USER_AGENT'] = md5('Some strange user agent');
$result = $this->matchCondition->match('[device = robot]');
$this->assertFalse($result);
}
/**
* Tests whether the browserInfo hook is called.
*
* @return void
* @test
*/
public function deprecatedBrowserInfoHookIsCalled() {
$classRef = uniqid('tx_browserInfoHook');
$browserInfoHookMock = $this->getMock($classRef, array('browserInfo'));
$browserInfoHookMock->expects($this->atLeastOnce())->method('browserInfo');
$GLOBALS['T3_VAR']['getUserObj'][$classRef] = $browserInfoHookMock;
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_matchcondition.php']['matchConditionClass'][$classRef] = $classRef;
$this->matchCondition->__construct();
$this->matchCondition->match('[browser = msie] && [version = 7] && [system = winNT]');
}
/**
* Tests whether the whichDevice hook is called.
*
* @return void
* @test
*/
public function deprecatedWhichDeviceHookIsCalled() {
$classRef = uniqid('tx_whichDeviceHook');
$whichDeviceHookMock = $this->getMock($classRef, array('whichDevice'));
$whichDeviceHookMock->expects($this->atLeastOnce())->method('whichDevice');
$GLOBALS['T3_VAR']['getUserObj'][$classRef] = $whichDeviceHookMock;
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_matchcondition.php']['matchConditionClass'][$classRef] = $classRef;
$this->matchCondition->__construct();
$this->matchCondition->match('[device = robot]');
}
/**
* Tests whether the language comparison matches.
* @test
*/
public function languageConditionMatchesSingleLanguageExpression() {
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
$this->assertTrue($this->matchCondition->match('[language = *de*]'));
$this->assertTrue($this->matchCondition->match('[language = *de-de*]'));
}
/**
* Tests whether the language comparison matches.
* @test
*/
public function languageConditionMatchesMultipleLanguagesExpression() {
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
$this->assertTrue($this->matchCondition->match('[language = *en*,*de*]'));
$this->assertTrue($this->matchCondition->match('[language = *en-us*,*de-de*]'));
}
/**
* Tests whether the language comparison matches.
* @test
*/
public function languageConditionMatchesCompleteLanguagesExpression() {
$this->markTestSkipped('This comparison seems to be incomplete in t3lib_matchCondition.');
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
$this->assertTrue($this->matchCondition->match('[language = de-de,de;q=0.8]'));
}
/**
* Tests whether usergroup comparison matches.
* @test
*/
public function usergroupConditionMatchesSingleGroupId() {
$GLOBALS['TSFE']->gr_list = '13,14,15';
$this->assertTrue($this->matchCondition->match('[usergroup = 13]'));
}
/**
* Tests whether usergroup comparison matches.
* @test
*/
public function usergroupConditionMatchesMultipleUserGroupId() {
$GLOBALS['TSFE']->gr_list = '13,14,15';
$this->assertTrue($this->matchCondition->match('[usergroup = 999,15,14,13]'));
}
/**
* Tests whether usergroup comparison matches.
* @test
*/
public function usergroupConditionDoesNotMatchDefaulUserGroupIds() {
$GLOBALS['TSFE']->gr_list = '0,-1';
$this->assertFalse($this->matchCondition->match('[usergroup = 0,-1]'));
}
/**
* Tests whether user comparison matches.
* @test
*/
public function loginUserConditionMatchesAnyLoggedInUser() {
$GLOBALS['TSFE']->loginUser = TRUE;
$GLOBALS['TSFE']->fe_user->user['uid'] = 13;
$this->assertTrue($this->matchCondition->match('[loginUser = *]'));
}
/**
* Tests whether user comparison matches.
* @test
*/
public function loginUserConditionMatchesSingleLoggedInUser() {
$GLOBALS['TSFE']->loginUser = TRUE;
$GLOBALS['TSFE']->fe_user->user['uid'] = 13;
$this->assertTrue($this->matchCondition->match('[loginUser = 13]'));
}
/**
* Tests whether user comparison matches.
* @test
*/
public function loginUserConditionMatchesMultipleLoggedInUsers() {
$GLOBALS['TSFE']->loginUser = TRUE;
$GLOBALS['TSFE']->fe_user->user['uid'] = 13;
$this->assertTrue($this->matchCondition->match('[loginUser = 999,13]'));
}
/**
* Tests whether user comparison matches.
* @test
*/
public function loginUserConditionDoesNotMatchIfNotUserIsLoggedId() {
$GLOBALS['TSFE']->loginUser = FALSE;
$GLOBALS['TSFE']->fe_user->user['uid'] = 13;
$this->assertFalse($this->matchCondition->match('[loginUser = *]'));
$this->assertFalse($this->matchCondition->match('[loginUser = 13]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnEqualExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 = 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 = 10.1]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 == 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 == 10.1]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnNotEqualExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 != 20]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 != 10.2]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnLowerThanExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 < 20]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 < 10.2]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnLowerThanOrEqualExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 <= 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 <= 20]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 <= 10.1]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 <= 10.2]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnGreaterThanExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:20 > 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.2 > 10.1]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnGreaterThanOrEqualExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 >= 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:20 >= 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 >= 10.1]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.2 >= 10.1]'));
}
/**
* Tests whether string comparison matches.
* @test
*/
public function globalStringConditionMatchesOnEqualExpression() {
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = TYPO3.Test.Condition]'));
$this->assertFalse($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = TYPO3]'));
}
/**
* Tests whether string comparison matches.
* @test
*/
public function globalStringConditionMatchesWildcardExpression() {
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = TYPO3?Test?Condition]'));
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = TYPO3.T*t.Condition]'));
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = TYPO3?T*t?Condition]'));
}
/**
* Tests whether string comparison matches.
* @test
*/
public function globalStringConditionMatchesRegularExpression() {
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = /^[A-Za-z3.]+$/]'));
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = /^TYPO3\..+Condition$/]'));
$this->assertFalse($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = /^FALSE/]'));
}
/**
* Tests whether string comparison matches.
* @test
*/
public function globalStringConditionMatchesEmptyRegularExpression() {
$testKey = uniqid('test');
$_SERVER[$testKey] = '';
$this->assertTrue($this->matchCondition->match('[globalString = _SERVER|' . $testKey . ' = /^$/]'));
}
/**
* Tests whether treeLevel comparison matches.
* @test
*/
public function treeLevelConditionMatchesSingleValue() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$this->assertTrue($this->matchCondition->match('[treeLevel = 2]'));
}
/**
* Tests whether treeLevel comparison matches.
* @test
*/
public function treeLevelConditionMatchesMultipleValues() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$this->assertTrue($this->matchCondition->match('[treeLevel = 999,998,2]'));
}
/**
* Tests whether treeLevel comparison matches.
* @test
*/
public function treeLevelConditionDoesNotMatchFaultyValue() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$this->assertFalse($this->matchCondition->match('[treeLevel = 999]'));
}
/**
* Tests whether a page Id is found in the previous rootline entries.
* @test
*/
public function PIDupinRootlineConditionMatchesSinglePageIdInRootline() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$GLOBALS['TSFE']->id = 121;
$this->assertTrue($this->matchCondition->match('[PIDupinRootline = 111]'));
}
/**
* Tests whether a page Id is found in the previous rootline entries.
* @test
*/
public function PIDupinRootlineConditionMatchesMultiplePageIdsInRootline() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$GLOBALS['TSFE']->id = 121;
$this->assertTrue($this->matchCondition->match('[PIDupinRootline = 999,111,101]'));
}
/**
* Tests whether a page Id is found in the previous rootline entries.
* @test
*/
public function PIDupinRootlineConditionDoesNotMatchPageIdNotInRootline() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$GLOBALS['TSFE']->id = 121;
$this->assertFalse($this->matchCondition->match('[PIDupinRootline = 999]'));
}
/**
* Tests whether a page Id is found in the previous rootline entries.
* @test
*/
public function PIDupinRootlineConditionDoesNotMatchLastPageIdInRootline() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$GLOBALS['TSFE']->id = 121;
$this->assertFalse($this->matchCondition->match('[PIDupinRootline = 121]'));
}
/**
* Tests whether a page Id is found in all rootline entries.
* @test
*/
public function PIDinRootlineConditionMatchesSinglePageIdInRootline() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$GLOBALS['TSFE']->id = 121;
$this->assertTrue($this->matchCondition->match('[PIDinRootline = 111]'));
}
/**
* Tests whether a page Id is found in all rootline entries.
* @test
*/
public function PIDinRootlineConditionMatchesMultiplePageIdsInRootline() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$GLOBALS['TSFE']->id = 121;
$this->assertTrue($this->matchCondition->match('[PIDinRootline = 999,111,101]'));
}
/**
* Tests whether a page Id is found in all rootline entries.
* @test
*/
public function PIDinRootlineConditionMatchesLastPageIdInRootline() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$GLOBALS['TSFE']->id = 121;
$this->assertTrue($this->matchCondition->match('[PIDinRootline = 121]'));
}
/**
* Tests whether a page Id is found in all rootline entries.
* @test
*/
public function PIDinRootlineConditionDoesNotMatchPageIdNotInRootline() {
$GLOBALS['TSFE']->tmpl->rootLine = $this->rootline;
$GLOBALS['TSFE']->id = 121;
$this->assertFalse($this->matchCondition->match('[PIDinRootline = 999]'));
}
/**
* Tests whether the compatibility version can be evaluated.
* (e.g. 4.9 is compatible to 4.0 but not to 5.0)
* @test
*/
public function compatVersionConditionMatchesOlderRelease() {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['compat_version'] = '4.9';
$this->assertTrue($this->matchCondition->match('[compatVersion = 4.0]'));
}
/**
* Tests whether the compatibility version can be evaluated.
* (e.g. 4.9 is compatible to 4.0 but not to 5.0)
* @test
*/
public function compatVersionConditionMatchesSameRelease() {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['compat_version'] = '4.9';
$this->assertTrue($this->matchCondition->match('[compatVersion = 4.9]'));
}
/**
* Tests whether the compatibility version can be evaluated.
* (e.g. 4.9 is compatible to 4.0 but not to 5.0)
* @test
*/
public function compatVersionConditionDoesNotMatchNewerRelease() {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['compat_version'] = '4.9';
$this->assertFalse($this->matchCondition->match('[compatVersion = 5.0]'));
}
/**
* Tests whether the generic fetching of variables works with the namespace 'GP'.
* @test
*/
public function genericGetVariablesSucceedsWithNamespaceGP() {
$_GET = array('testGet' => 'getTest');
$_POST = array('testPost' => 'postTest');
$this->assertTrue($this->matchCondition->match('[globalString = GP:testGet = getTest]'));
$this->assertTrue($this->matchCondition->match('[globalString = GP:testPost = postTest]'));
}
/**
* Tests whether the generic fetching of variables works with the namespace 'TSFE'.
* @test
*/
public function genericGetVariablesSucceedsWithNamespaceTSFE() {
$GLOBALS['TSFE']->id = 1234567;
$GLOBALS['TSFE']->testSimpleObject = new stdClass();
$GLOBALS['TSFE']->testSimpleObject->testSimpleVariable = 'testValue';
$this->assertTrue($this->matchCondition->match('[globalString = TSFE:id = 1234567]'));
$this->assertTrue($this->matchCondition->match('[globalString = TSFE:testSimpleObject|testSimpleVariable = testValue]'));
}
/**
* Tests whether the generic fetching of variables works with the namespace 'ENV'.
* @test
*/
public function genericGetVariablesSucceedsWithNamespaceENV() {
$testKey = uniqid('test');
putenv($testKey .'=testValue');
$this->assertTrue($this->matchCondition->match('[globalString = ENV:' . $testKey . ' = testValue]'));
}
/**
* Tests whether the generic fetching of variables works with the namespace 'IENV'.
* @test
*/
public function genericGetVariablesSucceedsWithNamespaceIENV() {
$_SERVER['HTTP_HOST'] = t3lib_div::getIndpEnv('TYPO3_HOST_ONLY') . ':1234567';
$this->assertTrue($this->matchCondition->match('[globalString = IENV:TYPO3_PORT = 1234567]'));
}
/**
* Tests whether the generic fetching of variables works with any global namespace.
* @test
*/
public function genericGetVariablesSucceedsWithAnyGlobalNamespace() {
$GLOBALS[$this->testGlobalNamespace] = array(
'first' => 'testFirst',
'second' => array('third' => 'testThird'),
);
$this->assertTrue($this->matchCondition->match(
'[globalString = ' . $this->testGlobalNamespace . '|first = testFirst]'
));
$this->assertTrue($this->matchCondition->match(
'[globalString = ' . $this->testGlobalNamespace . '|second|third = testThird]'
));
}
}
?>
tests/t3lib/matchcondition/t3lib_matchcondition_backend_testcase.php (Revision 0)
<?php
/***************************************************************
* Copyright notice
*
* (c) 2009 Oliver Hader <oliver@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.
*
* 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Testcase for class t3lib_matchCondition_frontend.
*
* @author Oliver Hader <oliver@typo3.org>
* @package TYPO3
* @subpackage t3lib
*/
class t3lib_matchCondition_backend_testcase extends tx_phpunit_testcase {
/**
* @var array
*/
private $backupGlobalVariables;
/**
* @var array
*/
private $rootline;
/**
* @var t3lib_matchCondition_backend
*/
private $matchCondition;
/**
* @var string
*/
private $testTableName;
public function setUp() {
$this->backupGlobalVariables = array(
'_ENV' => $_ENV,
'_GET' => $_GET,
'_POST' => $_POST,
'_SERVER' => $_SERVER,
'TCA' => $GLOBALS['TCA'],
'TYPO3_DB' => $GLOBALS['TYPO3_DB'],
'TYPO3_CONF_VARS' => $GLOBALS['TYPO3_CONF_VARS'],
'T3_VAR' => $GLOBALS['T3_VAR'],
'BE_USER' => $GLOBALS['BE_USER'],
'SOBE' => $GLOBALS['SOBE'],
);
$this->testTableName = 't3lib_matchCondition_backend_testTable';
$this->testGlobalNamespace = uniqid('TEST');
$GLOBALS['TCA'][$this->testTableName] = array('ctrl' => array());
$GLOBALS[$this->testGlobalNamespace] = array();
$this->setUpBackend();
$this->matchCondition = t3lib_div::makeInstance('t3lib_matchCondition_backend');
}
public function tearDown() {
foreach ($this->backupGlobalVariables as $key => $data) {
$GLOBALS[$key] = $data;
}
unset($this->matchCondition);
unset($this->backupGlobalVariables);
unset($GLOBALS[$this->testGlobalNamespace]);
}
private function setUpBackend() {
$this->rootline = array(
2 => array('uid' => 121, 'pid' => 111),
1 => array('uid' => 111, 'pid' => 101,),
0 => array('uid' => 101, 'pid' => 0,),
);
$GLOBALS['BE_USER'] = $this->getMock('beUserAuth', array(), array(), '', FALSE);
}
private function setUpDatabaseMockForDeterminePageId() {
$GLOBALS['TYPO3_DB'] = $this->getMock('t3lib_DB', array('exec_SELECTquery', 'sql_fetch_assoc', 'sql_free_result'));
$GLOBALS['TYPO3_DB']->expects($this->any())->method('exec_SELECTquery')->will(
$this->returnCallback(array($this, 'determinePageIdByRecordDatabaseExecuteCallback'))
);
$GLOBALS['TYPO3_DB']->expects($this->any())->method('sql_fetch_assoc')->will(
$this->returnCallback(array($this, 'determinePageIdByRecordDatabaseFetchCallback'))
);
}
/**
* Tests whether a faulty expression fails.
* @test
*/
public function simulateDisabledMatchAllConditionsFailsOnFaultyExpression() {
$this->matchCondition->matchAll = false;
$this->assertFalse($this->matchCondition->match('[nullCondition = This expression would return false in general]'));
}
/**
* Tests whether simulating positive matches for all conditions succeeds.
* @test
*/
public function simulateEnabledMatchAllConditionsSucceeds() {
$this->matchCondition->setSimulateMatchResult(true);
$this->assertTrue($this->matchCondition->match('[nullCondition = This expression would return false in general]'));
}
/**
* Tests whether simulating positive matches for specific conditions succeeds.
* @test
*/
public function simulateEnabledMatchSpecificConditionsSucceeds() {
$testCondition = '[' . uniqid('test') . ' = Any condition to simulate a positive match]';
$this->matchCondition->setSimulateMatchConditions(array($testCondition));
$this->assertTrue($this->matchCondition->match($testCondition));
}
/**
* Tests whether a condition matches Internet Explorer 7 on Windows.
*
* @return void
* @test
*/
public function conditionMatchesInternetExplorer7Windows() {
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)';
$result = $this->matchCondition->match('[browser = msie] && [version = 7] && [system = winNT]');
$this->assertTrue($result);
}
/**
* Tests whether a condition does not match Internet Explorer 7 on Windows.
*
* @return void
* @test
*/
public function conditionDoesNotMatchInternetExplorer7Windows() {
$_SERVER['HTTP_USER_AGENT'] = 'Opera/9.25 (Windows NT 6.0; U; en)';
$result = $this->matchCondition->match('[browser = msie] && [version = 7] && [system = winNT]');
$this->assertFalse($result);
}
/**
* Tests whether a device type condition matches a crawler.
* @test
*/
public function deviceConditionMatchesRobot() {
$_SERVER['HTTP_USER_AGENT'] = 'Googlebot/2.1 (+http://www.google.com/bot.html)';
$result = $this->matchCondition->match('[device = robot]');
$this->assertTrue($result);
}
/**
* Tests whether a device type condition does not match a crawler.
* @test
*/
public function deviceConditionDoesNotMatchRobot() {
$_SERVER['HTTP_USER_AGENT'] = md5('Some strange user agent');
$result = $this->matchCondition->match('[device = robot]');
$this->assertFalse($result);
}
/**
* Tests whether the language comparison matches.
* @test
*/
public function languageConditionMatchesSingleLanguageExpression() {
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
$this->assertTrue($this->matchCondition->match('[language = *de*]'));
$this->assertTrue($this->matchCondition->match('[language = *de-de*]'));
}
/**
* Tests whether the language comparison matches.
* @test
*/
public function languageConditionMatchesMultipleLanguagesExpression() {
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
$this->assertTrue($this->matchCondition->match('[language = *en*,*de*]'));
$this->assertTrue($this->matchCondition->match('[language = *en-us*,*de-de*]'));
}
/**
* Tests whether the language comparison matches.
* @test
*/
public function languageConditionMatchesCompleteLanguagesExpression() {
$this->markTestSkipped('This comparison seems to be incomplete in t3lib_matchCondition.');
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
$this->assertTrue($this->matchCondition->match('[language = de-de,de;q=0.8]'));
}
/**
* Tests whether usergroup comparison matches.
* @test
*/
public function usergroupConditionMatchesSingleGroupId() {
$GLOBALS['BE_USER']->groupList = '13,14,15';
$this->assertTrue($this->matchCondition->match('[usergroup = 13]'));
}
/**
* Tests whether usergroup comparison matches.
* @test
*/
public function usergroupConditionMatchesMultipleUserGroupId() {
$GLOBALS['BE_USER']->groupList = '13,14,15';
$this->assertTrue($this->matchCondition->match('[usergroup = 999,15,14,13]'));
}
/**
* Tests whether user comparison matches.
* @test
*/
public function loginUserConditionMatchesAnyLoggedInUser() {
$GLOBALS['BE_USER']->user['uid'] = 13;
$this->assertTrue($this->matchCondition->match('[loginUser = *]'));
}
/**
* Tests whether user comparison matches.
* @test
*/
public function loginUserConditionMatchesSingleLoggedInUser() {
$GLOBALS['BE_USER']->user['uid'] = 13;
$this->assertTrue($this->matchCondition->match('[loginUser = 13]'));
}
/**
* Tests whether user comparison matches.
* @test
*/
public function loginUserConditionDoesNotMatchSingleLoggedInUser() {
$GLOBALS['BE_USER']->user['uid'] = 13;
$this->assertFalse($this->matchCondition->match('[loginUser = 999]'));
}
/**
* Tests whether user comparison matches.
* @test
*/
public function loginUserConditionMatchesMultipleLoggedInUsers() {
$GLOBALS['BE_USER']->user['uid'] = 13;
$this->assertTrue($this->matchCondition->match('[loginUser = 999,13]'));
}
/**
* Tests whether checkinf for an admin user matches
* @test
*/
public function adminUserConditionMatchesAdminUser() {
$GLOBALS['BE_USER']->user['uid'] = 13;
$GLOBALS['BE_USER']->user['admin'] = 1;
$this->assertTrue($this->matchCondition->match('[adminUser = 1]'));
}
/**
* Tests whether checkinf for an admin user matches
* @test
*/
public function adminUserConditionMatchesRegularUser() {
$GLOBALS['BE_USER']->user['uid'] = 14;
$GLOBALS['BE_USER']->user['admin'] = 0;
$this->assertTrue($this->matchCondition->match('[adminUser = 0]'));
}
/**
* Tests whether checkinf for an admin user matches
* @test
*/
public function adminUserConditionDoesNotMatchRegularUser() {
$GLOBALS['BE_USER']->user['uid'] = 14;
$GLOBALS['BE_USER']->user['admin'] = 0;
$this->assertFalse($this->matchCondition->match('[adminUser = 1]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnEqualExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 = 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 = 10.1]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 == 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 == 10.1]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnNotEqualExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 != 20]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 != 10.2]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnLowerThanExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 < 20]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 < 10.2]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnLowerThanOrEqualExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 <= 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 <= 20]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 <= 10.1]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 <= 10.2]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnGreaterThanExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:20 > 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.2 > 10.1]'));
}
/**
* Tests whether numerical comparison matches.
* @test
*/
public function globalVarConditionMatchesOnGreaterThanOrEqualExpression() {
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10 >= 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:20 >= 10]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.1 >= 10.1]'));
$this->assertTrue($this->matchCondition->match('[globalVar = LIT:10.2 >= 10.1]'));
}
/**
* Tests whether string comparison matches.
* @test
*/
public function globalStringConditionMatchesOnEqualExpression() {
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = TYPO3.Test.Condition]'));
$this->assertFalse($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = TYPO3]'));
}
/**
* Tests whether string comparison matches.
* @test
*/
public function globalStringConditionMatchesWildcardExpression() {
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = TYPO3?Test?Condition]'));
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = TYPO3.T*t.Condition]'));
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = TYPO3?T*t?Condition]'));
}
/**
* Tests whether string comparison matches.
* @test
*/
public function globalStringConditionMatchesRegularExpression() {
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = /^[A-Za-z3.]+$/]'));
$this->assertTrue($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = /^TYPO3\..+Condition$/]'));
$this->assertFalse($this->matchCondition->match('[globalString = LIT:TYPO3.Test.Condition = /^FALSE/]'));
}
/**
* Tests whether string comparison matches.
* @test
*/
public function globalStringConditionMatchesEmptyRegularExpression() {
$testKey = uniqid('test');
$_SERVER[$testKey] = '';
$this->assertTrue($this->matchCondition->match('[globalString = _SERVER|' . $testKey . ' = /^$/]'));
}
/**
* Tests whether treeLevel comparison matches.
* @test
*/
public function treeLevelConditionMatchesSingleValue() {
$this->matchCondition->setRootline($this->rootline);
$this->assertTrue($this->matchCondition->match('[treeLevel = 2]'));
}
/**
* Tests whether treeLevel comparison matches.
* @test
*/
public function treeLevelConditionMatchesMultipleValues() {
$this->matchCondition->setRootline($this->rootline);
$this->assertTrue($this->matchCondition->match('[treeLevel = 999,998,2]'));
}
/**
* Tests whether treeLevel comparison matches.
* @test
*/
public function treeLevelConditionDoesNotMatchFaultyValue() {
$this->matchCondition->setRootline($this->rootline);
$this->assertFalse($this->matchCondition->match('[treeLevel = 999]'));
}
/**
* Tests whether a page Id is found in the previous rootline entries.
* @test
*/
public function PIDupinRootlineConditionMatchesSinglePageIdInRootline() {
$this->matchCondition->setRootline($this->rootline);
$this->matchCondition->setPageId(121);
$this->assertTrue($this->matchCondition->match('[PIDupinRootline = 111]'));
}
/**
* Tests whether a page Id is found in the previous rootline entries.
* @test
*/
public function PIDupinRootlineConditionMatchesMultiplePageIdsInRootline() {
$this->matchCondition->setRootline($this->rootline);
$this->matchCondition->setPageId(121);
$this->assertTrue($this->matchCondition->match('[PIDupinRootline = 999,111,101]'));
}
/**
* Tests whether a page Id is found in the previous rootline entries.
* @test
*/
public function PIDupinRootlineConditionDoesNotMatchPageIdNotInRootline() {
$this->matchCondition->setRootline($this->rootline);
$this->matchCondition->setPageId(121);
$this->assertFalse($this->matchCondition->match('[PIDupinRootline = 999]'));
}
/**
* Tests whether a page Id is found in the previous rootline entries.
* @test
*/
public function PIDupinRootlineConditionDoesNotMatchLastPageIdInRootline() {
$this->matchCondition->setRootline($this->rootline);
$this->matchCondition->setPageId(121);
$this->assertFalse($this->matchCondition->match('[PIDupinRootline = 121]'));
}
/**
* Tests whether a page Id is found in the previous rootline entries.
* @test
*/
public function PIDupinRootlineConditionMatchesCurrentPageIdWhileEditingNewPage() {
$GLOBALS['SOBE'] = $this->getMock('SC_alt_doc', array());
$GLOBALS['SOBE']->elementsData = array(
array(
'table' => 'pages',
'uid' => 'NEW4adc6021e37e7',
'pid' => 121,
'cmd' => 'new',
'deleteAccess' => 0,
),
);
$GLOBALS['SOBE']->data = array();
$this->matchCondition->setRootline($this->rootline);
$this->matchCondition->setPageId(121);
$this->assertTrue($this->matchCondition->match('[PIDupinRootline = 121]'));
}
/**
* Tests whether a page Id is found in the previous rootline entries.
* @test
*/
public function PIDupinRootlineConditionMatchesCurrentPageIdWhileSavingNewPage() {
$GLOBALS['SOBE'] = $this->getMock('SC_alt_doc', array());
$GLOBALS['SOBE']->elementsData = array(
array(
'table' => 'pages',
/// 999 is the uid of the page that was just created
'uid' => 999,
'pid' => 121,
'cmd' => 'edit',
'deleteAccess' => 1,
),
);
$GLOBALS['SOBE']->data = array(
'pages' => array(
'NEW4adc6021e37e7' => array(
'pid' => 121,
),
),
);
$this->matchCondition->setRootline($this->rootline);
$this->matchCondition->setPageId(121);
$this->assertTrue($this->matchCondition->match('[PIDupinRootline = 121]'));
}
/**
* Tests whether a page Id is found in all rootline entries.
* @test
*/
public function PIDinRootlineConditionMatchesSinglePageIdInRootline() {
$this->matchCondition->setRootline($this->rootline);
$this->matchCondition->setPageId(121);
$this->assertTrue($this->matchCondition->match('[PIDinRootline = 111]'));
}
/**
* Tests whether a page Id is found in all rootline entries.
* @test
*/
public function PIDinRootlineConditionMatchesMultiplePageIdsInRootline() {
$this->matchCondition->setRootline($this->rootline);
$this->matchCondition->setPageId(121);
$this->assertTrue($this->matchCondition->match('[PIDinRootline = 999,111,101]'));
}
/**
* Tests whether a page Id is found in all rootline entries.
* @test
*/
public function PIDinRootlineConditionMatchesLastPageIdInRootline() {
$this->matchCondition->setRootline($this->rootline);
$this->matchCondition->setPageId(121);
$this->assertTrue($this->matchCondition->match('[PIDinRootline = 121]'));
}
/**
* Tests whether a page Id is found in all rootline entries.
* @test
*/
public function PIDinRootlineConditionDoesNotMatchPageIdNotInRootline() {
$this->matchCondition->setRootline($this->rootline);
$this->matchCondition->setPageId(121);
$this->assertFalse($this->matchCondition->match('[PIDinRootline = 999]'));
}
/**
* Tests whether the compatibility version can be evaluated.
* (e.g. 4.9 is compatible to 4.0 but not to 5.0)
* @test
*/
public function compatVersionConditionMatchesOlderRelease() {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['compat_version'] = '4.9';
$this->assertTrue($this->matchCondition->match('[compatVersion = 4.0]'));
}
/**
* Tests whether the compatibility version can be evaluated.
* (e.g. 4.9 is compatible to 4.0 but not to 5.0)
* @test
*/
public function compatVersionConditionMatchesSameRelease() {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['compat_version'] = '4.9';
$this->assertTrue($this->matchCondition->match('[compatVersion = 4.9]'));
}
/**
* Tests whether the compatibility version can be evaluated.
* (e.g. 4.9 is compatible to 4.0 but not to 5.0)
* @test
*/
public function compatVersionConditionDoesNotMatchNewerRelease() {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['compat_version'] = '4.9';
$this->assertFalse($this->matchCondition->match('[compatVersion = 5.0]'));
}
/**
* Tests whether the generic fetching of variables works with the namespace 'GP'.
* @test
*/
public function genericGetVariablesSucceedsWithNamespaceGP() {
$_GET = array('testGet' => 'getTest');
$_POST = array('testPost' => 'postTest');
$this->assertTrue($this->matchCondition->match('[globalString = GP:testGet = getTest]'));
$this->assertTrue($this->matchCondition->match('[globalString = GP:testPost = postTest]'));
}
/**
* Tests whether the generic fetching of variables does not work with the namespace 'TSFE',
* since we are in the backend context here.
* @test
*/
public function genericGetVariablesFailsWithNamespaceTSFE() {
$GLOBALS['TSFE'] = new stdClass();
$GLOBALS['TSFE']->id = 1234567;
$this->assertFalse($this->matchCondition->match('[globalString = TSFE:id = 1234567]'));
}
/**
* Tests whether the generic fetching of variables works with the namespace 'ENV'.
* @test
*/
public function genericGetVariablesSucceedsWithNamespaceENV() {
$testKey = uniqid('test');
putenv($testKey .'=testValue');
$this->assertTrue($this->matchCondition->match('[globalString = ENV:' . $testKey . ' = testValue]'));
}
/**
* Tests whether the generic fetching of variables works with the namespace 'IENV'.
* @test
*/
public function genericGetVariablesSucceedsWithNamespaceIENV() {
$_SERVER['HTTP_HOST'] = t3lib_div::getIndpEnv('TYPO3_HOST_ONLY') . ':1234567';
$this->assertTrue($this->matchCondition->match('[globalString = IENV:TYPO3_PORT = 1234567]'));
}
/**
* Tests whether the generic fetching of variables works with any global namespace.
* @test
*/
public function genericGetVariablesSucceedsWithAnyGlobalNamespace() {
$GLOBALS[$this->testGlobalNamespace] = array(
'first' => 'testFirst',
'second' => array('third' => 'testThird'),
);
$this->assertTrue($this->matchCondition->match(
'[globalString = ' . $this->testGlobalNamespace . '|first = testFirst]'
));
$this->assertTrue($this->matchCondition->match(
'[globalString = ' . $this->testGlobalNamespace . '|second|third = testThird]'
));
}
/**
* Tests whether determining a pageId works.
* @test
*/
public function pageIdCanBeDeterminedWhileCallingModuleWithPageTree() {
$_GET['id'] = 999;
$this->matchCondition->match('[globalVar = LIT:10 = 10]');
$this->assertEquals(999, $this->matchCondition->getPageId());
}
/**
* Tests whether determining a pageId works.
* @test
*/
public function pageIdCanBeDeterminedWhileEditingAPageRecord() {
$_GET['edit']['pages'][999] = 'edit';
$this->matchCondition->match('[globalVar = LIT:10 = 10]');
$this->assertEquals(999, $this->matchCondition->getPageId());
}
/**
* Tests whether determining a pageId works.
* @test
*/
public function pageIdCanBeDeterminedWhileEditingARegularRecord() {
$this->setUpDatabaseMockForDeterminePageId();
$_GET['edit'][$this->testTableName][13] = 'edit';
$this->matchCondition->match('[globalVar = LIT:10 = 10]');
$this->assertEquals(999, $this->matchCondition->getPageId());
}
/**
* Tests whether determining a pageId works.
* @test
*/
public function pageIdCanBeDeterminedWhileCreatingARecord() {
$_GET['edit']['pages'][999] = 'new';
$this->matchCondition->match('[globalVar = LIT:10 = 10]');
$this->assertEquals(999, $this->matchCondition->getPageId());
}
/**
* Tests whether determining a pageId works.
* @test
*/
public function pageIdCanBeDeterminedWhileCreatingARecordAfterAnExistingRecord() {
$this->setUpDatabaseMockForDeterminePageId();
$_GET['edit'][$this->testTableName][-13] = 'new';
$this->matchCondition->match('[globalVar = LIT:10 = 10]');
$this->assertEquals(999, $this->matchCondition->getPageId());
}
/**
* Tests whether determining a pageId works.
* @test
*/
public function pageIdCanBeDeterminedWhileDeletingAPageRecord() {
$_GET['cmd']['pages'][999]['delete'] = 1;
$this->matchCondition->match('[globalVar = LIT:10 = 10]');
$this->assertEquals(999, $this->matchCondition->getPageId());
}
/**
* Tests whether determining a pageId works.
* @test
*/
public function pageIdCanBeDeterminedWhileCopyingARecordToAnotherPage() {
$_GET['cmd']['pages'][121]['copy'] = 999;
$this->matchCondition->match('[globalVar = LIT:10 = 10]');
$this->assertEquals(999, $this->matchCondition->getPageId());
}
/**
* Tests whether determining a pageId works.
* @test
*/
public function pageIdCanBeDeterminedWhileCopyingARecordAfterAnExistingRecord() {
$this->setUpDatabaseMockForDeterminePageId();
$_GET['cmd'][$this->testTableName][121]['copy'] = -13;
$this->matchCondition->match('[globalVar = LIT:10 = 10]');
$this->assertEquals(999, $this->matchCondition->getPageId());
}
/**
* Tests whether determining a pageId works.
* @test
*/
public function pageIdCanBeDeterminedWhileMovingARecordToAnotherPage() {
$_GET['cmd']['pages'][121]['move'] = 999;
$this->matchCondition->match('[globalVar = LIT:10 = 10]');
$this->assertEquals(999, $this->matchCondition->getPageId());
}
/**
* Callback method for pageIdCanBeDetermined test cases.
* Simulates TYPO3_DB->exec_SELECTquery().
*
* @param string $fields
* @param string $table
* @param string $where
* @return mixed
*/
public function determinePageIdByRecordDatabaseExecuteCallback($fields, $table, $where) {
if ($table === $this->testTableName) {
return array(
'scope' => $this->testTableName,
'processed' => false,
'data' => array(
'pid' => 999,
),
);
} else {
return FALSE;
}
}
/**
* Callback method for pageIdCanBeDetermined test cases.
* Simulates TYPO3_DB->sql_fetch_assoc().
*
* @param mixed $resource
* @return mixed
*/
public function determinePageIdByRecordDatabaseFetchCallback(&$resource) {
if (is_array($resource) && !$resource['processed'] && $resource['scope'] === $this->testTableName) {
$resource['processed'] = true;
return $resource['data'];
} else {
return FALSE;
}
}
}
?>
t3lib/config_default.php (Arbeitskopie)
'notificationPrefix' => '[TYPO3 Note]', // String: Used to prefix the subject of mails sent in the taskcenter
'accessListRenderMode' => 'singlebox', // Can be "singlebox", "checkbox" or blank. Refers to the "renderMode" for the selector boxes in be-groups configuration.
'explicitADmode' => 'explicitDeny', // Sets the general allow/deny mode for selector box values. Value can be either "explicitAllow" or "explicitDeny", nothing else!
'TSconfigConditions' => 0, // Boolean. When set it is possible to have TypoScript like conditions in BE Page/User/Group TS-Config
'niceFlexFormXMLtags' => TRUE, // If set, the flexform XML will be stored with meaningful tags which can be validated with DTD schema. If you rely on custom reading of the XML from pre-4.0 versions you should set this to false if you don't like to change your reader code (internally it is insignificant since t3lib_div::xml2array() doesn't care for the tags if the index-attribute value is set)
'flexFormXMLincludeDiffBase' => TRUE, // If set, an additional tag with index "vXX.vDEFbase" is created for translations in flexforms holding the value of the default language when translation was changed. Used to show diff of value. This setting will change whether the system thinks flexform XML looks clean. For example when FALSE XX.vDEFbase fields will be removed in cleaning while accepted if TRUE (of course)
'compactFlexFormXML' => 0, // If set, the flexform XML will not contain indentation spaces making XML more compact
t3lib/class.t3lib_tstemplate.php (Arbeitskopie)
*/
function matching($cc) {
if (is_array($cc['all'])) {
$matchObj = t3lib_div::makeInstance('t3lib_matchCondition');
$matchObj->altRootLine=$cc['rootLine'];
/* @var $matchObj t3lib_matchCondition_frontend */
$matchObj = t3lib_div::makeInstance('t3lib_matchCondition_frontend');
$matchObj->setRootline((array)$cc['rootLine']);
$matchObj->setPageId($GLOBALS['TSFE']->id);
foreach ($cc['all'] as $key => $pre) {
if ($matchObj->match($pre)) {
$sectionsMatch[$key]=$pre;
......
$constants->breakPointLN=intval($this->ext_constants_BRP);
$constants->setup = $this->const;
$constants->setup = $this->mergeConstantsFromPageTSconfig($constants->setup);
$matchObj = t3lib_div::makeInstance('t3lib_matchCondition');
$matchObj->matchAlternative = $this->matchAlternative;
$matchObj->matchAll = $this->matchAll; // Matches ALL conditions in TypoScript
/* @var $matchObj t3lib_matchCondition_frontend */
$matchObj = t3lib_div::makeInstance('t3lib_matchCondition_frontend');
$matchObj->setSimulateMatchConditions($this->matchAlternative);
$matchObj->setSimulateMatchResult((bool)$this->matchAll);
// Traverse constants text fields and parse them
foreach($this->constants as $str) {
$constants->parse($str,$matchObj);
t3lib/class.t3lib_tsparser_tsconfig.php (Revision 0)
<?php
/***************************************************************
* Copyright notice
*
* (c) 1999-2007 Kasper Skaarhoj (kasperYYYY@typo3.com)
* (c) 2007 Kraft Bernhard (kraftb@kraftb.at)
* 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 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.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* A TS-Config parsing class which performs condition evaluation
*
* $Id$
*
* @author Kraft Bernhard <kraftb@kraftb.at>
*/
/**
* [CLASS/FUNCTION INDEX of SCRIPT]
*/
class t3lib_TSparser_TSconfig extends t3lib_TSparser {
/**
* Parses the passed TS-Config using conditions and caching
*
* @param integer The uid of the page being handled
* @param array The rootline of the page being handled
* @param string The TSConfig being parsed
* @param string The type of TSConfig (either "userTS" or "PAGES")
* @return array Array containing the parsed TSConfig and a flag wheter the content was retrieved from cache
* @access private
* @see t3lib_TSparser
*/
public function parseTSconfig($TStext, $id, $rootLine, $type) {
... This diff was truncated because it exceeds the maximum size that can be displayed.
(8-8/12)