| 1 | <?php |
---|
| 2 | /* |
---|
| 3 | * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved. |
---|
| 4 | * |
---|
| 5 | * http://www.lockon.co.jp/ |
---|
| 6 | */ |
---|
| 7 | require_once("../require.php"); |
---|
| 8 | |
---|
| 9 | require_once("../order/index_csv.php"); |
---|
| 10 | |
---|
| 11 | $arrCVSCOL = array( |
---|
| 12 | |
---|
| 13 | ); |
---|
| 14 | |
---|
| 15 | $arrCVSTITLE = array( |
---|
| 16 | '回答ID', |
---|
| 17 | '質問ID', |
---|
| 18 | '回答日時', |
---|
| 19 | '回答名', |
---|
| 20 | '顧客名1', |
---|
| 21 | '顧客名2', |
---|
| 22 | '顧客名カナ1', |
---|
| 23 | '顧客名カナ2', |
---|
| 24 | '郵便番号1', |
---|
| 25 | '郵便番号2', |
---|
| 26 | '都道府県', |
---|
| 27 | '住所1', |
---|
| 28 | '住所2', |
---|
| 29 | '電話番号1', |
---|
| 30 | '電話番号2', |
---|
| 31 | '電話番号3', |
---|
| 32 | 'メールアドレス', |
---|
| 33 | '回答1', |
---|
| 34 | '回答2', |
---|
| 35 | '回答3', |
---|
| 36 | '回答4', |
---|
| 37 | '回答5', |
---|
| 38 | '回答6' |
---|
| 39 | ); |
---|
| 40 | |
---|
| 41 | |
---|
| 42 | class LC_Page { |
---|
| 43 | var $cnt_question; |
---|
| 44 | |
---|
| 45 | var $ERROR; |
---|
| 46 | var $ERROR_COLOR; |
---|
| 47 | var $MESSAGE; |
---|
| 48 | |
---|
| 49 | var $QUESTION_ID; |
---|
| 50 | |
---|
| 51 | var $arrActive; |
---|
| 52 | var $arrQuestion; |
---|
| 53 | var $arrSession; |
---|
| 54 | |
---|
| 55 | function LC_Page() { |
---|
| 56 | $this->tpl_mainpage = 'contents/inquiry.tpl'; |
---|
| 57 | $this->tpl_mainno = 'contents'; |
---|
| 58 | $this->tpl_subnavi = 'contents/subnavi.tpl'; |
---|
| 59 | $this->tpl_subno = "inquiry"; |
---|
| 60 | $this->tpl_subtitle = 'アンケート管理'; |
---|
| 61 | } |
---|
| 62 | } |
---|
| 63 | |
---|
| 64 | $conn = new SC_DBConn(); |
---|
| 65 | $objPage = new LC_Page(); |
---|
| 66 | $objView = new SC_AdminView(); |
---|
| 67 | $objSess = new SC_Session(); |
---|
| 68 | |
---|
| 69 | // 認証可否の判定 |
---|
| 70 | sfIsSuccess($objSess); |
---|
| 71 | |
---|
| 72 | $arrActive = array( "0"=>"稼働", "1"=>"非稼働" ); |
---|
| 73 | $arrQuestion = array( "0"=>"使用しない", "1"=>"テキストエリア", "2"=>"テキストボックス" |
---|
| 74 | , "3"=>"チェックボックス", "4"=>"ラジオボタン" |
---|
| 75 | ); |
---|
| 76 | |
---|
| 77 | $sql = "SELECT *, cast(substring(create_date, 1, 10) as date) as disp_date FROM dtb_question WHERE del_flg = 0 ORDER BY question_id"; |
---|
| 78 | $result = $conn->getAll($sql); |
---|
| 79 | $objPage->list_data = $result; |
---|
| 80 | |
---|
| 81 | |
---|
| 82 | if ( $_GET['mode'] == 'regist' ){ |
---|
| 83 | |
---|
| 84 | for ( $i=0; $i<count($_POST["question"]); $i++ ) { |
---|
| 85 | $_POST['question'][$i]['name'] = mb_convert_kana( trim ( $_POST['question'][$i]['name'] ), "K" ); |
---|
| 86 | for ( $j=0; $j<count( $_POST['question'][$i]['option'] ); $j++ ){ |
---|
| 87 | $_POST['question'][$i]['option'][$j] = mb_convert_kana( trim ( $_POST['question'][$i]['option'][$j] ) ); |
---|
| 88 | } |
---|
| 89 | } |
---|
| 90 | |
---|
| 91 | $error = lfErrCheck(); |
---|
| 92 | |
---|
| 93 | if ( ! $error ){ |
---|
| 94 | |
---|
| 95 | if ( ! is_numeric($_POST['question_id']) ){ |
---|
| 96 | $objQuery = new SC_Query(); |
---|
| 97 | |
---|
| 98 | //登録 |
---|
| 99 | $value = serialize($_POST); |
---|
| 100 | if (DB_TYPE == "pgsql") { |
---|
| 101 | $question_id = $objQuery->nextval('dtb_question', 'question_id'); |
---|
| 102 | } |
---|
| 103 | |
---|
| 104 | $sql_val = array( $value, $_POST['title'] ,$question_id ); |
---|
| 105 | $conn->query("INSERT INTO dtb_question ( question, question_name, question_id, create_date) VALUES (?, ?, ?, now())", $sql_val ); |
---|
| 106 | $objPage->MESSAGE = "登録が完了しました"; |
---|
| 107 | |
---|
| 108 | if (DB_TYPE == "mysql") { |
---|
| 109 | $question_id = $objQuery->nextval('dtb_question', 'question_id'); |
---|
| 110 | } |
---|
| 111 | |
---|
| 112 | $objPage->QUESTION_ID = $question_id; |
---|
| 113 | sfReload(); |
---|
| 114 | } else { |
---|
| 115 | //編集 |
---|
| 116 | $value = serialize($_POST); |
---|
| 117 | $sql_val = array( $value, $_POST['title'] ,$_POST['question_id'] ); |
---|
| 118 | $conn->query("UPDATE dtb_question SET question = ?, question_name = ? WHERE question_id = ?", $sql_val ); |
---|
| 119 | $objPage->MESSAGE = "編集が完了しました"; |
---|
| 120 | $objPage->QUESTION_ID = $_POST['question_id']; |
---|
| 121 | sfReload(); |
---|
| 122 | } |
---|
| 123 | } else { |
---|
| 124 | |
---|
| 125 | //エラー表示 |
---|
| 126 | $objPage->ERROR = $error; |
---|
| 127 | $objPage->QUESTION_ID = $_REQUEST['question_id']; |
---|
| 128 | $objPage->ERROR_COLOR = lfGetErrColor($error, ERR_COLOR); |
---|
| 129 | |
---|
| 130 | } |
---|
| 131 | } elseif ( ( $_GET['mode'] == 'delete' ) && ( sfCheckNumLength($_GET['question_id']) ) ){ |
---|
| 132 | |
---|
| 133 | $sql = "UPDATE dtb_question SET del_flg = 1 WHERE question_id = ?"; |
---|
| 134 | $conn->query( $sql, array( $_GET['question_id'] ) ); |
---|
| 135 | sfReload(); |
---|
| 136 | |
---|
| 137 | } elseif ( ( $_GET['mode'] == 'csv' ) && ( sfCheckNumLength($_GET['question_id']) ) ){ |
---|
| 138 | |
---|
| 139 | $head = sfGetCSVList($arrCVSTITLE); |
---|
| 140 | $list_data = $conn->getAll("SELECT result_id,question_id,question_date,question_name,name01,name02,kana01,kana02,zip01,zip02,pref,addr01,addr02,tel01,tel02,tel03,mail01,question01,question02,question03,question04,question05,question06 FROM dtb_question_result WHERE del_flg = 0 AND question_id = ? ORDER BY result_id ASC",array($_GET['question_id'])); |
---|
| 141 | $data = ""; |
---|
| 142 | for($i = 0; $i < count($list_data); $i++) { |
---|
| 143 | // 各項目をCSV出力用に変換する。 |
---|
| 144 | $data .= lfMakeCSV($list_data[$i]); |
---|
| 145 | } |
---|
| 146 | // CSVを送信する |
---|
| 147 | sfCSVDownload($head.$data); |
---|
| 148 | exit; |
---|
| 149 | |
---|
| 150 | } else { |
---|
| 151 | |
---|
| 152 | if ( is_numeric($_GET['question_id']) ){ |
---|
| 153 | |
---|
| 154 | $sql = "SELECT question FROM dtb_question WHERE question_id = ?"; |
---|
| 155 | $result = $conn->getOne($sql, array($_GET['question_id'])); |
---|
| 156 | |
---|
| 157 | if ( $result ){ |
---|
| 158 | $_POST = unserialize( $result ); |
---|
| 159 | $objPage->QUESTION_ID = $_GET['question_id']; |
---|
| 160 | } |
---|
| 161 | } |
---|
| 162 | } |
---|
| 163 | |
---|
| 164 | |
---|
| 165 | |
---|
| 166 | |
---|
| 167 | //各ページ共通 |
---|
| 168 | $objPage->cnt_question = 6; |
---|
| 169 | $objPage->arrActive = $arrActive; |
---|
| 170 | $objPage->arrQuestion = $arrQuestion; |
---|
| 171 | |
---|
| 172 | |
---|
| 173 | //---- ページ表示 |
---|
| 174 | $objView->assignobj($objPage); |
---|
| 175 | $objView->display(MAIN_FRAME); |
---|
| 176 | |
---|
| 177 | |
---|
| 178 | // ------------ エラーチェック処理部 ------------ |
---|
| 179 | |
---|
| 180 | function lfGetErrColor( $arr, $err_color ){ |
---|
| 181 | |
---|
| 182 | foreach ( $arr as $key=>$val ) { |
---|
| 183 | if ( is_string($val) && strlen($val) > 0 ){ |
---|
| 184 | $return[$key] = $err_color; |
---|
| 185 | } elseif ( is_array( $val ) ) { |
---|
| 186 | $return[$key] = lfGetErrColor ( $val, $err_color); |
---|
| 187 | } |
---|
| 188 | } |
---|
| 189 | return $return; |
---|
| 190 | } |
---|
| 191 | |
---|
| 192 | |
---|
| 193 | // ------------ エラーチェック処理部 ------------ |
---|
| 194 | |
---|
| 195 | function lfErrCheck (){ |
---|
| 196 | |
---|
| 197 | $objErr = new SC_CheckError(); |
---|
| 198 | $errMsg = ""; |
---|
| 199 | |
---|
| 200 | $objErr->doFunc( array( "稼働・非稼働", "active" ), array( "SELECT_CHECK" ) ); |
---|
| 201 | |
---|
| 202 | $_POST["title"] = mb_convert_kana( trim ( $_POST["title"] ), "K" ); |
---|
| 203 | $objErr->doFunc( array( "アンケート名", "title" ), array( "EXIST_CHECK" ) ); |
---|
| 204 | |
---|
| 205 | $_POST["contents"] = mb_convert_kana( trim ( $_POST["contents"] ), "K" ); |
---|
| 206 | $objErr->doFunc( array( "アンケート内容" ,"contents", "3000" ), array( "EXIST_CHECK", "MAX_LENGTH_CHECK" ) ); |
---|
| 207 | |
---|
| 208 | |
---|
| 209 | if ( ! $_POST['question'][0]["name"] ){ |
---|
| 210 | $objErr->arrErr['question'][0]["name"] = "1つめの質問名が入力されていません"; |
---|
| 211 | } |
---|
| 212 | |
---|
| 213 | // チェックボックス、ラジオボタンを選択した場合は最低1つ以上項目を記入させる。 |
---|
| 214 | for( $i = 0; $i < count( $_POST["question"] ); $i++ ) { |
---|
| 215 | |
---|
| 216 | if ( $_POST["question"][$i]["kind"] ) { |
---|
| 217 | if (strlen($_POST["question"][$i]["name"]) == 0) { |
---|
| 218 | $objErr->arrErr["question"][$i]["name"] = "タイトルを入力して下さい。"; |
---|
| 219 | } else if ( strlen($_POST["question"][$i]["name"]) > STEXT_LEN ) { |
---|
| 220 | $objErr->arrErr["question"][$i]["name"] = "タイトルは". STEXT_LEN ."字以内で入力して下さい。"; |
---|
| 221 | } |
---|
| 222 | } |
---|
| 223 | |
---|
| 224 | if( $_POST["question"][$i]["kind"] == 3 || $_POST["question"][$i]["kind"] == 4 ) { |
---|
| 225 | |
---|
| 226 | $temp_data = array(); |
---|
| 227 | for( $j = 0; $j < count( $_POST["question"][$i]["option"] ); $j++ ) { |
---|
| 228 | |
---|
| 229 | // 項目間(テキストボックス)があいていたら詰めていく |
---|
| 230 | if( strlen( $_POST["question"][$i]["option"][$j] ) > 0 ) $temp_data[] = mb_convert_kana( trim ( $_POST["question"][$i]["option"][$j] ), "asKVn" ); |
---|
| 231 | |
---|
| 232 | } |
---|
| 233 | |
---|
| 234 | $_POST["question"][$i]["option"] = $temp_data; |
---|
| 235 | |
---|
| 236 | if( ( strlen( $_POST["question"][$i] ["option"][0] ) == 0 ) || ( strlen( $_POST["question"][$i] ["option"][0] ) > 0 |
---|
| 237 | && strlen( $_POST["question"][$i] ["option"][1] ) == 0 ) ) $objErr->arrErr["question"][$i]['kind'] = "下記の2つ以上の項目に記入してください。"; |
---|
| 238 | } |
---|
| 239 | } |
---|
| 240 | |
---|
| 241 | return lfGetArrInput( $objErr->arrErr ); |
---|
| 242 | |
---|
| 243 | } |
---|
| 244 | |
---|
| 245 | |
---|
| 246 | function lfGetArrInput( $arr ){ |
---|
| 247 | // 値が入力された配列のみを返す |
---|
| 248 | |
---|
| 249 | if ( is_array($arr) ){ |
---|
| 250 | foreach ( $arr as $key=>$val ) { |
---|
| 251 | if ( is_string($val) && strlen($val) > 0 ){ |
---|
| 252 | $return[$key] = $val; |
---|
| 253 | } elseif ( is_array( $val ) ) { |
---|
| 254 | $data = lfGetArrInput ( $val ); |
---|
| 255 | if ( $data ){ |
---|
| 256 | $return[$key] = $data; |
---|
| 257 | } |
---|
| 258 | } |
---|
| 259 | } |
---|
| 260 | } |
---|
| 261 | return $return; |
---|
| 262 | } |
---|
| 263 | ?> |
---|