Ejemplo n.º 1
0
 /**
  * 携帯かどうか確認
  *
  * @return bool
  * @access public
  */
 function isMobile()
 {
     $container =& DIContainerFactory::getContainer();
     $session =& $container->getComponent("Session");
     $reader_flag = intval($session->getParameter("_reader_flag"));
     $pcviewer_flag = intval($session->getParameter("_pcviewer_flag"));
     if ($reader_flag == _ON) {
         return true;
     } else {
         if ($pcviewer_flag == _ON) {
             return false;
         } else {
             if (MobileCheck::isSmartPhone()) {
                 return true;
             } else {
                 return Net_UserAgent_Mobile::isMobile();
             }
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * リダイレクトヘッダー
  * @param string   $url
  * @param int      $time
  * @param string   $message
  * @access	public
  */
 function redirectHeader($url = "", $time = 2, $message = "")
 {
     $container =& DIContainerFactory::getContainer();
     $config =& $container->getComponent("configView");
     $meta = $config->getMetaHeader();
     if ($url == "") {
         $url = BASE_URL . INDEX_FILE_NAME . "?" . ACTION_KEY . "=" . DEFAULT_ACTION;
     }
     //$url = htmlspecialchars(str_replace("?action=","?_sub_action=",str_replace("&","@",BASE_URL.INDEX_FILE_NAME.$this->_request->getStrParameters(false))), ENT_QUOTES);
     $renderer =& SmartyTemplate::getInstance();
     $renderer->assign('header_field', $meta);
     $renderer->assign('time', $time);
     $renderer->assign('url', $url);
     $renderer->assign('lang_ifnotreload', sprintf(_IFNOTRELOAD, $url));
     if ($message != "") {
         $renderer->assign('redirect_message', $message);
     } else {
         $renderer->assign('redirect_message', "");
     }
     $actionChain =& $container->getComponent("ActionChain");
     $errorList =& $actionChain->getCurErrorList();
     $renderer->setErrorList($errorList);
     $main_template_dir = WEBAPP_DIR . "/templates/" . "main/";
     //template_dirセット
     $renderer->setTemplateDir($main_template_dir);
     $session =& $container->getComponent("Session");
     $mobile_flag = $session->getParameter("_mobile_flag");
     if (!isset($mobile_flag)) {
         $mobileCheck =& MobileCheck::getInstance();
         $mobile_flag = $mobileCheck->isMobile();
     }
     //$response =& $container->getComponent("Response");
     //$contentDisposition = $response->getContentDisposition();
     //$contentType = "text/html; charset=utf-8";	//$response->getContentType();
     //if ($contentDisposition != "") {
     //	header("Content-disposition: ${contentDisposition}");
     //}
     //if ($contentType != "") {
     //	header("Content-type: ${contentType}");
     //}
     //header("Content-type: ".$contentType);
     if ($mobile_flag == _ON) {
         $contentType = "text/html; charset=shift_jis";
         //$response->getContentType();
         header("Content-type: " . $contentType);
         $result = $renderer->fetch("mobile_redirect.html", 'redirect');
         $convertHtml =& $this->registerClass(WEBAPP_DIR . '/components/convert/Html.class.php', "Convert_Html", "convertHtml");
         $result = $convertHtml->convertMobileHtml($result, true);
     } else {
         $contentType = "text/html; charset=utf-8";
         //$response->getContentType();
         header("Content-type: " . $contentType);
         $result = $renderer->fetch("redirect.html", 'redirect');
     }
     print $result;
     exit;
 }
 /**
  * セッション処理を行う
  *
  * @access  public
  */
 function execute()
 {
     $log =& LogFactory::getLog();
     $log->trace("Filter_Sessionの前処理が実行されました", "Filter_SessionExtra#execute");
     $container =& DIContainerFactory::getContainer();
     //$session =& new Session;
     $session =& new SessionExtra();
     $container->register($session, "Session");
     $attributes = $this->getAttributes();
     $modeArray = array();
     if (isset($attributes["mode"])) {
         $modeArray = explode(",", $attributes["mode"]);
         foreach ($modeArray as $key => $value) {
             $modeArray[$key] = trim($value);
         }
     } else {
         $modeArray[] = "start";
     }
     if (isset($attributes["name"])) {
         $session->setName($attributes["name"]);
     }
     if (isset($attributes["id"])) {
         $session->setID($attributes["id"]);
     }
     if (isset($attributes["savePath"])) {
         $session->setSavePath($attributes["savePath"]);
     }
     if (isset($attributes["cacheLimiter"])) {
         $session->setCacheLimiter($attributes["cacheLimiter"]);
     }
     if (isset($attributes["cacheExpire"])) {
         $session->setCacheExpire($attributes["cacheExpire"]);
     }
     if (isset($attributes["useCookies"])) {
         $session->setUseCookies($attributes["useCookies"]);
     }
     if (isset($attributes["lifetime"])) {
         $session->setCookieLifetime($attributes["lifetime"]);
     }
     if (isset($attributes["path"])) {
         $session->setCookiePath($attributes["path"]);
     }
     if (isset($attributes["domain"])) {
         $session->setCookieDomain($attributes["domain"]);
     }
     if (isset($attributes["secure"])) {
         $session->setCookieSecure($attributes["secure"]);
     }
     if (version_compare(phpversion(), '5.3.0', '>=') && MobileCheck::isMobile()) {
         ini_set("session.use_only_cookies", 0);
     }
     if (in_array('start', $modeArray)) {
         $session->start();
     }
     $filterChain =& $container->getComponent("FilterChain");
     $filterChain->execute();
     if (in_array('close', $modeArray)) {
         $session->close();
     }
     $log->trace("Filter_Sessionの後処理が実行されました", "Filter_SessionExtra#execute");
 }
Ejemplo n.º 4
0
<?php

ob_start("ob_gzhandler");
require_once 'inc/classes/Mobilecheck.php';
$detect = new MobileCheck();
$page = 'index';
if ($detect->isMobile()) {
    include 'inc/doctype-mobile.inc';
    include 'inc/head-mobile.inc';
    include 'inc/mobile.php';
} else {
    include 'inc/doctype-standard.inc';
    include 'inc/head-standard.inc';
    include 'inc/standard.php';
}
ob_flush();
 /**
  * プレフィルタ
  *
  * @access  private
  */
 function _preFilter()
 {
     require_once WEBAPP_DIR . "/config/mobile.inc.php";
     $this->_session->setParameter("_mobile_flag", _OFF);
     $this->_session->setParameter("_smartphone_flag", _OFF);
     //if (!$this->_mobile_obj) { return; }
     // 読み上げソフト対応
     $actionName = $this->_actionChain->getCurActionName();
     if ($actionName == DEFAULT_MOBILE_ACTION) {
         $reader_flag = $this->_request->getParameter("reader_flag");
         if (isset($reader_flag)) {
             $reader_flag = intval($reader_flag);
         } else {
             $reader_flag = intval($this->_session->getParameter("_reader_flag"));
         }
     } else {
         $reader_flag = intval($this->_session->getParameter("_reader_flag"));
     }
     // スマートフォンPCビューアー切り替え対応
     if ($actionName == DEFAULT_ACTION) {
         $pcviewer_flag = $this->_request->getParameter('pcviewer_flag');
         if (isset($pcviewer_flag)) {
             $pcviewer_flag = intval($pcviewer_flag);
             $this->_session->setParameter('_pcviewer_flag', $pcviewer_flag);
         } else {
             $pcviewer_flag = intval($this->_session->getParameter('_pcviewer_flag'));
         }
     } else {
         $pcviewer_flag = intval($this->_session->getParameter('_pcviewer_flag'));
     }
     if ($pcviewer_flag == _ON) {
         return;
     }
     if (in_array($actionName, $this->_clear_page_id)) {
         $this->_session->removeParameter("_mobile_page_id");
         $this->_session->removeParameter("_mobile_room_id");
         $this->_session->removeParameter("_mobile_module_id");
     }
     if (in_array($actionName, $this->_clear_reader)) {
         $this->_session->removeParameter("_reader_flag");
     } else {
         $this->_session->setParameter("_reader_flag", $reader_flag);
     }
     $mobileCheck =& MobileCheck::getInstance();
     if ($mobileCheck->isMobile() == _OFF) {
         return;
     }
     $mobile_info = $mobileCheck->getMobileInfo();
     $mobile_obj = $this->_modulesView->getModuleByDirname("mobile");
     $configView =& $this->_container->getComponent("configView");
     $config = $configView->getConfig($mobile_obj["module_id"], false);
     if ($config == false) {
         return;
     }
     if ($config["allow_emulator"]["conf_value"] == _OFF && !$mobile_info["proper_route"]) {
         return;
     }
     // この人物が携帯をどのようなモードで見ようとしているかを取得
     $texthtml_mode = -1;
     $imgdsp_size = -1;
     $user_id = $this->_session->getParameter("_user_id");
     if ($user_id != '0') {
         $texthtml_mode_item_id = $this->_usersView->getItemIdByTagName("mobile_texthtml_mode");
         $imgdsp_size_item_id = $this->_usersView->getItemIdByTagName("mobile_imgdsp_size");
         $user_items = $this->_usersView->getUserItemLinkById($user_id);
         if (isset($user_items[$texthtml_mode_item_id]) && $user_items[$texthtml_mode_item_id]['content'] != "") {
             $texthtml_mode = constant(str_replace("USER_ITEM", "MOBILE", trim($user_items[$texthtml_mode_item_id]['content'], "|")));
         }
         if (isset($user_items[$imgdsp_size_item_id]) && $user_items[$imgdsp_size_item_id]['content'] != "") {
             $imgdsp_size = constant(str_replace("USER_ITEM", "MOBILE", trim($user_items[$imgdsp_size_item_id]['content'], "|")));
         }
     }
     if ($texthtml_mode == -1) {
         $texthtml_mode = $config["mobile_text_html_mode"]["conf_value"];
     }
     if ($imgdsp_size == -1) {
         $imgdsp_size = $config["mobile_imgdsp_size"]["conf_value"];
     }
     $this->_session->setParameter("_mobile_text_html_mode", $texthtml_mode);
     $this->_session->setParameter("_mobile_imgdsp_size", $imgdsp_size);
     $this->_session->setParameter("_mobile_info", $mobile_info);
     $this->_session->setParameter("_mobile_flag", _ON);
     if ($mobileCheck->isSmartPhone() == true) {
         $this->_session->setParameter('_smartphone_flag', _ON);
     }
     $action_name = $this->_request->getParameter("action");
     $page_id = intval($this->_request->getParameter("page_id"));
     $room_id = intval($this->_request->getParameter("room_id"));
     if (!isset($page_id)) {
         $page_id = intval($this->_session->getParameter("_mobile_page_id"));
     }
     $room_id = $this->_request->getParameter("room_id");
     if (!isset($room_id)) {
         $room_id = intval($this->_session->getParameter("_mobile_room_id"));
     }
     $block_id = intval($this->_request->getParameter("block_id"));
     $mobileView =& $this->_container->getComponent("mobileView");
     $getdata =& $this->_container->getComponent("GetData");
     $mobile_modules = $mobileView->getModules(null, array($this, "_callbackFunc"));
     $getdata->setParameter("mobile_modules", $mobile_modules);
     $active_action = $this->_request->getParameter("active_action");
     if ($active_action != "") {
         $params = $this->_request->getParameters();
         $this->_request->setParameter("action", $active_action);
         $this->_request->setParameter("active_action", null);
         $this->_request->setParameter(_ABBREVIATE_URL_REQUEST_KEY, null);
         $params = $this->_request->getParameters();
         $str_params = "";
         foreach ($params as $key => $value) {
             if (empty($value) || is_array($value)) {
                 continue;
             }
             if (substr($key, 0, 1) == "_") {
                 continue;
             }
             $key = htmlspecialchars($key, ENT_QUOTES);
             if ($key == session_name()) {
                 $value = session_id();
             } else {
                 $value = rawurlencode($value);
             }
             $str_params .= "&" . $key . "=" . $value;
         }
         if ($this->_session->getParameter("_user_id") == "" && $block_id > 0) {
             $blocksView =& $this->_container->getComponent("blocksView");
             $blocks = $blocksView->getBlockById($block_id);
             if (empty($blocks)) {
                 header('Location: ' . BASE_URL . INDEX_FILE_NAME);
                 exit;
             }
             $authCheck =& $this->_container->getComponent("authCheck");
             $result = $authCheck->getPageAuthId(null, $blocks["page_id"]);
             if ($result == _AUTH_OTHER) {
                 if ($reader_flag == _ON) {
                     $session_param = "";
                 } else {
                     $session_param = "&amp;" . session_name() . "=" . session_id();
                 }
                 $this->_session->setParameter("_mobile_redirect_url", $str_params);
                 header('Location: ' . BASE_URL . INDEX_FILE_NAME . "?" . ACTION_KEY . "=" . $mobile_modules[_DISPLAY_POSITION_HEADER]["login"]["mobile_action_name"] . $session_param);
                 exit;
             }
         }
         $this->_session->removeParameter("_mobile_redirect_url");
         header('Location: ' . BASE_URL . INDEX_FILE_NAME . "?" . substr($str_params, 1));
         exit;
     } elseif ($action_name == DEFAULT_ACTION) {
         $parameters = (!empty($page_id) ? "&page_id=" . $page_id . "&room_id=" . intval($room_id) : "") . (!empty($block_id) ? "&block_id=" . $block_id : "");
         if ($reader_flag == _OFF) {
             $parameters .= "&" . session_name() . "=" . session_id();
         }
         $action_name = DEFAULT_MOBILE_ACTION;
         if (!empty($block_id)) {
             $blocksView =& $this->_container->getComponent("blocksView");
             $modulesView =& $this->_container->getComponent("modulesView");
             $blocks = $blocksView->getBlockById($block_id);
             if (!empty($blocks)) {
                 $modules = $modulesView->getModulesById($blocks["module_id"]);
                 if (!empty($modules)) {
                     $action_name = $modules["action_name"];
                 }
             }
         }
         header('Location: ' . BASE_URL . INDEX_FILE_NAME . "?" . ACTION_KEY . "=" . $action_name . $parameters);
         exit;
     }
     $this->_session->setParameter("_mobile_default_module", $config["default_module"]["conf_value"]);
     /*
      * リクエストの変換
      */
     $action =& $this->_actionChain->getCurAction();
     $attributes = $this->getAttributes();
     //if (empty($attributes)) { return; }
     $params = $this->_request->getParameters();
     $this->_strtoconvert($params);
     $this->_request->clear();
     $this->_request->setParameters($params);
     foreach ($attributes as $key => $value) {
         $keyArr = explode(":", $key);
         $parameter = null;
         if ($keyArr[0] == "date" || $keyArr[0] == "input_date" || $keyArr[0] == "time" || $keyArr[0] == "time12" || $keyArr[0] == "full_date" || $keyArr[0] == "full_time") {
             $valArr = explode(",", $keyArr[1]);
             if (($keyArr[0] == "date" || $keyArr[0] == "input_date") && count($valArr) == 3 || $keyArr[0] == "time" && count($valArr) <= 3 || $keyArr[0] == "time12" && count($valArr) > 0 && count($valArr) <= 4 && (strtolower($valArr[0]) == "am" || strtolower($valArr[0]) == "pm") || ($keyArr[0] == "full_date" || $keyArr[0] == "full_time") && count($valArr) == 6) {
                 foreach ($valArr as $i => $val) {
                     $valArr[$i] = $this->_request->getParameter($val);
                 }
                 if ($keyArr[0] == "date") {
                     list($month, $day, $year) = $valArr;
                     list($hour, $min, $sec) = array(0, 0, 0);
                 } elseif ($keyArr[0] == "input_date") {
                     list($month, $day, $year) = $valArr;
                     list($hour, $min, $sec) = array(0, 0, 0);
                 } elseif ($keyArr[0] == "time") {
                     list($month, $day, $year) = array(date("m"), date("d"), date("Y"));
                     if (count($valArr) < 1) {
                         $valArr[0] = 0;
                     }
                     if (count($valArr) < 2) {
                         $valArr[1] = 0;
                     }
                     if (count($valArr) < 3) {
                         $valArr[2] = 0;
                     }
                     list($hour, $min, $sec) = $valArr;
                 } elseif ($keyArr[0] == "time12") {
                     list($month, $day, $year) = array(date("m"), date("d"), date("Y"));
                     if (count($valArr) < 2) {
                         $valArr[1] = 0;
                     }
                     if (count($valArr) < 3) {
                         $valArr[2] = 0;
                     }
                     if (count($valArr) < 4) {
                         $valArr[3] = 0;
                     }
                     list($am_pm, $hour, $min, $sec) = $valArr;
                     if (strtolower($am_pm) == "pm") {
                         $hour = intval($hour) + 12;
                     }
                 } else {
                     list($hour, $min, $sec, $month, $day, $year) = $valArr;
                 }
                 if ($keyArr[0] == "time" || $keyArr[0] == "time12" || $keyArr[0] != "time" && $keyArr[0] != "time12" && checkdate(intval($month), intval($day), intval($year))) {
                     if ($keyArr[0] == "date" && empty($keyArr[2])) {
                         $keyArr[2] = _DATE_FORMAT;
                     }
                     if ($keyArr[0] == "input_date" && empty($keyArr[2])) {
                         $keyArr[2] = _INPUT_DATE_FORMAT;
                     }
                     if (($keyArr[0] == "time" || $keyArr[0] == "time12") && empty($keyArr[2])) {
                         $keyArr[2] = _TIME_FORMAT;
                     }
                     if (($keyArr[0] == "full_date" || $keyArr[0] == "full_time") && empty($keyArr[2])) {
                         $keyArr[2] = _FULL_DATE_FORMAT;
                     }
                     $parameter = date($keyArr[2], mktime(intval($hour), intval($min), intval($sec), intval($month), intval($day), intval($year)));
                     $this->_request->setParameter($value, $parameter);
                     continue;
                 } else {
                     $paramArr = explode(",", $keyArr[1]);
                 }
             } else {
                 $paramArr = explode(",", $keyArr[1]);
             }
         } else {
             $paramArr = explode(",", $key);
         }
         foreach ($paramArr as $i => $keyVal) {
             $str = $this->_request->getParameter($keyVal);
             if (!isset($str)) {
                 continue;
             }
             $parameter .= $str;
         }
         if (!isset($parameter)) {
             continue;
         }
         $this->_request->setParameter($value, $parameter);
     }
 }
Ejemplo n.º 6
0
 /**
  * HtmlからText変換処理
  * @param string Html文字列
  * @return string	Plain Text文字列
  **/
 function convertMobileHtml($str, $convert = false)
 {
     $container =& DIContainerFactory::getContainer();
     $session =& $container->getComponent("Session");
     $mobile_flag = $session->getParameter("_mobile_flag");
     if (!isset($mobile_flag)) {
         $mobileCheck =& MobileCheck::getInstance();
         $mobile_flag = $mobileCheck->isMobile();
         $session->setParameter("_mobile_flag", $mobile_flag);
     }
     if ($mobile_flag == _ON) {
         $patterns = array();
         $replacements = array();
         if ($session->getParameter("_reader_flag") == _OFF) {
             // 画像にsession_idを付与
             $matches = array();
             $pattern = "/(href=|src=)([\"'])?(\\.?\\/?)(\\?)/";
             $str = preg_replace_callback($pattern, array($this, "_replaceRelative2Absolute"), $str);
             $pattern_url = preg_replace("/\\//", "\\\\/", preg_quote(BASE_URL));
             $pattern = "/(href=|src=)([\"'])?(" . $pattern_url . ")([^\\/]*?)?([^ \"'>]*)?([ \"'>])?/";
             $str = preg_replace_callback($pattern, array($this, "_replaceSesion"), $str);
         }
         //「 />」「/>」を「>」
         $patterns[] = "/( )?\\/>/ui";
         $replacements[] = ">";
         $str = preg_replace($patterns, $replacements, $str);
         if ($convert) {
             //mb_stringがロードされているかどうか
             if (!extension_loaded('mbstring') && !function_exists("mb_convert_encoding")) {
                 include_once MAPLE_DIR . '/includes/mbstring.php';
             } else {
                 if (function_exists("mb_detect_order")) {
                     mb_detect_order(_MB_DETECT_ORDER_VALUE);
                 }
             }
             $str = mb_convert_encoding($str, "shift_jis", _CHARSET);
         }
     }
     return $str;
 }