Author: ornicar2
Date: 2010-01-17 19:49:46 +0100 (Sun, 17 Jan 2010)
New Revision: 26777

Added:
   plugins/diemPlugin/trunk/dmCorePlugin/lib/browser/
   plugins/diemPlugin/trunk/dmCorePlugin/lib/browser/dmBrowser.php
   plugins/diemPlugin/trunk/dmCorePlugin/lib/browser/dmBrowserDetection.php
   plugins/diemPlugin/trunk/dmCorePlugin/test/unit/dmBrowserTest.php
Removed:
   plugins/diemPlugin/trunk/dmCorePlugin/lib/user/dmBrowser.php
   plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap.xml
   plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap_en.xml
   plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap_fr.xml
Modified:
   plugins/diemPlugin/trunk/dmCorePlugin/config/dm/services.yml
   
plugins/diemPlugin/trunk/dmCorePlugin/test/project/config/ProjectConfiguration.class.php
Log:
[Diem]
- added browser_detection service
- improved browser detection with googlebot, google chrome and iphone
- added unit tests for browser detection

Modified: plugins/diemPlugin/trunk/dmCorePlugin/config/dm/services.yml
===================================================================
--- plugins/diemPlugin/trunk/dmCorePlugin/config/dm/services.yml        
2010-01-17 17:04:38 UTC (rev 26776)
+++ plugins/diemPlugin/trunk/dmCorePlugin/config/dm/services.yml        
2010-01-17 18:49:46 UTC (rev 26777)
@@ -116,9 +116,11 @@
     max_size_megabytes:       3                     # max size for the log 
file before rotating
   
   request_log_entry.class:    dmRequestLogEntry     # An entry of the event log
+
+  browser.class:              dmBrowser             # Represents a user browser
+
+  browser_detection.class:    dmBrowserDetection    # Responsible for 
detecting user browser depending on its user agent
     
-  browser.class:              dmBrowser             # Responsible for 
detecting user browser depending on its user agent
-    
   page_tree_watcher.class:    dmPageTreeWatcher     # Responsible for 
listening all events that may require a page synchronization, and launch the 
synchronization if any before redirections.
   page_tree_watcher.options:
     use_thread:               auto                  # launch heavy 
synchronization tasks on another process ( auto, true, false )
@@ -324,7 +326,12 @@
   browser:
     class:                    %browser.class%
     shared:                   false
-    arguments:                [ @dispatcher ]
+    arguments:                [ @dispatcher, @browser_detection ]
+
+  browser_detection:
+    class:                    %browser_detection.class%
+    shared:                   true
+    arguments:                []
       
   page_tree_watcher:
     class:                    %page_tree_watcher.class%

Copied: plugins/diemPlugin/trunk/dmCorePlugin/lib/browser/dmBrowser.php (from 
rev 26731, plugins/diemPlugin/trunk/dmCorePlugin/lib/user/dmBrowser.php)
===================================================================
--- plugins/diemPlugin/trunk/dmCorePlugin/lib/browser/dmBrowser.php             
                (rev 0)
