public function get_content()
    {
        global $CFG;
        if ($this->content !== null) {
            return $this->content;
        }
        $this->content = new stdClass();
        $obj = new login_msg_lib();
        $baseurl = $obj->get_base();
        $welcomepage = $obj->get_welcome();
        $jquerycdn = 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js';
        $databaseobj = core_useragent::instance();
        $device = $databaseobj->get_device_type();
        $jquery = <<<JQ
    <script type="text/javascript" src="{$jquerycdn}"></script>
JQ;
        if ($device == 'mobile' || $device == 'tablet') {
            $jquery = '';
        }
        if (empty($welcomepage)) {
            $popupjs = <<<HTML
        {$jquery}
HTML;
        } else {
            $popupjs = <<<HTML
        {$jquery}
        <!--ThickBox 3-->
        <script>
        // Add popup fade?
        function welcome() {
            var win_width = 600;
            var win_height = 400;
            var left = screen.width / 2 - win_width/2;
            var top = screen.height /2 - win_height/2;
            var winoptions = "width="+win_width+", height="+win_height+", top="+top+", left="+left;
            var popup = window.open("{$welcomepage}", "Welcome", winoptions );
        }
        setTimeout( function(){welcome();}, 3000); 
        </script>
HTML;
        }
        $this->content->text = <<<HTML
        {$popupjs}
        <script type="text/javascript" src="{$baseurl}js/thickbox/thickbox.js"></script>
        <link rel="stylesheet" href="{$baseurl}js/thickbox/thickbox.css" type="text/css" media="screen" />
    <!-- /ThickBox 3 -->
        <div id="log_meg_small">
            <!-- link to reopen message --!>
                <p> <a href="{$welcomepage}" target="_blank">Welcome</a> </p>
                <p> <a href="https://www.youtube.com/watch?v=GDk1YOP2f4A"
                \ttarget="_blank">Why Durabuilt?</a> </p>
        </div>
HTML;
        $this->content->footer = '';
        return $this->content;
    }
Example #2
0
 /**
  * Pre-test setup. Preserves $CFG.
  */
 public function setUp()
 {
     parent::setUp();
     // Reset $CFG and $SERVER.
     $this->resetAfterTest();
     // Consistent initial setup: all players disabled.
     \core\plugininfo\media::set_enabled_plugins('videojs');
     // Pretend to be using Firefox browser (must support ogg for tests to work).
     core_useragent::instance(true, 'Mozilla/5.0 (X11; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0 ');
 }
 /**
  * This function will test directives used to serve SVG images to make sure
  * this are making the right decisions.
  */
 public function test_svg_image_use()
 {
     global $CFG;
     $this->resetAfterTest();
     // The two required tests.
     $this->assertTrue(file_exists($CFG->dirroot . '/pix/i/test.svg'));
     $this->assertTrue(file_exists($CFG->dirroot . '/pix/i/test.png'));
     $theme = theme_config::load(theme_config::DEFAULT_THEME);
     // First up test the forced setting.
     $imagefile = $theme->resolve_image_location('i/test', 'moodle', true);
     $this->assertSame('test.svg', basename($imagefile));
     $imagefile = $theme->resolve_image_location('i/test', 'moodle', false);
     $this->assertSame('test.png', basename($imagefile));
     // Now test the use of the svgicons config setting.
     // We need to clone the theme as usesvg property is calculated only once.
     $testtheme = clone $theme;
     $CFG->svgicons = true;
     $imagefile = $testtheme->resolve_image_location('i/test', 'moodle', null);
     $this->assertSame('test.svg', basename($imagefile));
     $CFG->svgicons = false;
     // We need to clone the theme as usesvg property is calculated only once.
     $testtheme = clone $theme;
     $imagefile = $testtheme->resolve_image_location('i/test', 'moodle', null);
     $this->assertSame('test.png', basename($imagefile));
     unset($CFG->svgicons);
     // Finally test a few user agents.
     $useragents = array('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)' => false, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)' => false, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0)' => false, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)' => false, 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' => true, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)' => false, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)' => true, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)' => true, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0)' => true, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C)' => true, 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.652.0 Safari/534.17' => true, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1' => true, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1' => true, 'Mozilla/5.0 (Windows NT 6.1; rv:1.9) Gecko/20100101 Firefox/4.0' => true, 'Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0.1' => true, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1' => true, 'Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.10.289 Version/12.02' => false, 'Mozilla/5.0 (Linux; U; Android 0.5; en-us) AppleWebKit/522+ (KHTML, like Gecko) Safari/419.3' => false, 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; HTC Vision Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' => false, 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' => true, 'Mozilla/5.0 (Linux; Android 4.3; it-it; SAMSUNG GT-I9505/I9505XXUEMJ7 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' => true);
     foreach ($useragents as $agent => $expected) {
         core_useragent::instance(true, $agent);
         // We need to clone the theme as usesvg property is calculated only once.
         $testtheme = clone $theme;
         $imagefile = $testtheme->resolve_image_location('i/test', 'moodle', null);
         if ($expected) {
             $this->assertSame('test.svg', basename($imagefile), 'Incorrect image returned for user agent `' . $agent . '`');
         } else {
             $this->assertSame('test.png', basename($imagefile), 'Incorrect image returned for user agent `' . $agent . '`');
         }
     }
 }
