dropbox
«前の日記(2008-03-06) 最新 次の日記(2008-03-12)» 編集

Yammy日記

私の日々の記録などです。この日記の内容は、私個人の意見/考えであり、所属する団体の意見/考えではありません。
RSS Web yammy.jpn.org
過去の日記
☆スキーウエアNOW ON SALE!!☆★2ピース上下スーツ★ 【エァウォーク】幼児用ウエアAWT‐5524 ピンク(桃色)サイズ:100・110・120 decorate
Plaitan 25リットル:Lサイズ 【MBRO】エムブロ 日産 セレナ
エムブロC25/CC25/NC25/CNC25
バルカンLEDハイマウントストップランプ クローム
【送料込】エムブロ MBRO
C25系セレナ スパークルLEDテール
クローム
【送料無料】ねばるパウダー
折れ脚伸長式テーブルGrande neo〔グランデネオ〕 大
佐藤錦 わけあり 1Kg
沖縄産スナックパイン1玉(500g〜800g)

N−95D23L/C3 互換インク CANON BCI-7e+9/5MP



track feed
Debian GNU/Linux
Apache
www.cacert.org
My Profile by iddy
technorati
RobotReplay

2004/09/30から

今日:
昨日:
最近のツッコミ10発


2008-03-11 EC-CUBE更新内容 [長年日記]

_ [EC-CUBE] 更新内容

EC-CUBEの更新内容が自動でメール送信されるように先日仕込んでみた。その第1通目が、届いた。

Date: 2008-03-11 13:01:25 +0900 (Tue, 11 Mar 2008)
New Revision: 14
 
Modified:
    eccube2/trunk/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php
Log:
auto commit
 
Modified: eccube2/trunk/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php
===================================================================
--- eccube2/trunk/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php	2008-03-07 00:36:02 UTC (rev 13)
+++ eccube2/trunk/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php	2008-03-11 04:01:25 UTC (rev 14)
@@ -31,7 +31,7 @@
  *
  * @package Page
  * @author LOCKON CO.,LTD.
- * @version $Id: LC_Page_Admin_Design_Template.php 16769 2007-11-08 14:47:40Z adachi $
+ * @version $Id: LC_Page_Admin_Design_Template.php 17117 2008-03-11 04:04:03Z satou $
  */
 class LC_Page_Admin_Design_Template extends LC_Page {
 
@@ -111,12 +111,12 @@
 		    // DBへ使用するテンプレートを登録
 		    $this->lfRegisterTemplate($template_code);
 
-		    // テンプレートの上書き
-		    $this->lfChangeTemplate($template_code);
-
 		    // XXX コンパイルファイルのクリア処理を行う
 		    $objView->_smarty->clear_compiled_tpl();
 
+		    // ブロック位置を更新
+		    $this->lfChangeBloc($template_code);
+
 		    // 完了メッセージ
 		    $this->tpl_onload="alert('登録が完了しました。');";
 		    break;
@@ -252,21 +252,46 @@
         $masterData->createCache("mtb_constants", $mtb_constants, true,
                                  array("id", "remarks", "rank"));
 	}
+
 	/**
-	 * テンプレートを上書きコピーする.
+	 * ブロック位置の更新
 	 */
