Example #1
0
 /**
  * Fill output XML with some common data
  * @param \DOMDocument|null $xml
  * @param null $instance
  */
 public static function fillXML(&$xml = null, $instance = null)
 {
     $controller = Controller::getInstance();
     if (is_null($xml)) {
         $xml = $controller->xml;
         $node = $controller->realRoot;
     } else {
         $node = $xml->documentElement;
     }
     Debugger::addLine('Filling XML data for render: Started');
     // TODO: sync this with Envi::getState()
     $node->setAttribute('lang', Envi\Setup::getLocale());
     $node->setAttribute('site', Envi::getSubsite());
     $node->setAttribute('host', $host = Envi::getHost());
     $node->setAttribute('mainhost', $mainhost = Envi::getHost(true));
     $node->setAttribute('protocol', Envi::getProtocol());
     $node->setAttribute('fullhost', Envi::getURLPrefix());
     $node->setAttribute('instance', $instance ? $instance : View::$instance);
     $node->setAttribute('uri', Envi::getUri());
     $node->setAttribute('controllerUri', Action::getControllerUri());
     if ($host != $mainhost) {
         $node->setAttribute('urlprefix', Envi::getURLPrefix(true));
     }
     // get user agent
     Envi\UserAgent::getUserAgentXML($node);
     // ajax flag
     $node->setAttribute('ajax', (Request::isAjax() or isset($_SERVER['HTTP_X_REQUESTED_WITH']) and $_SERVER['HTTP_X_REQUESTED_WITH'] == 'SwitchPage') ? '1' : '0');
     $node->setAttribute('switcher', (!$controller->cache and isset($_SERVER['HTTP_X_REQUESTED_WITH']) and $_SERVER['HTTP_X_REQUESTED_WITH'] == 'SwitchPage') ? '1' : '0');
     // build and version number
     $node->setAttribute('build', Version::getBuild());
     $node->setAttribute('framework', Version::getFrameworkVersion(false));
     $node->setAttribute('frameworkLong', Version::getFrameworkVersion(true));
     // date
     /** @var $dateNode \DOMElement */
     $dateNode = $node->appendChild($xml->createElement('date'));
     $dateKeys = ['d', 'e', 'A', 'a', 'm', 'B', 'b', 'Y', 'y', 'c', 'x', 'H', 'M', 'S'];
     $dateValues = explode('|', strftime('%' . implode('|%', $dateKeys)));
     $dateCombined = array_combine($dateKeys, $dateValues);
     $dateNode->setAttribute('ts', time());
     foreach ($dateCombined as $k => $v) {
         $dateNode->setAttribute($k, $v);
     }
     // debug flag
     $node->setAttribute('debug', Debugger::isEnabled() ? '1' : '0');
     // config values (for js variable)
     $configNode = $node->appendChild($xml->createElement('config'));
     Envi::getStateXML($configNode);
     // menu
     if ($menuResource = Resourcer::getInstance('menu')->compile(View::$instance)) {
         $menuXML = new \DOMDocument();
         $menuXML->loadXML($menuResource);
         $node->appendChild($xml->importNode($menuXML->documentElement, true));
     }
     // auth
     Auth::getInstance()->getAuthXML($node);
     // locale
     Locales::getInstance()->getLocaleXML($node);
     // Add config js object
     $config = Envi::getState();
     $confJS = '';
     foreach ($config as $k => $v) {
         $confJS .= "config.{$k}='" . addslashes($v) . "';";
     }
     $node->setAttribute('jsConfig', $confJS);
     Debugger::addLine('Filling XML data for render: Done');
     Debugger::debugXML($node);
 }
