Index: /branches/comu-ver2/data/class/pages/mypage/LC_Page_Mypage_History.php
===================================================================
--- /branches/comu-ver2/data/class/pages/mypage/LC_Page_Mypage_History.php	(revision 18276)
+++ /branches/comu-ver2/data/class/pages/mypage/LC_Page_Mypage_History.php	(revision 18399)
@@ -54,4 +54,5 @@
         $masterData = new SC_DB_MasterData_Ex();
         $this->arrMAILTEMPLATE = $masterData->getMasterData("mtb_mail_template");
+        $this->arrPref = $masterData->getMasterData("mtb_pref", array("pref_id", "pref_name", "rank"));
    }
 
@@ -71,8 +72,15 @@
         $objLayout->sfGetPageLayout($this, false, "mypage/index.php");
 
+        // FIXME 他の画面と同様のバリデーションを行なう
+        if (!SC_Utils_Ex::sfIsInt($_GET['order_id'])) {
+            SC_Utils_Ex::sfDispException();
+        }
+
+        $orderId = $_GET['order_id'];
+
         //不正アクセス判定
         $from = "dtb_order";
         $where = "del_flg = 0 AND customer_id = ? AND order_id = ? ";
-        $arrval = array($objCustomer->getValue('customer_id'), $_GET['order_id']);
+        $arrval = array($objCustomer->getValue('customer_id'), $orderId);
         //DBに情報があるか判定
         $cnt = $objQuery->count($from, $where, $arrval);
@@ -80,29 +88,25 @@
         if (!$objCustomer->isLoginSuccess() || $cnt == 0){
             SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
-        } else {
-            //受注詳細データの取得
-            $this->arrDisp = $this->lfGetOrderData($_GET['order_id']);
-            // 支払い方法の取得
-            $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method");
-            // お届け時間の取得
-            $arrRet = $objDb->sfGetDelivTime($this->arrDisp['payment_id']);
-            $this->arrDelivTime = SC_Utils_Ex::sfArrKeyValue($arrRet, 'time_id', 'deliv_time');
-
-            //マイページトップ顧客情報表示用
-            $this->CustomerName1 = $objCustomer->getvalue('name01');
-            $this->CustomerName2 = $objCustomer->getvalue('name02');
-            $this->CustomerPoint = $objCustomer->getvalue('point');
-        }
-
-        if(SC_Utils_Ex::sfIsInt($_GET['order_id'])) {
-            $col = "send_date, subject, template_id, send_id";
-            $where = "order_id = ?";
-            $objQuery->setorder("send_date DESC");
-            $this->arrMailHistory = $objQuery->select($col, "dtb_mail_history", $where, array($_GET['order_id']));
-        }
-
-        $masterData = new SC_DB_MasterData_Ex();
-        $this->arrPref = $masterData->getMasterData("mtb_pref",
-                                 array("pref_id", "pref_name", "rank"));
+        }
+
+        //受注詳細データの取得
+        $this->arrDisp = $this->lfGetOrderData($orderId);
+        // 支払い方法の取得
+        $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method");
+        // お届け時間の取得
+        $arrRet = $objDb->sfGetDelivTime($this->arrDisp['payment_id']);
+        $this->arrDelivTime = SC_Utils_Ex::sfArrKeyValue($arrRet, 'time_id', 'deliv_time');
+
+        //マイページトップ顧客情報表示用
+        $this->CustomerName1 = $objCustomer->getvalue('name01');
+        $this->CustomerName2 = $objCustomer->getvalue('name02');
+        $this->CustomerPoint = $objCustomer->getvalue('point');
+
+        // 受注商品明細の取得
+        $this->tpl_arrOrderDetail = $this->lfGetOrderDetail($orderId);
+
+        // 受注メール送信履歴の取得
+        $this->tpl_arrMailHistory = $this->lfGetMailHistory($orderId);
+
         $objView->assignobj($this);
         $objView->display(SITE_FRAME);
@@ -192,33 +196,50 @@
     }
 
