Changeset 15716
- Timestamp:
- 2007/09/18 16:15:24 (17 years ago)
- Location:
- branches/feature-module-update
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/data/class/db/SC_DB_MasterData.php
r15532 r15716 24 24 * @package DB 25 25 * @author LOCKON CO.,LTD. 26 * @version $Id $26 * @version $Id:SC_DB_MasterData.php 15532 2007-08-31 14:39:46Z nanasess $ 27 27 */ 28 28 class SC_DB_MasterData { … … 110 110 $this->objQuery->commit(); 111 111 } 112 113 // キャッシュを消去114 $this->clearCache($name);115 // 新規にデータを取得してキャッシュ生成116 $newData = $this->getMasterData($name, $columns);117 112 return $i; 118 113 } … … 121 116 * マスタデータを更新する. 122 117 * 123 * 引数 $masterData の値でマスタデータを更新し, 124 * キャッシュを更新する. 118 * 引数 $masterData の値でマスタデータを更新する. 125 119 * $masterData は key => value 形式の配列である必要がある. 126 120 * … … 133 127 */ 134 128 function updateMasterData($name, $columns, $masterData, $autoCommit = true) { 129 130 $columns = $this->getDefaultColumnName($columns); 131 135 132 $this->objQuery = new SC_Query(); 136 133 if ($autoCommit) { 137 134 $this->objQuery->begin(); 138 135 } 139 // マスタデータを削除 140 $this->deleteMasterData($name, false); 141 142 // マスタデータを追加 143 $this->registMasterData($name, $columns, $masterData, false); 144 136 137 // 指定のデータを更新 138 $i = 0; 139 foreach ($masterData as $key => $val) { 140 $sqlVal = array($columns[1] => $val); 141 $this->objQuery->update($name, $sqlVal, $columns[0] . " = " . $key); 142 $i++; 143 } 145 144 if ($autoCommit) { 146 145 $this->objQuery->commit(); 147 146 } 148 return count($masterData);147 return $i; 149 148 } 150 149 … … 193 192 * 引数 $name のマスタデータキャッシュを生成する. 194 193 * 既存のキャッシュが存在する場合は上書きする. 194 * 195 195 * 引数 $isDefine が true の場合は, 定数を生成する. 196 * 定数コメントを生成する場合は, $commentColumn を指定する. 196 197 * 197 198 * @param string $name マスタデータ名 198 199 * @param array $masterData マスタデータ 199 200 * @param bool $isDefine 定数を生成する場合 true 201 * @param array $commentColumn [0] => キー, [1] => コメント文字列, 202 [2] => 表示順 を表すカラム名を格納した配列 200 203 * @return bool キャッシュの生成に成功した場合 true 201 204 */ 202 function createCache($name, $masterData, $isDefine = false) { 205 function createCache($name, $masterData, $isDefine = false, 206 $commentColumn = array()) { 203 207 204 208 // マスタデータを文字列にする 205 209 $data = "<?php\n"; 210 // 定数を生成する場合 206 211 if ($isDefine) { 207 $data .= $this->getMasterDataAsDefine($masterData, 208 $this->getDbMasterData("mtb_constants", array("id", "remarks", "rank"))); 212 213 // 定数コメントを生成する場合 214 if (!empty($commentColumn)) { 215 $data .= $this->getMasterDataAsDefine($masterData, 216 $this->getDbMasterData($name, $commentColumn)); 217 } else { 218 $data .= $this->getMasterDataAsDefine($masterData); 219 } 220 221 // 配列を生成する場合 209 222 } else { 210 223 $data .= $this->getMasterDataAsString($name, $masterData); … … 225 238 } 226 239 227 // }}}228 // {{{ private functions229 230 240 /** 231 241 * DBからマスタデータを取得する. … … 235 245 * 返り値は, key => value 形式の配列である. 236 246 * 237 * @access private238 247 * @param string $name マスタデータ名 239 248 * @param array $columns [0] => キー, [1] => 表示文字列, [2] => 表示順 … … 257 266 return $masterData; 258 267 } 268 269 // }}} 270 // {{{ private functions 259 271 260 272 /** … … 310 322 $data = ""; 311 323 foreach ($masterData as $key => $val) { 312 if ( isset($comments[$key])) {324 if (!empty($comments[$key])) { 313 325 $data .= "/** " . $comments[$key] . " */\n"; 314 326 } -
branches/feature-module-update/test/class/db/SC_DB_MasterData_Test.php
r15532 r15716 15 15 * @package DB 16 16 * @author LOCKON CO.,LTD. 17 * @version $Id $17 * @version $Id:SC_DB_MasterData_Test.php 15532 2007-08-31 14:39:46Z nanasess $ 18 18 */ 19 19 class SC_DB_MasterData_Test extends PHPUnit_TestCase { … … 26 26 */ 27 27 function testGetMasterData() { 28 29 28 $columns = array("pref_id", "pref_name", "rank"); 30 29 $masterData = new SC_DB_MasterData_Ex(); … … 58 57 $masterData->updateMasterData("mtb_pref", $columns, $expected, false); 59 58 60 $actual = $masterData->get MasterData("mtb_pref", $columns);59 $actual = $masterData->getDBMasterData("mtb_pref", $columns); 61 60 62 $this->assertEquals($expected, $actual); 61 $this->assertEquals($expected["10"], $actual["10"]); 62 $this->assertEquals($expected["20"], $actual["20"]); 63 $this->assertEquals($expected["30"], $actual["30"]); 63 64 64 65 $masterData->objQuery->rollback(); … … 71 72 function testCreateCache() { 72 73 $masterData = new SC_DB_MasterData_Ex(); 73 $masterData->createCache("mtb_constants", $masterData->getMasterData("mtb_constants"), true); 74 $datas = $masterData->getDBMasterData("mtb_constants"); 75 $commentColumn = array("id", "remarks", "rank"); 76 $masterData->clearCache("mtb_constants"); 77 $masterData->createCache("mtb_constants", $datas, true, 78 array("id", "remarks", "rank")); 74 79 $this->assertEquals(true, defined("ECCUBE_VERSION")); 75 80 }
Note: See TracChangeset
for help on using the changeset viewer.