[Svn-src-all:3663] [version-2_12-dev 22575] #2155 pageクラスからdtb_holidayテーブルを直接指定している箇所をなくす
pineray
admin @ mail.ec-cube.net
2013年 2月 20日 (水) 19:57:25 JST
Subversion committed to /home/svn/open 22575
http://svn.ec-cube.net/open_trac/changeset/22575
┌────────────────────────────┐
│更新者 : pineray │
│更新日時: 2013-02-20 19:57:25 +0900 (水, 20 2月 2013)│
└────────────────────────────┘
Log:
--------------------------------------------------------
#2155 pageクラスからdtb_holidayテーブルを直接指定している箇所をなくす
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_12-dev/data/Smarty/templates/admin/basis/holiday.tpl
A branches/version-2_12-dev/data/class/helper/SC_Helper_Holiday.php
U branches/version-2_12-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php
A branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_Holiday_Ex.php
変更: branches/version-2_12-dev/data/Smarty/templates/admin/basis/holiday.tpl
===================================================================
--- branches/version-2_12-dev/data/Smarty/templates/admin/basis/holiday.tpl 2013-02-20 04:49:20 UTC (rev 22574)
+++ branches/version-2_12-dev/data/Smarty/templates/admin/basis/holiday.tpl 2013-02-20 10:57:25 UTC (rev 22575)
@@ -33,7 +33,7 @@
<th>タイトル<span class="attention"> *</span></th>
<td>
<!--{if $arrErr.title}--><span class="attention"><!--{$arrErr.title}--></span><!--{/if}-->
- <input type="text" name="title" value="<!--{$arrForm.title|h}-->" maxlength="<!--{$smarty.const.SMTEXT_LEN}-->" style="" size="60" class="box60"/>
+ <input type="text" name="title" value="<!--{$arrForm.title.value|h}-->" maxlength="<!--{$smarty.const.SMTEXT_LEN}-->" style="" size="60" class="box60"/>
<span class="attention"> (上限<!--{$smarty.const.SMTEXT_LEN}-->文字)</span>
</td>
</tr>
@@ -47,11 +47,11 @@
<!--{/if}-->
<select name="month" style="<!--{$arrErr.month|sfGetErrorColor}-->">
<option value="">--</option>
- <!--{html_options options=$arrMonth selected=$arrForm.month}-->
+ <!--{html_options options=$arrMonth selected=$arrForm.month.value}-->
</select>月
<select name="day" style="<!--{$arrErr.day|sfGetErrorColor}-->">
<option value="">--</option>
- <!--{html_options options=$arrDay selected=$arrForm.day}-->
+ <!--{html_options options=$arrDay selected=$arrForm.day.value}-->
</select>日
<br />
<span class="attention">振替休日は自動設定されないので、振替え先の日付を設定してください。</span>
追加: branches/version-2_12-dev/data/class/helper/SC_Helper_Holiday.php
===================================================================
--- branches/version-2_12-dev/data/class/helper/SC_Helper_Holiday.php (rev 0)
+++ branches/version-2_12-dev/data/class/helper/SC_Helper_Holiday.php 2013-02-20 10:57:25 UTC (rev 22575)
@@ -0,0 +1,158 @@
+<?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_Holiday
+{
+ /**
+ * 休日の情報を取得.
+ *
+ * @param integer $holiday_id 休日ID
+ * @param boolean $has_deleted 削除された休日も含む場合 true; 初期値 false
+ * @return array
+ */
+ public function get($holiday_id, $has_deleted = false)
+ {
+ $objQuery =& SC_Query_Ex::getSingletonInstance();
+ $where = 'holiday_id = ?';
+ if (!$has_deleted) {
+ $where .= ' AND del_flg = 0';
+ }
+ $arrRet = $objQuery->select('*', 'dtb_holiday', $where, array($holiday_id));
+ return $arrRet[0];
+ }
+
+ /**
+ * 休日一覧の取得.
+ *
+ * @param boolean $has_deleted 削除された休日も含む場合 true; 初期値 false
+ * @return array
+ */
+ public function getList($has_deleted = false)
+ {
+ $objQuery =& SC_Query_Ex::getSingletonInstance();
+ $col = 'holiday_id, title, month, day';
+ $where = '';
+ if (!$has_deleted) {
+ $where .= 'del_flg = 0';
+ }
+ $table = 'dtb_holiday';
+ $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();
+
+ $holiday_id = $sqlval['holiday_id'];
+ $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
+ // 新規登録
+ if ($holiday_id == '') {
+ // INSERTの実行
+ $sqlval['rank'] = $objQuery->max('rank', 'dtb_holiday') + 1;
+ $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
+ $sqlval['holiday_id'] = $objQuery->nextVal('dtb_holiday_holiday_id');
+ $ret = $objQuery->insert('dtb_holiday', $sqlval);
+ // 既存編集
+ } else {
+ unset($sqlval['creator_id']);
+ unset($sqlval['create_date']);
+ $where = 'holiday_id = ?';
+ $ret = $objQuery->update('dtb_holiday', $sqlval, $where, array($holiday_id));
+ }
+ return ($ret) ? $sqlval['holiday_id'] : FALSE;
+ }
+
+ /**
+ * 休日の削除.
+ *
+ * @param integer $holiday_id 休日ID
+ * @return void
+ */
+ public function delete($holiday_id)
+ {
+ $objDb = new SC_Helper_DB_Ex();
+ // ランク付きレコードの削除
+ $objDb->sfDeleteRankRecord('dtb_holiday', 'holiday_id', $holiday_id, '', true);
+ }
+
+ /**
+ * 休日の表示順をひとつ上げる.
+ *
+ * @param integer $holiday_id 休日ID
+ * @return void
+ */
+ public function rankUp($holiday_id)
+ {
+ $objDb = new SC_Helper_DB_Ex();
+ $objDb->sfRankUp('dtb_holiday', 'holiday_id', $holiday_id);
+ }
+
+ /**
+ * 休日の表示順をひとつ下げる.
+ *
+ * @param integer $holiday_id 休日ID
+ * @return void
+ */
+ public function rankDown($holiday_id)
+ {
+ $objDb = new SC_Helper_DB_Ex();
+ $objDb->sfRankDown('dtb_holiday', 'holiday_id', $holiday_id);
+ }
+
+ /**
+ * 同じ日付の休日が存在するか確認.
+ *
+ * @param integer $month
+ * @param integer $day
+ * @param integer $holiday_id
+ * @return boolean 同日付の休日が存在:true
+ */
+ public function isDateExist($month, $day, $holiday_id = NULL)
+ {
+ $objQuery =& SC_Query_Ex::getSingletonInstance();
+ $where = 'del_flg = 0 AND month = ? AND day = ?';
+ $arrVal = array($month, $day);
+ if (!SC_Utils_Ex::isBlank($holiday_id)) {
+ $where .= ' AND holiday_id <> ?';
+ $arrVal[] = $holiday_id;
+ }
+ $arrRet = $objQuery->select('holiday_id, title', 'dtb_holiday', $where, $arrVal);
+
+ return !SC_Utils_Ex::isBlank($arrRet);
+ }
+}
変更: branches/version-2_12-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php 2013-02-20 04:49:20 UTC (rev 22574)
+++ branches/version-2_12-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php 2013-02-20 10:57:25 UTC (rev 22575)
@@ -71,7 +71,7 @@
function action()
{
- $objDb = new SC_Helper_DB_Ex();
+ $objHoliday = new SC_Helper_Holiday_Ex();
$objDate = new SC_Date_Ex();
$this->arrMonth = $objDate->getMonth();
@@ -79,74 +79,59 @@
$mode = $this->getMode();
- if (!empty($_POST)) {
+ $objFormParam = new SC_FormParam_Ex();
+ $this->lfInitParam($mode, $objFormParam);
+ $objFormParam->setParam($_POST);
+ $objFormParam->convParam();
- $objFormParam = new SC_FormParam_Ex();
- $this->lfInitParam($mode, $objFormParam);
- $objFormParam->setParam($_POST);
- $objFormParam->convParam();
- $holiday_id = $objFormParam->getValue('holiday_id');
+ $holiday_id = $objFormParam->getValue('holiday_id');
- $this->arrErr = $this->lfCheckError($mode, $objFormParam);
- if (!empty($this->arrErr['holiday_id'])) {
- trigger_error('', E_USER_ERROR);
- return;
- }
-
- $post = $objFormParam->getHashArray();
- }
-
// 要求判定
switch ($mode) {
// 編集処理
case 'edit':
- // POST値の引き継ぎ
- $this->arrForm = $this->arrForm = $_POST;
+ $this->arrErr = $this->lfCheckError($objFormParam, $objHoliday);
+ if (!SC_Utils_Ex::isBlank($this->arrErr['holiday_id'])) {
+ trigger_error('', E_USER_ERROR);
+ return;
+ }
if (count($this->arrErr) <= 0) {
- // 新規作成
- if ($post['holiday_id'] == '') {
- $this->lfInsertClass($this->arrForm, $_SESSION['member_id']);
+ // POST値の引き継ぎ
+ $arrParam = $objFormParam->getHashArray();
+ // 登録実行
+ $res_holiday_id = $this->doRegist($holiday_id, $arrParam, $objHoliday);
+ if ($res_holiday_id !== FALSE) {
+ // 完了メッセージ
+ $holiday_id = $res_holiday_id;
+ $this->tpl_onload = "alert('登録が完了しました。');";
}
- // 既存編集
- else {
- $this->lfUpdateClass($this->arrForm, $post['holiday_id']);
- }
-
- // 再表示
- $this->objDisplay->reload();
- } else {
- // POSTデータを引き継ぐ
- $this->tpl_holiday_id = $post['holiday_id'];
}
+ // POSTデータを引き継ぐ
+ $this->tpl_holiday_id = $holiday_id;
+
break;
// 削除
case 'delete':
- $objDb->sfDeleteRankRecord('dtb_holiday', 'holiday_id', $post['holiday_id'], '', true);
-
- // 再表示
- $this->objDisplay->reload();
+ $objHoliday->delete($holiday_id);
break;
// 編集前処理
case 'pre_edit':
// 編集項目を取得する。
- $arrHolidayData = $this->lfGetHolidayDataByHolidayID($post['holiday_id']);
+ $arrHolidayData = $objHoliday->get($holiday_id);
+ $objFormParam->setParam($arrHolidayData);
- // 入力項目にカテゴリ名を入力する。
- $this->arrForm['title'] = $arrHolidayData[0]['title'];
- $this->arrForm['month'] = $arrHolidayData[0]['month'];
- $this->arrForm['day'] = $arrHolidayData[0]['day'];
// POSTデータを引き継ぐ
- $this->tpl_holiday_id = $post['holiday_id'];
+ $this->tpl_holiday_id = $holiday_id;
break;
case 'down':
- $objDb->sfRankDown('dtb_holiday', 'holiday_id', $post['holiday_id']);
+ $objHoliday->rankDown($holiday_id);
// 再表示
$this->objDisplay->reload();
break;
case 'up':
- $objDb->sfRankUp('dtb_holiday', 'holiday_id', $post['holiday_id']);
+ $objHoliday->rankUp($holiday_id);
// 再表示
$this->objDisplay->reload();
@@ -155,10 +140,9 @@
break;
}
- $this->arrHoliday = $this->lfGetHolidayList();
- // POSTデータを引き継ぐ
- $this->tpl_holiday_id = $holiday_id;
+ $this->arrForm = $objFormParam->getFormParamList();
+ $this->arrHoliday = $objHoliday->getList();
}
/**
@@ -171,101 +155,55 @@
parent::destroy();
}
- function lfGetHolidayDataByHolidayID($holiday_id)
+ /**
+ * 登録処理を実行.
+ *
+ * @param integer $holiday_id
+ * @param array $sqlval
+ * @param object $objHoliday
+ * @return multiple
+ */
+ function doRegist($holiday_id, $sqlval, SC_Helper_Holiday_Ex $objHoliday)
{
- $objQuery =& SC_Query_Ex::getSingletonInstance();
-
- $where = 'holiday_id = ?';
- return $objQuery->select('title, month, day', 'dtb_holiday', $where, array($holiday_id));
+ $sqlval['holiday_id'] = $holiday_id;
+ $sqlval['creator_id'] = $_SESSION['member_id'];
+ return $objHoliday->save($sqlval);
}
- function lfGetHolidayList()
- {
- $objQuery =& SC_Query_Ex::getSingletonInstance();
-
- $where = 'del_flg <> 1';
- $objQuery->setOrder('rank DESC');
- return $objQuery->select('holiday_id, title, month, day', 'dtb_holiday', $where);
- }
-
- /* DBへの挿入 */
- function lfInsertClass($arrData, $member_id)
- {
- $objQuery =& SC_Query_Ex::getSingletonInstance();
- // INSERTする値を作成する。
- $sqlval['title'] = $arrData['title'];
- $sqlval['month'] = $arrData['month'];
- $sqlval['day'] = $arrData['day'];
- $sqlval['creator_id'] = $member_id;
- $sqlval['rank'] = $objQuery->max('rank', 'dtb_holiday') + 1;
- $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
- $sqlval['create_date'] = 'CURRENT_TIMESTAMP';
- // INSERTの実行
- $sqlval['holiday_id'] = $objQuery->nextVal('dtb_holiday_holiday_id');
- $ret = $objQuery->insert('dtb_holiday', $sqlval);
- return $ret;
- }
-
- /* DBへの更新 */
- function lfUpdateClass($arrData)
- {
- $objQuery =& SC_Query_Ex::getSingletonInstance();
- // UPDATEする値を作成する。
- $sqlval['title'] = $arrData['title'];
- $sqlval['month'] = $arrData['month'];
- $sqlval['day'] = $arrData['day'];
- $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
- $where = 'holiday_id = ?';
- // UPDATEの実行
- $ret = $objQuery->update('dtb_holiday', $sqlval, $where, array($arrData['holiday_id']));
- return $ret;
- }
-
function lfInitParam($mode, &$objFormParam)
{
switch ($mode) {
case 'edit':
+ case 'pre_edit':
$objFormParam->addParam('タイトル', 'title', STEXT_LEN, 'KVa', array('EXIST_CHECK','SPTAB_CHECK','MAX_LENGTH_CHECK'));
$objFormParam->addParam('月', 'month', INT_LEN, 'n', array('SELECT_CHECK','SPTAB_CHECK','MAX_LENGTH_CHECK'));
$objFormParam->addParam('日', 'day', INT_LEN, 'n', array('SELECT_CHECK','SPTAB_CHECK','MAX_LENGTH_CHECK'));
- // breakしない
+ $objFormParam->addParam('定休日ID', 'holiday_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
+ break;
case 'delete':
- case 'pre_edit':
case 'down':
case 'up':
+ default:
$objFormParam->addParam('定休日ID', 'holiday_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
break;
- default:
- break;
}
}
/**
* 入力エラーチェック
*
- * @param string $mode
+ * @param object $objFormParam
+ * @param object $objHoliday
* @return array
*/
- function lfCheckError($mode, &$objFormParam)
+ function lfCheckError(&$objFormParam, SC_Helper_Holiday_Ex &$objHoliday)
{
- $objFormParam->convParam();
$arrErr = $objFormParam->checkError();
- $post = $objFormParam->getHashArray();
+ $arrForm = $objFormParam->getHashArray();
- if (!isset($arrErr['date'])) {
- $objQuery =& SC_Query_Ex::getSingletonInstance();
- $where = 'del_flg = 0 AND month = ? AND day = ?';
- $arrWhereVal = array($post['month'], $post['day']);
- if (!empty($post['holiday_id'])) {
- $where .= ' AND holiday_id <> ?';
- $arrWhereVal[] = $post['holiday_id'];
- }
- $arrRet = $objQuery->select('count(holiday_id) as count', 'dtb_holiday', $where, $arrWhereVal);
-
- // 編集中のレコード以外に同じ日付が存在する場合
- if ($arrRet[0]['count'] > 0) {
- $arrErr['date'] = '※ 既に同じ日付の登録が存在します。<br>';
- }
+ // 編集中のレコード以外に同じ日付が存在する場合
+ if ($objHoliday->isDateExist($arrForm['month'], $arrForm['day'], $arrForm['holiday_id'])) {
+ $arrErr['date'] = '※ 既に同じ日付の登録が存在します。<br>';
}
return $arrErr;
}
追加: branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_Holiday_Ex.php
===================================================================
--- branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_Holiday_Ex.php (rev 0)
+++ branches/version-2_12-dev/data/class_extends/helper_extends/SC_Helper_Holiday_Ex.php 2013-02-20 10:57:25 UTC (rev 22575)
@@ -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_Holiday.php';
+
+/**
+ * 休日を管理するヘルパークラス(拡張).
+ *
+ * LC_Helper_Holiday をカスタマイズする場合はこのクラスを編集する.
+ *
+ * @package Helper
+ * @author pineray
+ * @version $Id:$
+ */
+class SC_Helper_Holiday_Ex extends SC_Helper_Holiday
+{
+ //put your code here
+}
Svn-src-all メーリングリストの案内