-    //受注詳細データの取得
-    function lfGetOrderData($order_id) {
-        //注文番号が数字であれば
-        if(SC_Utils_Ex::sfIsInt($order_id)) {
-            // DBから受注情報を読み込む
-            $objQuery = new SC_Query();
-            $col = "order_id, create_date, payment_id, subtotal, tax, use_point, add_point, discount, ";
-            $col .= "deliv_fee, charge, payment_total, deliv_name01, deliv_name02, deliv_kana01, deliv_kana02, ";
-            $col .= "deliv_zip01, deliv_zip02, deliv_pref, deliv_addr01, deliv_addr02, deliv_tel01, deliv_tel02, deliv_tel03, deliv_time_id, deliv_date ";
-            $from = "dtb_order";
-            $where = "order_id = ?";
-            $arrRet = $objQuery->select($col, $from, $where, array($order_id));
-            $arrOrder = $arrRet[0];
-            // 受注詳細データの取得
-            $arrRet = $this->lfGetOrderDetail($order_id);
-            $arrOrderDetail = SC_Utils_Ex::sfSwapArray($arrRet);
-            $arrData = array_merge($arrOrder, $arrOrderDetail);
-        }
-        return $arrData;
-    }
-
-    // 受注詳細データの取得
-    function lfGetOrderDetail($order_id) {
+    /**
+     * 受注の取得
+     *
+     * @param integer $orderId 注文番号
+     * @return array 受注の内容
+     */
+    function lfGetOrderData($orderId) {
+        // DBから受注情報を読み込む
+        $objQuery = new SC_Query();
+        $col = "order_id, create_date, payment_id, subtotal, tax, use_point, add_point, discount, ";
+        $col .= "deliv_fee, charge, payment_total, deliv_name01, deliv_name02, deliv_kana01, deliv_kana02, ";
+        $col .= "deliv_zip01, deliv_zip02, deliv_pref, deliv_addr01, deliv_addr02, deliv_tel01, deliv_tel02, deliv_tel03, deliv_time_id, deliv_date ";
+        $from = "dtb_order";
+        $where = "order_id = ?";
+        $arrRet = $objQuery->select($col, $from, $where, array($orderId));
+        return $arrRet[0];
+    }
+
+    /**
+     * 受注商品明細の取得
+     *
+     * @param integer $orderId 注文番号
+     * @return array 受注商品明細の内容
+     */
+    function lfGetOrderDetail($orderId) {
         $objQuery = new SC_Query();
         $col = "product_id, product_code, product_name, classcategory_name1, classcategory_name2, price, quantity, point_rate";
+        $col .= ",CASE WHEN EXISTS(SELECT * FROM dtb_products WHERE product_id = dtb_order_detail.product_id AND del_flg = 0) THEN '1' ELSE '0' END AS enable";
         $where = "order_id = ?";
         $objQuery->setorder("classcategory_id1, classcategory_id2");
-        $arrRet = $objQuery->select($col, "dtb_order_detail", $where, array($order_id));
+        $arrRet = $objQuery->select($col, "dtb_order_detail", $where, array($orderId));
         return $arrRet;
+    }
+
+    /**
+     * 受注メール送信履歴の取得
+     *
+     * @param integer $orderId 注文番号
+     * @return array 受注メール送信履歴の内容
+     */
+    function lfGetMailHistory($orderId) {
+        $objQuery = new SC_Query();
+        $col = 'send_date, subject, template_id, send_id';
+        $where = 'order_id = ?';
+        $objQuery->setorder('send_date DESC');
+        $this->arrMailHistory = $objQuery->select($col, 'dtb_mail_history', $where, array($orderId));
     }
 }
Index: /branches/comu-ver2/data/Smarty/templates/default/mypage/history.tpl
===================================================================
--- /branches/comu-ver2/data/Smarty/templates/default/mypage/history.tpl	(revision 18397)
+++ /branches/comu-ver2/data/Smarty/templates/default/mypage/history.tpl	(revision 18399)
@@ -24,159 +24,159 @@
 <!--▼CONTENTS-->
 <div id="mypagecolumn">
