[Svn-src-all:3217] [version-2_12-dev 22118] #1966 (LC_Page_Admin_Order_Mail 送信処理のバリデーションエラー時に再度バリデーションが実行される)

Seasoft admin @ mail.ec-cube.net
2012年 12月 3日 (月) 07:56:32 JST


Subversion committed to /home/svn/open 22118
http://svn.ec-cube.net/open_trac/changeset/22118
┌────────────────────────────┐
│更新者 :  Seasoft                                      │
│更新日時:  2012-12-03 07:56:32 +0900 (月, 03 12月 2012)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#1966 (LC_Page_Admin_Order_Mail 送信処理のバリデーションエラー時に再度バリデーションが実行される)
#1967 (LC_Page_Admin_Order_Mail#changeData DB 取得の有無判定に誤り)
#1975 (LC_Page_Admin_Order_Mail 入力内容の引き継ぎを単純にする)
#1905 (typo修正・ソース整形・ソースコメントの改善)

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_12-dev/data/Smarty/templates/admin/order/mail_confirm.tpl
U   branches/version-2_12-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Mail.php

変更: branches/version-2_12-dev/data/Smarty/templates/admin/order/mail_confirm.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/admin/order/mail_confirm.tpl	2012-12-02 22:20:28 UTC (rev 22117)
+++ branches/version-2_12-dev/data/Smarty/templates/admin/order/mail_confirm.tpl	2012-12-02 22:56:32 UTC (rev 22118)
@@ -26,8 +26,8 @@
 <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
 <input type="hidden" name="mode" value="send" />
 <input type="hidden" name="order_id_array" value="<!--{$order_id_array}-->" />
-<!--{foreach key=key item=item from=$arrHidden}-->
-<input type="hidden" name="<!--{$key}-->" value="<!--{$item|h}-->" />
+<!--{foreach key=key item=item from=$arrForm}-->
+<input type="hidden" name="<!--{$key}-->" value="<!--{$item.value|h}-->" />
 <!--{/foreach}-->
 <!--{foreach key=key item=item from=$arrSearchHidden}-->
     <!--{if is_array($item)}-->

変更: branches/version-2_12-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Mail.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Mail.php	2012-12-02 22:20:28 UTC (rev 22117)
+++ branches/version-2_12-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Mail.php	2012-12-02 22:56:32 UTC (rev 22118)
@@ -107,42 +107,45 @@
         // 検索パラメーターの引き継ぎ
         $this->arrSearchHidden = $objFormParam->getSearchArray();
 
+        // 履歴を読み込むか
+        $load_history = SC_Utils_Ex::sfIsInt($this->tpl_order_id);
+
         switch ($this->getMode()) {
-            case 'pre_edit':
-            case 'mail_select':
+            case 'confirm':
+                $status = $this->confirm($objFormParam);
+                if ($status === true) {
+                    $load_history = false;
+                } else {
+                    $this->arrErr = $status;
+                }
                 break;
-            case 'return':
-                break;
+
             case 'send':
                 $sendStatus = $this->doSend($objFormParam);
                 if ($sendStatus === true) {
-
                     SC_Response_Ex::sendRedirect(ADMIN_ORDER_URLPATH);
                     SC_Response_Ex::actionExit();
-                } else {
-                    $this->arrErr = $sendStatus;
                 }
-            case 'confirm':
-                $status = $this->confirm($objFormParam);
-                if ($status === true) {
-                    $this->arrHidden = $objFormParam->getHashArray();
+                $this->arrErr = $sendStatus;
+                break;
 
-                    return ;
-                } else {
-                    $this->arrErr = $status;
-                }
-                break;
             case 'change':
                 $objFormParam =  $this->changeData($objFormParam);
                 break;
-        }
 
-        if (SC_Utils_Ex::sfIsInt($objFormParam->getValue('order_id'))) {
-            $this->arrMailHistory = $this->getMailHistory($objFormParam->getValue('order_id'));
+            case 'pre_edit':
+            case 'mail_select':
+            case 'return':
+            default:
+                break;
         }
 
+        // 入力内容の引き継ぎ
         $this->arrForm = $objFormParam->getFormParamList();
 
+        if ($load_history) {
+            $this->arrMailHistory = $this->getMailHistory($this->tpl_order_id);
+        }
     }
 
     /**
@@ -171,7 +174,6 @@
             $order_id_array = explode(',',$this->order_id_array);
             foreach ($order_id_array as $order_id){
                 $objMail = new SC_Helper_Mail_Ex();
-                $objMail->setPage($this);
                 $objSendMail = $objMail->sfSendOrderMail($order_id,
                 $objFormParam->getValue('template_id'),
                 $objFormParam->getValue('subject'),
@@ -194,7 +196,6 @@
         if (count($arrErr) == 0) {
             // 注文受付メール(送信なし)
             $objMail = new SC_Helper_Mail_Ex();
-            $objMail->setPage($this);
             $objSendMail = $objMail->sfSendOrderMail(
                 $objFormParam->getValue('order_id'),
                 $objFormParam->getValue('template_id'),
@@ -217,21 +218,23 @@
      * @param SC_FormParam $objFormParam
      */
     function changeData(&$objFormParam) {
-        if (SC_Utils_Ex::sfIsInt($objFormParam->getValue('template_id'))) {
-            $objQuery =& SC_Query_Ex::getSingletonInstance();
-            $where = 'template_id = ?';
-            $mailTemplates = $objQuery->select('subject, header, footer', 'dtb_mailtemplate', $where, array($objFormParam->getValue('template_id')));
-            if (!is_null($mailTemplates)) {
-                foreach (array('subject','header','footer') as $key) {
-                    $objFormParam->setValue($key,$mailTemplates[$key]);
-                }
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+
+        if (!SC_Utils_Ex::sfIsInt($objFormParam->getValue('template_id'))) {
+            trigger_error('テンプレートが指定されていません。', E_USER_ERROR);
+        }
+
+        $where = 'template_id = ?';
+        $arrWhereVal = array($objFormParam->getValue('template_id'));
+        $mailTemplates = $objQuery->getRow('subject, header, footer', 'dtb_mailtemplate', $where, $arrWhereVal);
+        if (empty($mailTemplates)) {
+            foreach (array('subject','header','footer') as $key) {
+                $objFormParam->setValue($key, '');
             }
-            $objFormParam->setParam($mailTemplates[0]);
         } else {
-            foreach (array('subject','header','footer') as $key) {
-                $objFormParam->setValue($key,'');
-            }
+            $objFormParam->setParam($mailTemplates);
         }
+
         return $objFormParam;
     }
 




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