-	function lfChangeTemplate($template_code){
-	    $from = TPL_PKG_PATH . $template_code . '/user_edit/';
-
-	    if (!file_exists($from)) {
-	        $mess = $from . 'は存在しません';
-	    } else {
-	        $to = USER_PATH;
-	        $mess = sfCopyDir($from, $to, '', true);
+	function lfChangeBloc($template_code) {
+	    $objQuery = new SC_Query();
+	    $filepath = USER_TEMPLATE_PATH. $template_code. "/sql/update_bloc.sql";
+	    
+	    // ブロック位置更新SQLファイル有
+	    if(file_exists($filepath)) {
+	        if($fp = fopen($filepath, "r")) {
+	            $sql = fread($fp, filesize($filepath));
+	            fclose($fp);
+	        }
+	        // 改行、タブを1スペースに変換
+	        $sql = preg_replace("/[\r\n\t]/", " " ,$sql);
+	        $sql_split = split(";", $sql);
+	        foreach($sql_split as $key => $val){
+	            if (trim($val) != "") {
+	                $objQuery->query($val);
+	            }
+	        }
 	    }
-	    return $mess;
 	}
 
+	/**
+	 * テンプレートパッケージの削除
+	 */
+	function lfDeleteTemplate($template_code) {
+	    // DB更新
+	    $objQuery = new SC_Query();
+	    $objQuery->delete('dtb_templates', 'template_code = ?', array($template_code));
+	    // テンプレート削除
+	    $templates_dir = SMARTY_TEMPLATES_DIR. $template_code. "/";
+	    SC_Utils_Ex::sfDelFile($templates_dir);
+	    // ユーザーデータ削除
+	    $user_dir = USER_TEMPLATE_PATH. $template_code. "/";
+	    SC_Utils_Ex::sfDelFile($user_dir);
+	}
+
 	function lfGetAllTemplates() {
 	    $objQuery = new SC_Query();
 	    $arrRet = $objQuery->select('*', 'dtb_templates');
@@ -274,12 +299,5 @@
 
 	    return $arrRet;
 	}
-
-	function lfDeleteTemplate($template_code) {
-	    $objQuery = new SC_Query();
-	    $objQuery->delete('dtb_templates', 'template_code = ?', array($template_code));
-
-	    SC_Utils_Ex::sfDelFile(TPL_PKG_PATH . $template_code);
-	}
 }
 ?>

_ [EC-CUBE] 更新内容2

Date: 2008-03-11 15:01:34 +0900 (Tue, 11 Mar 2008)
New Revision: 15
 
Modified:
   eccube2/trunk/data/class/helper/SC_Helper_Mobile.php
   eccube2/trunk/data/class/pages/LC_Page.php
   eccube2/trunk/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php
   eccube2/trunk/data/class/util/SC_Utils.php
   eccube2/trunk/data/mtb_constants_init.php
   eccube2/trunk/html/admin/require.php
   eccube2/trunk/html/install/sql/insert_data.sql
   eccube2/trunk/html/mobile/require.php
   eccube2/trunk/html/require.php
Log:
auto commit
 
Modified: eccube2/trunk/data/class/helper/SC_Helper_Mobile.php
===================================================================
--- eccube2/trunk/data/class/helper/SC_Helper_Mobile.php	2008-03-11 04:01:25 UTC (rev 14)
+++ eccube2/trunk/data/class/helper/SC_Helper_Mobile.php	2008-03-11 06:01:34 UTC (rev 15)
@@ -31,7 +31,7 @@
  *
  * @package Helper
  * @author LOCKON CO.,LTD.
- * @version $Id: SC_Helper_Mobile.php 16582 2007-10-29 03:06:29Z nanasess $
+ * @version $Id: SC_Helper_Mobile.php 17118 2008-03-11 05:58:45Z adachi $
  */
 class SC_Helper_Mobile {
 
@@ -249,7 +249,13 @@
 
         if (basename(dirname($_SERVER['SCRIPT_NAME'])) != 'unsupported') {
             $this->lfMobileCheckCompatibility();
-            $this->lfMobileInitSession();
+            /**
+             * 共有SSL対応のため、SC_SessionFactory_useRequest::initSession()へ移行
+             * また、他のセッション関連メソッドもSC_SessionFactory_useRequestのインスタンスから呼び出すこと
+             *
+             * @see data/class/session/sessionfactory/SC_SessionFactory_useRequest.php
+             */
+            // $this->lfMobileInitSession();
         }
 
         $this->lfMobileInitOutput();
 
Modified: eccube2/trunk/data/class/pages/LC_Page.php
===================================================================
--- eccube2/trunk/data/class/pages/LC_Page.php	2008-03-11 04:01:25 UTC (rev 14)
+++ eccube2/trunk/data/class/pages/LC_Page.php	2008-03-11 06:01:34 UTC (rev 15)
@@ -105,7 +105,7 @@
      * @param string $url リダイレクト先 URL
      * @param boolean $isMobile モバイル用にセッションIDを付与する場合 true
      * @return void|boolean $url に SITE_URL 及び, SSL_URL を含まない場合 false,
-     *                       正常に遷移可能な場合は, $url の URL へ遷移する.
+     *                       正常に遷移可能な場合は, $url の ロケーションヘッダを出力する.
      * @see Net_URL
      */
     function sendRedirect($url, $isMobile = false) {
@@ -117,11 +117,15 @@
             if (!empty($_SERVER['QUERY_STRING'])) {
                 $netURL->addRawQueryString($_SERVER['QUERY_STRING']);
             }
-            if ($isMobile) {
+
+            $session = SC_SessionFactory::getInstance();
+            if ($isMobile || $session->useCookie() == false) {
                 $netURL->addQueryString(session_name(), session_id());
             }
+
             $netURL->addQueryString(TRANSACTION_ID_NAME, $this->getToken());
             header("Location: " . $netURL->getURL());
+            return;
         }
         return false;
     }
 
Modified: eccube2/trunk/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php
===================================================================
--- eccube2/trunk/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php	2008-03-11 04:01:25 UTC (rev 14)
+++ eccube2/trunk/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php	2008-03-11 06:01:34 UTC (rev 15)
@@ -90,7 +90,7 @@
 
             if(count($arrErr) == 0) {
                 if($objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['login_email'], true)) {
-                    $this->sendRedirect($this->getLocation($_POST['url']));
+                    $this->sendRedirect($this->getLocation($_POST['url'], array(), false));
                     exit;
                 } else {
                     $arrForm['login_email'] = strtolower($arrForm['login_email']);
@@ -106,7 +106,7 @@
                 }
             } else {
                 // 入力エラーの場合、元のアドレスに戻す。
-                $this->sendRedirect($this->getLocation($_POST['url']));
+                $this->sendRedirect($this->getLocation($_POST['url'], array(), false));
                 exit;
             }
             break;
@@ -116,9 +116,9 @@
             $mypage_url_search = strpos('.'.$_POST['url'], "mypage");
             //マイページログイン中はログイン画面へ移行
             if ($mypage_url_search == 2){
-                $this->sendRedirect($this->getLocation(URL_DIR . "mypage/login.php"));
+                $this->sendRedirect($this->getLocation(URL_DIR . "mypage/login.php", array(), false));
             }else{
-                $this->sendRedirect($this->getLocation($_POST['url']));
+                $this->sendRedirect($this->getLocation($_POST['url'], array(), false));
             }
             exit;
             break;
 
Modified: eccube2/trunk/data/class/util/SC_Utils.php
===================================================================
--- eccube2/trunk/data/class/util/SC_Utils.php	2008-03-11 04:01:25 UTC (rev 14)
+++ eccube2/trunk/data/class/util/SC_Utils.php	2008-03-11 06:01:34 UTC (rev 15)
@@ -955,28 +955,13 @@
         return $arrRet;
     }
 
-    /* ドメイン間で有効なセッションのスタート */
-    function sfDomainSessionStart() {
-        $ret = session_id();
-    /*
-        ヘッダーを送信していてもsession_start()が必要なページがあるので
-        コメントアウトしておく
-        if($ret == "" && !headers_sent()) {
-    */
-        if($ret == "") {
-            /* セッションパラメータの指定
-             ・ブラウザを閉じるまで有効
-             ・すべてのパスで有効
-             ・同じドメイン間で共有 */
-            session_set_cookie_params (0, "/", DOMAIN_NAME);
+    /**
+     * ドメイン間で有効なセッションのスタート
+     * 共有SSL対応のための修正により、この関数は廃止します。
+     * セッションはrequire.phpを読み込んだ際に開始されます。
+     */
+    function sfDomainSessionStart() {}
 
-            if(!ini_get("session.auto_start")){
-                // セッション開始
-                session_start();
-            }
-        }
-    }
-
     /* 文字列に強制的に改行を入れる */
     function sfPutBR($str, $size) {
         $i = 0;
@@ -1913,10 +1898,10 @@
 
         return $str;
     }
-    
+
    /**
      * 配列をテーブルタグで出力する。
-     * 
+     *
      * @return string
      */
     function getTableTag($array) {
@@ -1926,11 +1911,11 @@
             $html.="<th>$key</th>";
         }
         $html.= "</tr>";
-        
+
         $cnt = count($array);