-  <h2 class="title"><!--{$tpl_title|escape}--></h2>
-  <!--{include file=$tpl_navi}-->
-  <div id="mycontentsarea">
-    <h3><!--{$tpl_subtitle|escape}--></h3>
-    <p class="myconditionarea">
-    <strong>購入日時：&nbsp;</strong><!--{$arrDisp.create_date|sfDispDBDate}--><br />
-    <strong>注文番号：&nbsp;</strong><!--{$arrDisp.order_id}--><br />
-    <strong>お支払い方法：&nbsp;</strong><!--{$arrPayment[$arrDisp.payment_id]|escape}-->
-    <!--{if $arrDisp.deliv_time_id != ""}--><br />
-    <strong>お届け時間：&nbsp;</strong><!--{$arrDelivTime[$arrDisp.deliv_time_id]|escape}-->
-    <!--{/if}-->
-    <!--{if $arrDisp.deliv_date != ""}--><br />
-    <strong>お届け日：&nbsp;</strong><!--{$arrDisp.deliv_date|escape}-->
-    <!--{/if}-->
-    </p>
+    <h2 class="title"><!--{$tpl_title|escape}--></h2>
+    <!--{include file=$tpl_navi}-->
+    <div id="mycontentsarea">
+        <h3><!--{$tpl_subtitle|escape}--></h3>
+        <p class="myconditionarea">
+        <strong>購入日時：&nbsp;</strong><!--{$arrDisp.create_date|sfDispDBDate}--><br />
+        <strong>注文番号：&nbsp;</strong><!--{$arrDisp.order_id}--><br />
+        <strong>お支払い方法：&nbsp;</strong><!--{$arrPayment[$arrDisp.payment_id]|escape}-->
+        <!--{if $arrDisp.deliv_time_id != ""}--><br />
+        <strong>お届け時間：&nbsp;</strong><!--{$arrDelivTime[$arrDisp.deliv_time_id]|escape}-->
+        <!--{/if}-->
+        <!--{if $arrDisp.deliv_date != ""}--><br />
+        <strong>お届け日：&nbsp;</strong><!--{$arrDisp.deliv_date|escape}-->
+        <!--{/if}-->
+        </p>
 
-    <!--{* (開発者向けレビュー)
-    <form action="order.php" method="post">
-        <input type="hidden" name="order_id" value="<!--{$arrDisp.order_id}-->">
-        <input type="submit" name="submit" value="再注文">
-    </form>
-    *}-->
+        <!--{* (開発者向けレビュー)
+        <form action="order.php" method="post">
+            <input type="hidden" name="order_id" value="<!--{$arrDisp.order_id}-->">
+            <input type="submit" name="submit" value="再注文">
+        </form>
+        *}-->
 