+++ plugins/diemPlugin/trunk/dmCorePlugin/lib/browser/dmBrowser.php     
2010-01-17 18:49:46 UTC (rev 26777)
@@ -0,0 +1,87 @@
+<?php
+
+class dmBrowser
+{
+  protected
+  $dispatcher,
+  $browserDetection,
+  $name,
+  $version;
+  
+  public function __construct(sfEventDispatcher $dispatcher, 
dmBrowserDetection $browserDetection)
+  {
+    $this->dispatcher = $dispatcher;
+    $this->browserDetection = $browserDetection;
+
+    $this->initialize();
+  }
+
+  protected function initialize()
+  {
+    $this->name = $this->version = null;
+  }
+  
+  /*
+   * Minimal browser detection from user agent.
+   * It has the advantage of being compact and
+   * fairly performant as well, since it doesn't
+   * do any iteration or recursion.
+   */
+  public function configureFromUserAgent($userAgent)
+  {
+    $this->initialize();
+
+    $infos = $this->browserDetection->execute($userAgent);
+    $this->setName($infos['name']);
+    $this->setVersion($infos['version']);
+
+    if($this->isUnknown())
+    {
+      $this->dispatcher->notify(new sfEvent($this, 'dm.browser.unknown', 
$userAgent));
+    }
+  }
+  
+  public function isUnknown()
+  {
+    return null === $this->name;
+  }
+  
+  public function getName()
+  {
+    return $this->name;
+  }
+  
+  public function setName($name)
+  {
+    $this->name = $name;
+  }
+  
+  public function getVersion()
+  {
+    return $this->version;
+  }
+  
+  public function setVersion($version)
+  {
+    $this->version = $version;
+  }
+  
+  public function __toString()
+  {
+    return $this->getFullName();
+  }
+  
+  public function describe()
+  {
+    return array(
+      'name'        => $this->getName(),
+      'version'     => $this->getVersion(),
+      'is_unknown'  => $this->isUnknown()
+    );
+  }
+  
+  public function getFullName()
+  {
+    return $this->getName().' '.$this->getVersion();
+  }
+}
\ No newline at end of file

Added: plugins/diemPlugin/trunk/dmCorePlugin/lib/browser/dmBrowserDetection.php
===================================================================
--- plugins/diemPlugin/trunk/dmCorePlugin/lib/browser/dmBrowserDetection.php    
                        (rev 0)
+++ plugins/diemPlugin/trunk/dmCorePlugin/lib/browser/dmBrowserDetection.php    
2010-01-17 18:49:46 UTC (rev 26777)
@@ -0,0 +1,94 @@
+<?php
+
+class dmBrowserDetection
+{
+  protected
+  $userAgent,
+  $name,
+  $version;
+
+  public function execute($userAgent)
+  {
+    $this->userAgent = strtr(strtolower($userAgent), $this->getAliases());
+    $this->name = $this->version = null;
+
+    $this->guessFast();
+
+    $this->fixGoogleChrome();
+
+    $this->fixSafariVersion();
+
+    $this->fixIphone();
+
+    return array('name' => $this->name, 'version' => $this->version);
+  }
+
+  protected function guessFast()
+  {
+    // Clean up agent and build regex that matches phrases for known browsers
+    // (e.g. "Firefox/2.0" or "MSIE 6.0" (This only matches the major and minor
+    // version numbers.  E.g. "2.0.0.6" is parsed as simply "2.0"
+    $pattern = '#('.join('|', $this->getKnownBrowsers()).')[/ 
]+([0-9]+(?:\.[0-9]+)?)#';
+
+    // Find all phrases (or return empty array if none found)
+    if (preg_match_all($pattern, $this->userAgent, $matches))
+    {
+      // Since some UAs have more than one phrase (e.g Firefox has a Gecko 
phrase,
+      // Opera 7,8 have a MSIE phrase), use the last one found (the right-most 
one
+      // in the UA).  That's usually the most correct.
+      $i = count($matches[1])-1;
+
+      if (isset($matches[1][$i]))
+      {
+        $this->name = $matches[1][$i];
+      }
+      if (isset($matches[2][$i]))
+      {
+        $this->version = $matches[2][$i];
+      }
+    }
+  }
+
+  protected function fixGoogleChrome()
+  {
+    // Google chrome has a safari like signature
+    if ('safari' === $this->name && strpos($this->userAgent, 'chrome/'))
+    {
+      $this->name = 'chrome';
+      $this->version = preg_replace('|.+chrome/([0-9]+(?:\.[0-9]+)?).+|', 
'$1', $this->userAgent);
+    }
+  }
+
+  protected function fixSafariVersion()
+  {
+    // Safari version is not encoded "normally"
+    if ('safari' === $this->name && strpos($this->userAgent, ' version/'))
+    {
+      $this->version = preg_replace('|.+\sversion/([0-9]+(?:\.[0-9]+)?).+|', 
'$1', $this->userAgent);
+    }
+  }
+
+  protected function fixIphone()
+  {
+    if('webkit' === $this->name && strpos($this->userAgent, '(iphone;'))
+    {
+      $this->name = 'iphone';
+    }
+  }
+
+  protected function getAliases()
+  {
+    return array(
+      'shiretoko'     => 'firefox',
+      'namoroka'      => 'firefox',
+      'shredder'      => 'firefox',
+      'minefield'     => 'firefox',
+      'granparadiso'  => 'firefox'
+    );
+  }
+
+  protected function getKnownBrowsers()
+  {
+    return array('msie', 'firefox', 'safari', 'webkit', 'opera', 'netscape', 
'konqueror', 'gecko', 'chrome', 'googlebot', 'iphone');
+  }
+}
\ No newline at end of file

