/** * &singleton() * * @access public * @param mixed $mUserAgent string | null * @return mixed BlockenMobile | PEAR_Error */ function &singleton($mUserAgent = null) { static $objInstance; if (!isset($objInstance)) { $objInstance = array(); } if (is_null($mUserAgent)) { $mUserAgent = $_SERVER['HTTP_USER_AGENT']; } if (!isset($objInstance[$mUserAgent])) { $objInstance[$mUserAgent] = BlockenMobile::factory($mUserAgent); } return $objInstance[$mUserAgent]; }
<?php $bRet = false; if (isset($aryParam['arg1'], $aryParam['uid'])) { if ($aryPear['mobile']->isNonMobile() && 'I' == $aryParam['arg1']) { $aryPear['mobile'] = BlockenMobile::singleton('DoCoMo/2.0 '); $aryParam['uid'] = substr($aryParam['uid'], 2); } $bRet = funcExpireMember($aryParam['uid'], $aryPear); } if (BLOCKEN_MOBI_OFFCIAL) { if ($aryPear['mobile']->isDoCoMo()) { if ($bRet) { echo "OK\n"; } else { echo "NG\n"; } exit; } } $objTemplate = loadTemplate(); if ($bRet) { $objTemplate->touchBlock('OK'); } else { $objTemplate->touchBlock('NG'); } if (isset($aryParam['_rtn'])) { $objTemplate->setVariable('return', $aryParam['_rtn']); } else { $objTemplate->setVariable('return', BLOCKEN_HTTP_URL . BLOCKEN_ROOT_PATH . '/'); }
/** * loadTemplate() * * @param booean $bIsPHP * @return mixed BlockenTemplate | void */ function loadTemplate($bIsPHP = true) { global $aryPear; global $aryParam; global $sLoadFilename; global $bIsAuth; global $iCacheExpire; global $sContentType; if (!isset($bIsAuth)) { $bIsAuth = false; } if (!isset($iCacheExpire)) { $iCacheExpire = 0; } else { if (0 > $iCacheExpire) { $iCacheExpire = BLOCKEN_CACHE_EXPIRE; } } if (!isset($sContentType)) { $sContentType = 'html'; } if ('' != $sLoadFilename) { $bIsPHP = false; } $objBlocken =& new BlockenController(); if (!$bIsPHP) { if ('' == $sLoadFilename) { $sLoadFilename = $_SERVER['SCRIPT_FILENAME']; if (BLOCKEN_MOBILE_USE) { if ($aryPear['mobile']->isDoCoMo()) { $sLoadFilename = BLOCKEN_MOBI_D_TEMPLATE . '/' . basename($_SERVER['SCRIPT_FILENAME']); } else { if ($aryPear['mobile']->isEZweb()) { $sLoadFilename = BLOCKEN_MOBI_E_TEMPLATE . '/' . basename($_SERVER['SCRIPT_FILENAME']); } else { if ($aryPear['mobile']->isSoftBank()) { $sLoadFilename = BLOCKEN_MOBI_S_TEMPLATE . '/' . basename($_SERVER['SCRIPT_FILENAME']); } else { $sLoadFilename = BLOCKEN_MOBI_P_TEMPLATE . '/' . basename($_SERVER['SCRIPT_FILENAME']); } } } if (!is_readable($sLoadFilename)) { $sLoadFilename = $_SERVER['SCRIPT_FILENAME']; } } $sBuff = file_get_contents($sLoadFilename); if (BLOCKEN_MOBILE_USE) { $objBlocken->setIsHankaku(true); $objBlocken->parseMobile($sBuff); $bIsAuth = $objBlocken->getIsAuth(); } } else { $sBuff = file_get_contents($sLoadFilename); if (BLOCKEN_MOBILE_USE && BLOCKEN_MOBI_P_REDIRECT != $sLoadFilename) { $objBlocken->setIsHankaku(true); } } } if (BLOCKEN_MOBILE_USE && $bIsAuth) { if (!isset($aryParam['uid'])) { if (!$aryPear['mobile']->isNonMobile()) { if ($aryPear['mobile']->isDoCoMo()) { if (BLOCKEN_MOBI_OFFCIAL) { $sLoadFilename = BLOCKEN_MOBI_D_UIDERR; } else { if ('GUID' == BLOCKEN_MOBI_D_AUTHUID) { $sLoadFilename = BLOCKEN_MOBI_D_GUIDERR; } else { $sLoadFilename = BLOCKEN_MOBI_D_UTN; $aryParamTmp = $aryParam; $aryParamTmp['_utn'] = '1'; unset($aryParamTmp[$aryPear['session']->name()]); $sQuery = BlockenCommon::makeURL($aryParamTmp); $sRtnUrl = $_SERVER['SCRIPT_NAME'] . ('' == $sQuery ? '' : '?' . $sQuery); $objBlocken->setRepStr('/%RTN_PATH%/i', $sRtnUrl); } } } else { if ($aryPear['mobile']->isEZweb()) { $sLoadFilename = BLOCKEN_MOBI_E_SUBNOERR; } else { if ($aryPear['mobile']->isSoftBank()) { $sLoadFilename = BLOCKEN_MOBI_S_UIDERR; } } } $sBuff = file_get_contents($sLoadFilename); $objBlocken->setIsHankaku(true); $bIsPHP = false; } } else { if (BLOCKEN_MOBI_OFFCIAL && 0 != BLOCKEN_MOBI_E_AUTHTIME && $aryPear['mobile']->isEZweb()) { BlockenCommon::authCheck($aryPear, $aryParam); } if (!funcIsMember($aryParam['uid'], $aryPear)) { $sLoadFilename = BLOCKEN_MOBI_REGIST; $sBuff = file_get_contents($sLoadFilename); $objBlocken->setIsHankaku(true); $bIsPHP = false; $sQuery = BlockenCommon::makeURL($aryParam); $sRtnUrl = urlencode(BLOCKEN_HTTP_URL . $_SERVER['SCRIPT_NAME'] . ('' == $sQuery ? '' : '?' . $sQuery)); $objBlocken->setAddParam('_rtn', $sRtnUrl); } } } if (!$bIsPHP) { if (preg_match('/\\.(?:xhtml|xhtm)$/', $sLoadFilename)) { $sContentType = 'xhtml'; } else { if (preg_match('/\\.xml$/', $sLoadFilename)) { $sContentType = 'xml'; } else { if (preg_match('/\\.hdml$/', $sLoadFilename)) { $sContentType = 'hdml'; } } } $objBlocken->setHtml($sBuff); $objBlocken->setPear($aryPear); $objBlocken->setParam($aryParam); $objBlocken->parse(); while ($objBlocken->hasNextBlock()) { $sType = $objBlocken->getBlockType(); switch ($sType) { case 'dynamic': $objBlocken->execScript(); break; case 'static': default: $objBlocken->readHtml(); break; } } } else { $sTemplateFile = str_replace('.php', '.html', basename($_SERVER['SCRIPT_FILENAME'])); $sTemplateDir = BLOCKEN_TEMPLATE_NAME; $sCacheDir = BLOCKEN_CACHE_NAME; if (BLOCKEN_MOBILE_USE) { if ($aryPear['mobile']->isDoCoMo()) { if (file_exists(BLOCKEN_MOBI_D_TEMPLATE . '/' . $sTemplateFile)) { $sTemplateDir = BLOCKEN_MOBI_D_TEMPLATE; $sCacheDir = BLOCKEN_MOBI_D_CACHE; } } else { if ($aryPear['mobile']->isEZweb()) { if (file_exists(BLOCKEN_MOBI_E_TEMPLATE . '/' . $sTemplateFile)) { $sTemplateDir = BLOCKEN_MOBI_E_TEMPLATE; $sCacheDir = BLOCKEN_MOBI_E_CACHE; } } else { if ($aryPear['mobile']->isSoftBank()) { if (file_exists(BLOCKEN_MOBI_S_TEMPLATE . '/' . $sTemplateFile)) { $sTemplateDir = BLOCKEN_MOBI_S_TEMPLATE; $sCacheDir = BLOCKEN_MOBI_S_CACHE; } } else { if (file_exists(BLOCKEN_MOBI_P_TEMPLATE . '/' . $sTemplateFile)) { $sTemplateDir = BLOCKEN_MOBI_P_TEMPLATE; $sCacheDir = BLOCKEN_MOBI_P_CACHE; } } } } } $objBlocken =& new BlockenTemplate($sTemplateDir, $sCacheDir, unserialize(BLOCKEN_CACHE_PAGE)); if (BLOCKEN_MOBILE_USE) { $objBlocken->setIsHankaku(true); } $objBlocken->setHtmlCacheExpire($iCacheExpire); $aryParamCache = $aryParam; unset($aryParamCache['uid']); unset($aryParamCache['sid']); unset($aryParamCache['emoji']); unset($aryParamCache['guid']); unset($aryParamCache['_utn']); unset($aryParamCache['_reg']); unset($aryParamCache[$aryPear['session']->name()]); $argArgCache['template'] = str_replace(array('/', '.php'), array('__', ''), $_SERVER['SCRIPT_NAME']); $argArgCache['template_dir'] = $sTemplateDir; $objBlocken->setCacheParam($aryParamCache, $argArgCache); $objBlocken->setParam($aryParam); $objBlocken->loadTemplateFile($sTemplateFile); } $objBlocken->setRepStr('/<\\?php.*\\?>/', ''); $objBlocken->setRepStr('/%HTTP_URL%/i', BLOCKEN_HTTP_URL); $objBlocken->setRepStr('/%HTTPS_URL%/i', BLOCKEN_HTTPS_URL); $objBlocken->setRepStr('/%PHP_SELF%/i', $_SERVER['PHP_SELF']); $objBlocken->setRepStr('/%ROOT_PATH%/i', BLOCKEN_ROOT_PATH); $objBlocken->setRepStr('/%IMG_PATH%/i', BLOCKEN_IMG_PATH); $objBlocken->setRepStr('/%CSS_PATH%/i', BLOCKEN_CSS_PATH); $objBlocken->setRepStr('/%JS_PATH%/i', BLOCKEN_JS_PATH); if (BLOCKEN_MOBILE_USE && BLOCKEN_MOBI_P_REDIRECT != $sLoadFilename) { if (BLOCKEN_MOBI_AUTOHEADER) { $sHead = file_get_contents(BLOCKEN_MOBI_AUTOHEADER); $objBlocken->setRepStr('/<body(.*)>/i', "<body\\1>\n{$sHead}"); } if (BLOCKEN_MOBI_AUTOFOOTER) { $sFoot = file_get_contents(BLOCKEN_MOBI_AUTOFOOTER); $objBlocken->setRepStr('/<\\/body>/i', "{$sFoot}\n</body>"); } if (!$aryPear['mobile']->isNonMobile()) { if (BLOCKEN_MOBI_OFFCIAL) { if ($aryPear['mobile']->isDoCoMo()) { $objBlocken->setAddParam('uid', BLOCKEN_MOBI_D_UID); $objBlocken->setRepStr('/(.*):(.*)[\\?&]uid=' . BLOCKEN_MOBI_D_UID . '/i', '\\1:\\2'); } else { if ($aryPear['mobile']->isSoftBank()) { $objBlocken->setAddParam('uid', BLOCKEN_MOBI_S_UID); $objBlocken->setAddParam('sid', BLOCKEN_MOBI_S_SID); $objBlocken->setRepStr('/(.*):(.*)[\\?&]uid=' . BLOCKEN_MOBI_S_UID . '&sid=' . BLOCKEN_MOBI_S_SID . '/i', '\\1:\\2'); } } } else { if ($aryPear['mobile']->isDoCoMo()) { if ('GUID' == BLOCKEN_MOBI_D_AUTHUID) { $objBlocken->setAddParam('guid', BLOCKEN_MOBI_D_GUID); $objBlocken->setRepStr('/(.*):(.*)[\\?&]guid=' . BLOCKEN_MOBI_D_GUID . '/i', '\\1:\\2'); } else { if (isset($aryParam['uid'])) { $objBlocken->setAddParam($aryPear['session']->name(), $aryPear['session']->id()); $objBlocken->setRepStr('/(.*):(.*)[\\?&]' . $aryPear['session']->name() . '=' . $aryPear['session']->id() . '/i', '\\1:\\2'); } } } } if (BLOCKEN_MOBI_E_BOOKMARK && $aryPear['mobile']->isEZweb()) { $objBlocken->setRepStr('/<head>/i', "<head>\n<meta name=\"vnd.up.bookmark\" wml:forua=\"true\" content=\"" . BLOCKEN_MOBI_E_BOOKMARK . "\" />"); } if ($aryPear['mobile']->isSoftBank() && $aryPear['mobile']->isTypeC()) { $objBlocken->setRepStr('/<form(.*)method=[\\"\']post[\\"\'](.*)>/i', '<form\\1method="get"\\2>'); } $objBlocken->setRepStr('/<meta(.*)charset=UTF-8/i', '<meta\\1charset=Shift_JIS'); if ('xhtml' != $sContentType) { $objBlocken->setRepStr('/<(.*) \\/>/', '<\\1>'); $objBlocken->setRepStr('/<(.*)\\/>/', '<\\1>'); } else { $objBlocken->setRepStr('/<\\?xml(.*)encoding="UTF-8"/i', '<?xml\\1encoding="Shift_JIS"'); } } else { if (isset($aryParam['uid']) && BLOCKEN_MOBI_P_DEBUGUID != $aryParam['uid']) { $objBlocken->setAddParam('uid', $aryParam['uid']); $objBlocken->setRepStr('/(.*):(.*)[\\?&]uid=' . $aryParam['uid'] . '/i', '\\1:\\2'); } } } $objBlocken->setRepStr(BlockenMobile::unicode2sjis()); $objBlocken->setRepStr($aryPear['mobile']->convertEmoji()); switch ($sContentType) { case 'xhtml': if (BLOCKEN_MOBILE_USE && !$aryPear['mobile']->isNonMobile()) { ob_start('_bcomOutputHandler'); header('Content-type: application/xhtml+xml; charset=Shift_JIS'); } else { header('Content-type: application/xhtml+xml; charset=UTF-8'); } break; case 'xml': header('Content-type: text/xml; charset=UTF-8'); $objBlocken->setIsDebug(false); break; case 'hdml': header('Content-type: text/x-hdml; charset=Shift_JIS'); $objBlocken->setIsDebug(false); break; } if (BLOCKEN_MOBILE_USE && $aryPear['mobile']->isEZweb()) { header('Expires: Sat, 01 Jan 2000 00:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); header('Cache-Control: no-cache, must-revalidate'); header('Pragma: no-cache'); } if (!$bIsPHP) { echo $objBlocken->getHtml(); exit; } if (!$objBlocken->isExpired()) { $objBlocken->showCache(); exit; } return $objBlocken; }
$aryPear = array(); $aryParam = $_GET + $_POST; $aryPear['cookie'] =& new BlockenCookie(); if (BLOCKEN_COOKIE_USE && BLOCKEN_WEB == BLOCKEN_MODE) { $aryPear['cookie']->setExpire(BLOCKEN_COOKIE_EXPIRE); $aryPear['cookie']->setPath(BLOCKEN_COOKIE_PATH); $aryPear['cookie']->setDomain(BLOCKEN_COOKIE_DOMAIN); $aryPear['cookie']->setSecure(BLOCKEN_COOKIE_SECURE); $aryPear['cookie']->start(); } $aryPear['db'] =& new BlockenDB(); $aryPear['log'] = BlockenLog::singleton(BLOCKEN_LOG_HANDLER, BLOCKEN_LOG_NAME, BLOCKEN_LOG_IDENT, unserialize(BLOCKEN_LOG_CONF), BLOCKEN_LOG_LEVEL); $aryPear['session'] =& new BlockenSession(); $aryPear['mobile'] = BlockenMobile::singleton(); if (BLOCKEN_MOBI_USERAGENT && !$aryPear['mobile']->isSimulator() && (BLOCKEN_ALWAYS_DEBUG || BlockenCommon::isMember())) { $aryPear['mobile'] = BlockenMobile::singleton(BLOCKEN_MOBI_USERAGENT); } if (BLOCKEN_MOBILE_USE && BLOCKEN_WEB == BLOCKEN_MODE) { if (!$aryPear['mobile']->isNonMobile()) { ob_start('mb_output_handler'); mb_http_output('SJIS'); mb_substitute_character(0x3013); foreach ($aryParam as $sKey => $sValue) { if ($aryPear['mobile']->hasEmoji($sValue)) { if (!isset($aryParam['emoji'])) { $aryParam['emoji'] = array(); } $aryParam['emoji'][$sKey] = true; } $sValue = mb_convert_encoding($sValue, 'UTF-8', 'SJIS'); if ($aryPear['mobile']->isSoftBank()) {