-    <table summary="購入商品詳細">
-      <tr>
-        <th>商品コード</th>
-        <th>商品名</th>
-        <th>単価</th>
-        <th>数量</th>
-        <th>小計</th>
-      </tr>
-      <!--{section name=cnt loop=$arrDisp.quantity}-->
-      <tr>
-        <td><!--{$arrDisp.product_code[cnt]|escape}--></td>
-        <td><a href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$arrDisp.product_id[cnt]|escape:url}-->"><!--{$arrDisp.product_name[cnt]|escape}--></a></td>
-        <!--{assign var=price value=`$arrDisp.price[cnt]`}-->
-        <!--{assign var=quantity value=`$arrDisp.quantity[cnt]`}-->
-        <td class="pricetd"><!--{$price|escape|number_format}-->円</td>
-        <td><!--{$quantity|escape}--></td>
-        <td class="pricetd"><!--{$price|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|sfMultiply:$quantity|number_format}-->円</td>
-      </tr>
-      <!--{/section}-->
-      <tr>
-        <th colspan="4" class="resulttd">小計</th>
-        <td class="pricetd"><!--{$arrDisp.subtotal|number_format}-->円</td>
-      </tr>
-      <!--{assign var=point_discount value="`$arrDisp.use_point*$smarty.const.POINT_VALUE`"}-->
-      <!--{if $point_discount > 0}-->
-      <tr>
-        <th colspan="4" class="resulttd">ポイント値引き</th>
-        <td class="pricetd"><!--{$point_discount|number_format}-->円</td>
-      </tr>
-      <!--{/if}-->
-      <!--{assign var=key value="discount"}-->
-      <!--{if $arrDisp[$key] != "" && $arrDisp[$key] > 0}-->
-      <tr>
-        <th colspan="4" class="resulttd">値引き</th>
-        <td class="pricetd"><!--{$arrDisp[$key]|number_format}-->円</td>
-      </tr>
-      <!--{/if}-->
-      <tr>
-        <th colspan="4" class="resulttd">送料</th>
-        <td class="pricetd"><!--{assign var=key value="deliv_fee"}--><!--{$arrDisp[$key]|escape|number_format}-->円</td>
-      </tr>
-      <tr>
-        <th colspan="4" class="resulttd">手数料</th>
-        <!--{assign var=key value="charge"}-->
-        <td class="pricetd"><!--{$arrDisp[$key]|escape|number_format}-->円</td>
-      </tr>
-      <tr>
-        <th colspan="4" class="resulttd">合計</th>
-        <td class="pricetd"><em><!--{$arrDisp.payment_total|number_format}-->円</em></td>
-      </tr>
-    </table>
+        <table summary="購入商品詳細">
+            <tr>
+                <th>商品コード</th>
+                <th>商品名</th>
+                <th>単価</th>
+                <th>数量</th>
+                <th>小計</th>
+            </tr>
+            <!--{foreach from=$tpl_arrOrderDetail item=orderDetail}-->
+                <tr>
+                    <td><!--{$orderDetail.product_code|escape}--></td>
+                    <td><a<!--{if $orderDetail.enable}--> href="<!--{$smarty.const.DETAIL_P_HTML}--><!--{$orderDetail.product_id|escape:url}-->"<!--{/if}-->><!--{$orderDetail.product_name|escape}--></a></td>
+                    <!--{assign var=price value=`$orderDetail.price`}-->
+                    <!--{assign var=quantity value=`$orderDetail.quantity`}-->
+                    <td class="pricetd"><!--{$price|escape|number_format}-->円</td>
+                    <td><!--{$quantity|escape}--></td>
+                    <td class="pricetd"><!--{$price|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|sfMultiply:$quantity|number_format}-->円</td>
+                </tr>
+            <!--{/foreach}-->
+            <tr>
+                <th colspan="4" class="resulttd">小計</th>
+                <td class="pricetd"><!--{$arrDisp.subtotal|number_format}-->円</td>
+            </tr>
+            <!--{assign var=point_discount value="`$arrDisp.use_point*$smarty.const.POINT_VALUE`"}-->
+            <!--{if $point_discount > 0}-->
+            <tr>
+                <th colspan="4" class="resulttd">ポイント値引き</th>
+                <td class="pricetd"><!--{$point_discount|number_format}-->円</td>
+            </tr>
+            <!--{/if}-->
+            <!--{assign var=key value="discount"}-->
+            <!--{if $arrDisp[$key] != "" && $arrDisp[$key] > 0}-->
+            <tr>
+                <th colspan="4" class="resulttd">値引き</th>
+                <td class="pricetd"><!--{$arrDisp[$key]|number_format}-->円</td>
+            </tr>
+            <!--{/if}-->
+            <tr>
+                <th colspan="4" class="resulttd">送料</th>
+                <td class="pricetd"><!--{assign var=key value="deliv_fee"}--><!--{$arrDisp[$key]|escape|number_format}-->円</td>
+            </tr>
+            <tr>
+                <th colspan="4" class="resulttd">手数料</th>
+                <!--{assign var=key value="charge"}-->
+                <td class="pricetd"><!--{$arrDisp[$key]|escape|number_format}-->円</td>
+            </tr>
+            <tr>
+                <th colspan="4" class="resulttd">合計</th>
+                <td class="pricetd"><em><!--{$arrDisp.payment_total|number_format}-->円</em></td>
+            </tr>
+        </table>
 