Example #4
0
 /**
  * Get an instance of the user agent object.
  *
  * @param bool $reload If set to true the user agent will be reset and all ascertations remade.
  * @param string $forceuseragent The string to force as the user agent, don't use unless absolutely unavoidable.
  * @return core_useragent
  */
 public static function instance($reload = false, $forceuseragent = null)
 {
     if (!self::$instance || $reload) {
         self::$instance = new core_useragent($forceuseragent);
     }
     return self::$instance;
 }
Example #5
0
 /**
  * Sets user agent to Firefox.
  */
 private function pretend_to_be_firefox()
 {
     // Pretend to be using Firefox browser (must support ogg for tests to work).
     core_useragent::instance(true, 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0');
 }
Example #6
0
 /**
  * Test device type detection.
  */
 public function test_get_device_type()
 {
     // IE8 (common pattern ~1.5% of IE7/8 users have embedded IE6 agent).
     $ie8 = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BT Openworld BB; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Hotbar 10.2.197.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)';
     core_useragent::instance(true, $ie8);
     $this->assertEquals('default', core_useragent::get_device_type());
     // Genuine IE6.
     $ie6 = 'Mozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; Media Center PC 2.8)';
     core_useragent::instance(true, $ie6);
     $this->assertEquals('legacy', core_useragent::get_device_type());
     core_useragent::instance(true);
 }
Example #7
0
 /**
  * @dataProvider user_agents_providers
  */
 public function test_useragent_web_crawler($useragent, $tests)
 {
     // Setup the core_useragent instance.
     core_useragent::instance(true, $useragent);
     $expectation = isset($tests['is_web_crawler']) ? $tests['is_web_crawler'] : false;
     $this->assertSame($expectation, core_useragent::is_web_crawler());
 }
Example #8
0
 /**
  * Regression tests for the deprecated is_web_crawler() function
  */
 public function test_deprecated_is_web_crawler()
 {
     $browsers = array('Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:18.0) Gecko/18.0 Firefox/18.0', 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412 (KHTML, like Gecko) Safari/412', 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10', 'Opera/9.0 (Windows NT 5.1; U; en)', 'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 –Nexus', 'Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5');
     $crawlers = array('Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)', 'Googlebot-Image/1.0', 'Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)', 'Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)', 'Mozilla/5.0 (compatible; bingbot/2.0 +http://www.bing.com/bingbot.htm)', 'msnbot/2.1', 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)', 'Mozilla/5.0 (compatible; YandexImages/3.0; +http://yandex.com/bots)', 'AltaVista V2.0B crawler@evreka.com', 'ZoomSpider - wrensoft.com [ZSEBOT]', 'Baiduspider+(+http://www.baidu.com/search/spider_jp.html)', 'Baiduspider+(+http://www.baidu.com/search/spider.htm)', 'BaiDuSpider', 'User-Agent: Mozilla/2.0 (compatible; Ask Jeeves/Teoma)');
     foreach ($browsers as $agent) {
         core_useragent::instance(true, $agent);
         $this->assertSame($agent, core_useragent::get_user_agent_string());
         $this->assertFalse(is_web_crawler());
         $this->assertDebuggingCalled('is_web_crawler() has been deprecated, please use core_useragent::is_web_crawler() instead.', DEBUG_DEVELOPER);
     }
     foreach ($crawlers as $agent) {
         core_useragent::instance(true, $agent);
         $this->assertSame($agent, core_useragent::get_user_agent_string());
         $this->assertTrue(is_web_crawler(), "{$agent} should be considered a search engine");
         $this->assertDebuggingCalled('is_web_crawler() has been deprecated, please use core_useragent::is_web_crawler() instead.', DEBUG_DEVELOPER);
     }
 }
Example #9
0
 /**
  * @dataProvider user_agents_providers
  */
 public function test_get_browser_version_classes($useragent, $tests)
 {
     // Setup the core_useragent instance.
     core_useragent::instance(true, $useragent);
     $actual = core_useragent::get_browser_version_classes();
     foreach ($tests['versionclasses'] as $expectedclass) {
         $this->assertContains($expectedclass, $actual);
     }
     $this->assertCount(count($tests['versionclasses']), $actual);
 }
Example #10
0
 /**
  * This function will test custom device detection regular expression setting.
  */
 public function test_devicedetectregex()
 {
     global $CFG;
     $this->resetAfterTest();
     // Check config currently empty.
     $this->assertEmpty(json_decode($CFG->devicedetectregex));
     $this->assertTrue(core_useragent::set_user_device_type('tablet'));
     $exceptionoccured = false;
     try {
         core_useragent::set_user_device_type('featurephone');
     } catch (moodle_exception $e) {
         $exceptionoccured = true;
     }
     $this->assertTrue($exceptionoccured);
     // Set config and recheck.
     $config = array('featurephone' => '(Symbian|MIDP-1.0|Maemo|Windows CE)');
     $CFG->devicedetectregex = json_encode($config);
     core_useragent::instance(true);
     // Clears singleton cache.
     $this->assertTrue(core_useragent::set_user_device_type('tablet'));
     $this->assertTrue(core_useragent::set_user_device_type('featurephone'));
 }