public function initialize($context)
 {
     $conf = Symphony::Configuration();
     $result = MobileDetector::detect();
     $cookie = $conf->get(self::CONF_COOKIE, self::CONF);
     $url = $conf->get(self::CONF_URL, self::CONF);
     $devices = $conf->get(self::CONF_DEVICES, self::CONF);
     if ($devices) {
         $devices = explode(', ', $devices);
     } else {
         $devices = array();
     }
     /**
      * Allows other extensions to override when and where a mobile device is redirected.
      *
      * @delegate MobileRedirection
      * @param string $context /frontend/
      * @param string $url
      * @param array $devices
      * @param MobileDetectorResults $result
      */
     Symphony::ExtensionManager()->notifyMembers('MobileRedirection', '/frontend/', array('url' => &$url, 'devices' => &$devices, 'result' => $result));
     // User is requesting mobile redirection be enabled:
     if (isset($_GET['is-mobile']) && isset($_SESSION[$cookie])) {
         unset($_SESSION[$cookie]);
     }
     // User is requesting mobile redirection be disabled:
     if (isset($_GET['not-mobile']) || isset($_SESSION[$cookie])) {
         // Not a mobile, this request only:
         if ($_GET['not-mobile'] == 'once') {
             return;
         }
         // Not a mobile permenantly:
         $_SESSION[$cookie] = 'yes';
         return;
     }
     $can_redirect = $url && $result->passed();
     // Device was not detected, stop.
     if ($devices) {
         $can_redirect = false;
         foreach ($devices as $name) {
             if (!isset($result->devices()->{$name})) {
                 continue;
             }
             if (!$result->devices()->{$name}->detected) {
                 continue;
             }
             $can_redirect = true;
             break;
         }
     }
     if ($can_redirect) {
         $current = $this->sanitizeUrl(getCurrentPage());
         $redirect = $this->sanitizeUrl($url);
         if ($redirect !== $current && strpos($current, $redirect) !== 0) {
             redirect($redirect);
         }
     }
 }
 public function execute($param_pool)
 {
     $data = MobileDetector::detect();
     $result = new XMLElement('device');
     $result->setAttribute('is-mobile', 'no');
     if ($data->passed()) {
         $result->setAttribute('is-mobile', 'yes');
     }
     foreach ($data->devices() as $type => $values) {
         if (!$values->detected) {
             continue;
         }
         $item = new XMLElement($type);
         foreach ($values->captures as $name => $value) {
             $item->setAttribute($name, $value);
         }
         $result->appendChild($item);
     }
     return $result;
 }