7 * LICENSE: This source file is licensed under the terms of the GNU General Public License.
9 * @package Magic3 Framework
10 * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
11 * @copyright Copyright 2006-2012 Magic3 Project.
12 * @license http://www.gnu.org/copyleft/gpl.html GPL License
13 * @version SVN: $Id: ec_mainPayMethodDb.php 5434 2012-12-06 12:32:21Z fishbone $
14 * @link http://www.magic3.org
16 require_once($gEnvManager->getDbPath() . '/baseDb.php');
18 class ec_mainPayMethodDb extends BaseDb
23 * @param int $serial シリアル番号
24 * @return string 支払方法ID。該当なしのときは空文字列
26 function getPayMethodDefIdBySerial($serial)
29 $queryStr = 'SELECT * FROM pay_method_def ';
30 $queryStr .= 'WHERE po_deleted = false ';
31 $queryStr .= 'AND po_serial = ? ';
32 $ret = $this->selectRecord($queryStr, array($serial), $row);
33 if ($ret) $id = $row['po_id'];
39 * @param array $serial シリアルNo
40 * @return true=成功、false=失敗
42 function deletePayMethodDefBySerial($serial)
45 if (!is_array($serial)) return false;
46 if (count($serial) <= 0) return true;
48 $now = date("Y/m/d H:i:s"); // 現在日時
49 $userId = $this->gEnv->getCurrentUserId(); // 現在のユーザ
52 $this->startTransaction();
54 // 指定のシリアルNoのレコードが削除状態でないかチェック
55 for ($i = 0; $i < count($serial); $i++){
56 $queryStr = 'SELECT * FROM pay_method_def ';
57 $queryStr .= 'WHERE po_deleted = false '; // 未削除
58 $queryStr .= 'AND po_serial = ? ';
59 $ret = $this->isRecordExists($queryStr, array($serial[$i]));
60 // 存在しない場合は、既に削除されたとして終了
62 $this->endTransaction();
68 $queryStr = 'UPDATE pay_method_def ';
69 $queryStr .= 'SET po_deleted = true, '; // 削除
70 $queryStr .= 'po_update_user_id = ?, ';
71 $queryStr .= 'po_update_dt = ? ';
72 $queryStr .= 'WHERE po_serial in (' . implode($serial, ',') . ') ';
73 $this->execStatement($queryStr, array($userId, $now));
76 $ret = $this->endTransaction();
82 * @param string $id 支払い方法ID
83 * @param string $lang 言語
84 * @param int $setId セットID
85 * @param array $row レコード
86 * @return bool 取得 = true, 取得なし= false
88 function getPayMethodDef($id, $lang, $setId, &$row)
90 $queryStr = 'SELECT * FROM pay_method_def ';
91 $queryStr .= 'WHERE po_deleted = false ';
92 $queryStr .= 'AND po_id = ? ';
93 $queryStr .= 'AND po_language_id = ? ';
94 $queryStr .= 'AND po_set_id = ? ';
95 $ret = $this->selectRecord($queryStr, array($id, $lang, $setId), $row);
101 * @param string $lang 言語
102 * @param int $setId セットID
103 * @param function $callback コールバック関数
106 function getAllPayMethodDef($lang, $setId, $callback)
108 $queryStr = 'SELECT * FROM pay_method_def ';
109 $queryStr .= 'WHERE po_deleted = false ';
110 $queryStr .= 'AND po_language_id = ? ';
111 $queryStr .= 'AND po_set_id = ? ';
112 $queryStr .= 'ORDER BY po_index ';
113 $this->selectLoop($queryStr, array($lang, $setId), $callback, null);
118 * @param int $id 支払い方法ID
119 * @param int $setId セットID
120 * @param string $lang 言語
121 * @param string $name 名前
122 * @param string $desc 説明
123 * @param int $index 表示順
124 * @param bool $visible 表示状況
125 * @param string $iwidgetId インナーウィジェットID
126 * @param string $param パラメータ
127 * @return bool true = 成功、false = 失敗
129 function updatePayMethodDef($id, $lang, $setId, $name, $desc, $index, $visible, $iwidgetId = '', $param = '')
131 $now = date("Y/m/d H:i:s"); // 現在日時
132 $userId = $this->gEnv->getCurrentUserId(); // 現在のユーザ
135 $this->startTransaction();
137 // 指定のレコードの履歴インデックス取得
138 $queryStr = 'SELECT * FROM pay_method_def ';
139 $queryStr .= 'WHERE po_id = ? ';
140 $queryStr .= 'AND po_language_id = ? ';
141 $queryStr .= 'AND po_set_id = ? ';
142 $queryStr .= 'ORDER BY po_history_index desc ';
143 $ret = $this->selectRecord($queryStr, array($id, $lang, $setId), $row);
145 if (!$row['po_deleted']){ // 削除されていない場合
147 $queryStr = 'UPDATE pay_method_def ';
148 $queryStr .= 'SET po_deleted = true, ';
149 $queryStr .= 'po_update_user_id = ?, ';
150 $queryStr .= 'po_update_dt = ? ';
151 $queryStr .= 'WHERE po_serial = ? ';
152 $this->execStatement($queryStr, array($userId, $now, $row['po_serial']));
154 $historyIndex = $row['po_history_index'] + 1;
160 $queryStr = 'INSERT INTO pay_method_def (';
161 $queryStr .= 'po_id, ';
162 $queryStr .= 'po_language_id, ';
163 $queryStr .= 'po_set_id, ';
164 $queryStr .= 'po_history_index, ';
165 $queryStr .= 'po_name, ';
166 $queryStr .= 'po_description, ';
167 $queryStr .= 'po_iwidget_id, ';
168 $queryStr .= 'po_param, ';
169 $queryStr .= 'po_index, ';
170 $queryStr .= 'po_visible, ';
171 $queryStr .= 'po_create_user_id, ';
172 $queryStr .= 'po_create_dt ';
173 $queryStr .= ') VALUES (';
186 $ret = $this->execStatement($queryStr, array($id, $lang, $setId, $historyIndex, $name, $desc, $iwidgetId, $param, $index, $visible, $userId, $now));
189 $ret = $this->endTransaction();
195 * @param int $id 支払い方法ID
196 * @param int $setId セットID
197 * @param string $lang 言語
198 * @return true=成功、false=失敗
200 function deletePayMethodDef($id, $lang, $setId)
202 $now = date("Y/m/d H:i:s"); // 現在日時
203 $userId = $this->gEnv->getCurrentUserId(); // 現在のユーザ
206 $this->startTransaction();
208 // 指定のレコードの履歴インデックス取得
209 $queryStr = 'SELECT * FROM pay_method_def ';
210 $queryStr .= 'WHERE po_id = ? ';
211 $queryStr .= 'AND po_language_id = ? ';
212 $queryStr .= 'AND po_set_id = ? ';
213 $queryStr .= 'ORDER BY po_history_index desc ';
214 $ret = $this->selectRecord($queryStr, array($id, $lang, $setId), $row);
216 $this->endTransaction(); // トランザクション終了
219 if ($row['po_deleted']){
220 $this->endTransaction(); // トランザクション終了
221 return false; // 削除されていれば終了
225 $queryStr = 'UPDATE pay_method_def ';
226 $queryStr .= 'SET po_deleted = true, ';
227 $queryStr .= 'po_update_user_id = ?, ';
228 $queryStr .= 'po_update_dt = ? ';
229 $queryStr .= 'WHERE po_serial = ? ';
230 $this->execStatement($queryStr, array($userId, $now, $row['po_serial']));
233 $ret = $this->endTransaction();
239 * @param string $lang 言語
240 * @param int $setId セットID
241 * @param string $id ID
242 * @return bool true=存在する、false=存在しない
244 function isExistsPayMethodId($lang, $setId, $id)
246 $queryStr = 'SELECT * FROM pay_method_def ';
247 $queryStr .= 'WHERE po_deleted = false ';
248 $queryStr .= 'AND po_id = ? ';
249 $queryStr .= 'AND po_language_id = ? ';
250 $queryStr .= 'AND po_set_id = ? ';
251 return $this->isRecordExists($queryStr, array($id, $lang, $setId));
256 * @param string $lang 言語
257 * @param int $setId セットID
260 function getMaxPayMethodIndex($lang, $setId)
262 $queryStr = 'SELECT max(po_index) as mindex FROM pay_method_def ';
263 $queryStr .= 'WHERE po_deleted = false ';
264 $queryStr .= 'AND po_language_id = ? ';
265 $queryStr .= 'AND po_set_id = ? ';
266 $ret = $this->selectRecord($queryStr, array($lang, $setId), $row);
268 $index = $row['mindex'];