OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / ec_main / include / db / ec_mainPayMethodDb.php
1 <?php
2 /**
3  * DBクラス
4  *
5  * PHP versions 5
6  *
7  * LICENSE: This source file is licensed under the terms of the GNU General Public License.
8  *
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
15  */
16 require_once($gEnvManager->getDbPath() . '/baseDb.php');
17
18 class ec_mainPayMethodDb extends BaseDb
19 {
20         /**
21          * シリアル番号から支払方法IDを取得
22          *
23          * @param int           $serial                         シリアル番号
24          * @return string                                               支払方法ID。該当なしのときは空文字列
25          */
26         function getPayMethodDefIdBySerial($serial)
27         {
28                 $id = '';
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'];
34                 return $id;
35         }
36         /**
37          * 支払方法をシリアル番号で削除
38          *
39          * @param array   $serial               シリアルNo
40          * @return                                              true=成功、false=失敗
41          */
42         function deletePayMethodDefBySerial($serial)
43         {
44                 // 引数のエラーチェック
45                 if (!is_array($serial)) return false;
46                 if (count($serial) <= 0) return true;
47                 
48                 $now = date("Y/m/d H:i:s");     // 現在日時
49                 $userId = $this->gEnv->getCurrentUserId();      // 現在のユーザ
50                 
51                 // トランザクション開始
52                 $this->startTransaction();
53                 
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                         // 存在しない場合は、既に削除されたとして終了
61                         if (!$ret){
62                                 $this->endTransaction();
63                                 return false;
64                         }
65                 }
66                 
67                 // レコードを削除
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));
74                 
75                 // トランザクション確定
76                 $ret = $this->endTransaction();
77                 return $ret;
78         }
79         /**
80          * 支払い方法を取得
81          *
82          * @param string        $id                                     支払い方法ID
83          * @param string        $lang                           言語
84          * @param int           $setId                          セットID
85          * @param array     $row                                レコード
86          * @return bool                                                 取得 = true, 取得なし= false
87          */
88         function getPayMethodDef($id, $lang, $setId, &$row)
89         {
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);
96                 return $ret;
97         }
98         /**
99          * 支払い方法定義を取得
100          *
101          * @param string        $lang                           言語
102          * @param int           $setId                  セットID
103          * @param function      $callback               コールバック関数
104          * @return                      なし
105          */
106         function getAllPayMethodDef($lang, $setId, $callback)
107         {
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);
114         }
115         /**
116          * 支払い方法更新
117          *
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 = 失敗
128          */
129         function updatePayMethodDef($id, $lang, $setId, $name, $desc, $index, $visible, $iwidgetId = '', $param = '')
130         {
131                 $now = date("Y/m/d H:i:s");     // 現在日時
132                 $userId = $this->gEnv->getCurrentUserId();      // 現在のユーザ
133                 
134                 // トランザクション開始
135                 $this->startTransaction();
136                 
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);
144                 if ($ret){
145                         if (!$row['po_deleted']){               // 削除されていない場合
146                                 // レコードを削除
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']));
153                         }
154                         $historyIndex = $row['po_history_index'] + 1;
155                 } else {                // 新規の場合
156                         $historyIndex = 0;
157                 }
158
159                 // 新規レコードを追加
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 (';
174                 $queryStr .=   '?, ';
175                 $queryStr .=   '?, ';
176                 $queryStr .=   '?, ';
177                 $queryStr .=   '?, ';
178                 $queryStr .=   '?, ';
179                 $queryStr .=   '?, ';
180                 $queryStr .=   '?, ';
181                 $queryStr .=   '?, ';
182                 $queryStr .=   '?, ';
183                 $queryStr .=   '?, ';
184                 $queryStr .=   '?, ';
185                 $queryStr .=   '?) ';
186                 $ret = $this->execStatement($queryStr, array($id, $lang, $setId, $historyIndex, $name, $desc, $iwidgetId, $param, $index, $visible, $userId, $now));
187                 
188                 // トランザクション確定
189                 $ret = $this->endTransaction();
190                 return $ret;
191         }
192         /**
193          * 支払い方法定義の削除
194          *
195          * @param int     $id                   支払い方法ID
196          * @param int     $setId                セットID
197          * @param string  $lang                 言語
198          * @return                                              true=成功、false=失敗
199          */
200         function deletePayMethodDef($id, $lang, $setId)
201         {
202                 $now = date("Y/m/d H:i:s");     // 現在日時
203                 $userId = $this->gEnv->getCurrentUserId();      // 現在のユーザ
204                 
205                 // トランザクション開始
206                 $this->startTransaction();
207                 
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);
215                 if (!$ret){
216                         $this->endTransaction();                // トランザクション終了
217                         return false;
218                 }
219                 if ($row['po_deleted']){
220                         $this->endTransaction();                // トランザクション終了
221                         return false;           // 削除されていれば終了
222                 }
223                 
224                 // レコードを削除
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']));
231                         
232                 // トランザクション確定
233                 $ret = $this->endTransaction();
234                 return $ret;
235         }
236         /**
237          * 支払い方法IDの存在チェック
238          *
239          * @param string        $lang           言語
240          * @param int           $setId          セットID
241          * @param string        $id                     ID
242          * @return bool                                 true=存在する、false=存在しない
243          */
244         function isExistsPayMethodId($lang, $setId, $id)
245         {
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));
252         }
253         /**
254          * 最大表示順を取得
255          *
256          * @param string        $lang           言語
257          * @param int           $setId          セットID
258          * @return int                                  最大表示順
259          */
260         function getMaxPayMethodIndex($lang, $setId)
261         {
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);
267                 if ($ret){
268                         $index = $row['mindex'];
269                 } else {
270                         $index = 0;
271                 }
272                 return $index;
273         }
274 }
275 ?>