source: branches/feature-module-update/data/class/SC_FormParam.php @ 16108

Revision 16108, 12.1 KB checked in by nanasess, 19 years ago (diff)

未定義変数の修正

  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8/* パラメータ管理クラス */
9class SC_FormParam {
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
104        if (!empty($db_date)) {
105            list($y, $m, $d) = split("[- ]", $db_date);
106            $this->setValue($year_key, $y);
107            $this->setValue($month_key, $m);
108            $this->setValue($day_key, $d);
109        }
110    }
111
112    // キーに対応した値をセットする。
113    function setValue($key, $param) {
114        $cnt = 0;
115        foreach($this->keyname as $val) {
116            if($val == $key) {
117                $this->param[$cnt] = $param;
118                break;
119            }
120            $cnt++;
121        }
122    }
123
124    function toLower($key) {
125        $cnt = 0;
126        foreach($this->keyname as $val) {
127            if($val == $key) {
128                $this->param[$cnt] = strtolower($this->param[$cnt]);
129                break;
130            }
131            $cnt++;
132        }
133    }
134
135    // エラーチェック
136    function checkError($br = true, $keyname = "") {
137        // 連想配列の取得
138        $arrRet = $this->getHashArray($keyname);
139        $objErr = new SC_CheckError($arrRet);
140        $cnt = 0;
141        foreach($this->keyname as $val) {
142            foreach($this->arrCheck[$cnt] as $func) {
143                if (!isset($this->param[$cnt])) $this->param[$cnt] = "";
144                switch($func) {
145                case 'EXIST_CHECK':
146                case 'NUM_CHECK':
147                case 'EMAIL_CHECK':
148                case 'EMAIL_CHAR_CHECK':
149                case 'ALNUM_CHECK':
150                case 'KANA_CHECK':
151                case 'URL_CHECK':
152                case 'SPTAB_CHECK':
153                case 'ZERO_CHECK':
154                case 'ALPHA_CHECK':
155                case 'ZERO_START':
156                case 'FIND_FILE':
157                case 'NO_SPTAB':
158                case 'DIR_CHECK':
159                case 'DOMAIN_CHECK':
160                case 'FILE_NAME_CHECK':
161                case 'MOBILE_EMAIL_CHECK':
162
163                    if(!is_array($this->param[$cnt])) {
164                        $objErr->doFunc(array($this->disp_name[$cnt], $val), array($func));
165                    } else {
166                        $max = count($this->param[$cnt]);
167                        for($i = 0; $i < $max; $i++) {
168                            $objSubErr = new SC_CheckError($this->param[$cnt]);
169                            $objSubErr->doFunc(array($this->disp_name[$cnt], $i), array($func));
170                            if(count($objSubErr->arrErr) > 0) {
171                                foreach($objSubErr->arrErr as $mess) {
172                                    if($mess != "") {
173                                        $objErr->arrErr[$val] = $mess;
174                                    }
175                                }
176                            }
177                        }
178                    }
179                    break;
180                case 'MAX_LENGTH_CHECK':
181                case 'NUM_COUNT_CHECK':
182                    if(!is_array($this->param[$cnt])) {
183                        $objErr->doFunc(array($this->disp_name[$cnt], $val, $this->length[$cnt]), array($func));
184                    } else {
185                        $max = count($this->param[$cnt]);
186                        for($i = 0; $i < $max; $i++) {
187                            $objSubErr = new SC_CheckError($this->param[$cnt]);
188                            $objSubErr->doFunc(array($this->disp_name[$cnt], $i, $this->length[$cnt]), array($func));
189                            if(count($objSubErr->arrErr) > 0) {
190                                foreach($objSubErr->arrErr as $mess) {
191                                    if($mess != "") {
192                                        $objErr->arrErr[$val] = $mess;
193                                    }
194                                }
195                            }
196                        }
197                    }
198                    break;
199                // 小文字に変換
200                case 'CHANGE_LOWER':
201                    $this->param[$cnt] = strtolower($this->param[$cnt]);
202                    break;
203                // ファイルの存在チェック
204                case 'FILE_EXISTS':
205                    if($this->param[$cnt] != "" && !file_exists($this->check_dir . $this->param[$cnt])) {
206                        $objErr->arrErr[$val] = "※ " . $this->disp_name[$cnt] . "のファイルが存在しません。<br>";
207                    }
208                    break;
209                default:
210                    $objErr->arrErr[$val] = "※※ エラーチェック形式($func)には対応していません ※※ <br>";
211                    break;
212                }
213            }
214
215            if (isset($objErr->arrErr[$val]) && !$br) {
216                $objErr->arrErr[$val] = ereg_replace("<br>$", "", $objErr->arrErr[$val]);
217            }
218            $cnt++;
219        }
220        return $objErr->arrErr;
221    }
222
223    // 入力文字の変換
224    function convParam() {
225        /*
226         *  文字列の変換
227         *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
228         *  C :  「全角ひら仮名」を「全角かた仮名」に変換
229         *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
230         *  n :  「全角」数字を「半角(ハンカク)」に変換
231         *  a :  「全角」英字を「半角」英字に変換
232         */
233        $cnt = 0;
234        foreach ($this->keyname as $val) {
235            if (!isset($this->param[$cnt])) $this->param[$cnt] = "";
236
237            if(!is_array($this->param[$cnt])) {
238                if($this->convert[$cnt] != "") {
239                    $this->param[$cnt] = mb_convert_kana($this->param[$cnt] ,$this->convert[$cnt]);
240                }
241            } else {
242                $max = count($this->param[$cnt]);
243                for($i = 0; $i < $max; $i++) {
244                    if($this->convert[$cnt] != "") {
245                        $this->param[$cnt][$i] = mb_convert_kana($this->param[$cnt][$i] ,$this->convert[$cnt]);
246                    }
247                }
248            }
249            $cnt++;
250        }
251    }
252
253    // 連想配列の作成
254    function getHashArray($keyname = "") {
255        $arrRet = array();
256        $cnt = 0;
257        foreach($this->keyname as $val) {
258            if($keyname == "" || $keyname == $val) {
259                $arrRet[$val] = isset($this->param[$cnt]) ? $this->param[$cnt] : "";
260                $cnt++;
261            }
262        }
263        return $arrRet;
264    }
265
266    // DB格納用配列の作成
267    function getDbArray() {
268        $cnt = 0;
269        foreach ($this->keyname as $val) {
270            if ($this->input_db[$cnt]) {
271                $arrRet[$val] = isset($this->param[$cnt]) ? $this->param[$cnt] : "";
272            }
273            $cnt++;
274        }
275        return $arrRet;
276    }
277
278    // 配列の縦横を入れ替えて返す
279    function getSwapArray($arrKey) {
280        foreach($arrKey as $keyname) {
281            $arrVal = $this->getValue($keyname);
282            $max = count($arrVal);
283            for($i = 0; $i < $max; $i++) {
284                $arrRet[$i][$keyname] = $arrVal[$i];
285            }
286        }
287        return $arrRet;
288    }
289
290    // 項目名一覧の取得
291    function getTitleArray() {
292        return $this->disp_name;
293    }
294
295    // 項目数を返す
296    function getCount() {
297        $count = count($this->keyname);
298        return $count;
299    }
300
301    // フォームに渡す用のパラメータを返す
302    function getFormParamList() {
303        $cnt = 0;
304        foreach($this->keyname as $val) {
305
306            // キー名
307            $arrRet[$val]['keyname'] = $this->keyname[$cnt];
308            // 文字数制限
309            $arrRet[$val]['length'] = $this->length[$cnt];
310            // 入力値
311            if (isset($this->param[$cnt])) {
312                $arrRet[$val]['value'] = $this->param[$cnt];
313            }
314
315            /*
316             * :XXX: isset() でチェックできない
317             */
318            if (empty($this->param[$cnt])) $this->param[$cnt] = "";
319
320            if($this->default[$cnt] != "" && $this->param[$cnt] == "") {
321                $arrRet[$val]['value'] = $this->default[$cnt];
322            }
323
324            $cnt++;
325        }
326        return $arrRet;
327    }
328
329    // キー名の一覧を返す
330    function getKeyList() {
331        foreach($this->keyname as $val) {
332            $arrRet[] = $val;
333        }
334        return $arrRet;
335    }
336
337    // キー名と一致した値を返す
338    function getValue($keyname) {
339        $cnt = 0;
340        foreach($this->keyname as $val) {
341            if($val == $keyname) {
342                $ret = isset($this->param[$cnt]) ? $this->param[$cnt] : "";
343                break;
344            }
345            $cnt++;
346        }
347        return $ret;
348    }
349
350    function splitCheckBoxes($keyname) {
351        $cnt = 0;
352        foreach($this->keyname as $val) {
353            if($val == $keyname) {
354                $this->param[$cnt] = sfSplitCheckBoxes($this->param[$cnt]);
355            }
356            $cnt++;
357        }
358    }
359
360    function splitParamCheckBoxes($keyname) {
361        $cnt = 0;
362        foreach($this->keyname as $val) {
363            if($val == $keyname) {
364                if(isset($this->param[$cnt]) && !is_array($this->param[$cnt])) {
365                    $this->param[$cnt] = split("-", $this->param[$cnt]);
366                }
367            }
368            $cnt++;
369        }
370    }
371}
372?>
Note: See TracBrowser for help on using the repository browser.