Ignore:
Timestamp:
2007/07/20 15:58:59 (16 years ago)
Author:
nanasess
Message:

r15064 から svn cp
とりあえず暫定コミット.

  • UTF-8 に変更
  • slib.php, glib.php のクラス化
  • LC_Page の抽象化(一部)
Location:
branches/feature-module-update
Files:
1 edited
2 copied

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update

    • Property svn:ignore set to
      .cache

      .settings

      .projectOptions
  • branches/feature-module-update/data/include/mobile.inc

    r13356 r15078  
    11<?php 
    22/** 
    3  * ¥â¥Ð¥¤¥ë¥µ¥¤¥È¶¦Í­´Ø¿ô¥Õ¥¡¥¤¥ë 
     3 * モバイルサイト共有関数ファイル 
    44 */ 
    55 
     
    99 
    1010/** 
    11  * EC-CUBE ¤¬¥µ¥Ý¡¼¥È¤¹¤ë·ÈÂÓüËö¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£ 
    12  * ÈóÂбþüËö¤Î¾ì¹ç¤Ï unsupported/index.php ¤Ø¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£ 
     11 * EC-CUBE がサポートする携帯端末かどうかをチェックする。 
     12 * 非対応端末の場合は unsupported/index.php へリダイレクトする。 
    1313 * 
    1414 * @return void 
     
    2222 
    2323/** 
    24  * ÆþÎϥǡ¼¥¿¤òÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ËÊÑ´¹¤·¡¢³¨Ê¸»ú¤ò½üµî¤¹¤ë¡£ 
    25  * 
    26  * @param string &$value ÆþÎϥǡ¼¥¿¤Ø¤Î»²¾È 
     24 * 入力データを内部エンコーディングに変換し、絵文字を除去する。 
     25 * 
     26 * @param string &$value 入力データへの参照 
    2727 * @return void 
    2828 */ 
    2929function lfMobileConvertInputValue(&$value) { 
    30     // Shift JIS ¤«¤éÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ËÊÑ´¹¤¹¤ë¡£ 
    31     // SoftBank °Ê³°¤Î³¨Ê¸»ú¤Ï³°»úÎΰè¤Ë´Þ¤Þ¤ì¤ë¤¿¤á¡¢¤³¤ÎÃʳ¬¤Ç½üµî¤µ¤ì¤ë¡£ 
     30    // Shift JIS から内部エンコーディングに変換する。 
     31    // SoftBank 以外の絵文字は外字領域に含まれるため、この段階で除去される。 
    3232    $value = mb_convert_encoding($value, CHAR_CODE, 'SJIS'); 
    3333 
    34     // SoftBank ¤Î³¨Ê¸»ú¤ò½üµî¤¹¤ë¡£ 
     34    // SoftBank の絵文字を除去する。 
    3535    $value = preg_replace('/\\x1b\\$[^\\x0f]*\\x0f/', '', $value); 
    3636} 
    3737 
    3838/** 
    39  * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍѤÎÆþÎϤνé´ü½èÍý¤ò¹Ô¤¦¡£ 
     39 * モバイルサイト用の入力の初期処理を行う。 
    4040 * 
    4141 * @return void 
     
    4848 
    4949/** 
    50  * dtb_mobile_ext_session_id ¥Æ¡¼¥Ö¥ë¤ò¸¡º÷¤·¤Æ¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£ 
    51  * 
    52  * @return string|null ¼èÆÀ¤·¤¿¥»¥Ã¥·¥ç¥óID¤òÊÖ¤¹¡£ 
    53  *                     ¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï null ¤òÊÖ¤¹¡£ 
     50 * dtb_mobile_ext_session_id テーブルを検索してセッションIDを取得する。 
     51 * 
     52 * @return string|null 取得したセッションIDを返す。 
     53 *                     取得できなかった場合は null を返す。 
    5454 */ 
    5555function lfMobileGetExtSessionId() { 
     
    7575 
    7676/** 
    77  * ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤éÍ­¸ú¤Ê¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£ 
    78  * 
    79  * @return string|false ¼èÆÀ¤·¤¿Í­¸ú¤Ê¥»¥Ã¥·¥ç¥óID¤òÊÖ¤¹¡£ 
    80  *                      ¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£ 
     77 * パラメーターから有効なセッションIDを取得する。 
     78 * 
     79 * @return string|false 取得した有効なセッションIDを返す。 
     80 *                      取得できなかった場合は false を返す。 
    8181 */ 
    8282function lfMobileGetSessionId() { 
    83     // ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤é¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£ 
     83    // パラメーターからセッションIDを取得する。 
    8484    $sessionId = @$_POST[session_name()]; 
    8585    if (!isset($sessionId)) { 
     
    9393    } 
    9494 
    95     // ¥»¥Ã¥·¥ç¥óID¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£ 
     95    // セッションIDのフォーマットをチェックする。 
    9696    if (preg_match('/^[0-9a-zA-Z,-]{32,}$/', $sessionId) < 1) { 
    9797        gfPrintLog("Invalid session id : sid=$sessionId"); 
     
    9999    } 
    100100 
    101     // ¥»¥Ã¥·¥ç¥óID¤Î¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£ 
     101    // セッションIDの存在をチェックする。 
    102102    if (sfSessRead($sessionId) === null) { 
    103103        gfPrintLog("Non-existent session id : sid=$sessionId"); 
     
    109109 
    110110/** 
    111  * ¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Í­¸ú¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£ 
    112  * 
    113  * @return boolean ¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Í­¸ú¤Ê¾ì¹ç¤Ï true¡¢Ìµ¸ú¤Ê¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£ 
     111 * セッションデータが有効かどうかをチェックする。 
     112 * 
     113 * @return boolean セッションデータが有効な場合は true、無効な場合は false を返す。 
    114114 */ 
    115115function lfMobileValidateSession() { 
    116     // ÇÛÎó mobile ¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£ 
     116    // 配列 mobile が登録されているかどうかをチェックする。 
    117117    if (!is_array(@$_SESSION['mobile'])) { 
    118118        return false; 
    119119    } 
    120120 
    121     // Í­¸ú´ü¸Â¤ò²á¤®¤Æ¤¤¤Ê¤¤¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£ 
     121    // 有効期限を過ぎていないかどうかをチェックする。 
    122122    if (intval(@$_SESSION['mobile']['expires']) < time()) { 
    123123        gfPrintLog("Session expired at " . 
     
    128128    } 
    129129 
    130     // ·ÈÂÓüËö¤Îµ¡¼ï¤¬°ìÃפ¹¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£ 
     130    // 携帯端末の機種が一致するかどうかをチェックする。 
    131131    $model = GC_MobileUserAgent::getModel(); 
    132132    if (@$_SESSION['mobile']['model'] != $model) { 
     
    141141 
    142142/** 
    143  * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍѤΥ»¥Ã¥·¥ç¥ó´ØÏ¢¤Î½é´ü½èÍý¤ò¹Ô¤¦¡£ 
     143 * モバイルサイト用のセッション関連の初期処理を行う。 
    144144 * 
    145145 * @return void 
    146146 */ 
    147147function lfMobileInitSession() { 
    148     // ¥»¥Ã¥·¥ç¥óID¤Î¼õ¤±ÅϤ·¤Ë¥¯¥Ã¥­¡¼¤ò»ÈÍѤ·¤Ê¤¤¡£ 
     148    // セッションIDの受け渡しにクッキーを使用しない。 
    149149    ini_set('session.use_cookies', '0'); 
    150150 
    151     // ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤éÍ­¸ú¤Ê¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£ 
     151    // パラメーターから有効なセッションIDを取得する。 
    152152    $sessionId = lfMobileGetSessionId(); 
    153153 
    154154    session_start(); 
    155155 
    156     // ¥»¥Ã¥·¥ç¥óID¤Þ¤¿¤Ï¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Ìµ¸ú¤Ê¾ì¹ç¤Ï¡¢¥»¥Ã¥·¥ç¥óID¤òºÆÀ¸À® 
    157     // ¤·¡¢¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤ò½é´ü²½¤¹¤ë¡£ 
     156    // セッションIDまたはセッションデータが無効な場合は、セッションIDを再生成 
     157    // し、セッションデータを初期化する。 
    158158    if ($sessionId === false || !lfMobileValidateSession()) { 
    159159        session_regenerate_id(); 
     
    162162                                            'expires'  => time() + MOBILE_SESSION_LIFETIME)); 
    163163 
    164         // ¿·¤·¤¤¥»¥Ã¥·¥ç¥óID¤òÉղ䷤ƥê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£ 
     164        // 新しいセッションIDを付加してリダイレクトする。 
    165165        if ($_SERVER['REQUEST_METHOD'] == 'GET') { 
    166             // GET ¤Î¾ì¹ç¤ÏƱ¤¸¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£ 
     166            // GET の場合は同じページにリダイレクトする。 
    167167            header('Location: ' . gfAddSessionId()); 
    168168        } else { 
    169             // GET °Ê³°¤Î¾ì¹ç¤Ï¥È¥Ã¥×¥Ú¡¼¥¸¤Ø¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£ 
     169            // GET 以外の場合はトップページへリダイレクトする。 
    170170            header('Location: ' . URL_SITE_TOP . '?' . SID); 
    171171        } 
     
    173173    } 
    174174 
    175     // ·ÈÂÓüËöID¤ò¼èÆÀ¤Ç¤­¤¿¾ì¹ç¤Ï¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤ËÊݸ¤¹¤ë¡£ 
     175    // 携帯端末IDを取得できた場合はセッションデータに保存する。 
    176176    $phoneId = GC_MobileUserAgent::getId(); 
    177177    if ($phoneId !== false) { 
     
    179179    } 
    180180 
    181     // ¥»¥Ã¥·¥ç¥ó¤ÎÍ­¸ú´ü¸Â¤ò¹¹¿·¤¹¤ë¡£ 
     181    // セッションの有効期限を更新する。 
    182182    $_SESSION['mobile']['expires'] = time() + MOBILE_SESSION_LIFETIME; 
    183183} 
    184184 
    185185/** 
    186  * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍѤνÐÎϤνé´ü½èÍý¤ò¹Ô¤¦¡£ 
    187  * 
    188  * ½ÐÎϤÎή¤ì 
     186 * モバイルサイト用の出力の初期処理を行う。 
     187 * 
     188 * 出力の流れ 
    189189 * 1. Smarty 
    190  * 2. ÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤«¤é Shift JIS ¤ËÊÑ´¹¤¹¤ë¡£ 
    191  * 3. Á´³Ñ¥«¥¿¥«¥Ê¤òȾ³Ñ¥«¥¿¥«¥Ê¤ËÊÑ´¹¤¹¤ë¡£ 
    192  * 4. ²èÁüÍѤΥ¿¥°¤òÄ´À°¤¹¤ë¡£ 
    193  * 5. ³¨Ê¸»ú¥¿¥°¤ò³¨Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë¡£ 
    194  * 6. ½ÐÎÏ 
     190 * 2. 内部エンコーディングから Shift JIS に変換する。 
     191 * 3. 全角カタカナを半角カタカナに変換する。 
     192 * 4. 画像用のタグを調整する。 
     193 * 5. 絵文字タグを絵文字コードに変換する。 
     194 * 6. 出力 
    195195 * 
    196196 * @return void 
    197197 */ 
    198198function lfMobileInitOutput() { 
    199     // Smarty ÍѤΥǥ£¥ì¥¯¥È¥ê¡¼¤òºîÀ®¤¹¤ë¡£ 
     199    // Smarty 用のディレクトリーを作成する。 
    200200    @mkdir(COMPILE_DIR); 
    201201 
    202     // ½ÐÎÏÍѤΥ¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò Shift JIS ¤Ë¸ÇÄꤹ¤ë¡£ 
     202    // 出力用のエンコーディングを Shift JIS に固定する。 
    203203    mb_http_output('SJIS-win'); 
    204204 
    205     // ³¨Ê¸»ú¥¿¥°¤ò³¨Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë¡£ 
     205    // 絵文字タグを絵文字コードに変換する。 
    206206    ob_start(array('GC_MobileEmoji', 'handler')); 
    207207 
    208     // üËö¤Ë¹ç¤ï¤»¤Æ²èÁü¥µ¥¤¥º¤òÊÑ´¹¤¹¤ë¡£ 
     208    // 端末に合わせて画像サイズを変換する。 
    209209    ob_start(array('GC_MobileImage', 'handler')); 
    210210 
    211     // Á´³Ñ¥«¥¿¥«¥Ê¤òȾ³Ñ¥«¥¿¥«¥Ê¤ËÊÑ´¹¤¹¤ë¡£ 
     211    // 全角カタカナを半角カタカナに変換する。 
    212212    ob_start(create_function('$buffer', 'return mb_convert_kana($buffer, "k", "SJIS-win");')); 
    213213 
    214     // ÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤«¤é Shift JIS ¤ËÊÑ´¹¤¹¤ë¡£ 
     214    // 内部エンコーディングから Shift JIS に変換する。 
    215215    ob_start('mb_output_handler'); 
    216216} 
    217217 
    218218/** 
    219  * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍѤνé´ü½èÍý¤ò¹Ô¤¦¡£ 
     219 * モバイルサイト用の初期処理を行う。 
    220220 * 
    221221 * @return void 
     
    233233 
    234234/** 
    235  * LocationÅù¤Ç¥»¥Ã¥·¥ç¥óID¤òÉղ乤ëɬÍפ¬¤¢¤ëURL¤Ë¥»¥Ã¥·¥ç¥óID¤òÉղ乤롣 
     235 * Location等でセッションIDを付加する必要があるURLにセッションIDを付加する。 
    236236 * 
    237237 * @return String 
     
    244244 
    245245/** 
    246  * ¶õ¥á¡¼¥ëÍѤΥȡ¼¥¯¥ó¤òÀ¸À®¤¹¤ë¡£ 
    247  * 
    248  * @return string À¸À®¤·¤¿¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£ 
     246 * 空メール用のトークンを生成する。 
     247 * 
     248 * @return string 生成したトークンを返す。 
    249249 */ 
    250250function lfGenerateKaraMailToken() { 
     
    263263 
    264264/** 
    265  * ¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤Ë¿·µ¬¥¨¥ó¥È¥ê¡¼¤òÅÐÏ¿¤·¡¢¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£ 
    266  * 
    267  * @param string $next_url ¶õ¥á¡¼¥ë¼õ¤±ÉÕ¤±¸å¤ËÁ«°Ü¤µ¤»¤ë¥Ú¡¼¥¸ (¥â¥Ð¥¤¥ë¥µ¥¤¥È¥È¥Ã¥×¤«¤é¤ÎÁêÂÐURL) 
    268  * @param string $session_id ¥»¥Ã¥·¥ç¥óID (¾Êά¤·¤¿¾ì¹ç¤Ï¸½ºß¤Î¥»¥Ã¥·¥ç¥óID) 
    269  * @return string|false ¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£ 
     265 * 空メール管理テーブルに新規エントリーを登録し、トークンを返す。 
     266 * 
     267 * @param string $next_url 空メール受け付け後に遷移させるページ (モバイルサイトトップからの相対URL) 
     268 * @param string $session_id セッションID (省略した場合は現在のセッションID) 
     269 * @return string|false トークンを返す。エラーが発生した場合はfalseを返す。 
    270270 */ 
    271271function gfPrepareKaraMail($next_url, $session_id = null) { 
     
    306306 
    307307/** 
    308  * ¶õ¥á¡¼¥ë¤«¤é¼èÆÀ¤·¤¿¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤ËÅÐÏ¿¤¹¤ë¡£ 
    309  * 
    310  * @param string $token ¥È¡¼¥¯¥ó 
    311  * @param string $email ¥á¡¼¥ë¥¢¥É¥ì¥¹ 
    312  * @return boolean À®¸ù¤·¤¿¾ì¹ç¤Ïtrue¡¢¼ºÇÔ¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£ 
     308 * 空メールから取得したメールアドレスを空メール管理テーブルに登録する。 
     309 * 
     310 * @param string $token トークン 
     311 * @param string $email メールアドレス 
     312 * @return boolean 成功した場合はtrue、失敗した場合はfalseを返す。 
    313313 */ 
    314314function gfRegisterKaraMail($token, $email) { 
     
    334334 
    335335/** 
    336  * ¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤«¤é¥È¡¼¥¯¥ó¤¬°ìÃפ¹¤ë¹Ô¤òºï½ü¤·¡¢ 
    337  * ¼¡¤ËÁ«°Ü¤µ¤»¤ë¥Ú¡¼¥¸¤ÎURL¤òÊÖ¤¹¡£¡¡ 
    338  * 
    339  * ¥á¡¼¥ë¥¢¥É¥ì¥¹¤Ï $_SESSION['mobile']['kara_mail_from'] ¤ËÅÐÏ¿¤µ¤ì¤ë¡£ 
    340  * 
    341  * @param string $token ¥È¡¼¥¯¥ó 
    342  * @return string|false URL¤òÊÖ¤¹¡£¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£ 
     336 * 空メール管理テーブルからトークンが一致する行を削除し、 
     337 * 次に遷移させるページのURLを返す。  
     338 * 
     339 * メールアドレスは $_SESSION['mobile']['kara_mail_from'] に登録される。 
     340 * 
     341 * @param string $token トークン 
     342 * @return string|false URLを返す。エラーが発生した場合はfalseを返す。 
    343343 */ 
    344344function gfFinishKaraMail($token) { 
     
    368368 
    369369/** 
    370  * ³°Éô¥µ¥¤¥ÈÏ¢·ÈÍѤ˥»¥Ã¥·¥ç¥óID¤È¥Ñ¥é¥á¡¼¥¿¡¼¤ÎÁȤ߹ç¤ï¤»¤òÊݸ¤¹¤ë¡£ 
    371  * 
    372  * @param string $param_key ¥Ñ¥é¥á¡¼¥¿¡¼Ì¾ 
    373  * @param string $param_value ¥Ñ¥é¥á¡¼¥¿¡¼ÃÍ 
     370 * 外部サイト連携用にセッションIDとパラメーターの組み合わせを保存する。 
     371 * 
     372 * @param string $param_key パラメーター名 
     373 * @param string $param_value パラメーター値 
    374374 * @param string $url URL 
    375375 * @return void 
     
    391391 
    392392/** 
    393  * ¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬·ÈÂӤΤâ¤Î¤«¤É¤¦¤«¤òȽÊ̤¹¤ë¡£ 
    394  * 
    395  * @param string $address ¥á¡¼¥ë¥¢¥É¥ì¥¹ 
    396  * @return boolean ·ÈÂӤΥ᡼¥ë¥¢¥É¥ì¥¹¤Î¾ì¹ç¤Ïtrue¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£ 
     393 * メールアドレスが携帯のものかどうかを判別する。 
     394 * 
     395 * @param string $address メールアドレス 
     396 * @return boolean 携帯のメールアドレスの場合はtrue、それ以外の場合はfalseを返す。 
    397397 */ 
    398398function gfIsMobileMailAddress($address) { 
    399     // pdx.ne.jp(¥¦¥£¥ë¥³¥à)Äɲà
     399    // pdx.ne.jp(ウィルコム)追加 
    400400    $arrMobileMailDomains = array('docomo.ne.jp', 'ezweb.ne.jp', 'softbank.ne.jp', 'vodafone.ne.jp', 'pdx.ne.jp'); 
    401401 
Note: See TracChangeset for help on using the changeset viewer.