Changeset 15163 for branches/feature-module-update/data/class
- Timestamp:
- 2007/08/02 19:11:21 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/data/class/db/SC_DB_MasterData.php
r15158 r15163 193 193 * 引数 $name のマスタデータキャッシュを生成する. 194 194 * 既存のキャッシュが存在する場合は上書きする. 195 * 引数 $isDefine が true の場合は, 定数を生成する. 195 196 * 196 197 * @param string $name マスタデータ名 197 198 * @param array $masterData マスタデータ 199 * @param bool $isDefine 定数を生成する場合 true 198 200 * @return bool キャッシュの生成に成功した場合 true 199 201 */ 200 function createCache($name, $masterData) { 201 202 // 配列の定義を文字列にする 203 $data = "<?php\n" 204 . "\$_" . $name . "_master = array(\n"; 202 function createCache($name, $masterData, $isDefine = false) { 203 204 // マスタデータを文字列にする 205 $data = "<?php\n"; 206 if ($isDefine) { 207 $data .= $this->getMasterDataAsDefine($masterData); 208 } else { 209 $data .= $this->getMasterDataAsString($name, $masterData); 210 } 211 $data .= "?>\n"; 212 213 // ファイルを書き出しモードで開く 214 $path = MASTER_DATA_DIR . $name . ".php"; 215 $handle = fopen($path, "w"); 216 if (!$handle) { 217 return false; 218 } 219 // ファイルの内容を書き出す. 220 if (fwrite($handle, $data) === false) { 221 return false; 222 } 223 return true; 224 } 225 226 // }}} 227 // {{{ private functions 228 229 /** 230 * DBからマスタデータを取得する. 231 * 232 * キャッシュの有無に関係なく, DBからマスタデータを検索し, 取得する. 233 * 234 * 返り値は, key => value 形式の配列である. 235 * 236 * @access private 237 * @param string $name マスタデータ名 238 * @param array $columns [0] => キー, [1] => 表示文字列, [2] => 表示順 239 * を表すカラム名を格納した配列 240 * @return array マスタデータ 241 */ 242 function getDbMasterData($name, $columns = array()) { 243 244 $columns = $this->getDefaultColumnName($columns); 245 246 $this->objQuery = new SC_Query(); 247 $this->objQuery->setorder($columns[2]); 248 $results = $this->objQuery->select($columns[0] . ", " . $columns[1], $name); 249 250 // 結果を key => value 形式に格納 251 $masterData = array(); 252 foreach ($results as $result) { 253 254 $masterData[$result[$columns[0]]] = $result[$columns[1]]; 255 } 256 return $masterData; 257 } 258 259 /** 260 * デフォルトのカラム名の配列を返す. 261 * 262 * 引数 $columns が空の場合, デフォルトのカラム名の配列を返す. 263 * 空でない場合は, 引数の値をそのまま返す. 264 * 265 * @param array $columns [0] => キー, [1] => 表示文字列, [2] => 表示順 266 * を表すカラム名を格納した配列 267 * @return array カラム名を格納した配列 268 */ 269 function getDefaultColumnName($columns = array()) { 270 if (!empty($columns)) { 271 return $columns; 272 } 273 return $this->columns; 274 } 275 276 /** 277 * マスタデータの配列を配列定義の文字列として出力する. 278 * 279 * @access private 280 * @param string $name マスタデータ名 281 * @param array $masterData マスタデータの配列 282 * @return string 配列定義の文字列 283 */ 284 function getMasterDataAsString($name, $masterData) { 285 $data = "\$_" . $name . "_master = array(\n"; 205 286 $i = count($masterData); 206 287 foreach ($masterData as $key => $val) { … … 211 292 $i--; 212 293 } 213 $data .= ");\n" 214 . "?>\n"; 215 216 // ファイルを書き出しモードで開く 217 $path = MASTER_DATA_DIR . $name . ".php"; 218 $handle = fopen($path, "w"); 219 if (!$handle) { 220 return false; 221 } 222 // ファイルの内容を書き出す. 223 if (fwrite($handle, $data) === false) { 224 return false; 225 } 226 return true; 227 } 228 229 // }}} 230 // {{{ private functions 231 232 /** 233 * DBからマスタデータを取得する. 234 * 235 * キャッシュの有無に関係なく, DBからマスタデータを検索し, 取得する. 236 * 237 * 返り値は, key => value 形式の配列である. 294 $data .= ");\n"; 295 return $data; 296 } 297 298 /** 299 * マスタデータの配列を定数定義の文字列として出力する. 238 300 * 239 301 * @access private 240 * @param string $name マスタデータ名 241 * @param array $columns [0] => キー, [1] => 表示文字列, [2] => 表示順 242 * を表すカラム名を格納した配列 243 * @return array マスタデータ 244 */ 245 function getDbMasterData($name, $columns = array()) { 246 247 $columns = $this->getDefaultColumnName($columns); 248 249 $this->objQuery = new SC_Query(); 250 $this->objQuery->setorder($columns[2]); 251 $results = $this->objQuery->select($columns[0] . ", " . $columns[1], $name); 252 253 // 結果を key => value 形式に格納 254 $masterData = array(); 255 foreach ($results as $result) { 256 257 $masterData[$result[$columns[0]]] = $result[$columns[1]]; 258 } 259 return $masterData; 260 } 261 262 /** 263 * デフォルトのカラム名の配列を返す. 264 * 265 * 引数 $columns が空の場合, デフォルトのカラム名の配列を返す. 266 * 空でない場合は, 引数の値をそのまま返す. 267 * 268 * @param array $columns [0] => キー, [1] => 表示文字列, [2] => 表示順 269 * を表すカラム名を格納した配列 270 * @return array カラム名を格納した配列 271 */ 272 function getDefaultColumnName($columns = array()) { 273 if (!empty($columns)) { 274 return $columns; 275 } 276 return $this->columns; 302 * @param array $masterData マスタデータの配列 303 * @return string 定数定義の文字列 304 */ 305 function getMasterDataAsDefine($masterData) { 306 $data = ""; 307 foreach ($masterData as $key => $val) { 308 $data .= "define('" . $key . "', " . $val . ");\n"; 309 } 310 return $data; 277 311 } 278 312 }
Note: See TracChangeset
for help on using the changeset viewer.