Deleted: plugins/diemPlugin/trunk/dmCorePlugin/lib/user/dmBrowser.php
===================================================================
--- plugins/diemPlugin/trunk/dmCorePlugin/lib/user/dmBrowser.php        
2010-01-17 17:04:38 UTC (rev 26776)
+++ plugins/diemPlugin/trunk/dmCorePlugin/lib/user/dmBrowser.php        
2010-01-17 18:49:46 UTC (rev 26777)
@@ -1,110 +0,0 @@
-<?php
-
-class dmBrowser
-{
-  protected
-  $dispatcher,
-  $name,
-  $version;
-  
-  protected static
-  $browserAliases = array(
-    'shiretoko' => 'firefox',
-    'namoroka'  => 'firefox'
-  ),
-  $knownBrowsers = array('msie', 'firefox', 'safari', 'webkit', 'opera', 
'netscape', 'konqueror', 'gecko', 'chrome');
-  
-  public function __construct(sfEventDispatcher $dispatcher)
-  {
-    $this->dispatcher = $dispatcher;
-  }
-  
-  /*
-   * Minimal browser detection from user agent.
-   * It has the advantage of being compact and
-   * fairly performant as well, since it doesn't
-   * do any iteration or recursion.
-   */
-  public function configureFromUserAgent($userAgent)
-  {
-    $formattedUserAgent = strtr(strtolower($userAgent), self::$browserAliases);
-    
-    // Clean up agent and build regex that matches phrases for known browsers
-    // (e.g. "Firefox/2.0" or "MSIE 6.0" (This only matches the major and minor
-    // version numbers.  E.g. "2.0.0.6" is parsed as simply "2.0"
-    $pattern = '#(?<browser>'.join('|', self::$knownBrowsers).')[/ 
]+(?<version>[0-9]+(?:\.[0-9]+)?)#';
-  
-    // Find all phrases (or return empty array if none found)
-    if (preg_match_all($pattern, $formattedUserAgent, $matches)) 
-    {
-      // Since some UAs have more than one phrase (e.g Firefox has a Gecko 
phrase,
-      // Opera 7,8 have a MSIE phrase), use the last one found (the right-most 
one
-      // in the UA).  That's usually the most correct.
-      $i = count($matches['browser'])-1;
-      
-      if (isset($matches['browser'][$i]))
-      {
-        $this->setName($matches['browser'][$i]);
-      }
-      if (isset($matches['version'][$i]))
-      {
-        $this->setVersion($matches['version'][$i]);
-      }
-      
-      //Google chrome has a safari like signature
-      if ('safari' === $this->name && strpos($formattedUserAgent, 'chrome/'))
-      {
-        $this->setName('chrome');
-        $this->setVersion(preg_replace('|.+chrome/([0-9]+(?:\.[0-9]+)?).+|', 
'$1', $formattedUserAgent));
-      }
-    }
-    else
-    {
-      $this->dispatcher->notify(new sfEvent($this, 'dm.browser.unknown', 
$userAgent));
-    }
-  }
-  
-  public function isUnknown()
-  {
-    return null === $this->name;
-  }
-  
-  public function getName()
-  {
-    return $this->name;
-  }
-  
-  public function setName($name)
-  {
-    $this->name = $name;
-  }
-  
-  public function getVersion()
-  {
-    return $this->version;
-  }
-  
-  public function setVersion($version)
-  {
-    $this->version = $version;
-  }
-  
-  public function __toString()
-  {
-    return $this->getFullName();
-  }
-  
-  public function describe()
-  {
-    return array(
-      'name' => $this->getName(),
-      'version' => $this->getVersion(),
-      'is_unknown' => $this->isUnknown()
-    );
-  }
-  
-  public function getFullName()
-  {
-    return $this->getName().' '.$this->getVersion();
-  }
-}
\ No newline at end of file