-        
+
         for($i = 0; $i < $cnt; $i++) {
-            $html.= "<tr>";       	
+            $html.= "<tr>";
         	foreach($array[$i] as $val) {
                 $html.="<td>$val</td>";
             }
 
Modified: eccube2/trunk/data/mtb_constants_init.php
===================================================================
--- eccube2/trunk/data/mtb_constants_init.php	2008-03-11 04:01:25 UTC (rev 14)
+++ eccube2/trunk/data/mtb_constants_init.php	2008-03-11 06:01:34 UTC (rev 15)
@@ -624,6 +624,10 @@
 define('MOBILE_URL_SHOP_COMPLETE', MOBILE_URL_DIR . "shopping/complete.php");
 /** モジュール追加用画面 */
 define('MOBILE_URL_SHOP_MODULE', MOBILE_URL_DIR . "shopping/load_payment_module.php");
+/** セッション維持の方法 */
+define('SESSION_KEEP_METHOD', 'useCookie');
+/** セッションの存続時間 (秒) */
+define('SESSION_LIFETIME', 1800);
 /** オーナーズストアURL */
 define('OSTORE_URL', "http://store.ec-cube.net/");
 /** オーナーズストアURL */
 
Modified: eccube2/trunk/html/admin/require.php
===================================================================
--- eccube2/trunk/html/admin/require.php	2008-03-11 04:01:25 UTC (rev 14)
+++ eccube2/trunk/html/admin/require.php	2008-03-11 06:01:34 UTC (rev 15)
@@ -68,10 +68,14 @@
 
 require_once($include_dir . "/.." . HTML2DATA_DIR . "module/Mail.php");
 require_once($include_dir . "/.." . HTML2DATA_DIR . "module/Mail/mime.php");
-
-// セッションハンドラ開始
-$objSession = new SC_Helper_Session_Ex();
 
 // インストールチェック
 SC_Utils_Ex::sfInitInstall();
+
+// セッションハンドラ開始
+$objSession = new SC_Helper_Session_Ex();
+// セッション初期化・開始
+require_once CLASS_PATH . 'session/SC_SessionFactory.php';
+$sessionFactory = SC_SessionFactory::getInstance();
+$sessionFactory->initSession();
 ?>
 
Modified: eccube2/trunk/html/install/sql/insert_data.sql
===================================================================
--- eccube2/trunk/html/install/sql/insert_data.sql	2008-03-11 04:01:25 UTC (rev 14)
+++ eccube2/trunk/html/install/sql/insert_data.sql	2008-03-11 06:01:34 UTC (rev 15)
@@ -1046,6 +1046,8 @@
 INSERT INTO mtb_constants VALUES ('MOBILE_DETAIL_P_HTML', 'MOBILE_URL_DIR . "products/detail.php?product_id="', 415,'商品詳細(HTML出力)');
 INSERT INTO mtb_constants VALUES ('MOBILE_URL_SHOP_COMPLETE', 'MOBILE_URL_DIR . "shopping/complete.php"', 416,'購入完了画面');
 INSERT INTO mtb_constants VALUES ('MOBILE_URL_SHOP_MODULE', 'MOBILE_URL_DIR . "shopping/load_payment_module.php"', 417,'モジュール追加用画面');
+INSERT INTO mtb_constants VALUES ('SESSION_KEEP_METHOD', '"useCookie"', 418,'セッション維持方法:useCookie|useRequest');
+INSERT INTO mtb_constants VALUES ('SESSION_LIFETIME', '"1800"', 419,'セッション維持方法:useCookie|useRequest');
 INSERT INTO mtb_constants VALUES ('OSTORE_URL', '"http://store.ec-cube.net/"', 500, 'オーナーズストアURL');
 INSERT INTO mtb_constants VALUES ('OSTORE_SSLURL', '"https://store.ec-cube.net/"', 501, 'オーナーズストアURL');
 INSERT INTO mtb_constants VALUES ('OSTORE_LOG_PATH', 'DATA_PATH . "logs/ownersstore.log"', 502, 'オーナーズストアログパス');
@@ -1070,4 +1072,4 @@
 INSERT INTO mtb_constants VALUES ('OSTORE_E_C_PERMISSION', '"2009"', 521, 'オーナーズストア通信エラーコード');
 INSERT INTO mtb_constants VALUES ('OSTORE_E_C_BATCH_ERR', '"2010"', 522, 'オーナーズストア通信エラーコード');
 
-INSERT INTO dtb_module (module_id,module_code,module_name,update_date,create_date)values(0,0,'patch',now(),now());
\ No newline at end of file
+INSERT INTO dtb_module (module_id,module_code,module_name,update_date,create_date)values(0,0,'patch',now(),now());
 
Modified: eccube2/trunk/html/mobile/require.php
===================================================================
--- eccube2/trunk/html/mobile/require.php	2008-03-11 04:01:25 UTC (rev 14)
+++ eccube2/trunk/html/mobile/require.php	2008-03-11 06:01:34 UTC (rev 15)
@@ -79,6 +79,11 @@
 // セッションハンドラ開始
 $objSession = new SC_Helper_Session_Ex();
 
+// セッション初期化・開始
+require_once CLASS_PATH . 'session/SC_SessionFactory.php';
+$sessionFactory = SC_SessionFactory::getInstance();
+$sessionFactory->initSession();
+
 // モバイルサイト用の初期処理を実行する。
 if (!defined('SKIP_MOBILE_INIT')) {
     $objMobile = new SC_Helper_Mobile_Ex();
 
Modified: eccube2/trunk/html/require.php
===================================================================
--- eccube2/trunk/html/require.php	2008-03-11 04:01:25 UTC (rev 14)
+++ eccube2/trunk/html/require.php	2008-03-11 06:01:34 UTC (rev 15)
@@ -91,17 +91,22 @@
     } else {
         $url = MOBILE_SITE_URL;
     }
-    
+
     if (preg_match('|^' . URL_DIR . '(.*)$|', $_SERVER['REQUEST_URI'], $matches)) {
         $path = $matches[1];
     } else {
         $path = '';
     }
-    
+
     header("Location: ". SC_Utils_Ex::sfRmDupSlash($url . $path));
     exit;
 }
 
+// セッション初期化・開始
+require_once CLASS_PATH . 'session/SC_SessionFactory.php';
+$sessionFactory = SC_SessionFactory::getInstance();
+$sessionFactory->initSession();
+
 // 絵文字変換 (除去) フィルターを組み込む。
 ob_start(array('SC_MobileEmoji', 'handler'));
 ?>

_ [EC-CUBE] 更新内容3

Date: 2008-03-11 16:01:35 +0900 (Tue, 11 Mar 2008)
New Revision: 16
 
Modified:
   eccube2/trunk/data/class/helper/SC_Helper_Mobile.php
Log:
auto commit
 
Modified: eccube2/trunk/data/class/helper/SC_Helper_Mobile.php
===================================================================
--- eccube2/trunk/data/class/helper/SC_Helper_Mobile.php	2008-03-11 06:01:34 UTC (rev 15)
+++ eccube2/trunk/data/class/helper/SC_Helper_Mobile.php	2008-03-11 07:01:35 UTC (rev 16)
@@ -31,7 +31,7 @@
  *
  * @package Helper
  * @author LOCKON CO.,LTD.
