Action.php 7.39 KB
<?php

/**
 * Created by PhpStorm.
 * User: liuziyang
 * Date: 14-1-13
 * Time: 0:49
 */
class QLib_Action extends Q_Action
{
    private $_appConfig = array();

    private $_sessionStart = false;

    private $_sessionNamespace = array();

    public function init()
    {
        $this->_assign('_module_name', $this->getModuleName());
        $isXmlHttpRequest = $this->getRequest()->isXmlHttpRequest();
        if ($isXmlHttpRequest == false) {
            $this->getView()->setLayout('default');
        }
        $this->_headTitle('潮流商品 | YOHO!有货');
        $this->_appConfig = $this->_config();
        $this->_headScript()
            ->offsetSetFile(3, $this->_js('jquery.min'))
            ->offsetSetFile(5, $this->_js('doT'))
            ->offsetSetFile(6, $this->_js('Qin'))
            ->offsetSetFile(10, $this->_js('shopping_cart'))
            ->offsetSetFile(11, $this->_js('juicer'));

        $this->_headLink()
            ->offsetSetFile(5, $this->_css('ie6'), 'lte IE 6')
            ->offsetSetFile(10, $this->_css('newCommon'))
            ->offsetSetFile(9, $this->_css('screen', true));
        $gender = empty($_COOKIE['_Gender']) ? '1,3' : $_COOKIE['_Gender'];
        $this->_assign('Gender', $gender);

        ###SSO
        $this->_assign('_newSsoProxy', QINAuth_User_Utils::getSyncStatusLink($this->_getUid(), 'web'));
    }

    /**
     * @param $template
     * @return QLib_Paging
     */
    public function _paging($template)
    {
        $paging = new QLib_Paging($template);
        return $paging;
    }

    public function _assign($name, $value)
    {
        return $this->getView()->assign($name, $value);
    }

    /**
     * 获取初始化注册的config
     * @param string $name
     * @return mixed
     */
    public function _config($name = 'configs')
    {
        return Yaf_Registry::get($name);
    }


    /**
     * 获取JS URL
     *
     * @param String $jsName
     * @return String
     */
    public function _js($jsName, $local = false)
    {
        if (isset(QLibConfigs_Static::$_js[$jsName])) {
            $js = $this->_appConfig['website']['static']['url'];
            if ($local == false) {
                $js .= QLibConfigs_Static::$_js[$jsName];
            } else {
                $js = QLibConfigs_Static::$_js[$jsName];
            }
            return $js;
        }
        return '';
    }

    /**
     * 获取Css URL
     *
     * @param String $cssName
     * @return String
     */
    public function _css($cssName, $local = false)
    {
        if (isset(QLibConfigs_Static::$_css[$cssName])) {
            $css = $this->_appConfig['website']['static']['url'];
            if ($local == false) {
                $css .= QLibConfigs_Static::$_css[$cssName];
            } else {
                $css = QLibConfigs_Static::$_css[$cssName];
            }
            return $css;
        }
        return '';
    }

    /**
     * TODO
     * @param string $layout
     * @param string $layoutPath
     */
    public function _setLayout($layout = 'default', $layoutPath = '')
    {
        if (!empty($layoutPath)) {
            $this->_config = Yaf_Application::app()->getConfig();
            $this->setLayoutPath();
        }
        $this->getView()->setLayout($layout);
    }

    /**
     * 获取参数
     * @param null $name
     * @param null $default
     * @return mixed
     */
    protected function _getEnv($name = null, $default = null)
    {
        return $this->getRequest()->getEnv($name, $default);
    }

    /**
     * 封装一下获取param参数
     * @param String $key
     * @param mixed $default
     * @return mixed
     */
    protected function _getParam($key, $default = null)
    {
        return $this->getRequest()->getParam($key, $default);
    }

    /**
     * 获取所有参数
     * @return array
     */
    protected function _getParams()
    {
        return $this->_request->getParams();
    }

    /**
     * 获取所有参数
     * @return mixed
     */
    protected function _getRequests()
    {
        return $this->_request->getRequest();
    }

    /**
     * 封装一下获取get参数
     * @param String $key
     * @param mixed $default
     * @return mixed
     */
    protected function _get($key, $default = null)
    {
        return $this->getRequest()->getQuery($key, $default);
    }

    /**
     * 封装一下获取post参数
     * @param String $key
     * @param mixed $default
     * @return mixed
     */
    protected function _post($key, $default = null)
    {
        return $this->getRequest()->getPost($key, $default);
    }

    /**
     * 封装一下获取post参数
     * @param String $key
     * @param mixed $default
     * @return mixed
     */
    protected function _typePost($key, $settype = null, $default = null)
    {
        $result = $this->getRequest()->getPost($key, $default);
        switch ($settype) {
            case 'bool':
                $result = (bool)$result;
                break;
            case 'int':
                $result = (int)$result;
                break;
            case 'string':
                $result = (string)$result;
                break;
            case 'float':
                $result = (float)$result;
                break;
            case 'binary':
                $result = (binary)$result;
                break;
            default:
                $result = $result;
                break;
        }
        return $result;
    }

    /**
     * 关闭模板
     */
    public function disableView()
    {
        Yaf_Dispatcher::getInstance()->autoRender(FALSE);
    }

    /**
     * 关闭Layout
     */
    public function disableLayout()
    {
        $this->getView()->setLayout('');
    }


    /**
     * 开启session
     */
    public function sessionStart()
    {
        if ($this->_sessionStart == false) {
            $qin_session = new Q_Core_Session();
            session_set_save_handler(
                array(&$qin_session, "open"),
                array(&$qin_session, "close"),
                array(&$qin_session, "read"),
                array(&$qin_session, "write"),
                array(&$qin_session, "destroy"),
                array(&$qin_session, "gc")
            );
            if (!session_id()) session_start();
            $this->_sessionStart = true;
        }
    }

    /**
     * 使用session
     * @param $namespace
     * @return Q_Core_SessionNamespace
     */
    public function _sessionNamespace($namespace)
    {
        if (empty($this->_sessionNamespace[$namespace])) {
            $this->_sessionNamespace[$namespace] = new Q_Core_SessionNamespace ($namespace);
        }
        return $this->_sessionNamespace[$namespace];
    }

    /**
     * 需要验证请调用该函数
     * @param string $refer
     * @return int
     */
    public function _auth($refer = 'auto', $domain = 'http://www.yohobuy.com')
    {
        $this->sessionStart();
        $session = QINAuth_Factory::profile('web');
        if (($this->uid = $session->getSession()) < 1) {
            $referUrl = $refer == 'auto' ? $_SERVER['REQUEST_URI'] : $refer;
            $redirectUrl = $domain . '/signin.html?refer=' . rawurlencode($referUrl);
            header('Location: ' . $redirectUrl);
        }
        return $this->uid;
    }

    /**
     * 获取用户ID判断是否登录
     * @return int
     */
    public function _getUid()
    {
        $this->sessionStart();
        $this->uid = QINAuth_Factory::profile('web')->getSession();
        return $this->uid;
    }
}