Example #2
0
 public function test_UA()
 {
     // no user agent string
     \Difra\Envi\UserAgent::setUAString('');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => false, 'version' => null, 'os' => false, 'engine' => false, 'device' => null]);
     // Safari 6.0 for Mac
     \Difra\Envi\UserAgent::setUAString('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Safari', 'version' => '6.0', 'os' => 'Macintosh', 'engine' => 'WebKit', 'device' => null]);
     // Firefox 21 for Mac
     \Difra\Envi\UserAgent::setUAString('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Firefox', 'version' => '21.0', 'os' => 'Macintosh', 'engine' => 'Gecko', 'device' => null]);
     // Opera 12.15 for Mac
     \Difra\Envi\UserAgent::setUAString('Opera/9.80 (Macintosh; Intel Mac OS X 10.8.4) Presto/2.12.388 Version/12.15');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Opera', 'version' => '12.15', 'os' => 'Macintosh', 'engine' => 'Presto', 'device' => null]);
     // Chrome 27 for Mac
     \Difra\Envi\UserAgent::setUAString('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Chrome', 'version' => '27.0', 'os' => 'Macintosh', 'engine' => 'WebKit', 'device' => null]);
     // Internet Explorer 11
     \Difra\Envi\UserAgent::setUAString('Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'IE', 'version' => '11.0', 'os' => 'Windows', 'engine' => 'Trident', 'device' => null]);
     // IE 10
     \Difra\Envi\UserAgent::setUAString('Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'IE', 'version' => '10.0', 'os' => 'Windows', 'engine' => 'Trident', 'device' => null]);
     // IE 9
     \Difra\Envi\UserAgent::setUAString('Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'IE', 'version' => '9.0', 'os' => 'Windows', 'engine' => 'Trident', 'device' => null]);
     // IE 8
     \Difra\Envi\UserAgent::setUAString('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'IE', 'version' => '8.0', 'os' => 'Windows', 'engine' => 'Trident', 'device' => null]);
     // IE 7
     \Difra\Envi\UserAgent::setUAString('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'IE', 'version' => '7.0', 'os' => 'Windows', 'engine' => false, 'device' => null]);
     // Opera 11.10 for iPad
     \Difra\Envi\UserAgent::setUAString('Opera/9.80 (iPad; Opera Mini/7.0.5/30.3341; U; ru) Presto/2.8.119 Version/11.10');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Opera', 'version' => '11.10', 'os' => 'iOS', 'engine' => 'Presto', 'device' => 'iPad']);
     // Chrome 27 for iPad
     \Difra\Envi\UserAgent::setUAString('Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/27.0.1453.10 Mobile/10B329 Safari/8536.25');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Chrome', 'version' => '27.0', 'os' => 'iOS', 'engine' => 'WebKit', 'device' => 'iPad']);
     // Safari 6 for iPad
     \Difra\Envi\UserAgent::setUAString('Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Safari', 'version' => '6.0', 'os' => 'iOS', 'engine' => 'WebKit', 'device' => 'iPad']);
     // Opera 12.10 for Android Tablet
     \Difra\Envi\UserAgent::setUAString('Opera/9.80 (Android 2.3.7; Linux; Opera Tablet/46223) Presto/2.11.355 Version/12.10');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Opera', 'version' => '12.10', 'os' => 'Android', 'engine' => 'Presto', 'device' => null]);
     // Opera 12.10 for Android Mobile
     \Difra\Envi\UserAgent::setUAString('Opera/9.80 (Android 2.3.7; Linux; Opera Mobi/46223) Presto/2.11.355 Version/12.10');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Opera', 'version' => '12.10', 'os' => 'Android', 'engine' => 'Presto', 'device' => null]);
     // Opera 12.10 for MeeGo
     \Difra\Envi\UserAgent::setUAString('Opera/9.80 (Linux i686; Opera Mobi/46223; MeeGo) Presto/2.11.355 Version/12.10');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Opera', 'version' => '12.10', 'os' => 'MeeGo', 'engine' => 'Presto', 'device' => null]);
     // Opera 12.10 for Linux
     \Difra\Envi\UserAgent::setUAString('Opera/9.80 (X11; Linux zbov) Presto/2.11.355 Version/12.10');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Opera', 'version' => '12.10', 'os' => 'Linux', 'engine' => 'Presto', 'device' => null]);
     // Opera 12.10 for iPad
     \Difra\Envi\UserAgent::setUAString('Opera/9.80 (Macintosh; Intel Mac OS X 10.8.4; Opera Tablet/46223) Presto/2.11.355 Version/12.10');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Opera', 'version' => '12.10', 'os' => 'Macintosh', 'engine' => 'Presto', 'device' => null]);
     // Android Browser 4.0 for LG-E435 Mobile
     \Difra\Envi\UserAgent::setUAString('Mozilla/5.0 (Linux; U; Android 4.1.2; ru-ru; LG-E435 Build/JZO56K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'Android-Browser', 'version' => '4.0', 'os' => 'Android', 'engine' => 'WebKit', 'device' => null]);
     // Blackberry Browser 7.1 for Blackberry 9900
     \Difra\Envi\UserAgent::setUAString('Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+');
     $this->assertEquals(\Difra\Envi\UserAgent::getUserAgent(), ['agent' => 'BlackBerry-Browser', 'version' => '7.1', 'os' => 'BlackBerry', 'engine' => 'WebKit', 'device' => null]);
 }