- * @version $Id: SC_Helper_Mobile.php 17118 2008-03-11 05:58:45Z adachi $
+ * @version $Id: SC_Helper_Mobile.php 17119 2008-03-11 06:19:26Z adachi $
  */
 class SC_Helper_Mobile {
 
@@ -250,10 +250,10 @@
         if (basename(dirname($_SERVER['SCRIPT_NAME'])) != 'unsupported') {
             $this->lfMobileCheckCompatibility();
             /**
-             * 共有SSL対応のため、SC_SessionFactory_useRequest::initSession()へ移行
-             * また、他のセッション関連メソッドもSC_SessionFactory_useRequestのインスタンスから呼び出すこと
+             * 共有SSL対応のため、SC_SessionFactory_UseRequest::initSession()へ移行
+             * また、他のセッション関連メソッドもSC_SessionFactory_UseRequestのインスタンスから呼び出すこと
              *
-             * @see data/class/session/sessionfactory/SC_SessionFactory_useRequest.php
+             * @see data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php
              */
             // $this->lfMobileInitSession();
         }

_ [EC-CUBE] 更新内容4

Date: 2008-03-11 17:08:23 +0900 (Tue, 11 Mar 2008)
New Revision: 17
 
Added:
   eccube2/trunk/data/class/session/
   eccube2/trunk/data/class/session/SC_SessionFactory.php
   eccube2/trunk/data/class/session/sessionfactory/
   eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseCookie.php
   eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php
   eccube2/trunk/html/user_data/packages/default/sql/
   eccube2/trunk/html/user_data/packages/default/sql/update_bloc.sql
Log:
auto commit
 
Added: eccube2/trunk/data/class/session/SC_SessionFactory.php
===================================================================
--- eccube2/trunk/data/class/session/SC_SessionFactory.php	                        (rev 0)
+++ eccube2/trunk/data/class/session/SC_SessionFactory.php	2008-03-11 08:08:23 UTC (rev 17)
@@ -0,0 +1,89 @@
+setState('mobile')
+                : $session->setState('pc');
+            break;
+
+        // クッキーを使用する
+        case 'useCookie':
+        default:
+            $session = new SC_SessionFactory_UseCookie;
+            break;
+        }
+
+        return $session;
+    }
+
+    /**
+     * セッションの初期化を行う.
+     *
+     */
+    function initSession() {}
+
+    /**
+     * Cookieを使用するかどうかを返す.
+     *
+     * @return boolean
+     */
+    function useCookie() {}
+
+}
+/*
+ * Local variables:
+ * coding: utf-8
+ * End:
+ */
+?>
 
Added: eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseCookie.php
===================================================================
--- eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseCookie.php	                        (rev 0)
+++ eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseCookie.php	2008-03-11 08:08:23 UTC (rev 17)
@@ -0,0 +1,75 @@
+
 