Modified: 
plugins/diemPlugin/trunk/dmCorePlugin/test/project/config/ProjectConfiguration.class.php
===================================================================
--- 
plugins/diemPlugin/trunk/dmCorePlugin/test/project/config/ProjectConfiguration.class.php
    2010-01-17 17:04:38 UTC (rev 26776)
+++ 
plugins/diemPlugin/trunk/dmCorePlugin/test/project/config/ProjectConfiguration.class.php
    2010-01-17 18:49:46 UTC (rev 26777)
@@ -76,6 +76,7 @@
     sfToolkit::clearDirectory(dmOs::join(sfConfig::get('sf_root_dir'), 
'cache'));
     sfToolkit::clearDirectory(dmOs::join(sfConfig::get('sf_root_dir'), 'log'));
     
$filesystem->remove(sfFinder::type('any')->not_name('*.sqlite')->in(sfConfig::get('sf_data_dir')));
+    
$filesystem->remove(sfFinder::type('file')->name('sitemap*')->in(sfConfig::get('sf_web_dir')));
     copy(dmOs::join(sfConfig::get('sf_data_dir'), 'fresh_db.sqlite'), 
dmOs::join(sfConfig::get('sf_data_dir'), 'db.sqlite'));
     $this->cleanupUploads($filesystem);
   }

Deleted: 
plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap.xml
===================================================================
--- plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap.xml  
2010-01-17 17:04:38 UTC (rev 26776)
+++ plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap.xml  
2010-01-17 18:49:46 UTC (rev 26777)
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";>
-  <sitemap>
-    <loc>http://www.my-domain.com/sitemap_en.xml</loc>
-  </sitemap>
-  <sitemap>
-    <loc>http://www.my-domain.com/sitemap_fr.xml</loc>
-  </sitemap>
-</sitemapindex>

Deleted: 
plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap_en.xml
===================================================================
--- 
plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap_en.xml   
    2010-01-17 17:04:38 UTC (rev 26776)