-    <!-- 使用ポイントここから -->
-    <!--{if $smarty.const.USE_POINT !== false}-->
-      <table summary="使用ポイント">
-        <tr>
-          <th>ご使用ポイント</th>
-          <td class="pricetd"><!--{assign var=key value="use_point"}--><!--{$arrDisp[$key]|number_format|default:0}--> pt</td>
-        </tr>
-        <tr>
-          <th>今回加算されるポイント</th>
-          <td class="pricetd"><!--{$arrDisp.add_point|number_format|default:0}--> pt</td>
-        </tr>
-      </table>
-    <!--{/if}-->
-    <!-- 使用ポイントここまで -->
+        <!-- 使用ポイントここから -->
+        <!--{if $smarty.const.USE_POINT !== false}-->
+            <table summary="使用ポイント">
+                <tr>
+                    <th>ご使用ポイント</th>
+                    <td class="pricetd"><!--{assign var=key value="use_point"}--><!--{$arrDisp[$key]|number_format|default:0}--> pt</td>
+                </tr>
+                <tr>
+                    <th>今回加算されるポイント</th>
+                    <td class="pricetd"><!--{$arrDisp.add_point|number_format|default:0}--> pt</td>
+                </tr>
+            </table>
+        <!--{/if}-->
+        <!-- 使用ポイントここまで -->
 
-    <table summary="お届け先" class="delivname">
-      <thead>
-        <tr>
-          <th colspan="5">▼お届け先</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <th>お名前</th>
-          <!--{assign var=key1 value="deliv_name01"}-->
-          <!--{assign var=key2 value="deliv_name02"}-->
-          <td><!--{$arrDisp[$key1]|escape}-->&nbsp;<!--{$arrDisp[$key2]|escape}--></td>
-        </tr>
-        <tr>
-          <th>お名前（フリガナ）</th>
-          <!--{assign var=key1 value="deliv_kana01"}-->
-          <!--{assign var=key2 value="deliv_kana02"}-->
-          <td><!--{$arrDisp[$key1]|escape}-->&nbsp;<!--{$arrDisp[$key2]|escape}--></td>
-        </tr>
-        <tr>
-          <th>郵便番号</th>
-          <!--{assign var=key1 value="deliv_zip01"}-->
-          <!--{assign var=key2 value="deliv_zip02"}-->
-          <td>〒<!--{$arrDisp[$key1]}-->-<!--{$arrDisp[$key2]}--></td>
-        </tr>
-        <tr>
-          <th>住所</th>
-          <!--{assign var=pref value=`$arrDisp.deliv_pref`}-->
-          <!--{assign var=key value="deliv_addr01"}-->
-          <td><!--{$arrPref[$pref]}--><!--{$arrDisp[$key]|escape}--><!--{assign var=key value="deliv_addr02"}--><!--{$arrDisp[$key]|escape}--></td>
-        </tr>
-        <tr>
-          <th>電話番号</th>
-          <!--{assign var=key1 value="deliv_tel01"}-->
-          <!--{assign var=key2 value="deliv_tel02"}-->
-          <!--{assign var=key3 value="deliv_tel03"}-->
-          <td><!--{$arrDisp[$key1]}-->-<!--{$arrDisp[$key2]}-->-<!--{$arrDisp[$key3]}--></td>
-        </tr>
-      </tbody>
-    </table>
+        <table summary="お届け先" class="delivname">
+            <thead>
+                <tr>
+                    <th colspan="5">▼お届け先</th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr>
+                    <th>お名前</th>
+                    <!--{assign var=key1 value="deliv_name01"}-->
+                    <!--{assign var=key2 value="deliv_name02"}-->
+                    <td><!--{$arrDisp[$key1]|escape}-->&nbsp;<!--{$arrDisp[$key2]|escape}--></td>
+                </tr>
+                <tr>
+                    <th>お名前（フリガナ）</th>
+                    <!--{assign var=key1 value="deliv_kana01"}-->
+                    <!--{assign var=key2 value="deliv_kana02"}-->
+                    <td><!--{$arrDisp[$key1]|escape}-->&nbsp;<!--{$arrDisp[$key2]|escape}--></td>
+                </tr>
+                <tr>
+                    <th>郵便番号</th>
+                    <!--{assign var=key1 value="deliv_zip01"}-->
+                    <!--{assign var=key2 value="deliv_zip02"}-->
+                    <td>〒<!--{$arrDisp[$key1]}-->-<!--{$arrDisp[$key2]}--></td>
+                </tr>
+                <tr>
+                    <th>住所</th>
+                    <!--{assign var=pref value=`$arrDisp.deliv_pref`}-->
+                    <!--{assign var=key value="deliv_addr01"}-->
+                    <td><!--{$arrPref[$pref]}--><!--{$arrDisp[$key]|escape}--><!--{assign var=key value="deliv_addr02"}--><!--{$arrDisp[$key]|escape}--></td>
+                </tr>
+                <tr>
+                    <th>電話番号</th>
+                    <!--{assign var=key1 value="deliv_tel01"}-->
+                    <!--{assign var=key2 value="deliv_tel02"}-->
+                    <!--{assign var=key3 value="deliv_tel03"}-->
+                    <td><!--{$arrDisp[$key1]}-->-<!--{$arrDisp[$key2]}-->-<!--{$arrDisp[$key3]}--></td>
+                </tr>
+            </tbody>
+        </table>
 