Added: eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php
===================================================================
--- eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php	                        (rev 0)
+++ eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php	2008-03-11 08:08:23 UTC (rev 17)
@@ -0,0 +1,513 @@
+state = new LC_UseRequest_State_Mobile;
+            break;
+
+        case 'pc':
+        default:
+            $this->state = new LC_UseRequest_State_PC;
+            break;
+        }
+    }
+
+    /**
+     * Cookieを使用するかどうか
+     *
+     * @return boolean 常にfalseを返す
+     */
+    function useCookie() {
+        return false;
+    }
+
+    /**
+     * dtb_mobile_ext_session_id テーブルを検索してセッションIDを取得する。
+     * PCサイトでもモバイルサイトでもこのテーブルを利用する.
+     *
+     * @return string|null 取得したセッションIDを返す。
+     *                     取得できなかった場合は null を返す。
+     */
+    function getExtSessionId() {
+        if (!preg_match('|^' . URL_DIR . '(.*)$|', $_SERVER['SCRIPT_NAME'], $matches)) {
+            return null;
+        }
+
+        $url = $matches[1];
+        $lifetime = $this->state->getLifeTime();
+        $time = date('Y-m-d H:i:s', time() - $lifetime);
+        $objQuery = new SC_Query;
+
+        foreach ($_REQUEST as $key => $value) {
+            $session_id = $objQuery->get('dtb_mobile_ext_session_id', 'session_id',
+                                         'param_key = ? AND param_value = ? AND url = ? AND create_date >= ?',
+                                         array($key, $value, $url, $time));
+            if (isset($session_id)) {
+                return $session_id;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * 外部サイト連携用にセッションIDとパラメーターの組み合わせを保存する。
+     *
+     * @param string $param_key パラメーター名
+     * @param string $param_value パラメーター値
+     * @param string $url URL
+     * @return void
+     */
+    function setExtSessionId($param_key, $param_value, $url) {
+        $objQuery = new SC_Query;
+
+        // GC
+        $lifetime = $this->state->getLifeTime();
+        $time = date('Y-m-d H:i:s', time() - $lifetime);
+        $objQuery->delete('dtb_mobile_ext_session_id', 'create_date < ?', array($time));
+
+        $arrValues = array('session_id'  => session_id(),
+                           'param_key'   => $param_key,
+                           'param_value' => $param_value,
+                           'url'         => $url);
+
+        $objQuery->insert('dtb_mobile_ext_session_id', $arrValues);
+    }
+
+    /**
+     * セッションデータが有効かどうかをチェックする。
+     *
+     * @return boolean セッションデータが有効な場合は true、無効な場合は false を返す。
+     */
+    function validateSession() {
+        return $this->state->validateSessionData();
+    }
+
+    /**
+     * パラメーターから有効なセッションIDを取得する。
+     *
+     * @return string|false 取得した有効なセッションIDを返す。
+     *                      取得できなかった場合は false を返す。
+     */
+    function getSessionId() {
+        // パラメーターからセッションIDを取得する。
+        $sessionId = @$_POST[session_name()];
+        if (!isset($sessionId)) {
+            $sessionId = @$_GET[session_name()];
+        }
+        if (!isset($sessionId)) {
+            $sessionId = $this->getExtSessionId();
+        }
+        if (!isset($sessionId)) {
+            return false;
+        }
+
+        // セッションIDの存在をチェックする。
+        $objSession = new SC_Helper_Session_Ex();
+        if ($objSession->sfSessRead($sessionId) === null) {
+            GC_Utils_Ex::gfPrintLog("Non-existent session id : sid=$sessionId");
+            return false;
+        }
+        return session_id($sessionId);
+    }
+
+    /**
+     * セッション初期処理を行う。
+     *
+     * @return void
+     */
+    function initSession() {
+        // セッションIDの受け渡しにクッキーを使用しない。
+        ini_set('session.use_cookies', '0');
+        ini_set('session.use_trans_sid', '1');
+
+        // パラメーターから有効なセッションIDを取得する。
+        $sessionId = $this->getSessionId();
+
+        session_start();
+
+        // セッションIDまたはセッションデータが無効な場合は、セッションIDを再生成
+        // し、セッションデータを初期化する。
+        if ($sessionId === false || !$this->validateSession()) {
+            session_regenerate_id(true);
+            // セッションデータの初期化
+            $this->state->inisializeSessionData();
+
+            // 新しいセッションIDを付加してリダイレクトする。
+            if ($_SERVER['REQUEST_METHOD'] == 'GET') {
+                // GET の場合は同じページにリダイレクトする。
+                $objMobile = new SC_Helper_Mobile_Ex;
+                header('Location: ' . $objMobile->gfAddSessionId());
+            } else {
+                // GET 以外の場合はトップページへリダイレクトする。
+                header('Location: ' . URL_SITE_TOP . '?' . SID);
+            }
+            exit;
+        }
+
+        // 有効期限を更新する.
+        $this->state->updateExpire();
+    }
+}
+/**
+ * セッションデータ管理クラスの基底クラス
+ *
+ */
+class LC_UseRequest_State {
+    /** 名前空間(pc/mobile) */
+    var $namespace = '';
+    /** 有効期間 */
+    var $lifetime  = 0;
+    /** エラーチェック関数名の配列 */
+    var $validate  = array();
+
+    /**
+     * 名前空間を取得する
+     *
+     * @return string
+     */
+    function getNameSpace() { return $this->namespace; }
+
+    /**
+     * 有効期間を取得する
+     *
+     * @return integer
+     */
+    function getLifeTime() { return $this->lifetime; }
+
+    /**
+     * セッションデータが設定されているかを判定する.
+     * $_SESSION[$namespace]の値が配列の場合に
+     * trueを返す.
+     *
+     * @return boolean
+     */
+    function validateNameSpace() {
+        $namespace = $this->getNameSpace();
+        if (isset($_SESSION[$namespace]) && is_array($_SESSION[$namespace])) {
+            return true;
+        }
+        GC_Utils_Ex::gfPrintLog("NameSpace $namespace not found in session data : sid=" . session_id());
+        return false;
+    }
+
+    /**
+     * セッションのデータを取得する
+     * 取得するデータは$_SESSION[$namespace][$key]となる.
+     *
+     * @param string $key
+     * @return mixed|null
+     */
+    function getValue($key) {
+        $namespace = $this->getNameSpace();
+        return isset($_SESSION[$namespace][$key])
+            ? $_SESSION[$namespace][$key]
+            : null;
+    }
+
+    /**
+     * セッションにデータを登録する.
+     * $_SESSION[$namespace][$key] = $valueの形で登録される.
+     *
+     * @param string $key
+     * @param mixed $value
+     */
+    function setValue($key, $value) {
+        $namespace = $this->getNameSpace();
+        $_SESSION[$namespace][$key] = $value;
+    }
+
+    /**
+     * 有効期限を取得する.
+     *
+     * @return integer
+     */
+    function getExpire() {
+        return $this->getValue('expires');
+    }
+
+    /**
+     * 有効期限を設定する.
+     *
+     */
+    function updateExpire() {
+        $lifetime = $this->getLifeTime();
+        $this->setValue('expires', time() + $lifetime);
+    }
+
+    /**
+     * 有効期限内かどうかを判定する.
+     *
+     * @return boolean
+     */
+    function validateExpire() {
+        $expire = $this->getExpire();
+        if (intval($expire) > time()) {
+            return true;
+        }
+        $date = date('Y/m/d H:i:s', $expire);
+        GC_Utils_Ex::gfPrintLog("Session expired at $date : sid=" . session_id());
+        return false;
+    }
+
+    /**
+     * IPアドレスを取得する.
+     *
+     * @return string
+     */
+    function getIp() {
+        return $this->getValue('ip');
+    }
+
+    /**
+     * IPアドレスを設定する.
+     *
+     */
+    function updateIp() {
+        $this->setValue('ip', $_SERVER['REMOTE_ADDR']);
+    }
+
+    /**
+     * REMOTE_ADDRとセッション中のIPが同じかどうかを判定する.
+     * 同じ場合にtrueが返る
+     *
+     * @return boolean
+     */
+    function validateIp() {
+        $ip = $this->getIp();
+        if (!empty($_SERVER['REMOTE_ADDR'])
+         && $ip === $_SERVER['REMOTE_ADDR']) {
+
+            return true;
+        }
+
+        $msg = sprintf('Ip Addr mismatch : %s != %s(expected) : sid=%s',
+                       $_SERVER['REMOTE_ADDR'], $ip, session_id());
+        GC_Utils_Ex::gfPrintLog($msg);
+        return false;
+    }
+
+    /**
+     * UserAgentもしくは携帯の機種名を取得する.
+     *
+     * @return string
+     */
+    function getModel() {
+        return $this->getValue('model');
+    }
+
+    /**
+     * セッション中のデータ検証する
+     *
+     * @return boolean
+     */
+    function validateSessionData() {
+        foreach ($this->validate as $method) {
+            $method = 'validate' . $method;
+            if (!$this->$method()) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * セッションデータを初期化する.
+     *
+     */
+    function inisializeSessionData() {}
+}
+
+/**
+ * PCサイト用のセッションデータ管理クラス
+ *
+ */
+class LC_UseRequest_State_PC extends LC_UseRequest_State {
+
+    /**
+     * コンストラクタ
+     * セッションのデータ構造は下のようになる.
+     * $_SESSION["pc"]=> array(
+     *     ["model"]   => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
+     *     ["ip"]      => "127.0.0.1"
+     *     ["expires"] => 1204699031
+     * )
+     *
+     * @return LC_UseRequest_State_PC
+     */
+    function LC_UseRequest_State_PC() {
+        $this->namespace = 'pc';
+        $this->lifetime  = SESSION_LIFETIME;
+        $this->validate  = array('NameSpace', 'Model', 'Ip', 'Expire');
+    }
+
+    /**
+     * セッションにUserAgentを設定する.
+     *
+     */
+    function updateModel() {
+        $this->setValue('model', $_SERVER['HTTP_USER_AGENT']);
+    }
+
+    /**
+     * UserAgentを検証する.
+     *
+     * @return boolean
+     */
+    function validateModel() {
+        $ua = $this->getModel();
+        if (!empty($_SERVER['HTTP_USER_AGENT'])
+         && $_SERVER['HTTP_USER_AGENT'] === $ua) {
+
+            return true;
+        }
+        $msg = sprintf("User agent model mismatch : %s != %s(expected), sid=%s",
+                       $_SERVER['HTTP_USER_AGENT'], $ua, session_id());
+        GC_Utils_Ex::gfPrintLog($msg);
+        return false;
+    }
+
+    /**
+     * セッションデータを初期化する.
+     *
+     */
+    function inisializeSessionData() {
+        $_SESSION = array();
+        $this->updateModel();
+        $this->updateIp();
+        $this->updateExpire();
+    }
+}
+
+/**
+ * モバイルサイト用のセッションデータ管理クラス
+ *
+ */
+class LC_UseRequest_State_Mobile extends LC_UseRequest_State {
+
+    /**
+     * コンストラクタ
+     * セッションのデータ構造は下のようになる.
+     * $_SESSION["mobile"]=> array(
+     *     ["model"]   => 901sh
+     *     ["ip"]      => 127.0.0.1
+     *     ["expires"] => 1204699031
+     *     ["phone_id"]=> ****
+     * )
+     *
+     * @return LC_UseRequest_State_Mobile
+     */
+    function LC_UseRequest_State_Mobile() {
+        $this->namespace = 'mobile';
+        $this->lifetime  = MOBILE_SESSION_LIFETIME;
+        $this->validate  = array('NameSpace', 'Model', 'Ip', 'Expire');
+    }
+
+    /**
+     * 携帯の機種名を設定する
+     *
+     */
+    function updateModel() {
+        $this->setValue('model', SC_MobileUserAgent::getModel());
+    }
+
+    /**
+     * セッション中の携帯機種名と、アクセスしてきたブラウザの機種名が同じかどうかを判定する
+     *
+     * @return boolean
+     */
+    function validateModel() {
+        $modelInSession = $this->getModel();
+        $model = SC_MobileUserAgent::getModel();
+        if (!empty($model)
+         && $model === $modelInSession) {
+
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 携帯のIDを取得する
+     *
+     * @return string
+     */
+    function getPhoneId() {
+        return $this->getValue('phone_id');
+    }
+
+    /**
+     * 携帯のIDを登録する.
+     *
+     */
+    function updatePhoneId() {
+        $this->setValue('phone_id', SC_MobileUserAgent::getId());
+    }
+
+    /**
+     * セッションデータを初期化する.
+     *
+     */
+    function inisializeSessionData() {
+        $_SESSION = array();
+        $this->updateModel();
+        $this->updateIp();
+        $this->updateExpire();
+        $this->updatePhoneId();
+    }
+}
+/*
+ * Local variables:
+ * coding: utf-8
+ * End:
+ */
+?>
 
Added: eccube2/trunk/html/user_data/packages/default/sql/update_bloc.sql
===================================================================
--- eccube2/trunk/html/user_data/packages/default/sql/update_bloc.sql	                        (rev 0)
+++ eccube2/trunk/html/user_data/packages/default/sql/update_bloc.sql	2008-03-11 08:08:23 UTC (rev 17)
@@ -0,0 +1,26 @@
+DELETE FROM dtb_blocposition WHERE page_id = 1;
+DELETE FROM dtb_blocposition WHERE page_id = 2;
+DELETE FROM dtb_blocposition WHERE page_id = 3;
+DELETE FROM dtb_blocposition WHERE page_id = 4;
+
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,1,1,2,'category');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,1,2,3,'guide');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,1,3,1,'cart');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,3,4,2,'search_products');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,4,5,1,'news');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,3,6,1,'login');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,4,7,2,'best5');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,1,1,2,'category');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,1,2,3,'guide');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,1,3,1,'cart');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,5,4,0,'search_products');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,5,5,0,'news');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,5,6,0,'login');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,5,7,0,'best5');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,1,1,2,'category');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,1,2,3,'guide');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,1,3,1,'cart');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,5,4,0,'search_products');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,5,5,0,'news');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,5,6,0,'login');
+INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,5,7,0,'best5');