+++ 
plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap_en.xml   
    2010-01-17 18:49:46 UTC (rev 26777)
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";>
-  <url>
-    <loc>
-      http://www.my-domain.com/
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/page2
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/page21
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/page1
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/page12
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/page11
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/page111
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/orbi-at-dui-sed-el
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/orbi-at-dui-sed-el/oncus-mauris-a-sapie
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/orbi-at-dui-sed-el/oncus-mauris-a-sapie/mus-pellentesque-lao
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/sapien
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/sapien/us-donec-rhoncus-feugiat-arcu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/sapien/us-donec-rhoncus-feugiat-arcu/aptent-taciti-socio
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/s-integer-nec-risus-vivamus-sce
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/ma
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/ltrices-p
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/nec-porta-pulvinar-neque-nam-in-augue
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/nec-porta-pulvinar-neque-nam-in-augue/conubia-no
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/nec-porta-pulvinar-neque-nam-in-augue/conubia-no/ada-eget-tincidunt-quis-s
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/nec-porta-pulvinar-neque-nam-in-augue/conubia-no/ligula-quis-neque-iac
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/nec-porta-pulvinar-neque-nam-in-augue/conubia-no/m-mi-pellentesque-et-consequat-ut-fe
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/ut-ullamcorper
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/ut-ullamcorper/ulum-l
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/ut-ullamcorper/ulum-l/lutpat-quisque-laoreet-ni
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/lobortis-vel-ma
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre/e-erat-orci-a-nisl-i
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre/ante-vel-convallis-dolor
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre/phasellus-tristiqu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre/t-erat-condimentum-dapibus
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre/nec-justo-enim-ullamcorpe
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/ut-ligula-quis-neque-iacu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/domain-1
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/domain-1/categ-1
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/domain-1/categ-1/post-1
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-tags/leo-vestibulum-ante-ipsum-primis-in-fau
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/a-ipsum-nec-sapien-maece
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/ae-nunc-maecenas-at-ligula-se
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/s-vestibu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/pellentesque-convallis-elit
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/massa-ph
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/endiss
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-tags/rta-ligula-lobortis-risus-nullam-non-p
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/rutrum-vene
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/avida-al
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/arius-integer-nec-r
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/us
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/hendre
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/a-curae-p
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/r-d
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/verra-praesent-convallis-lobortis
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/c-lorem-tellus-c
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/i-tincidunt-quam-a-soll
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/lis-gravida-ut-a
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/felis-vita
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/curabitur-sit-am
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/tra-non-lobortis-vitae-quam
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-tags/ntum-morbi-sit-amet-lectus-iaculis-me
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/s-eleifend-gravid
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/fames-ac-turpis-egestas
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/us-vivamus-libero-sem-cursus-vel
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/ortor-maec
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/ec-gr
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/ligula-metus-malesu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-tags/terdum-nisi-at-suscipit-sodales-sapien
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/in-scelerisque-cu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/r-est-morbi-at-dui-sed
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/tum
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/t-erat-vulputate-vel
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/neque
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/etiam-et-nulla-con
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/psum-primis-in-faucibus-orci-luctus
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/a-orci
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/t-lobortis-fe
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/tag-1
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/authors
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/authors/admin
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/authors/ligula-nec-faucibus-egf05v
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/authors/nulla-facilisi-maecenrvpvzjme39
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/authors/s-convallis-imperdiet-metus-nunc-sitwija
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/authors/ante-ipsum-primis-in-faucibus-orci-lcpq9xh
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/sitemap
-    </loc>
-  </url>
-</urlset>
\ No newline at end of file

Deleted: 
plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap_fr.xml
===================================================================
--- 
plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap_fr.xml   
    2010-01-17 17:04:38 UTC (rev 26776)
+++ 
plugins/diemPlugin/trunk/dmCorePlugin/test/project/public_html/sitemap_fr.xml   
    2010-01-17 18:49:46 UTC (rev 26777)
