setDatabaseCharacter("SJIS"); $db->setOutputCharacter("EUC-JP"); if ($db->getConnectionID() == false) { exit; } $hsession = new HSession(); // システム共通オブジェクト作成 $request = new HttpRequest(); // リクエストオブジェクト $error = new ErrorManager($db); // エラーオブジェクト $acl = new ACLManager($db); // アクセスコントロールリストオブジェクト $suid=$request->getParameter("suid"); // 20150422 ADD $acl->restoreSession($suid); // Cookie SUIDよりセッション情報を取得 $enqid=$request->getParameter("enqid"); // 20150422 ADD // 管理者グループのみログイン許可 $acl->setAllowLoginUserGroupId(LOGIN_USER_GROUP_ID_ADMINISTRATOR); // ログインチェック // ログイン画面以外で非ログイン状態の場合はログインページへ //if (!$acl->isLogin() && $request->getParameter("cmd") <> "login") { // include(SYS_APPDIR . "/page/login.html"); // exit; //} // リクエストに応じて処理を振り分けます switch ($request->getParameter("cmd")) { case "login": // ログイン case "logout": // ログアウト include(SYS_APPDIR . "/modules/logincontrol.php"); break; case "fieldItemDetail": case "fieldItemList": case "deleteFieldItemData": case "fieldDetail": case "fieldList": //項目一覧 case "deleteFieldData": // 項目データ削除 case "DeleteField": // 項目データ削除 //include("fieldcontrol.php"); $ret = fieldControl_main(); break; case "email": // case "Delete": // case "deleteItem": // case "deleteRecord": // case "addItem": // テーブルにデータ新規作成 (into TabXXX) case "tableDetail": // テーブル追加 case "tableList": // テーブル一覧 default: //include("tablecontrol.php"); $ret = enqitemControl_main(); break; } // ==================================================================================================== function enqitemControl_main() { global $PHP_SELF,$db,$hsession,$request,$error,$acl,$enqid,$userId; // アイテム管理クラス初期化 $item = new ItemManager($db, $acl); $itemId = $request->getParameter("itemId"); $extnum = new ExtNumeric($db); $extdate = new ExtDate($db); $cmd = $request->getParameter("cmd"); $act = $request->getParameter("act"); $preview = $request->getParameter("preview"); if($request->getParameter("x")){ $x = $request->getParameter("x"); $y = $request->getParameter("y"); $z = $request->getParameter("z"); $angou = new Angou(); $a = $angou->AngouMelting($x,$y,$z); $enqid = $a["enqid"]; $userId = $a["userId"]; if(!is_int($enqid)){ $error->setMessage("不適切なIDなため表示できません。"); include(SYS_APPDIR . "/page/errorPage.html"); exit; } if($userId && !is_int($userId)){ $error->setMessage("不適切なIDなため表示できません。"); include(SYS_APPDIR . "/page/errorPage.html"); exit; } //$UserTabId = $a["UserTabId"]; // アンケート継続チェック if (!$preview) { $continue_enqid = _checkEnqueteCookie(); if (!is_null($continue_enqid)) { $enqid = $continue_enqid; } } } if ($enqid == '') { $mess="エラー"; message($mess); exit; } // 送信ユーザID取得 // enqidから送信ユーザIDを取得します // 作成したユーザのみがアンケートを送れるという前提です // 作成したユーザ以外が送れる場合、urlを作成時に設定する必要があります $send_userid = $item->getMakeUserID($enqid); $item->acl->setUserId($send_userid); /* if(!$request->getParameter("act_submit_kakunin")){ $field = $hsession->getVar("field"); } else{ for ($i = 1; $i <= ENQ_MAX_FIELD; $i++) { $field[$i] = $request->getParameter("field[".$i."]"); } $hsession->setVar("field",$field,50); }*/ switch ($cmd) { case "addItem": // データ更新 if ($request->getParameter("act_submit")) { // フォームデータ取得 // フォームのパラメータ値は f + 項目IDとなっているのでループで配列にセットします if($request->getParameter("act_submit_kakunin")){ for ($i = 1; $i <= ENQ_MAX_FIELD; $i++) { //if($f.$i){ // DEL 20150422 if ($request->getParameter("f" . $i)) { // ADD 20150422 if($item->getFieldParameter($i, "atb")==FIELD_ATB_POSTALCODE && $item->getFieldParameter($i, "style")==FIELD_STYLE_TEXT){ $field[$i] = $request->getParameter("f" . $i."_1[0]")."".$request->getParameter("f" . $i."_1[1]"); } elseif( ($item->getFieldParameter($i, "atb")==FIELD_ATB_TELEPHONE || $item->getFieldParameter($i, "atb")==FIELD_ATB_FAX) && $item->getFieldParameter($i, "style")==FIELD_STYLE_TEXT){ $field[$i] = $request->getParameter("f" . $i."_1[0]")."-".$request->getParameter("f" . $i."_1[1]")."-".$request->getParameter("f" . $i."_1[2]"); } elseif($item->getFieldParameter($i, "atb")==FIELD_ATB_DATE && $item->getFieldParameter($i, "style")==FIELD_STYLE_TEXT){ $field[$i] = $request->getParameter("f" . $i."_1[0]")."/".$request->getParameter("f" . $i."_1[1]")."/".$request->getParameter("f" . $i."_1[2]"); } elseif($item->getFieldParameter($i, "style")==FIELD_STYLE_CHECKBOX ){ if($item->getFieldParameter($i, "atb")==FIELD_ATB_PREFECTURE){ $cnt = 47; } elseif($item->getFieldParameter($i, "atb")==FIELD_ATB_SEX){ $cnt = 2; } else{ $cnt=$item->getCountFieldItem($i); } for($j=0;$j<$cnt;$j++){ if($request->getParameter("f" . $i."_[".$j."]")){ if($field[$i]){ $field[$i] .= " "; } $field[$i].=$request->getParameter("f" . $i."_[".$j."]"); // $k = $j+1; // if($request->getParameter("f" . $i."_[".$k."]")){ // $field[$i].=" "; // } } } } else{ $field[$i] = $request->getParameter("f" . $i); } } } //print_r($field); if ($item->checkFields($field,$itemId) == false) { // エラー処理 $error->setMessage($item->error->getMessage()); $error->setMessageId($item->error->getMessageId()); include(SYS_APPDIR . "/page/errorPage.html"); exit; } // print_r($field); include("./enqitemDetailEdit_kakunin.html"); break; } else{ // echo "ENTER"; $flag = $request->getParameter("flag"); $item->setFlagId($flag); for ($i = 1; $i <= ENQ_MAX_FIELD; $i++) { $field[$i] = $request->getParameter("field[".$i."]"); } // print_r($field); // 設計時のプレビューの際には登録は行わない if (!$preview) { $ret = $item->addEnqItem($itemId,$enqid,$field,$userId); /* if ($ret == false) { // エラー処理 $error->setMessage($item->error->getMessage()); $error->setMessageId($item->error->getMessageId()); include(SYS_APPDIR . "/page/errorPage.html"); exit; }*/ } } // 次のアンケートチェック $sql = "select next_enqid, thanks_url from Enqcontrols where enqid=".$enqid; $dbrst = new SybQuery($db); $ret = $dbrst->sendQuery($sql); if ($ret && $dbrst->getEOF() == false) { $rstrow = $dbrst->doFetchArray(); $next_enqid = $rstrow['next_enqid']; $thanks_url = $rstrow['thanks_url']; $dbrst->closeQuery(); if ($next_enqid <> '') { // 次のアンケートURL計算 $angou = new Angou(); if ($userId) { $next_url = $angou->makeUnquitURL($next_enqid, $userId, $next_enqid); } else { $next_url = $angou->makeUnquitURL(0, 0, $next_enqid); } } else { $next_url = null; } } else { $next_url = null; $thanks_url = null; } if ($next_url == '') { // Thanksページ if (!$preview) { _destroyEnqueteCookie(); } if ($thanks_url == '') { $thanks_url = 'page/thanks.html'; } header("Location: " . $thanks_url); return; } else { // 次のURLの設定がある場合、途中でブラウザを閉じてもその // 次のURLから再開できるようにcookieに次回アンケートIDを保持します if (!$preview) { _registEnqueteCookie($enqid, $next_enqid); } // プレビューフラグ if ($preview) { $next_url .= '&preview=true'; } header("Location: " . $next_url); return; } } if($request->getParameter("act_back")){ include("./enqitemDetailEdit_pub.html"); } break; default: if($request->getParameter("act_back")){ include("./enqitemDetailEdit_pub.html"); } //日付制限 2005-06-20 $x = $request->getParameter("x"); $y = $request->getParameter("y"); $z = $request->getParameter("z"); $act = $request->getParameter("act"); $sql = "select date_format(startdate,'%Y%m%d%H%i') sdate,date_format(startdate,'%Y/%m/%d %H:%i') sdate1,"; $sql.= " date_format(enddate,'%Y%m%d%H%i') edate,date_format(enddate,'%Y/%m/%d %H:%i') edate1 "; $sql.= ",enq_passwd"; $sql.= " from Enqcontrols where enqid=".$enqid; //echo $sql; $dbrst = new SybQuery($db); $ret = $dbrst->sendQuery($sql); if ($ret && $dbrst->getEOF() == false) { $rstrow = $dbrst->doFetchArray(); $enqname = $rstrow["name"]; $startdate = $rstrow["sdate"]; $startdate1 = $rstrow["sdate1"]; $enddate = $rstrow["edate"]; $enddate1 = $rstrow["edate1"]; $enq_passwd = $rstrow['enq_passwd']; $dbrst->closeQuery(); } if($x && $y && $z){ // パスワード認証チェック if ($enq_passwd <> '') { if ($request->getParameter('act_passwd')) { if ($request->getParameter('passwd') == $enq_passwd) { // 認証フラグを立てて次へ } else { $message = "パスワードが一致しません。もう一度入力してください。"; include("./enqitemPassword.html"); return null; } } else { include("./enqitemPassword.html"); return null; } } else { // 認証パスワード設定無しはそのまま次へ } if( $startdate<=date(YmdHi) && $enddate>=date(YmdHi) ){ include("./enqitemDetailEdit_pub.html"); } elseif($startdate>date(YmdHi)){ $mess="このアンケートの開始日は「".$startdate1."」です。
もうしばらくお待ち下さい。"; message($mess); } else{ $mess="このアンケートの回答は締め切りました。"; message($mess); } } elseif($act=="off"){ if($x && !$y && !$z && $act){ // パスワード認証チェック if ($enq_passwd <> '') { if ($request->getParameter('act_passwd')) { if ($request->getParameter('passwd') == $enq_passwd) { // 認証フラグを立てて次へ } else { $message = "パスワードが一致しません。もう一度入力してください。"; include("./enqitemPassword.html"); return null; } } else { include("./enqitemPassword.html"); return null; } } else { // 認証パスワード設定無しはそのまま次へ } if( $startdate<=date(YmdHi) && $enddate>=date(YmdHi) ){ include("./enqitemDetailEdit_pub.html"); } elseif($startdate>date(YmdHi)){ $mess="このアンケートの開始日は「".$startdate1."」です。
もうしばらくお待ち下さい。"; message($mess); } else{ $mess="このアンケートの回答は締め切りました。"; message($mess); } } else{ $mess="エラー"; message($mess); } } else{ $mess="エラー"; message($mess); } break; } } function message($mess) { echo ""; echo ""; echo "
"; echo ""; echo ""; echo "
"; echo $mess; echo "
"; echo ""; } /** * アンケートトークンを登録します * * @param integer $enqid 現在のアンケートID * @param integer $next_enqid 次回アンケートID */ function _registEnqueteCookie($enqid, $next_enqid) { // Cookie生存期間は1日に設定 $lifeTime = time() + (86400 * 1); setcookie(ENQ_CONTINUE_TOKEN_COOKIE_NAME, $next_enqid, $lifeTime); } /** * アンケートトークンを削除します */ function _destroyEnqueteCookie() { setcookie(ENQ_CONTINUE_TOKEN_COOKIE_NAME, null, (time() - 3600)); } /** * アンケートトークンを取得します * * @return integer アンケートトークン or null */ function _checkEnqueteCookie() { global $db; $name = ENQ_CONTINUE_TOKEN_COOKIE_NAME; if (isset($_COOKIE[$name]) && $_COOKIE[$name] <> '') { $enqid = $_COOKIE[$name]; $sql = "select enqid from Enqcontrols where enqid=".$enqid; $dbrst = new SybQuery($db); $ret = $dbrst->sendQuery($sql); if ($ret && $dbrst->getEOF() == false) { $rstrow = $dbrst->doFetchArray(); $temp_enqid = $rstrow['enqid']; $dbrst->closeQuery(); return $enqid; } else { return null; } } else { return null; } }