[Svn-src-all:3666] [version-2_12-dev 22578] #2156 pageクラスからdtb_makerテーブルを直接指定している箇所をなくす
pineray
admin @ mail.ec-cube.net
2013年 2月 21日 (木) 18:01:56 JST
Subversion committed to /home/svn/open 22578
http://svn.ec-cube.net/open_trac/changeset/22578
┌────────────────────────────┐
│更新者 : pineray │
│更新日時: 2013-02-21 18:01:56 +0900 (木, 21 2月 2013)│
└────────────────────────────┘
Log:
--------------------------------------------------------
#2156 pageクラスからdtb_makerテーブルを直接指定している箇所をなくす
メイカー管理のページクラス内の処理を他と統一する
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_12-dev/data/Smarty/templates/admin/products/maker.tpl
A branches/version-2_12-dev/data/class/helper/SC_Helper_Maker.php
U branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Maker.php
U branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
U branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php
U branches/version-2_12-dev/data/class/pages/products/LC_Page_Products_List.php
A branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_Maker_Ex.php
変更: branches/version-2_12-dev/data/Smarty/templates/admin/products/maker.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/admin/products/maker.tpl 2013-02-21 02:36:17 UTC (rev 22577)
+++ branches/version-2_12-dev/data/Smarty/templates/admin/products/maker.tpl 2013-02-21 09:01:56 UTC (rev 22578)
@@ -34,7 +34,7 @@
<td>
<!--{if $arrErr.maker_id}--><span class="attention"><!--{$arrErr.maker_id}--></span><br /><!--{/if}-->
<!--{if $arrErr.name}--><span class="attention"><!--{$arrErr.name}--></span><!--{/if}-->
- <input type="text" name="name" value="<!--{$arrForm.name|h}-->" maxlength="<!--{$smarty.const.SMTEXT_LEN}-->" style="" size="60" class="box60"/>
+ <input type="text" name="name" value="<!--{$arrForm.name.value|h}-->" maxlength="<!--{$smarty.const.SMTEXT_LEN}-->" style="" size="60" class="box60"/>
<span class="attention"> (上限<!--{$smarty.const.SMTEXT_LEN}-->文字)</span>
</td>
</tr>
追加: branches/version-2_12-dev/data/class/helper/SC_Helper_Maker.php
===================================================================
--- branches/version-2_12-dev/data/class/helper/SC_Helper_Maker.php (rev 0)
+++ branches/version-2_12-dev/data/class/helper/SC_Helper_Maker.php 2013-02-21 09:01:56 UTC (rev 22578)
@@ -0,0 +1,164 @@
+<?php
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2013 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/**
+ * メーカーを管理するヘルパークラス.
+ *
+ * @package Helper
+ * @author pineray
+ * @version $Id:$
+ */
+class SC_Helper_Maker
+{
+ /**
+ * メーカーの情報を取得.
+ *
+ * @param integer $maker_id メーカーID
+ * @param boolean $has_deleted 削除されたメーカーも含む場合 true; 初期値 false
+ * @return array
+ */
+ public function get($maker_id, $has_deleted = false)
+ {
+ $objQuery =& SC_Query_Ex::getSingletonInstance();
+ $where = 'maker_id = ?';
+ if (!$has_deleted) {
+ $where .= ' AND del_flg = 0';
+ }
+ $arrRet = $objQuery->select('*', 'dtb_maker', $where, array($maker_id));
+ return $arrRet[0];
+ }
+
+ /**
+ * 名前からメーカーの情報を取得.
+ *
+ * @param integer $name メーカー名
+ * @param boolean $has_deleted 削除されたメーカーも含む場合 true; 初期値 false
+ * @return array
+ */
+ public function getByName($name, $has_deleted = false)
+ {
+ $objQuery =& SC_Query_Ex::getSingletonInstance();
+ $where = 'name = ?';
+ if (!$has_deleted) {
+ $where .= ' AND del_flg = 0';
+ }
+ $arrRet = $objQuery->select('*', 'dtb_maker', $where, array($name));
+ return $arrRet[0];
+ }
+
+ /**
+ * メーカー一覧の取得.
+ *
+ * @param boolean $has_deleted 削除されたメーカーも含む場合 true; 初期値 false
+ * @return array
+ */
+ public function getList($has_deleted = false)
+ {
+ $objQuery =& SC_Query_Ex::getSingletonInstance();
+ $col = 'maker_id, name';
+ $where = '';
+ if (!$has_deleted) {
+ $where .= 'del_flg = 0';
+ }
+ $table = 'dtb_maker';
+ $objQuery->setOrder('rank DESC');
+ $arrRet = $objQuery->select($col, $table, $where);
+ return $arrRet;
+ }
+
+ /**
+ * メーカーの登録.
+ *
+ * @param array $sqlval
+ * @return multiple 登録成功:メーカーID, 失敗:FALSE
+ */
+ public function save($sqlval)
+ {
+ $objQuery =& SC_Query_Ex::getSingletonInstance();
+
+ $maker_id = $sqlval['maker_id'];
+ $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
+ // 新規登録
+ if ($maker_id == '') {
+ // INSERTの実行
+ $sqlval['rank'] = $objQuery->max('rank', 'dtb_maker') + 1;
+ $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
+ $sqlval['maker_id'] = $objQuery->nextVal('dtb_maker_maker_id');
+ $ret = $objQuery->insert('dtb_maker', $sqlval);
+ // 既存編集
+ } else {
+ unset($sqlval['creator_id']);
+ unset($sqlval['create_date']);
+ $where = 'maker_id = ?';
+ $ret = $objQuery->update('dtb_maker', $sqlval, $where, array($maker_id));
+ }
+ return ($ret) ? $sqlval['maker_id'] : FALSE;
+ }
+
+ /**
+ * メーカーの削除.
+ *
+ * @param integer $maker_id メーカーID
+ * @return void
+ */
+ public function delete($maker_id)
+ {
+ $objDb = new SC_Helper_DB_Ex();
+ // ランク付きレコードの削除
+ $objDb->sfDeleteRankRecord('dtb_maker', 'maker_id', $maker_id, '', true);
+ }
+
+ /**
+ * メーカーの表示順をひとつ上げる.
+ *
+ * @param integer $maker_id メーカーID
+ * @return void
+ */
+ public function rankUp($maker_id)
+ {
+ $objDb = new SC_Helper_DB_Ex();
+ $objDb->sfRankUp('dtb_maker', 'maker_id', $maker_id);
+ }
+
+ /**
+ * メーカーの表示順をひとつ下げる.
+ *
+ * @param integer $maker_id メーカーID
+ * @return void
+ */
+ public function rankDown($maker_id)
+ {
+ $objDb = new SC_Helper_DB_Ex();
+ $objDb->sfRankDown('dtb_maker', 'maker_id', $maker_id);
+ }
+
+ /**
+ * メーカーIDをキー, 名前を値とする配列を取得.
+ *
+ * @return array
+ */
+ public static function getIDValueList()
+ {
+ return SC_Helper_DB_Ex::sfGetIDValueList('dtb_maker', 'maker_id', 'name');
+ }
+}
変更: branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Maker.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Maker.php 2013-02-21 02:36:17 UTC (rev 22577)
+++ branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Maker.php 2013-02-21 09:01:56 UTC (rev 22578)
@@ -71,6 +71,7 @@
function action()
{
+ $objMaker = new SC_Helper_Maker_Ex();
$objFormParam = new SC_FormParam_Ex();
// パラメーター情報の初期化
@@ -85,45 +86,52 @@
//maker_idを変数にセット
$maker_id = $objFormParam->getValue('maker_id');
- // 変換後のPOST値を取得
- $this->arrForm = $objFormParam->getHashArray();
-
// モードによる処理切り替え
switch ($this->getMode()) {
// 編集処理
case 'edit':
- // 入力文字の変換
-
// エラーチェック
- $this->arrErr = $this->lfCheckError($this->arrForm, $objFormParam);
+ $this->arrErr = $this->lfCheckError($objFormParam, $objMaker);
+ if (!SC_Utils_Ex::isBlank($this->arrErr['maker_id'])) {
+ trigger_error('', E_USER_ERROR);
+ return;
+ }
+
if (count($this->arrErr) <= 0) {
- if ($this->arrForm['maker_id'] == '') {
- // メーカー情報新規登録
- $this->lfInsert($this->arrForm);
- } else {
- // メーカー情報編集
- $this->lfUpdate($this->arrForm);
+ // POST値の引き継ぎ
+ $arrParam = $objFormParam->getHashArray();
+ // 登録実行
+ $res_maker_id = $this->doRegist($maker_id, $arrParam, $objMaker);
+ if ($res_maker_id !== FALSE) {
+ // 完了メッセージ
+ $maker_id = $res_maker_id;
+ $this->tpl_onload = "alert('登録が完了しました。');";
}
-
- // 再表示
- $this->objDisplay->reload();
- } else {
- // POSTデータを引き継ぐ
- $this->tpl_maker_id = $this->arrForm['maker_id'];
}
+ // POSTデータを引き継ぐ
+ $this->tpl_maker_id = $maker_id;
break;
// 編集前処理
case 'pre_edit':
- $this->arrForm = $this->lfPreEdit($this->arrForm, $this->arrForm['maker_id']);
- $this->tpl_maker_id = $this->arrForm['maker_id'];
+ $maker = $objMaker->get($maker_id);
+ $objFormParam->setParam($maker);
+
+ // POSTデータを引き継ぐ
+ $this->tpl_maker_id = $maker_id;
break;
// メーカー順変更
case 'up':
+ $objMaker->rankUp($maker_id);
+
+ // リロード
+ SC_Response_Ex::reload();
+ break;
+
case 'down':
- $this->lfRankChange($this->arrForm['maker_id'], $this->getMode());
+ $objMaker->rankDown($maker_id);
// リロード
SC_Response_Ex::reload();
@@ -131,7 +139,7 @@
// 削除
case 'delete':
- $this->lfDelete($this->arrForm['maker_id']);
+ $objMaker->delete($maker_id);
// リロード
SC_Response_Ex::reload();
@@ -141,11 +149,10 @@
break;
}
- // メーカー情報読み込み
- $this->arrMaker = $this->lfDisp();
- // POSTデータを引き継ぐ
- $this->tpl_maker_id = $maker_id;
+ $this->arrForm = $objFormParam->getFormParamList();
+ // メーカー情報読み込み
+ $this->arrMaker = $objMaker->getList();
}
/**
@@ -171,152 +178,50 @@
}
/**
- * メーカー情報表示.
- *
- * @return array $arrMaker メーカー情報
+ * 登録処理を実行.
+ *
+ * @param integer $maker_id
+ * @param array $sqlval
+ * @param object $objMaker
+ * @return multiple
*/
- function lfDisp()
+ function doRegist($maker_id, $sqlval, SC_Helper_Maker_Ex $objMaker)
{
- $objQuery =& SC_Query_Ex::getSingletonInstance();
-
- // 削除されていないメーカー情報を表示する
- $where = 'del_flg = 0';
- $objQuery->setOrder('rank DESC');
- $arrMaker = array();
- $arrMaker = $objQuery->select('maker_id, name', 'dtb_maker', $where);
- return $arrMaker;
- }
-
- /**
- * メーカー情報新規登録.
- *
- * @param array $arrForm メーカー情報
- * @return void
- */
- function lfInsert(&$arrForm)
- {
- $objQuery =& SC_Query_Ex::getSingletonInstance();
-
- // INSERTする値を作成する
- $sqlval['name'] = $arrForm['name'];
- $sqlval['rank'] = $objQuery->max('rank', 'dtb_maker') + 1;
+ $sqlval['maker_id'] = $maker_id;
$sqlval['creator_id'] = $_SESSION['member_id'];
- $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
- $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
- $sqlval['maker_id'] = $objQuery->nextVal('dtb_maker_maker_id');
-
- // INSERTの実行
- $objQuery->insert('dtb_maker', $sqlval);
+ return $objMaker->save($sqlval);
}
/**
- * メーカー情報更新.
- *
- * @param array $arrForm メーカー情報
- * @return void
- */
- function lfUpdate(&$arrForm)
- {
- $objQuery =& SC_Query_Ex::getSingletonInstance();
-
- // UPDATEする値を作成する
- $sqlval['name'] = $arrForm['name'];
- $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
- $where = 'maker_id = ?';
-
- // UPDATEの実行
- $objQuery->update('dtb_maker', $sqlval, $where, array($arrForm['maker_id']));
- }
-
- /**
- * メーカー情報削除.
- *
- * @param integer $maker_id メーカーID
- * @return void
- */
- function lfDelete($maker_id)
- {
- $objDb = new SC_Helper_DB_Ex();
- $objDb->sfDeleteRankRecord('dtb_maker', 'maker_id', $maker_id, '', true);
- }
-
- /**
- * メーカー情報順番変更.
- *
- * @param integer $maker_id メーカーID
- * @param string $mode up か down のモードを示す文字列
- * @return void
- */
- function lfRankChange($maker_id, $mode)
- {
- $objDb = new SC_Helper_DB_Ex();
-
- switch ($mode) {
- case 'up':
- $objDb->sfRankUp('dtb_maker', 'maker_id', $maker_id);
- break;
-
- case 'down':
- $objDb->sfRankDown('dtb_maker', 'maker_id', $maker_id);
- break;
-
- default:
- break;
- }
- }
-
- /**
- * メーカー情報編集前処理.
- *
- * @param array $arrForm メーカー情報
- * @param integer $maker_id メーカーID
- * @return array $arrForm メーカー名を追加
- */
- function lfPreEdit(&$arrForm, $maker_id)
- {
- $objQuery =& SC_Query_Ex::getSingletonInstance();
-
- // 編集項目を取得する
- $where = 'maker_id = ?';
- $arrMaker = array();
- $arrMaker = $objQuery->select('name', 'dtb_maker', $where, array($maker_id));
- $arrForm['name'] = $arrMaker[0]['name'];
-
- return $arrForm;
- }
-
- /**
* 入力エラーチェック.
*
- * @param array $arrForm メーカー情報
* @return array $objErr->arrErr エラー内容
*/
- function lfCheckError(&$arrForm, &$objFormParam)
+ function lfCheckError(&$objFormParam, SC_Helper_Maker_Ex &$objMaker)
{
$arrErr = $objFormParam->checkError();
- if (!empty($arrErr)) {
- return $arrErr;
- }
+ $arrForm = $objFormParam->getHashArray();
// maker_id の正当性チェック
if (!empty($arrForm['maker_id'])) {
- $objDb = new SC_Helper_DB_Ex();
if (!SC_Utils_Ex::sfIsInt($arrForm['maker_id'])
|| SC_Utils_Ex::sfIsZeroFilling($arrForm['maker_id'])
- || !$objDb->sfIsRecord('dtb_maker', 'maker_id', array($arrForm['maker_id']))
+ || !$objMaker->get($arrForm['maker_id'])
) {
// maker_idが指定されていて、且つその値が不正と思われる場合はエラー
$arrErr['maker_id'] = '※ メーカーIDが不正です<br />';
}
}
if (!isset($arrErr['name'])) {
- $objQuery =& SC_Query_Ex::getSingletonInstance();
- $arrMaker = array();
- $arrMaker = $objQuery->select('maker_id, name', 'dtb_maker', 'del_flg = 0 AND name = ?', array($arrForm['name']));
+ $arrMaker = $objMaker->getByName($arrForm['name']);
// 編集中のレコード以外に同じ名称が存在する場合
- if ($arrMaker[0]['maker_id'] != $arrForm['maker_id'] && $arrMaker[0]['name'] == $arrForm['name']) {
+ if (
+ !SC_Utils_Ex::isBlank($arrMaker)
+ && $arrMaker['maker_id'] != $arrForm['maker_id']
+ && $arrMaker['name'] == $arrForm['name']
+ ) {
$arrErr['name'] = '※ 既に同じ内容の登録が存在します。<br />';
}
}
変更: branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php 2013-02-21 02:36:17 UTC (rev 22577)
+++ branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php 2013-02-21 09:01:56 UTC (rev 22578)
@@ -57,7 +57,7 @@
$this->arrSTATUS = $masterData->getMasterData('mtb_status');
$this->arrSTATUS_IMAGE = $masterData->getMasterData('mtb_status_image');
$this->arrDELIVERYDATE = $masterData->getMasterData('mtb_delivery_date');
- $this->arrMaker = SC_Helper_DB_Ex::sfGetIDValueList('dtb_maker', 'maker_id', 'name');
+ $this->arrMaker = SC_Helper_Maker_Ex::getIDValueList();
$this->arrAllowedTag = $masterData->getMasterData('mtb_allowed_tag');
}
変更: branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php 2013-02-21 02:36:17 UTC (rev 22577)
+++ branches/version-2_12-dev/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php 2013-02-21 09:01:56 UTC (rev 22578)
@@ -75,7 +75,7 @@
$this->arrSTATUS = $masterData->getMasterData('mtb_status');
$this->arrDELIVERYDATE = $masterData->getMasterData('mtb_delivery_date');
$this->arrProductType = $masterData->getMasterData('mtb_product_type');
- $this->arrMaker = SC_Helper_DB_Ex::sfGetIDValueList('dtb_maker', 'maker_id', 'name');
+ $this->arrMaker = SC_Helper_Maker_Ex::getIDValueList();
$this->arrPayments = SC_Helper_Payment_Ex::getIDValueList();
$this->arrInfo = SC_Helper_DB_Ex::sfGetBasisData();
$this->arrAllowedTag = $masterData->getMasterData('mtb_allowed_tag');
変更: branches/version-2_12-dev/data/class/pages/products/LC_Page_Products_List.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/products/LC_Page_Products_List.php 2013-02-21 02:36:17 UTC (rev 22577)
+++ branches/version-2_12-dev/data/class/pages/products/LC_Page_Products_List.php 2013-02-21 09:01:56 UTC (rev 22578)
@@ -314,7 +314,9 @@
// メーカー検索条件
if (strlen($arrSearchData['maker_id']) > 0) {
- $arrSearch['maker'] = $objQuery->get('name', 'dtb_maker', 'maker_id = ?', array($arrSearchData['maker_id']));
+ $objMaker = new SC_Helper_Maker_Ex();
+ $maker = $objMaker->get($arrSearchData['maker_id']);
+ $arrSearch['maker'] = $maker['name'];
}
// 商品名検索条件
追加: branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_Maker_Ex.php
===================================================================
--- branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_Maker_Ex.php (rev 0)
+++ branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_Maker_Ex.php 2013-02-21 09:01:56 UTC (rev 22578)
@@ -0,0 +1,39 @@
+<?php
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2013 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+// {{{ requires
+require_once CLASS_REALDIR . 'helper/SC_Helper_Maker.php';
+
+/**
+ * メーカーを管理するヘルパークラス(拡張).
+ *
+ * LC_Helper_Maker をカスタマイズする場合はこのクラスを編集する.
+ *
+ * @package Helper
+ * @author pineray
+ * @version $Id:$
+ */
+class SC_Helper_Maker_Ex extends SC_Helper_Maker
+{
+ //put your code here
+}
Svn-src-all メーリングリストの案内