@@ -1,368 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/orbi-at-dui-sed-el
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/orbi-at-dui-sed-el/oncus-mauris-a-sapie
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/orbi-at-dui-sed-el/oncus-mauris-a-sapie/mus-pellentesque-lao
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/sapien
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/sapien/us-donec-rhoncus-feugiat-arcu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/sapien/us-donec-rhoncus-feugiat-arcu/aptent-taciti-socio
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/s-integer-nec-risus-vivamus-sce
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/ma
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/ltrices-p
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/nec-porta-pulvinar-neque-nam-in-augue
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/nec-porta-pulvinar-neque-nam-in-augue/conubia-no
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/nec-porta-pulvinar-neque-nam-in-augue/conubia-no/ada-eget-tincidunt-quis-s
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/nec-porta-pulvinar-neque-nam-in-augue/conubia-no/ligula-quis-neque-iac
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/nec-porta-pulvinar-neque-nam-in-augue/conubia-no/m-mi-pellentesque-et-consequat-ut-fe
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/ut-ullamcorper
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/ut-ullamcorper/ulum-l
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/ut-ullamcorper/ulum-l/lutpat-quisque-laoreet-ni
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/lobortis-vel-ma
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre/e-erat-orci-a-nisl-i
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre/ante-vel-convallis-dolor
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre/phasellus-tristiqu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre/t-erat-condimentum-dapibus
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-domains/lobortis-vel-ma/giat-pre/nec-justo-enim-ullamcorpe
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/ut-ligula-quis-neque-iacu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/domain-1
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/domain-1/categ-1
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-domains/domain-1/categ-1/post-1
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-tags/leo-vestibulum-ante-ipsum-primis-in-fau
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/a-ipsum-nec-sapien-maece
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/ae-nunc-maecenas-at-ligula-se
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/s-vestibu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/pellentesque-convallis-elit
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/massa-ph
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/endiss
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-tags/rta-ligula-lobortis-risus-nullam-non-p
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/rutrum-vene
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/avida-al
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/arius-integer-nec-r
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/us
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/hendre
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/a-curae-p
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/r-d
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/verra-praesent-convallis-lobortis
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/c-lorem-tellus-c
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/i-tincidunt-quam-a-soll
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/lis-gravida-ut-a
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/felis-vita
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/curabitur-sit-am
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/tra-non-lobortis-vitae-quam
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-tags/ntum-morbi-sit-amet-lectus-iaculis-me
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/s-eleifend-gravid
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/fames-ac-turpis-egestas
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/us-vivamus-libero-sem-cursus-vel
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/ortor-maec
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/ec-gr
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/ligula-metus-malesu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/dm-test-tags/terdum-nisi-at-suscipit-sodales-sapien
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/in-scelerisque-cu
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/r-est-morbi-at-dui-sed
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/tum
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/t-erat-vulputate-vel
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/neque
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/etiam-et-nulla-con
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/psum-primis-in-faucibus-orci-luctus
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/a-orci
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/t-lobortis-fe
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/dm-test-tags/tag-1
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/authors/admin
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/authors/ligula-nec-faucibus-egf05v
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/authors/nulla-facilisi-maecenrvpvzjme39
-    </loc>
-  </url>
-  <url>
-    <loc>
-      http://www.my-domain.com/authors/s-convallis-imperdiet-metus-nunc-sitwija
-    </loc>
-  </url>
-  <url>
-    <loc>
-      
http://www.my-domain.com/authors/ante-ipsum-primis-in-faucibus-orci-lcpq9xh
-    </loc>
-  </url>
-</urlset>
\ No newline at end of file

Added: plugins/diemPlugin/trunk/dmCorePlugin/test/unit/dmBrowserTest.php
===================================================================
--- plugins/diemPlugin/trunk/dmCorePlugin/test/unit/dmBrowserTest.php           
                (rev 0)
