|
|
<?php
|
|
|
|
|
|
/**
|
|
|
* 所有Controller控制器的基类
|
|
|
*
|
|
|
* @name HuodongAction
|
|
|
* @package library
|
|
|
* @copyright yoho.inc
|
|
|
* @version 1.0 (2015-11-27 14:40:21)
|
|
|
* @author fei.hong <fei.hong@yoho.cn>
|
|
|
*/
|
|
|
|
|
|
namespace Action;
|
|
|
|
|
|
use Yaf\Controller_Abstract;
|
|
|
use Yaf\Dispatcher;
|
|
|
use Yaf\Application;
|
|
|
use Plugin\Cache;
|
|
|
use Hood\Session;
|
|
|
use WebPlugin\Mobile;
|
|
|
|
|
|
class HuodongWebAction extends Controller_Abstract
|
|
|
{
|
|
|
|
|
|
/**
|
|
|
* HTTP请求对象
|
|
|
*
|
|
|
* @var object
|
|
|
*/
|
|
|
protected $_request;
|
|
|
|
|
|
/**
|
|
|
* 用户相关信息
|
|
|
*/
|
|
|
protected $_uid = 0;
|
|
|
protected $_uname = '';
|
|
|
|
|
|
/**
|
|
|
* 存放模板数据
|
|
|
*
|
|
|
* @var array
|
|
|
*/
|
|
|
protected $_data;
|
|
|
|
|
|
/**
|
|
|
* 是否是APP访问
|
|
|
*
|
|
|
* @var bool
|
|
|
*/
|
|
|
protected $_isApp;
|
|
|
|
|
|
/**
|
|
|
* 初始化
|
|
|
*/
|
|
|
public function init()
|
|
|
{
|
|
|
if (!$this->isAjax() && Mobile::isMobile()) {
|
|
|
echo 'ddd'; exit;
|
|
|
header("HTTP/1.1 301 Moved Permanently");
|
|
|
header('Location:http://huodong.m.yohobuy.com'.$_SERVER['REQUEST_URI']);
|
|
|
exit();
|
|
|
}
|
|
|
|
|
|
$this->_request = $this->getRequest();
|
|
|
|
|
|
$config = Application::app()->getConfig()->get('application');
|
|
|
if (isset($config->js->url)) {
|
|
|
$this->_view->assign('jsUrl', $config->js->url);
|
|
|
}
|
|
|
if (isset($config->css->url)) {
|
|
|
$this->_view->assign('cssUrl', $config->css->url);
|
|
|
}
|
|
|
if (isset($config->css->url)) {
|
|
|
$this->_view->assign('imgUrl', $config->img->url);
|
|
|
}
|
|
|
|
|
|
$this->_isApp = (null !== $this->get('app_version') || null !== $this->get('uid'));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 封装一下获取get参数
|
|
|
*
|
|
|
* @param String $key
|
|
|
* @param mixed $default
|
|
|
* @return mixed
|
|
|
*/
|
|
|
protected function get($key = null, $default = null)
|
|
|
{
|
|
|
if (null === $key) {
|
|
|
return $_GET;
|
|
|
}
|
|
|
return $this->_request->getQuery($key, $default);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 封装一下获取post参数
|
|
|
*
|
|
|
* @param String $key
|
|
|
* @param mixed $default
|
|
|
* @return mixed
|
|
|
*/
|
|
|
protected function post($key = null, $default = null)
|
|
|
{
|
|
|
if (null === $key) {
|
|
|
return $_POST;
|
|
|
}
|
|
|
return $this->_request->getPost($key, $default);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 封装一下获取YAF内部的参数
|
|
|
*
|
|
|
* @param String $key
|
|
|
* @param mixed $default
|
|
|
* @return mixed
|
|
|
*/
|
|
|
protected function param($key, $default = null)
|
|
|
{
|
|
|
return $this->_request->getParam($key, $default);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 封装一下获取服务器的参数
|
|
|
*
|
|
|
* @param String $key
|
|
|
* @param mixed $default
|
|
|
* @return mixed
|
|
|
*/
|
|
|
protected function server($key, $default = null)
|
|
|
{
|
|
|
return $this->_request->getServer($key, $default);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 关闭模板自动渲染
|
|
|
*
|
|
|
* @return void
|
|
|
*/
|
|
|
protected function disableView()
|
|
|
{
|
|
|
Dispatcher::getInstance()->autoRender(false);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 输出JSON数据到浏览器
|
|
|
*
|
|
|
* @return void
|
|
|
*/
|
|
|
protected function echoJson($json)
|
|
|
{
|
|
|
headers_sent() || header('Content-Type: application/json; charset=utf-8;');
|
|
|
|
|
|
if (is_array($json)) {
|
|
|
$json = json_encode($json);
|
|
|
}
|
|
|
|
|
|
echo $json;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 返回JSON数据
|
|
|
*
|
|
|
* @param int $code 状态编码
|
|
|
* @param string $message 提示信息
|
|
|
* @param mixed $data 数据内容
|
|
|
* @return json
|
|
|
*/
|
|
|
protected function returnJson($code, $message, $data)
|
|
|
{
|
|
|
return json_encode(array(
|
|
|
'code' => $code,
|
|
|
'message' => $message,
|
|
|
'data' => $data,
|
|
|
));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 判断是不是AJAX请求
|
|
|
*
|
|
|
* @return bool
|
|
|
*/
|
|
|
protected function isAjax()
|
|
|
{
|
|
|
return $this->_request->isXmlHttpRequest();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 跳转到错误页面
|
|
|
*/
|
|
|
protected function error()
|
|
|
{
|
|
|
headers_sent() || header('Location: /error.html');
|
|
|
|
|
|
exit();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 跳转到指定的URL
|
|
|
*
|
|
|
* @param string $url 链接地址
|
|
|
* @return void
|
|
|
*/
|
|
|
protected function go($url)
|
|
|
{
|
|
|
headers_sent() || header('Location: ' . $url);
|
|
|
|
|
|
exit();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置Cookie
|
|
|
*
|
|
|
* @param string $name cookie的名字
|
|
|
* @param string $value cookie的值
|
|
|
* @param integer $expire cookie过期时间
|
|
|
* @param integer $path cookie可用的路径
|
|
|
* @param string $domain cookie可用域名
|
|
|
*/
|
|
|
protected function setCookie($name, $value, $expire = 0, $path = '/', $domain = '.yohobuy.com')
|
|
|
{
|
|
|
setcookie($name, $value, $expire, $path, $domain);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 返回Cookie变量
|
|
|
*
|
|
|
* @param string $name cookie名称
|
|
|
* @param string $default 未获取到返回的默认值
|
|
|
* @return string 获取到的cookie值
|
|
|
*/
|
|
|
protected function getCookie($name, $default = '')
|
|
|
{
|
|
|
return $this->_request->getCookie($name, $default);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置缓存
|
|
|
*
|
|
|
* @param string $key 键名
|
|
|
* @param mixed $value 需要缓存的数据
|
|
|
* @param int $expire 缓存有效期(单位秒, 0表示永久)
|
|
|
* @return void
|
|
|
*/
|
|
|
protected function setCache($key, $value, $expire)
|
|
|
{
|
|
|
Cache::set($key, $value, $expire);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取缓存
|
|
|
*
|
|
|
* @param string $key 键名
|
|
|
* @param bool $isMaster 控制是到主服务器取,还是到从服务器取缓存
|
|
|
* @return mixed
|
|
|
*/
|
|
|
protected function getCache($key, $isMaster = true)
|
|
|
{
|
|
|
if ($isMaster) {
|
|
|
return Cache::get($key, 'master');
|
|
|
} else {
|
|
|
return Cache::get($key, 'slave');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置Session
|
|
|
*
|
|
|
* @param string $name 名称
|
|
|
* @param mixed $value 值
|
|
|
* @return void
|
|
|
*/
|
|
|
public function setSession($name, $value)
|
|
|
{
|
|
|
Session::start('yohobuy_session', null, 'yohobuy.com')->__set($name, $value);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取Session
|
|
|
*
|
|
|
* @param string $name 名称
|
|
|
*/
|
|
|
public function getSession($name)
|
|
|
{
|
|
|
return Session::start('yohobuy_session', null, 'yohobuy.com')->__get($name);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取当前登录的用户ID
|
|
|
*
|
|
|
* @return int
|
|
|
* @todo
|
|
|
*/
|
|
|
protected function getUid()
|
|
|
{
|
|
|
if (!$this->_uid) {
|
|
|
$cookie = $this->getCookie('_UID');
|
|
|
if (!empty($cookie)) {
|
|
|
$cookieList = explode('::', $cookie);
|
|
|
if (isset($cookieList[1]) && is_numeric($cookieList[1])) {
|
|
|
$this->_uid = $cookieList[1];
|
|
|
$this->_uname = $cookieList[0];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return $this->_uid;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取客户端唯一标识
|
|
|
*
|
|
|
* @return string
|
|
|
*/
|
|
|
protected function getUdid()
|
|
|
{
|
|
|
$udid = '';
|
|
|
|
|
|
$realIP = $this->_request->getServer('HTTP_X_REAL_IP');
|
|
|
if ($realIP) {
|
|
|
$udid = md5($realIP);
|
|
|
} else {
|
|
|
$realIP = $this->_request->getServer('REMOTE_ADDR', '');
|
|
|
$udid = md5($realIP);
|
|
|
}
|
|
|
|
|
|
return $udid;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* 设置网站SEO的标题
|
|
|
*
|
|
|
* @param string $title 标题
|
|
|
* @param string $sign 连接的字符串
|
|
|
* @param bool $showMore 是否显示更多内容
|
|
|
* @return void
|
|
|
*/
|
|
|
protected function setTitle($title, $showMore = true, $sign = ' | ')
|
|
|
{
|
|
|
$this->_view->assign('title_more', $showMore);
|
|
|
$this->_view->assign('title', $title . $sign);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置网站SEO的关键词
|
|
|
*
|
|
|
* @param string $keywords 关键词,多个之间用","逗号分隔
|
|
|
* @return void
|
|
|
*/
|
|
|
protected function setKeywords($keywords)
|
|
|
{
|
|
|
$this->_view->assign('keywords', rtrim($keywords, ',') . ',');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置网站SEO的描述内容
|
|
|
*
|
|
|
* @param string $description 描述内容
|
|
|
* @param string $sign 连接的字符串
|
|
|
* @param bool $showMore 是否显示更多内容
|
|
|
* @return void
|
|
|
*/
|
|
|
protected function setDescription($description, $showMore = true, $sign = ' ')
|
|
|
{
|
|
|
$this->_view->assign('description_more', $showMore);
|
|
|
$this->_view->assign('description', $description . $sign);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置最后修改时间
|
|
|
*
|
|
|
* @param string $modifiedTime 修改时间戳
|
|
|
* @param type $notModifiedExit 是否在没有修改时返回304状态
|
|
|
* @return void
|
|
|
*/
|
|
|
public static function setLastModified($modifiedTime, $notModifiedExit = true)
|
|
|
{
|
|
|
$modifiedTime = date('D, d M Y H:i:s ', $modifiedTime) . 'GMT';
|
|
|
if ($notModifiedExit && isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $modifiedTime == $_SERVER['HTTP_IF_MODIFIED_SINCE']) {
|
|
|
header('HTTP/1.1 304 Not Modified');
|
|
|
exit();
|
|
|
}
|
|
|
header('Last-Modified: ' . $modifiedTime);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置浏览器的缓存
|
|
|
*
|
|
|
* @param int $seconds 单位是秒
|
|
|
* @return void
|
|
|
*/
|
|
|
public static function setExpires($seconds = 180)
|
|
|
{
|
|
|
$time = date('D, d M Y H:i:s ', time() + $seconds) . 'GMT';
|
|
|
|
|
|
header('Expires: ' . $time);
|
|
|
}
|
|
|
|
|
|
} |
...
|
...
|
|