- $browserInfo = $this->browserInfoArray;
- $string = trim($string);
- $string = substr($string,1,strlen($string)-2);
- $parts = explode('][',$string);
- foreach ($parts as $val) {
- $pcs = explode('=',$val,2);
- $switchKey = trim($pcs[0]);
- switch($switchKey) {
- case 'browser':
- $values = explode(',',$pcs[1]);
- while(list(,$test)=each($values)) {
- if (strstr($browserInfo['browser'].$browserInfo['version'],trim($test))) {
- return true;
- }
- }
- break;
- case 'version':
- $values = explode(',',$pcs[1]);
- while(list(,$test)=each($values)) {
- $test = trim($test);
- if ($test) {
- if (strcspn($test,'=<>')==0) {
- switch(substr($test,0,1)) {
- case '=':
- if (doubleval(substr($test,1))==$browserInfo['version']) return true;
- break;
- case '<':
- if (doubleval(substr($test,1))>$browserInfo['version']) return true;
- break;
- case '>':
- if (doubleval(substr($test,1))<$browserInfo['version']) return true;
- break;
- }
- } else {
- if (strpos(' '.$browserInfo['version'],$test)==1) {return true;}
- }
- }
- }
- break;
- case 'system':
- $values = explode(',',$pcs[1]);
- while(list(,$test)=each($values)) {
- $test = trim($test);
- if ($test) {
- if (strpos(' '.$browserInfo['system'],$test)==1) {return true;}
- }
- }
- break;
- case 'device':
- $values = explode(',',$pcs[1]);
- if (!isset($this->deviceInfo)) {
- $this->deviceInfo = $this->whichDevice(t3lib_div::getIndpEnv('HTTP_USER_AGENT'));
- }
- while(list(,$test)=each($values)) {
- $test = trim($test);
- if ($test) {
- if ($this->deviceInfo==$test) {return true;}
- }
- }
- break;
- case 'useragent':
- $test = trim($pcs[1]);
- if ($test) {
- return $this->matchWild($browserInfo['useragent'],$test);
- }
- break;
- case 'language':
- $values = explode(',',$pcs[1]);
- while(list(,$test)=each($values)) {
- $test = trim($test);
- if ($test) {
- if (ereg('^\*.+\*$',$test)) {
- $allLanguages = split('[,;]',t3lib_div::getIndpEnv('HTTP_ACCEPT_LANGUAGE'));
- if (in_array(substr($test,1,-1), $allLanguages)) {return true;}
- } else {
- if (t3lib_div::getIndpEnv('HTTP_ACCEPT_LANGUAGE') == $test) {return true;}
- }
- }
- }
- break;
- case 'IP':
- if (t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $pcs[1])) {return true;}
- break;
- case 'hostname':
- if (t3lib_div::cmpFQDN(t3lib_div::getIndpEnv('REMOTE_ADDR'), $pcs[1])) {return true;}
- break;
- // hour, minute, dayofweek, dayofmonth, month
- case 'hour':
- case 'minute':
- case 'dayofweek':
- case 'dayofmonth':
- case 'month':
- $theEvalTime = $GLOBALS['SIM_EXEC_TIME']; // In order to simulate time properly in templates.
- switch($switchKey) {
- case 'hour': $theTestValue = date('H',$theEvalTime); break;
- case 'minute': $theTestValue = date('i',$theEvalTime); break;
- case 'dayofweek': $theTestValue = date('w',$theEvalTime); break;
- case 'dayofmonth': $theTestValue = date('d',$theEvalTime); break;
- case 'month': $theTestValue = date('m',$theEvalTime); break;
- }
- $theTestValue = intval($theTestValue);
- // comp
- $values = explode(',',$pcs[1]);
- reset($values);
- while(list(,$test)=each($values)) {
- $test = trim($test);
- if (t3lib_div::testInt($test)) {$test='='.$test;}
- if ($test) {
- if ($this->testNumber($test,$theTestValue)) {return true;}
- }
- }
- break;
- case 'usergroup':
- if ($GLOBALS['TSFE']->gr_list!='0,-1') { // '0,-1' is the default usergroups when not logged in!
- $values = explode(',',$pcs[1]);
- while(list(,$test)=each($values)) {
- $test = trim($test);
- if ($test) {
- if ($test=='*' || t3lib_div::inList($GLOBALS['TSFE']->gr_list,$test)) {return true;}
- }
- }
- }
- break;
- case 'loginUser':
- if ($GLOBALS['TSFE']->loginUser) {
- $values = explode(',',$pcs[1]);
- while(list(,$test)=each($values)) {
- $test = trim($test);
- if ($test) {
- if ($test=='*' || !strcmp($GLOBALS['TSFE']->fe_user->user['uid'],$test)) {return true;}
- }
- }
- }
- break;
- case 'globalVar':
- $values = explode(',',$pcs[1]);
- while(list(,$test)=each($values)) {
- $test = trim($test);
- if ($test) {
- $point = strcspn($test,'=<>');
- $theVarName = substr($test,0,$point);
- $nv = $this->getGP_ENV_TSFE(trim($theVarName));
- $testValue = substr($test,$point);