- Timestamp:
- 2007/08/16 21:10:52 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/data/class/SC_FormParam.php
r15080 r15296 9 9 class SC_FormParam { 10 10 11 var $param; 12 var $disp_name; 13 var $keyname; 14 var $length; 15 var $convert; 16 var $arrCheck; 17 var $default; // 何も入力されていないときに表示する値 18 var $input_db; // DBにそのまま挿入可能か否か 19 var $html_disp_name; 20 21 // コンストラクタ 22 function SC_FormParam() { 23 $this->check_dir = IMAGE_SAVE_DIR; 24 $this->disp_name = array(); 25 $this->keyname = array(); 26 $this->length = array(); 27 $this->convert = array(); 28 $this->arrCheck = array(); 29 $this->default = array(); 30 $this->input_db = array(); 31 } 32 33 // パラメータの追加 34 function addParam($disp_name, $keyname, $length="", $convert="", $arrCheck=array(), $default="", $input_db="true") { 35 $this->disp_name[] = $disp_name; 36 $this->keyname[] = $keyname; 37 $this->length[] = $length; 38 $this->convert[] = $convert; 39 $this->arrCheck[] = $arrCheck; 40 $this->default[] = $default; 41 $this->input_db[] = $input_db; 42 } 43 44 // パラメータの入力 45 // $arrVal :$arrVal['keyname']・・の配列を一致したキーのインスタンスに格納する 46 // $seq :trueの場合、$arrVal[0]~の配列を登録順にインスタンスに格納する 47 function setParam($arrVal, $seq = false) { 48 $cnt = 0; 49 if(!$seq){ 50 foreach($this->keyname as $val) { 51 if(isset($arrVal[$val])) { 52 $this->setValue($val, $arrVal[$val]); 53 } 54 } 55 } else { 56 foreach($this->keyname as $val) { 57 $this->param[$cnt] = $arrVal[$cnt]; 58 $cnt++; 59 } 60 } 61 } 62 63 // 画面表示用タイトル生成 64 function setHtmlDispNameArray() { 65 $cnt = 0; 66 foreach($this->keyname as $val) { 67 $find = false; 68 foreach($this->arrCheck[$cnt] as $val) { 69 if($val == "EXIST_CHECK") { 70 $find = true; 71 } 72 } 73 74 if($find) { 75 $this->html_disp_name[$cnt] = $this->disp_name[$cnt] . "<span class='red'>(※ 必須)</span>"; 76 } else { 77 $this->html_disp_name[$cnt] = $this->disp_name[$cnt]; 78 } 79 $cnt++; 80 } 81 } 82 83 // 画面表示用タイトル取得 84 function getHtmlDispNameArray() { 85 return $this->html_disp_name; 86 } 87 88 // 複数列パラメータの取得 89 function setParamList($arrVal, $keyname) { 90 // DBの件数を取得する。 91 $count = count($arrVal); 92 $no = 1; 93 for($cnt = 0; $cnt < $count; $cnt++) { 94 $key = $keyname.$no; 95 if($arrVal[$cnt][$keyname] != "") { 96 $this->setValue($key, $arrVal[$cnt][$keyname]); 97 } 98 $no++; 99 } 100 } 101 102 function setDBDate($db_date, $year_key = 'year', $month_key = 'month', $day_key = 'day') { 103 list($y, $m, $d) = split("[- ]", $db_date); 104 $this->setValue($year_key, $y); 105 $this->setValue($month_key, $m); 106 $this->setValue($day_key, $d); 107 } 108 109 // キーに対応した値をセットする。 110 function setValue($key, $param) { 111 $cnt = 0; 112 foreach($this->keyname as $val) { 113 if($val == $key) { 114 $this->param[$cnt] = $param; 115 break; 116 } 117 $cnt++; 118 } 119 } 120 121 function toLower($key) { 122 $cnt = 0; 123 foreach($this->keyname as $val) { 124 if($val == $key) { 125 $this->param[$cnt] = strtolower($this->param[$cnt]); 126 break; 127 } 128 $cnt++; 129 } 130 } 131 132 // エラーチェック 133 function checkError($br = true, $keyname = "") { 134 // 連想配列の取得 135 $arrRet = $this->getHashArray($keyname); 136 $objErr = new SC_CheckError($arrRet); 137 $cnt = 0; 138 foreach($this->keyname as $val) { 139 foreach($this->arrCheck[$cnt] as $func) { 140 switch($func) { 141 case 'EXIST_CHECK': 142 case 'NUM_CHECK': 143 case 'EMAIL_CHECK': 144 case 'EMAIL_CHAR_CHECK': 145 case 'ALNUM_CHECK': 146 case 'KANA_CHECK': 147 case 'URL_CHECK': 148 case 'SPTAB_CHECK': 149 case 'ZERO_CHECK': 150 case 'ALPHA_CHECK': 151 case 'ZERO_START': 152 case 'FIND_FILE': 153 case 'NO_SPTAB': 154 case 'DIR_CHECK': 155 case 'DOMAIN_CHECK': 156 case 'FILE_NAME_CHECK': 157 case 'MOBILE_EMAIL_CHECK': 158 159 if(!is_array($this->param[$cnt])) { 160 $objErr->doFunc(array($this->disp_name[$cnt], $val), array($func)); 161 } else { 162 $max = count($this->param[$cnt]); 163 for($i = 0; $i < $max; $i++) { 164 $objSubErr = new SC_CheckError($this->param[$cnt]); 165 $objSubErr->doFunc(array($this->disp_name[$cnt], $i), array($func)); 166 if(count($objSubErr->arrErr) > 0) { 167 foreach($objSubErr->arrErr as $mess) { 168 if($mess != "") { 169 $objErr->arrErr[$val] = $mess; 170 } 171 } 172 } 173 } 174 } 175 break; 176 case 'MAX_LENGTH_CHECK': 177 case 'NUM_COUNT_CHECK': 178 if(!is_array($this->param[$cnt])) { 179 $objErr->doFunc(array($this->disp_name[$cnt], $val, $this->length[$cnt]), array($func)); 180 } else { 181 $max = count($this->param[$cnt]); 182 for($i = 0; $i < $max; $i++) { 183 $objSubErr = new SC_CheckError($this->param[$cnt]); 184 $objSubErr->doFunc(array($this->disp_name[$cnt], $i, $this->length[$cnt]), array($func)); 185 if(count($objSubErr->arrErr) > 0) { 186 foreach($objSubErr->arrErr as $mess) { 187 if($mess != "") { 188 $objErr->arrErr[$val] = $mess; 189 } 190 } 191 } 192 } 193 } 194 break; 195 // 小文字に変換 196 case 'CHANGE_LOWER': 197 $this->param[$cnt] = strtolower($this->param[$cnt]); 198 break; 199 // ファイルの存在チェック 200 case 'FILE_EXISTS': 201 if($this->param[$cnt] != "" && !file_exists($this->check_dir . $this->param[$cnt])) { 202 $objErr->arrErr[$val] = "※ " . $this->disp_name[$cnt] . "のファイルが存在しません。<br>"; 203 } 204 break; 205 default: 206 $objErr->arrErr[$val] = "※※ エラーチェック形式($func)には対応していません ※※ <br>"; 207 break; 208 } 209 } 210 211 if (isset($objErr->arrErr[$val]) && !$br) { 212 $objErr->arrErr[$val] = ereg_replace("<br>$", "", $objErr->arrErr[$val]); 213 } 214 $cnt++; 215 } 216 return $objErr->arrErr; 217 } 218 219 // 入力文字の変換 220 function convParam() { 221 /* 222 * 文字列の変換 223 * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換 224 * C : 「全角ひら仮名」を「全角かた仮名」に変換 225 * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します 226 * n : 「全角」数字を「半角(ハンカク)」に変換 227 * a : 「全角」英字を「半角」英字に変換 228 */ 229 $cnt = 0; 230 foreach ($this->keyname as $val) { 231 if(!is_array($this->param[$cnt])) { 232 if($this->convert[$cnt] != "") { 233 $this->param[$cnt] = mb_convert_kana($this->param[$cnt] ,$this->convert[$cnt]); 234 } 235 } else { 236 $max = count($this->param[$cnt]); 237 for($i = 0; $i < $max; $i++) { 238 if($this->convert[$cnt] != "") { 239 $this->param[$cnt][$i] = mb_convert_kana($this->param[$cnt][$i] ,$this->convert[$cnt]); 240 } 241 } 242 } 243 $cnt++; 244 } 245 } 246 247 // 連想配列の作成 248 function getHashArray($keyname = "") { 249 $cnt = 0; 250 foreach($this->keyname as $val) { 251 if($keyname == "" || $keyname == $val) { 252 $arrRet[$val] = $this->param[$cnt]; 253 $cnt++; 254 } 255 } 256 return $arrRet; 257 } 258 259 // DB格納用配列の作成 260 function getDbArray() { 261 $cnt = 0; 262 foreach ($this->keyname as $val) { 263 if ($this->input_db[$cnt]) { 264 $arrRet[$val] = $this->param[$cnt]; 265 } 266 $cnt++; 267 } 268 return $arrRet; 269 } 270 271 // 配列の縦横を入れ替えて返す 272 function getSwapArray($arrKey) { 273 foreach($arrKey as $keyname) { 274 $arrVal = $this->getValue($keyname); 275 $max = count($arrVal); 276 for($i = 0; $i < $max; $i++) { 277 $arrRet[$i][$keyname] = $arrVal[$i]; 278 } 279 } 280 return $arrRet; 281 } 282 283 // 項目名一覧の取得 284 function getTitleArray() { 285 return $this->disp_name; 286 } 287 288 // 項目数を返す 289 function getCount() { 290 $count = count($this->keyname); 291 return $count; 292 } 293 294 // フォームに渡す用のパラメータを返す 295 function getFormParamList() { 296 $cnt = 0; 297 foreach($this->keyname as $val) { 298 // キー名 299 $arrRet[$val]['keyname'] = $this->keyname[$cnt]; 300 // 文字数制限 301 $arrRet[$val]['length'] = $this->length[$cnt]; 302 // 入力値 303 $arrRet[$val]['value'] = $this->param[$cnt]; 304 305 if($this->default[$cnt] != "" && $this->param[$cnt] == "") { 306 $arrRet[$val]['value'] = $this->default[$cnt]; 307 } 308 309 $cnt++; 310 } 311 return $arrRet; 312 } 313 314 // キー名の一覧を返す 315 function getKeyList() { 316 foreach($this->keyname as $val) { 317 $arrRet[] = $val; 318 } 319 return $arrRet; 320 } 321 322 // キー名と一致した値を返す 323 function getValue($keyname) { 324 $cnt = 0; 325 foreach($this->keyname as $val) { 326 if($val == $keyname) { 327 $ret = $this->param[$cnt]; 328 break; 329 } 330 $cnt++; 331 } 332 return $ret; 333 } 334 335 function splitCheckBoxes($keyname) { 336 $cnt = 0; 337 foreach($this->keyname as $val) { 338 if($val == $keyname) { 339 $this->param[$cnt] = sfSplitCheckBoxes($this->param[$cnt]); 340 } 341 $cnt++; 342 } 343 } 344 345 function splitParamCheckBoxes($keyname) { 346 $cnt = 0; 347 foreach($this->keyname as $val) { 348 if($val == $keyname) { 349 if(!is_array($this->param[$cnt])) { 350 $this->param[$cnt] = split("-", $this->param[$cnt]); 351 } 352 } 353 $cnt++; 354 } 355 } 11 var $param; 12 var $disp_name; 13 var $keyname; 14 var $length; 15 var $convert; 16 var $arrCheck; 17 var $default; // 何も入力されていないときに表示する値 18 var $input_db; // DBにそのまま挿入可能か否か 19 var $html_disp_name; 20 21 // コンストラクタ 22 function SC_FormParam() { 23 $this->check_dir = IMAGE_SAVE_DIR; 24 $this->disp_name = array(); 25 $this->keyname = array(); 26 $this->length = array(); 27 $this->convert = array(); 28 $this->arrCheck = array(); 29 $this->default = array(); 30 $this->input_db = array(); 31 } 32 33 // パラメータの追加 34 function addParam($disp_name, $keyname, $length="", $convert="", $arrCheck=array(), $default="", $input_db="true") { 35 $this->disp_name[] = $disp_name; 36 $this->keyname[] = $keyname; 37 $this->length[] = $length; 38 $this->convert[] = $convert; 39 $this->arrCheck[] = $arrCheck; 40 $this->default[] = $default; 41 $this->input_db[] = $input_db; 42 } 43 44 // パラメータの入力 45 // $arrVal :$arrVal['keyname']・・の配列を一致したキーのインスタンスに格納する 46 // $seq :trueの場合、$arrVal[0]~の配列を登録順にインスタンスに格納する 47 function setParam($arrVal, $seq = false) { 48 $cnt = 0; 49 if(!$seq){ 50 foreach($this->keyname as $val) { 51 if(isset($arrVal[$val])) { 52 $this->setValue($val, $arrVal[$val]); 53 } 54 } 55 } else { 56 foreach($this->keyname as $val) { 57 $this->param[$cnt] = $arrVal[$cnt]; 58 $cnt++; 59 } 60 } 61 } 62 63 // 画面表示用タイトル生成 64 function setHtmlDispNameArray() { 65 $cnt = 0; 66 foreach($this->keyname as $val) { 67 $find = false; 68 foreach($this->arrCheck[$cnt] as $val) { 69 if($val == "EXIST_CHECK") { 70 $find = true; 71 } 72 } 73 74 if($find) { 75 $this->html_disp_name[$cnt] = $this->disp_name[$cnt] . "<span class='red'>(※ 必須)</span>"; 76 } else { 77 $this->html_disp_name[$cnt] = $this->disp_name[$cnt]; 78 } 79 $cnt++; 80 } 81 } 82 83 // 画面表示用タイトル取得 84 function getHtmlDispNameArray() { 85 return $this->html_disp_name; 86 } 87 88 // 複数列パラメータの取得 89 function setParamList($arrVal, $keyname) { 90 // DBの件数を取得する。 91 $count = count($arrVal); 92 $no = 1; 93 for($cnt = 0; $cnt < $count; $cnt++) { 94 $key = $keyname.$no; 95 if($arrVal[$cnt][$keyname] != "") { 96 $this->setValue($key, $arrVal[$cnt][$keyname]); 97 } 98 $no++; 99 } 100 } 101 102 function setDBDate($db_date, $year_key = 'year', $month_key = 'month', $day_key = 'day') { 103 list($y, $m, $d) = split("[- ]", $db_date); 104 $this->setValue($year_key, $y); 105 $this->setValue($month_key, $m); 106 $this->setValue($day_key, $d); 107 } 108 109 // キーに対応した値をセットする。 110 function setValue($key, $param) { 111 $cnt = 0; 112 foreach($this->keyname as $val) { 113 if($val == $key) { 114 $this->param[$cnt] = $param; 115 break; 116 } 117 $cnt++; 118 } 119 } 120 121 function toLower($key) { 122 $cnt = 0; 123 foreach($this->keyname as $val) { 124 if($val == $key) { 125 $this->param[$cnt] = strtolower($this->param[$cnt]); 126 break; 127 } 128 $cnt++; 129 } 130 } 131 132 // エラーチェック 133 function checkError($br = true, $keyname = "") { 134 // 連想配列の取得 135 $arrRet = $this->getHashArray($keyname); 136 $objErr = new SC_CheckError($arrRet); 137 $cnt = 0; 138 foreach($this->keyname as $val) { 139 foreach($this->arrCheck[$cnt] as $func) { 140 switch($func) { 141 case 'EXIST_CHECK': 142 case 'NUM_CHECK': 143 case 'EMAIL_CHECK': 144 case 'EMAIL_CHAR_CHECK': 145 case 'ALNUM_CHECK': 146 case 'KANA_CHECK': 147 case 'URL_CHECK': 148 case 'SPTAB_CHECK': 149 case 'ZERO_CHECK': 150 case 'ALPHA_CHECK': 151 case 'ZERO_START': 152 case 'FIND_FILE': 153 case 'NO_SPTAB': 154 case 'DIR_CHECK': 155 case 'DOMAIN_CHECK': 156 case 'FILE_NAME_CHECK': 157 case 'MOBILE_EMAIL_CHECK': 158 159 if(!is_array($this->param[$cnt])) { 160 $objErr->doFunc(array($this->disp_name[$cnt], $val), array($func)); 161 } else { 162 $max = count($this->param[$cnt]); 163 for($i = 0; $i < $max; $i++) { 164 $objSubErr = new SC_CheckError($this->param[$cnt]); 165 $objSubErr->doFunc(array($this->disp_name[$cnt], $i), array($func)); 166 if(count($objSubErr->arrErr) > 0) { 167 foreach($objSubErr->arrErr as $mess) { 168 if($mess != "") { 169 $objErr->arrErr[$val] = $mess; 170 } 171 } 172 } 173 } 174 } 175 break; 176 case 'MAX_LENGTH_CHECK': 177 case 'NUM_COUNT_CHECK': 178 if(!is_array($this->param[$cnt])) { 179 $objErr->doFunc(array($this->disp_name[$cnt], $val, $this->length[$cnt]), array($func)); 180 } else { 181 $max = count($this->param[$cnt]); 182 for($i = 0; $i < $max; $i++) { 183 $objSubErr = new SC_CheckError($this->param[$cnt]); 184 $objSubErr->doFunc(array($this->disp_name[$cnt], $i, $this->length[$cnt]), array($func)); 185 if(count($objSubErr->arrErr) > 0) { 186 foreach($objSubErr->arrErr as $mess) { 187 if($mess != "") { 188 $objErr->arrErr[$val] = $mess; 189 } 190 } 191 } 192 } 193 } 194 break; 195 // 小文字に変換 196 case 'CHANGE_LOWER': 197 $this->param[$cnt] = strtolower($this->param[$cnt]); 198 break; 199 // ファイルの存在チェック 200 case 'FILE_EXISTS': 201 if($this->param[$cnt] != "" && !file_exists($this->check_dir . $this->param[$cnt])) { 202 $objErr->arrErr[$val] = "※ " . $this->disp_name[$cnt] . "のファイルが存在しません。<br>"; 203 } 204 break; 205 default: 206 $objErr->arrErr[$val] = "※※ エラーチェック形式($func)には対応していません ※※ <br>"; 207 break; 208 } 209 } 210 211 if (isset($objErr->arrErr[$val]) && !$br) { 212 $objErr->arrErr[$val] = ereg_replace("<br>$", "", $objErr->arrErr[$val]); 213 } 214 $cnt++; 215 } 216 return $objErr->arrErr; 217 } 218 219 // 入力文字の変換 220 function convParam() { 221 /* 222 * 文字列の変換 223 * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換 224 * C : 「全角ひら仮名」を「全角かた仮名」に変換 225 * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します 226 * n : 「全角」数字を「半角(ハンカク)」に変換 227 * a : 「全角」英字を「半角」英字に変換 228 */ 229 $cnt = 0; 230 foreach ($this->keyname as $val) { 231 if(!is_array($this->param[$cnt])) { 232 if($this->convert[$cnt] != "") { 233 $this->param[$cnt] = mb_convert_kana($this->param[$cnt] ,$this->convert[$cnt]); 234 } 235 } else { 236 $max = count($this->param[$cnt]); 237 for($i = 0; $i < $max; $i++) { 238 if($this->convert[$cnt] != "") { 239 $this->param[$cnt][$i] = mb_convert_kana($this->param[$cnt][$i] ,$this->convert[$cnt]); 240 } 241 } 242 } 243 $cnt++; 244 } 245 } 246 247 // 連想配列の作成 248 function getHashArray($keyname = "") { 249 $cnt = 0; 250 foreach($this->keyname as $val) { 251 if($keyname == "" || $keyname == $val) { 252 $arrRet[$val] = $this->param[$cnt]; 253 $cnt++; 254 } 255 } 256 return $arrRet; 257 } 258 259 // DB格納用配列の作成 260 function getDbArray() { 261 $cnt = 0; 262 foreach ($this->keyname as $val) { 263 if ($this->input_db[$cnt]) { 264 $arrRet[$val] = $this->param[$cnt]; 265 } 266 $cnt++; 267 } 268 return $arrRet; 269 } 270 271 // 配列の縦横を入れ替えて返す 272 function getSwapArray($arrKey) { 273 foreach($arrKey as $keyname) { 274 $arrVal = $this->getValue($keyname); 275 $max = count($arrVal); 276 for($i = 0; $i < $max; $i++) { 277 $arrRet[$i][$keyname] = $arrVal[$i]; 278 } 279 } 280 return $arrRet; 281 } 282 283 // 項目名一覧の取得 284 function getTitleArray() { 285 return $this->disp_name; 286 } 287 288 // 項目数を返す 289 function getCount() { 290 $count = count($this->keyname); 291 return $count; 292 } 293 294 // フォームに渡す用のパラメータを返す 295 function getFormParamList() { 296 $cnt = 0; 297 foreach($this->keyname as $val) { 298 299 // キー名 300 $arrRet[$val]['keyname'] = $this->keyname[$cnt]; 301 // 文字数制限 302 $arrRet[$val]['length'] = $this->length[$cnt]; 303 // 入力値 304 if (isset($this->param[$cnt])) { 305 $arrRet[$val]['value'] = $this->param[$cnt]; 306 } 307 308 if($this->default[$cnt] != "" && $this->param[$cnt] == "") { 309 $arrRet[$val]['value'] = $this->default[$cnt]; 310 } 311 312 $cnt++; 313 } 314 return $arrRet; 315 } 316 317 // キー名の一覧を返す 318 function getKeyList() { 319 foreach($this->keyname as $val) { 320 $arrRet[] = $val; 321 } 322 return $arrRet; 323 } 324 325 // キー名と一致した値を返す 326 function getValue($keyname) { 327 $cnt = 0; 328 foreach($this->keyname as $val) { 329 if($val == $keyname) { 330 $ret = $this->param[$cnt]; 331 break; 332 } 333 $cnt++; 334 } 335 return $ret; 336 } 337 338 function splitCheckBoxes($keyname) { 339 $cnt = 0; 340 foreach($this->keyname as $val) { 341 if($val == $keyname) { 342 $this->param[$cnt] = sfSplitCheckBoxes($this->param[$cnt]); 343 } 344 $cnt++; 345 } 346 } 347 348 function splitParamCheckBoxes($keyname) { 349 $cnt = 0; 350 foreach($this->keyname as $val) { 351 if($val == $keyname) { 352 if(!is_array($this->param[$cnt])) { 353 $this->param[$cnt] = split("-", $this->param[$cnt]); 354 } 355 } 356 $cnt++; 357 } 358 } 356 359 } 357 360 ?>
Note: See TracChangeset
for help on using the changeset viewer.