Файл: apwa/includes/hooks/hook_mobile.php
Строк: 100
<?php
/**
* @package phpBB Hook Mobile Addon
* @version $Id$
* @copyright 2014 Anv@r.all (c) BB3.Mobi
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/
if (!defined('IN_PHPBB'))
{
exit;
}
function request_url($get_path = false, $clear = false)
{
global $config, $user, $phpbb_seo;
$server_name = $user->host;
$server_port = (!empty($_SERVER['SERVER_PORT'])) ? (int) $_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT');
// Forcing server vars is the only way to specify/override the protocol
if ($config['force_server_vars'] || !$server_name)
{
$server_protocol = ($config['server_protocol']) ? $config['server_protocol'] : (($config['cookie_secure']) ? 'https://' : 'http://');
$server_name = $config['server_name'];
$server_port = (int) $config['server_port'];
$url = $server_protocol . $server_name;
$cookie_secure = $config['cookie_secure'];
}
else
{
// Do not rely on cookie_secure, users seem to think that it means a secured cookie instead of an encrypted connection
$cookie_secure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 1 : 0;
$url = (($cookie_secure) ? 'https://' : 'http://') . $server_name;
}
if ($server_port && (($cookie_secure && $server_port <> 443) || (!$cookie_secure && $server_port <> 80)))
{
// HTTP HOST can carry a port number (we fetch $user->host, but for old versions this may be true)
if (strpos($server_name, ':') === false)
{
$url .= ':' . $server_port;
}
}
if(!isset($phpbb_seo))
{
if (isset($_SERVER['REQUEST_URI']))
{
$url .= $_SERVER['REQUEST_URI'];
}
else if (isset($_SERVER['argv']))
{
$url .= $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['argv'][0];
}
else if (isset($_SERVER['QUERY_STRING']))
{
$url .= $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['QUERY_STRING'];
}
else
{
$url .= $_SERVER['SCRIPT_NAME'];
}
}
if ($get_path)
{
$url_delim = (strpos($url, '?') === false) ? '?' : ((strpos($url, '?') === strlen($url) - 1) ? '' : '&');
if($clear)
{
$url_delim = array($url_delim . $get_path, '&' . $get_path, '?' . $get_path, $get_path);
$url = str_replace($url_delim, "", $url);
}
else
{
$url .= $url_delim . $get_path;
}
}
return $url;
}
function styles_change($version)
{
global $db, $config, $user;
if (!empty($config['mobile_style']) && $version == 'wap')
{
$style = $config['mobile_style'];
}
else
{
$style = $config['default_style'];
}
$sql = 'UPDATE ' . USERS_TABLE . "
SET user_style = $style
WHERE user_id = {$user->data['user_id']}";
$db->sql_query($sql);
}
function mobile_add_info()
{
global $phpbb_root_path, $phpEx, $template, $user, $config;
$user->add_lang('mods/info_acp_mobile');
$computer = false;
if ((!empty($_SERVER['HTTP_USER_AGENT']))
AND strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'j2me/midp') != true
AND strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'midp-2.0') != true
AND strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'midp') != true
AND strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'wap') != true
AND strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 's60') != true
AND (!(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'opera') === false)
OR !(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'mozilla') === false)))
$computer = true;
$version = request_var('ver', '');
$cookie_version = request_var($config['cookie_name'] . '_version', '', false, true);
if ($version == 'wap' || $version == 'web')
{
if(!empty($user->data['is_registered']) && !$user->data['is_bot'])
{
styles_change($version);
if($cookie_version)
{
$user->set_cookie('version', '', time() + 60);
}
}
else
{
$user->set_cookie('version', $version, time() + 31536000);
}
$redirect = request_url('ver=' . $version, true);
$redirect = reapply_sid($redirect);
$redirect = meta_refresh(1, $redirect);
@trigger_error(sprintf($user->lang['REDIRECT_MESSAGE'], $version) . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $redirect . '">', '</a>'));
}
if (!$user->data['is_registered'] && !$cookie_version)
{
$user_mobile = (isset($config['mobile_style']) && $user->theme['style_id'] == $config['mobile_style']) ? true : false;
if ($computer && $user_mobile && !$user->data['is_bot'])
{
$message = '<a href="' . request_url('ver=wap') . '" class="button2 buttom">' . $user->lang['CLOSE_WINDOW'] . '</a>';
$message = sprintf($user->lang['COMP_INFO'], '<a href="' . request_url('ver=web') . '">', '</a>') . '<br /><br />' . $message;
//@trigger_error($message);
}
else if (!$computer && !$user_mobile && !$user->data['is_bot'])
{
$message = '<a href="' . request_url('ver=web') . '" class="button2 buttom">' . $user->lang['CLOSE_WINDOW'] . '</a>';
$message = sprintf($user->lang['MOBILE_INFO'], '<a href="' . request_url('ver=wap') . '">', '</a>') . '<br /><br />' . $message;
//@trigger_error($message);
}
}
$template->assign_vars(array(
'L_MOBILE_ON' => $user->lang['MOBILE_ON'],
'L_MOBILE_OFF' => $user->lang['MOBILE_OFF'],
'U_MOBILE_ON' => (!empty($config['mobile_style']) ? request_url('ver=wap') : ''),
'U_MOBILE_OFF' => (!empty($config['mobile_style']) ? request_url('ver=web') : ''),
'S_BROWSER_WEB' => $computer)
);
}
$phpbb_hook->register(array('template', 'display'), 'mobile_add_info');
?>