_ [EC-CUBE] 更新内容5

Date: 2008-03-11 21:01:32 +0900 (Tue, 11 Mar 2008)
New Revision: 18
 
Modified:
   eccube2/trunk/data/class/pages/mypage/LC_Page_Mypage_Change.php
   eccube2/trunk/data/class/session/SC_SessionFactory.php
   eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php
   eccube2/trunk/data/class/util/SC_Utils.php
   eccube2/trunk/data/include/module.inc
   eccube2/trunk/html/install/sql/insert_data.sql
Log:
auto commit
 
Modified: eccube2/trunk/data/class/pages/mypage/LC_Page_Mypage_Change.php
===================================================================
--- eccube2/trunk/data/class/pages/mypage/LC_Page_Mypage_Change.php	2008-03-11 08:08:23 UTC (rev 17)
+++ eccube2/trunk/data/class/pages/mypage/LC_Page_Mypage_Change.php	2008-03-11 12:01:32 UTC (rev 18)
@@ -29,7 +29,7 @@
  *
  * @package Page
  * @author LOCKON CO.,LTD.
- * @version $Id: LC_Page_Mypage_Change.php 16582 2007-10-29 03:06:29Z nanasess $
+ * @version $Id: LC_Page_Mypage_Change.php 17125 2008-03-11 11:59:00Z adachi $
  */
 class LC_Page_Mypage_Change extends LC_Page {
 
@@ -158,6 +158,12 @@
                 $objDb->sfEditCustomerData($this->arrForm, $arrRegistColumn);
                 //セッション情報を最新の状態に更新する
                 $this->objCustomer->updateSession();
+
+                // Do楽SNS連携モジュールユーザ情報更新処理
+                if (function_exists('sfUpdateSourakuSNSUserInfo')) {
+                    sfUpdateSourakuSNSUserInfo();
+                }
+
                 //完了ページへ
                 $this->sendRedirect($this->getLocation("./change_complete.php"));
                 exit;
 
Modified: eccube2/trunk/data/class/session/SC_SessionFactory.php
===================================================================
--- eccube2/trunk/data/class/session/SC_SessionFactory.php	2008-03-11 08:08:23 UTC (rev 17)
+++ eccube2/trunk/data/class/session/SC_SessionFactory.php	2008-03-11 12:01:32 UTC (rev 18)
@@ -28,9 +28,22 @@
 /**
  * セッションの初期化処理を抽象化するファクトリークラス.
  *
+ * このクラスはセッションの維持方法を管理するクラスです.
+ * 他のセッション管理クラスとは若干異なります.
+ *
+ * EC-CUBE2.1.1ベータ版から、
+ * 管理画面>基本情報>パラメータ管理で、セッションの維持方法を
+ * ・Cookieを使用する場合
+ * ・リクエストパラメータを使用する場合
+ * の2種類が選択できますが、どちらの設定であっても下記のように呼び出すことで
+ * 適切にセッションを開始することができます.
+ *
+ * $sessionFactory = SC_SessionFactory::getInstance()
+ * $sessionFactory->initSession();
+ *
  * @package SC_Session
  * @author LOCKON CO.,LTD.
- * @version $Id: SC_SessionFactory.php 17119 2008-03-11 06:19:26Z adachi $
+ * @version $Id: SC_SessionFactory.php 17124 2008-03-11 11:52:27Z adachi $
  */
 class SC_SessionFactory {
 
 
Modified: eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php
===================================================================
--- eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php	2008-03-11 08:08:23 UTC (rev 17)
+++ eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php	2008-03-11 12:01:32 UTC (rev 18)
@@ -34,7 +34,7 @@
  *
  * @package SC_SessionFactory
  * @author LOCKON CO.,LTD.
- * @version $Id: SC_SessionFactory_UseRequest.php 17120 2008-03-11 06:32:01Z adachi $
+ * @version $Id: SC_SessionFactory_UseRequest.php 17124 2008-03-11 11:52:27Z adachi $
  */
 class SC_SessionFactory_UseRequest extends SC_SessionFactory {
 
@@ -129,6 +129,20 @@
      * @return boolean セッションデータが有効な場合は true、無効な場合は false を返す。
      */
     function validateSession() {
+        /**
+         * PCサイトでは
+         *  ・セッションデータが適切に設定されているか
+         *  ・UserAgent
+         *  ・IPアドレス
+         *  ・有効期限
+         * モバイルサイトでは
+         *  ・セッションデータが適切に設定されているか
+         *  ・機種名
+         *  ・IPアドレス
+         *  ・有効期限
+         *  ・phone_id
+         * がチェックされる
+         */
         return $this->state->validateSessionData();
     }
 
@@ -168,12 +182,13 @@
     function initSession() {
         // セッションIDの受け渡しにクッキーを使用しない。
         ini_set('session.use_cookies', '0');
-        ini_set('session.use_trans_sid', '1');
 
         // パラメーターから有効なセッションIDを取得する。
         $sessionId = $this->getSessionId();
 
-        session_start();
+        if (!$sessionId) {
+            session_start();
+        }
 
         // セッションIDまたはセッションデータが無効な場合は、セッションIDを再生成
         // し、セッションデータを初期化する。
 
Modified: eccube2/trunk/data/class/util/SC_Utils.php
===================================================================
--- eccube2/trunk/data/class/util/SC_Utils.php	2008-03-11 08:08:23 UTC (rev 17)
+++ eccube2/trunk/data/class/util/SC_Utils.php	2008-03-11 12:01:32 UTC (rev 18)
@@ -960,8 +960,26 @@
      * 共有SSL対応のための修正により、この関数は廃止します。
      * セッションはrequire.phpを読み込んだ際に開始されます。
      */
-    function sfDomainSessionStart() {}
+    function sfDomainSessionStart() {
+        /**
+         * 2.1.1ベータからはSC_SessionFactory_UseCookie::initSession()で処理するため、
+         * ここでは何も処理しない
+         */
+        if (defined('SESSION_KEEP_METHOD')) {
+            return;
+        }
 
+        if (session_id() === "") {
+
+            session_set_cookie_params(0, "/", DOMAIN_NAME);
+
+            if (!ini_get("session.auto_start")) {
+                // セッション開始
+                session_start();
+            }
+        }
+    }
+
     /* 文字列に強制的に改行を入れる */
     function sfPutBR($str, $size) {
         $i = 0;
 
Modified: eccube2/trunk/data/include/module.inc
===================================================================
--- eccube2/trunk/data/include/module.inc	2008-03-11 08:08:23 UTC (rev 17)
+++ eccube2/trunk/data/include/module.inc	2008-03-11 12:01:32 UTC (rev 18)
@@ -1,128 +1,75 @@
-tpl_mainpage = MODULE_PATH . "ebis_tag_text.tpl";
-	}
-}
-
-// エビスタグの発行
-function sfPrintEbisTag($pid = "") {
-	$objQuery = new SC_Query();
-	$arrRet = $objQuery->select("sub_data", "dtb_module", "module_id = ?", array(EBIS_TAG_MID));
-	$arrSubData = unserialize($arrRet[0]['sub_data']);
-	$arrEbis = array();
-	
-	if($arrSubData['cid'] != "") {
-		$arrEbis['cid'] = $arrSubData['cid'];
-	} else {
-		return;
-	}
-	
-	// 「/」が重複しているものへの対応
-	$php_self = ereg_replace("[/]+", "/", $_SERVER['PHP_SELF']);
-	// PHPファイルの後ろに「/」がついてしまっているものへの対応
-	$php_self = ereg_replace(".php[/]+$", ".php", $php_self);
-	
-	if(!is_array($pid) && $pid != "") {
-		if(!ereg(".tpl$", $pid)) {
-			// ページIDを上書きする
-			$arrEbis['pid'] = $pid;
-		} else {
-			// テンプレートのパスが与えられている場合
-			$temp_id = ereg_replace(HTML_PATH,"",$pid);			
-			$temp_id = ereg_replace("^[/]+","",$temp_id);
-			$temp_id = ereg_replace(".tpl$","",$temp_id);
-			$temp_id = ereg_replace("[\./]","_",$temp_id);
-			$arrEbis['pid'] = $temp_id;
-		}
-	}	
-	
-	// 商品一覧ページは、特殊IDを発行
-	if(ereg("/products/list.php\?category_id=[0-9]+$", $_SERVER["REQUEST_URI"])) {
-		$filename = basename($_SERVER["REQUEST_URI"]);
-		$arrEbis['pid'] = ereg_replace("list.php\?category_id=", "list-c", $filename);
-	}
-	
-	// 商品詳細ページは、特殊IDを発行
-	if(ereg("/products/detail.php\?product_id=[0-9]+$", $_SERVER["REQUEST_URI"])) {
-		$filename = basename($_SERVER["REQUEST_URI"]);
-		$arrEbis['pid'] = ereg_replace("detail.php\?product_id=", "detail-p", $filename);
-	}
-	
-	// ID割り当てされていないページは、自動的に生成する。
-	if($arrEbis['pid'] == "") {				
-		$temp_id = ereg_replace("^[/]+","",$_SERVER['PHP_SELF']);
-		$temp_id = ereg_replace(".php$","",$temp_id);
-		$temp_id = ereg_replace("[\./]","_",$temp_id);
-		$arrEbis['pid'] = $temp_id;
-	}
-			
-	// ページIDが登録されている場合のみタグを出力する。
-	if($arrEbis['pid'] != "") {
-		$objSubPage = new LC_EbisPage();
-		$objSubPage->arrEbis = $arrEbis;
-		$objSubView = new SC_SiteView();
-		$objSubView->assignobj($objSubPage);
-		$objSubView->display($objSubPage->tpl_mainpage);
-	}
-}
-
-// コンバージョンタグの発行
-function sfPrintAffTag($conv_page, $option) {
-	if(is_numeric($conv_page)) {
-		// sub_dataよりタグ情報を読み込む
-		$objQuery = new SC_Query();
-		$arrRet = $objQuery->select("sub_data", "dtb_module", "module_id = ?", array(AFF_TAG_MID));
-		$arrSubData = unserialize($arrRet[0]['sub_data']);
-		$aff_tag = $arrSubData[$conv_page];
-		
-		$array = split("\|", $option);
-		
-		// 特定文字の置き換え
-		foreach($array as $each) {
-			list($key, $value) = split("=", $each);
-			$aff_tag = ereg_replace("\[\[" . $key . "\]\]", $value, $aff_tag);
-		}
-		print($aff_tag);		
-	}
-}
-
-// dtb_paymentに汎用項目が存在していなければ追加する
-function sfAlterMemo(){
-	$objQuery = new SC_Query();
-	
-	// 汎用項目の存在チェック
-	if(!sfColumnExists("dtb_payment", "memo01")){
-		
-		// モジュールIDを追加
-		$objQuery->query("alter table dtb_payment add module_id int4;");
-		
-		// モジュールパスを追加
-		$objQuery->query("alter table dtb_payment add module_path text;");
-		
-		// 汎用項目を10個追加
-		for($i=1; $i<=9; $i++){
-			$objQuery->query("alter table dtb_payment add memo0".$i." text;");
-		}
-		$objQuery->query("alter table dtb_payment add memo10 text;");
-	}
-}
-
-/*------------- ▼A8FLYタグ出力 -------------*/
-if (file_exists(MODULE_PATH. "mdl_a8/include.php") === TRUE) {
-	require_once(MODULE_PATH. "mdl_a8/include.php");
-}
-
-/*------------- ▼Moba8FLY連携 -------------*/
-if (file_exists(MODULE_PATH. "mdl_moba8/include.php") === TRUE) {
-	require_once(MODULE_PATH. "mdl_moba8/include.php");
-}
-
-/*------------- ▼オペビルダー連携 -------------*/
-if (file_exists(MODULE_PATH. "mdl_opebuilder/include.php") === TRUE) {
-	require_once(MODULE_PATH. "mdl_opebuilder/include.php");
-}
-
-?>
\ No newline at end of file
+getCol('dtb_module', 'module_code');
+
+if (is_array($_arrModuleCode)) {
+    foreach ($_arrModuleCode as $_moduleCode) {
+        $_file = MODULE_PATH . "$_moduleCode/include.php";
+        if (isset($_arrModule[$_moduleCode]) && file_exists($_file)) {
+            include_once($_file);
+        }
+    }
+}
+
+// グローバル変数は残しておきたくないのでunset
+unset(
+    $_arrModule, $_objQuery, $_arrModuleCode,
+    $_moduleCode, $_file
+);
+
+// 互換性保持のため空の関数を残しておく
+function sfPrintEbisTag() {}
+function sfPrintAffTag() {}
 
Modified: eccube2/trunk/html/install/sql/insert_data.sql
===================================================================
--- eccube2/trunk/html/install/sql/insert_data.sql	2008-03-11 08:08:23 UTC (rev 17)
+++ eccube2/trunk/html/install/sql/insert_data.sql	2008-03-11 12:01:32 UTC (rev 18)
@@ -1030,7 +1030,7 @@
 INSERT INTO mtb_constants VALUES ('CAMPAIGN_TEMPLATE_END','"end/"',318,'キャンペーン関連');
 INSERT INTO mtb_constants VALUES ('MOBILE_TEMPLATE_DIR', 'TEMPLATE_DIR . "mobile/"', 400,'SMARTYテンプレート(mobile)');
 INSERT INTO mtb_constants VALUES ('MOBILE_COMPILE_DIR', 'COMPILE_DIR . "mobile/"', 401,'SMARTYコンパイル(mobile)');
-INSERT INTO mtb_constants VALUES ('MOBILE_SESSION_LIFETIME', '1800', 402,'セッションの存続時間 (秒)');
+INSERT INTO mtb_constants VALUES ('MOBILE_SESSION_LIFETIME', '1800', 402,'モバイルサイトのセッションの存続時間 (秒)');
 INSERT INTO mtb_constants VALUES ('MOBILE_USE_KARA_MAIL', 'false', 403,'空メール機能を使用するかどうか(true:送信する、false:送信しない)');
 INSERT INTO mtb_constants VALUES ('MOBILE_KARA_MAIL_ADDRESS_USER', '"eccube"', 404,'空メール受け付けアドレスのユーザー名部分');
 INSERT INTO mtb_constants VALUES ('MOBILE_KARA_MAIL_ADDRESS_DELIMITER', '"+"', 405,'空メール受け付けアドレスのユーザー名とコマンドの間の区切り文字 qmail の場合は -');
@@ -1047,7 +1047,7 @@
 INSERT INTO mtb_constants VALUES ('MOBILE_URL_SHOP_COMPLETE', 'MOBILE_URL_DIR . "shopping/complete.php"', 416,'購入完了画面');
 INSERT INTO mtb_constants VALUES ('MOBILE_URL_SHOP_MODULE', 'MOBILE_URL_DIR . "shopping/load_payment_module.php"', 417,'モジュール追加用画面');
 INSERT INTO mtb_constants VALUES ('SESSION_KEEP_METHOD', '"useCookie"', 418,'セッション維持方法:useCookie|useRequest');
-INSERT INTO mtb_constants VALUES ('SESSION_LIFETIME', '"1800"', 419,'セッション維持方法:useCookie|useRequest');
+INSERT INTO mtb_constants VALUES ('SESSION_LIFETIME', '"1800"', 419,'セッションの存続時間 (秒)');
 INSERT INTO mtb_constants VALUES ('OSTORE_URL', '"http://store.ec-cube.net/"', 500, 'オーナーズストアURL');
 INSERT INTO mtb_constants VALUES ('OSTORE_SSLURL', '"https://store.ec-cube.net/"', 501, 'オーナーズストアURL');
 INSERT INTO mtb_constants VALUES ('OSTORE_LOG_PATH', 'DATA_PATH . "logs/ownersstore.log"', 502, 'オーナーズストアログパス');
[]