forked from GNUsocial/gnu-social
Better logic to determine what to do with the visitor. Whether to
serve them the Mobile Profile or not, and possibly redirect.
This commit is contained in:
parent
43cd0f8719
commit
c2046a9ab6
@ -77,19 +77,57 @@ class MobileProfilePlugin extends WAP20Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX: If user is on the mobile site e.g., m.siteserver.com
|
// XXX: This should probably graduate to WAP20Plugin
|
||||||
// or they really want it, serve the mobile version
|
|
||||||
|
|
||||||
// FIXME: This is dirty and probably not accurate of doing it
|
// If they are on the mobile site, serve them MP
|
||||||
if ((common_config('site', 'mobileserver').'/'.common_config('site', 'path').'/' ==
|
if ((common_config('site', 'mobileserver').'/'.
|
||||||
$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']) ||
|
common_config('site', 'path').'/' ==
|
||||||
preg_match("/.*\/.*wap.*xml/", $type)) {
|
$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) {
|
||||||
|
|
||||||
$this->serveMobile = true;
|
$this->serveMobile = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->serveMobile = false;
|
// If they like the WAP 2.0 mimetype, serve them MP
|
||||||
return true;
|
if (strstr('application/vnd.wap.xhtml+xml', $type) !== false) {
|
||||||
|
$this->serveMobile = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// If they are a mobile device that supports WAP 2.0,
|
||||||
|
// serve them MP
|
||||||
|
|
||||||
|
// XXX: Browser sniffing sucks
|
||||||
|
// I really don't like going through this every page,
|
||||||
|
// find a better way
|
||||||
|
$this->mobiledevices =
|
||||||
|
array('alcatel', 'android', 'audiovox', 'au-mic,',
|
||||||
|
'avantgo', 'blackberry', 'blazer', 'cldc-', 'danger',
|
||||||
|
'epoc', 'ericsson', 'ericy', 'ipone', 'ipaq', 'j2me',
|
||||||
|
'lg', 'midp-', 'mobile', 'mot', 'netfront', 'nitro',
|
||||||
|
'nokia', 'opera mini', 'palm', 'palmsource',
|
||||||
|
'panasonic', 'philips', 'pocketpc', 'portalmmm',
|
||||||
|
'rover', 'samsung', 'sanyo', 'series60', 'sharp',
|
||||||
|
'sie-', 'smartphone', 'sony', 'symbian',
|
||||||
|
'up.browser', 'up.link', 'up.link', 'vodafone',
|
||||||
|
'wap1', 'wap2', 'windows ce');
|
||||||
|
|
||||||
|
$httpuseragent = strtolower($_SERVER['HTTP_USER_AGENT']);
|
||||||
|
|
||||||
|
foreach($this->mobiledevices as $mb) {
|
||||||
|
if (strstr($httpuseragent, $mb) !== false) {
|
||||||
|
$this->serveMobile = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If they are okay with MP, and the site has a mobile server,
|
||||||
|
// redirect there
|
||||||
|
if ($this->serveMobile &&
|
||||||
|
common_config('site', 'mobileserver') !== false) {
|
||||||
|
|
||||||
|
header("Location: ".common_config('site', 'mobileserver'));
|
||||||
|
exit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
header('Content-Type: '.$type);
|
header('Content-Type: '.$type);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user