+++ plugins/diemPlugin/trunk/dmCorePlugin/test/unit/dmBrowserTest.php   
2010-01-17 18:49:46 UTC (rev 26777)
@@ -0,0 +1,52 @@
+<?php
+
+require_once(dirname(__FILE__).'/helper/dmUnitTestHelper.php');
+$helper = new dmUnitTestHelper();
+$helper->boot();
+
+$t = new lime_test(16);
+$browser = $helper->get('browser');
+
+$namorokaUbuntu = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2pre) 
Gecko/20100116 Ubuntu/9.10 (karmic) Namoroka/3.6pre';
+$namorokaMac = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; 
rv:1.9.2) Gecko/20100105 Firefox/3.6';
+$chromeMac = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) 
AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.49 Safari/532.5';
+$safariMac = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; fr-fr) 
AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10';
+$operaWindows = 'Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 
Version/10.10';
+$googleBot = 'Mozilla/5.0 (compatible; Googlebot/2.1; 
+http://www.google.com/bot.html)';
+$msnBot = 'msnbot/2.0b (+http://search.msn.com/msnbot.htm)';
+$firefoxLinux = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.17) 
Gecko/2010010604 Linux Mint/7 (Gloria) Firefox/3.0.17';
+$firefoxWindows = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.7) 
Gecko/20091221 Firefox/3.5.7 GTB6 (.NET CLR 3.5.30729)';
+//$firefoxWindowsSp2 = 'Gecko 2009122116Mozilla/5.0 (Windows; U; Windows NT 
6.0; de; rv:1.9.0.17) Gecko/2009122116 
Firefox[xSP_2:077784879bbf239604c69a247f6786a0_220] 967907703 (.NET CLR 
3.5.30729)';
+$chromeLinux = 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.5 
(KHTML, like Gecko) Chrome/4.0.249.43 Safari/532.5';
+$speedySpider = 'Speedy Spider 
(http://www.entireweb.com/about/search_tech/speedy_spider/)';
+$minefieldMac = 'Gecko 20100113Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; 
en-US; rv:1.9.3a1pre) Gecko/20100113 Minefield/3.7a1pre';
+$ie7Windows = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; 
GTB6; SLCC1; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; 
.NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; MSOffice 12)';
+$ie6Windows = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt)';
+$feedFetcherGoogle = 'Feedfetcher-Google; 
(+http://www.google.com/feedfetcher.html; 2 subscribers; 
feed-id=6924676383167400434)';
+$iphone = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; de-de) 
AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7D11';
+
+$tests = array(
+  $namorokaUbuntu => array('name' => 'firefox', 'version' => '3.6', 
'is_unknown' => false),
+  $namorokaMac => array('name' => 'firefox', 'version' => '3.6', 'is_unknown' 
=> false),
+  $chromeMac => array('name' => 'chrome', 'version' => '4.0', 'is_unknown' => 
false),
+  $safariMac => array('name' => 'safari', 'version' => '4.0', 'is_unknown' => 
false),
+  $googleBot => array('name' => 'googlebot', 'version' => '2.1', 'is_unknown' 
=> false),
+  $msnBot => array('name' => null, 'version' => null, 'is_unknown' => true),
+  $operaWindows => array('name' => 'opera', 'version' => '9.80', 'is_unknown' 
=> false),
+  $firefoxLinux => array('name' => 'firefox', 'version' => '3.0', 'is_unknown' 
=> false),
+  $firefoxWindows => array('name' => 'firefox', 'version' => '3.5', 
'is_unknown' => false),
+//  $firefoxWindowsSp2 => array('name' => 'firefox', 'version' => '3.0', 
'is_unknown' => false),
+  $chromeLinux => array('name' => 'chrome', 'version' => '4.0', 'is_unknown' 
=> false),
+  $speedySpider => array('name' => null, 'version' => null, 'is_unknown' => 
true),
+  $minefieldMac => array('name' => 'firefox', 'version' => '3.7', 'is_unknown' 
=> false),
+  $ie7Windows => array('name' => 'msie', 'version' => '7.0', 'is_unknown' => 
false),
+  $ie6Windows => array('name' => 'msie', 'version' => '6.0', 'is_unknown' => 
false),
+  $feedFetcherGoogle => array('name' => null, 'version' => null, 'is_unknown' 
=> true),
+  $iphone => array('name' => 'iphone', 'version' => '528.18', 'is_unknown' => 
false),
+);
+
+foreach($tests as $userAgent => $description)
+{
+  $browser->configureFromUserAgent($userAgent);
+  $t->is_deeply($browser->describe(), $description, $userAgent.' -> 
'.implode(', ', $description));
+}
\ No newline at end of file

-- 
You received this message because you are subscribed to the Google Groups 
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/symfony-svn?hl=en.


Reply via email to