[Svn-src-all:1322] [version-2_5-dev 20211] ・/admin/mail/template_input.php をリファクタリング

fukuda admin @ mail.ec-cube.net
2011年 2月 19日 (土) 22:11:56 JST


Subversion committed to /home/svn/open 20211
http://svn.ec-cube.net/open_trac/changeset/20211
┌────────────────────────────┐
│更新者 :  fukuda                                       │
│更新日時:  2011-02-19 22:11:56 +0900 (土, 19  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
・/admin/mail/template_input.php をリファクタリング
・インストール時に追加される不要な mtb_magazine_type の値を削除

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/Smarty/templates/admin/mail/template_input.tpl
U   branches/version-2_5-dev/data/class/pages/admin/mail/LC_Page_Admin_Mail_TemplateInput.php
U   branches/version-2_5-dev/html/install/sql/column_comment.sql
U   branches/version-2_5-dev/html/install/sql/insert_data.sql

変更: branches/version-2_5-dev/data/Smarty/templates/admin/mail/template_input.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/mail/template_input.tpl	2011-02-19 12:48:28 UTC (rev 20210)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/mail/template_input.tpl	2011-02-19 13:11:56 UTC (rev 20211)
@@ -53,7 +53,7 @@
 
 <form name="form1" id="form1" method="post" action="?" onSubmit="return lfnCheckSubmit();">
 <input type="hidden" name="mode" value="<!--{$mode}-->" />
-<input type="hidden" name="template_id" value="<!--{$arrForm.template_id}-->" />
+<input type="hidden" name="template_id" value="<!--{$arrForm.template_id|h}-->" />
 <div id="mail" class="contents-main">
   <table class="form">
     <tr>

変更: branches/version-2_5-dev/data/class/pages/admin/mail/LC_Page_Admin_Mail_TemplateInput.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/mail/LC_Page_Admin_Mail_TemplateInput.php	2011-02-19 12:48:28 UTC (rev 20210)
+++ branches/version-2_5-dev/data/class/pages/admin/mail/LC_Page_Admin_Mail_TemplateInput.php	2011-02-19 13:11:56 UTC (rev 20211)
@@ -48,10 +48,9 @@
         $this->tpl_subnavi = 'mail/subnavi.tpl';
         $this->tpl_subtitle = 'テンプレート設定';
         $this->tpl_subno = "template";
+        $this->mode = "regist";
         $masterData = new SC_DB_MasterData_Ex();
         $this->arrMagazineType = $masterData->getMasterData("mtb_magazine_type");
-        // arrMagazineTypAll ではないため, unset する.
-        unset($this->arrMagazineType['3']);
     }
 
     /**
@@ -70,43 +69,36 @@
      * @return void
      */
     function action() {
-        $objQuery = new SC_Query();
+        $objMailHelper = new SC_Helper_Mail_Ex();
         $objSess = new SC_Session();
 
         // 認証可否の判定
         SC_Utils_Ex::sfIsSuccess($objSess);
 
-
-        $this->mode = "regist";
-
-        // idが指定されているときは「編集」表示
-        if (!isset($_REQUEST['template_id'])) $_REQUEST['template_id'] = "";
-        if ( $_REQUEST['template_id'] ){
-            $this->title = "編集";
-        } else {
-            $this->title = "新規登録";
-        }
-
         switch ($this->getMode()) {
         case 'edit':
-            // モードによる処理分岐
+            // 編集
             if ( SC_Utils_Ex::sfIsInt($_GET['template_id'])===true ){
-                // 編集
-                $sql = "SELECT * FROM dtb_mailmaga_template WHERE template_id = ? AND del_flg = 0";
-                $result = $objQuery->getAll($sql, array($_GET['template_id']));
-                $this->arrForm = $result[0];
+                $arrMail = $objMailHelper->sfGetMailTemplate($_GET['template_id']);
+                $this->arrForm = $arrMail[0];
             }
             break;
         case 'regist':
             // 新規登録
-            $this->arrForm = $this->lfConvData( $_POST );
-            $this->arrErr = $this->lfErrorCheck($this->arrForm);
-
-            if ( ! $this->arrErr ){
+            $objFormParam = new SC_FormParam();
+            
+            $this->lfInitParam($objFormParam);
+            $objFormParam->setParam($_POST);
+            $this->arrErr = $objFormParam->checkError();
+            $this->arrForm = $objFormParam->getHashArray();
+                        
+            if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 // エラーが無いときは登録・編集
-                $this->lfRegistData( $this->arrForm, $_POST['template_id']);
+                $this->lfRegistData( $objFormParam, $_POST['template_id']);
                 // 自分を再読込して、完了画面へ遷移
                 $this->objDisplay->reload(array("mode" => "complete"));
+            } else {
+                $this->arrForm['template_id'] = $_POST['template_id'];
             }
             break;
         case 'complete':
@@ -127,51 +119,43 @@
         parent::destroy();
     }
 
-    function lfRegistData( $arrVal, $id = null ){
+    /**
+     * メルマガテンプレートデータの登録・更新を行う
+     * 
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @param integer template_id 更新時は指定
+     * @return void
+     */
+    function lfRegistData( &$objFormParam, $template_id = null ){
+        
+        $objQuery =& SC_Query::getSingletonInstance();
+        $sqlval = $objFormParam->getDbArray();
 
-        $objQuery = new SC_Query();
-
-        $sqlval['subject'] = $arrVal['subject'];
-        $sqlval['mail_method'] = $arrVal['mail_method'];
         $sqlval['creator_id'] = $_SESSION['member_id'];
-        $sqlval['body'] = $arrVal['body'];
         $sqlval['update_date'] = "now()";
 
-        if ( $id ){
-            $objQuery->update("dtb_mailmaga_template", $sqlval, "template_id=".$id );
+        if ( SC_Utils_Ex::sfIsInt($template_id) ){
+            // 更新時
+            $objQuery->update("dtb_mailmaga_template", $sqlval, "template_id=".$template_id );
         } else {
+            // 新規登録時
             $sqlval['create_date'] = "now()";
             $sqlval['template_id'] = $objQuery->nextVal('dtb_mailmaga_template_template_id');
             $objQuery->insert("dtb_mailmaga_template", $sqlval);
         }
     }
 
-    function lfConvData( $data ){
-
-        // 文字列の変換(mb_convert_kanaの変換オプション)
-        $arrFlag = array(
-                         "subject" => "KV"
-                         ,"body" => "KV"
-                         );
-
-        if ( is_array($data) ){
-            foreach ($arrFlag as $key=>$line) {
-                $data[$key] = mb_convert_kana($data[$key], $line);
-            }
-        }
-
-        return $data;
+    /**
+     * お問い合わせ入力時のパラメータ情報の初期化を行う.
+     *
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @return void
+     */
+    function lfInitParam(&$objFormParam) {
+        $objFormParam->addParam("メール形式", 'mail_method', INT_LEN, "n", array("EXIST_CHECK","ALNUM_CHECK"));
+        $objFormParam->addParam("Subject", 'subject', STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("本文", 'body', LLTEXT_LEN, "KVCa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
     }
 
-    // 入力エラーチェック
-    function lfErrorCheck() {
-        $objErr = new SC_CheckError();
-
-        $objErr->doFunc(array("メール形式", "mail_method"), array("EXIST_CHECK", "ALNUM_CHECK"));
-        $objErr->doFunc(array("Subject", "subject", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("本文", 'body', LLTEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));
-
-        return $objErr->arrErr;
-    }
 }
 ?>

変更: branches/version-2_5-dev/html/install/sql/column_comment.sql
===================================================================
--- branches/version-2_5-dev/html/install/sql/column_comment.sql	2011-02-19 12:48:28 UTC (rev 20210)
+++ branches/version-2_5-dev/html/install/sql/column_comment.sql	2011-02-19 13:11:56 UTC (rev 20211)
@@ -99,7 +99,7 @@
 INSERT INTO dtb_table_comment (id, table_name, column_name, description) VALUES (99, 'dtb_mailmaga_template', 'template_id', 'テンプレートID');
 INSERT INTO dtb_table_comment (id, table_name, column_name, description) VALUES (414, 'dtb_order', 'deliv_pref', '都道府県');
 INSERT INTO dtb_table_comment (id, table_name, column_name, description) VALUES (100, 'dtb_mailmaga_template', 'subject', '件名');
-INSERT INTO dtb_table_comment (id, table_name, column_name, description) VALUES (102, 'dtb_mailmaga_template', 'mail_method', '1:テキストメール 2:HTMLメール 3:HTMLTEMPLATE');
+INSERT INTO dtb_table_comment (id, table_name, column_name, description) VALUES (102, 'dtb_mailmaga_template', 'mail_method', '1:テキストメール 2:HTMLメール');
 INSERT INTO dtb_table_comment (id, table_name, column_name, description) VALUES (103, 'dtb_mailmaga_template', 'header', 'ヘッダーテキスト');
 INSERT INTO dtb_table_comment (id, table_name, column_name, description) VALUES (104, 'dtb_mailmaga_template', 'body', '本文(テキスト登録用)');
 INSERT INTO dtb_table_comment (id, table_name, column_name, description) VALUES (105, 'dtb_mailmaga_template', 'main_title', 'メインのタイトル(HTMLメール専用)');

変更: branches/version-2_5-dev/html/install/sql/insert_data.sql
===================================================================
--- branches/version-2_5-dev/html/install/sql/insert_data.sql	2011-02-19 12:48:28 UTC (rev 20210)
+++ branches/version-2_5-dev/html/install/sql/insert_data.sql	2011-02-19 13:11:56 UTC (rev 20211)
@@ -744,7 +744,6 @@
 
 INSERT INTO mtb_magazine_type (id, name, rank) VALUES (1, 'HTML', 0);
 INSERT INTO mtb_magazine_type (id, name, rank) VALUES (2, 'テキスト', 1);
-INSERT INTO mtb_magazine_type (id, name, rank) VALUES (3, 'HTMLテンプレート', 2);
 
 INSERT INTO mtb_mail_magazine_type (id, name, rank) VALUES (1, 'HTMLメール', 0);
 INSERT INTO mtb_mail_magazine_type (id, name, rank) VALUES (2, 'テキストメール', 1);




Svn-src-all メーリングリストの案内