-    <br />
+        <br />
 
-    <h3>メール配信履歴一覧</h3>
-    <table>
-      <tr>
-        <th>処理日</th>
-        <th>通知メール</th>
-        <th>件名</th>
-      </tr>
-      <!--{section name=cnt loop=$arrMailHistory}-->
-      <tr class="center">
-        <td><!--{$arrMailHistory[cnt].send_date|sfDispDBDate|escape}--></td>
-        <!--{assign var=key value="`$arrMailHistory[cnt].template_id`"}-->
-        <td><!--{$arrMAILTEMPLATE[$key]|escape}--></td>
-        <td><a href="<!--{$smarty.server.PHP_SELF|escape}-->" onclick="win02('./mail_view.php?send_id=<!--{$arrMailHistory[cnt].send_id}-->','mail_view','650','800'); return false;"><!--{$arrMailHistory[cnt].subject|escape}--></a></td>
-      </tr>
-      <!--{/section}-->
-    </table>
+        <h3>メール配信履歴一覧</h3>
+        <table>
+            <tr>
+                <th>処理日</th>
+                <th>通知メール</th>
+                <th>件名</th>
+            </tr>
+            <!--{section name=cnt loop=$arrMailHistory}-->
+            <tr class="center">
+                <td><!--{$arrMailHistory[cnt].send_date|sfDispDBDate|escape}--></td>
+                <!--{assign var=key value="`$arrMailHistory[cnt].template_id`"}-->
+                <td><!--{$arrMAILTEMPLATE[$key]|escape}--></td>
+                <td><a href="<!--{$smarty.server.PHP_SELF|escape}-->" onclick="win02('./mail_view.php?send_id=<!--{$arrMailHistory[cnt].send_id}-->','mail_view','650','800'); return false;"><!--{$arrMailHistory[cnt].subject|escape}--></a></td>
+            </tr>
+            <!--{/section}-->
+        </table>
 
-    <div class="tblareabtn">
-      <a href="./<!--{$smarty.const.DIR_INDEX_URL}-->" onmouseover="chgImg('<!--{$TPL_DIR}-->img/common/b_back_on.gif','change');" onmouseout="chgImg('<!--{$TPL_DIR}-->img/common/b_back.gif','change');"><img src="<!--{$TPL_DIR}-->img/common/b_back.gif" width="150" height="30" alt="戻る" name="change" id="change" /></a>
+        <div class="tblareabtn">
+            <a href="./<!--{$smarty.const.DIR_INDEX_URL}-->" onmouseover="chgImg('<!--{$TPL_DIR}-->img/common/b_back_on.gif','change');" onmouseout="chgImg('<!--{$TPL_DIR}-->img/common/b_back.gif','change');"><img src="<!--{$TPL_DIR}-->img/common/b_back.gif" width="150" height="30" alt="戻る" name="change" id="change" /></a>
+        </div>
+
     </div>
-
-  </div>
 </div>
 <!--▲CONTENTS-->
