"", "result" => "", "form" => "", ); //---------------------------- // request parameter //---------------------------- $qProjectID = isset($_SESSION["project_id"]) ? $_SESSION["project_id"] : REQ_NON; $qToken = isset($_REQUEST["q_token"]) ? $_REQUEST["q_token"] : REQ_NON; $qID = isset($_REQUEST["q_id"]) ? $_REQUEST["q_id"] : REQ_NON; $qTitle = isset($_REQUEST["q_title"]) ? $_REQUEST["q_title"] : REQ_NON; $qProp = isset($_REQUEST["q_prop"]) ? $_REQUEST["q_prop"] : REQ_NON; $qPublic = isset($_REQUEST["q_public"]) ? $_REQUEST["q_public"] : REQ_NON; $qComment = isset($_REQUEST["q_comment"]) ? $_REQUEST["q_comment"] : REQ_NON; $qCopyID = isset($_REQUEST["q_copy_id"]) ? $_REQUEST["q_copy_id"] : REQ_NON; $qFileName = isset($_FILES["q_file"]["name"]) ? $_FILES["q_file"]["name"] : REQ_NON; $qFileTmpName = isset($_FILES["q_file"]["tmp_name"]) ? $_FILES["q_file"]["tmp_name"] : REQ_NON; $qFileType = isset($_FILES["q_file"]["type"]) ? $_FILES["q_file"]["type"] : REQ_NON; $qFileError = isset($_FILES["q_file"]["error"]) ? $_FILES["q_file"]["error"] : REQ_NON; $qFileSize = isset($_FILES["q_file"]["size"]) ? $_FILES["q_file"]["size"] : REQ_NON; //---------------------------- // judge post //---------------------------- $isPost = ($qToken !== REQ_NON); //---------------------------- // set types //---------------------------- Util::setType($qProjectID, "int"); Util::setType($qToken, "string"); Util::setType($qID, "int"); Util::setType($qTitle, "string"); Util::setType($qProp, "int"); Util::setType($qPublic, "int"); Util::setType($qComment, "string"); Util::setType($qFileName, "string"); Util::setType($qFileTmpName, "string"); Util::setType($qFileType, "string"); Util::setType($qFileError, "int"); Util::setType($qFileSize, "int"); //---------------------------- // Auth-Before validate //---------------------------- if ( $result === RES_OK ){ if ( $isPost ){ if ( ! Validate::isToken($qToken, "q_token") ){ $result = RES_NG; $gResult->push("{$WORD($wk, 1)}"); } if ( ! Validate::isNumeric($qID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 2)}"); } if ( ! Validate::isNumeric($qProjectID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 3)}"); } } else { if ( ! Validate::isNumeric($qID) ){ $qID = INIT_ID; } } } if ( $result === RES_OK ){ if ( Validate::isNumeric($qCopyID) ){ $mode = MODE_COPY; $qID = INIT_ID; } else if ( $qID === INIT_ID ){ $mode = MODE_NEW; } else { $mode = MODE_EDIT; } } //---------------------------- // Auth //---------------------------- if ( $result === RES_OK ){ $auth = Auth::instance("data"); if ( ! $auth->write($qID, $qProjectID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 4)}"); } // コピー元が読み込み可能か確認する if ( $mode === MODE_COPY && ! $auth->read($qCopyID, NULL) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 4)}"); } } //---------------------------- // Auth-After validate //---------------------------- if ( $result === RES_OK ){ if ( $isPost ){ if ( $qFileSize > 0 ){ if ( $result === RES_OK ){ if ( $qFileError !== UPLOAD_ERR_OK ){ $result = RES_NG; $gResult->push("{$WORD($wk, 5)} (Code:{$qFileError})"); } } // ファイル確認 if ( $result === RES_OK ){ if ( ! file_exists($qFileTmpName) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 6)}"); } } } if ( ! Validate::inKeyArray($qPublic, DAO::T_DATA_PUBLIC_TABLE()) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 7)}"); } } } //---------------------------- // function //---------------------------- //---------------------------- // process //---------------------------- if ( $result === RES_OK ){ DAO::begin(); $objDAOData = DAO::instance("data"); $objDAOProjectData = DAO::instance("project_data"); $objViewData = View::instance("data"); // 更新 -------------------- if ( $isPost ){ // 更新 -------------------- if ( $result === RES_OK ){ if ( ! Validate::isString($qTitle) ){ $qTitle = ($qFileSize > 0) ? $qFileName : NULL; } $qType = ($qFileSize > 0) ? $qFileType : NULL; $resDAOData = $objDAOData->register($qID, DAO::T_DATA_STATE_NORMAL, $qPublic, $qType, $qTitle, $qProp, $qComment, $qProjectID, User::get("id")); $result = $resDAOData["result"]; if ( $result === RES_OK ){ $qID = $resDAOData["id"]; } } if ( $result === RES_OK ){ if ( $qFileSize > 0 ){ $dataID = $resDAOData["id"]; if ( rename($qFileTmpName, Setting::get("PATH_DATA_DATA") . "/{$dataID}") === FALSE ){ $result = RES_NG; $gResult->push("{$WORD($wk, 8)} (Code:003)"); } } } if ( $result === RES_OK ){ if ( $mode === MODE_NEW || $mode === MODE_COPY ){ $resDAOProjectData = $objDAOProjectData->register($qProjectID, $qID, User::get("id")); $result = $resDAOProjectData["result"]; } } if ( $result === RES_OK ){ switch ( $mode ){ case MODE_NEW: $gResult->push("{$WORD($wk, 9)}"); break; case MODE_EDIT: $gResult->push("{$WORD($wk, 10)}"); break; case MODE_COPY: $gResult->push("{$WORD($wk, 10)}"); break; } } else { if ( isset($resDAOData["error"]) && $resDAOData["error"] === DAO_data::ERROR_TITLE_DUPLICATE ){ $isPostRetry = TRUE; $gResult->push("{$WORD($wk, 11)}"); } else { $gResult->push("{$WORD($wk, 12)}"); } } } else { if ( $result === RES_OK ){ switch ( $mode ){ // 新規登録 -------------------- case MODE_NEW: $qPublic = $objDAOData->getInit("t_data_public"); $qComment = $objDAOData->getInit("t_data_comment"); $qProp = $objDAOData->getInit("t_data_props"); break; // 編集 -------------------- case MODE_EDIT: $objDAOData->setAuth($auth); $resDAOData = $objDAOData->get($qID, DAO::T_DATA_STATE_NORMAL); $result = $resDAOData["result"]; if ( $result === RES_OK ){ $dataData = $resDAOData["data"][0]; $qPublic = $dataData["t_data_public"]; $qComment = $dataData["t_data_comment"]; $qTitle = $dataData["t_data_title"]; $qProp = $dataData["t_data_props"]; $arrTabRight[] = $objViewData->title($dataData); } else { $result = RES_NG; $gResult->push("{$WORD($wk, 13)}"); } break; // コピー -------------------- case MODE_COPY: $objDAOData->setAuth($auth); $resDAOData = $objDAOData->get($qCopyID, DAO::T_DATA_STATE_NORMAL); $result = $resDAOData["result"]; if ( $result === RES_OK ){ $dataData = $resDAOData["data"][0]; $qPublic = $dataData["t_data_public"]; $qComment = $dataData["t_data_comment"]; $qTitle = $dataData["t_data_title"]; $qProp = $dataData["t_data_props"]; $arrTabRight[] = $objViewData->title($dataData); } else { $result = RES_NG; $gResult->push("{$WORD($wk, 13)}"); } break; } } } DAO::end($result); } //---------------------------- // data //---------------------------- //---------------------------- // html //---------------------------- { if ( $isPost && $result !== RES_OK && $isPostRetry ){ $isPost = FALSE; $result = RES_OK; } // menu ---------------------------------------------------------------- if ( $result !== RES_NG ){ $arrMenu = array(); //----- $arrMenu[1] = $objViewData->tab(View_data::TAB_LIST, $auth, $qProjectID); switch ( $mode ){ case MODE_NEW: case MODE_COPY: $arrMenu[0] = $objViewData->tab(View_data::TAB_NEW, $auth, $qProjectID); break; case MODE_EDIT: $arrMenu[0] = $objViewData->tab(View_data::TAB_EDIT, $auth, $qProjectID, $qID); break; } //----- $arrHtml["menu"] = Printer::menuTab($arrMenu, 0, $arrTabRight); } // title --------------------------------------------------------------- switch ( $mode ){ case MODE_NEW: case MODE_COPY: $title = "{$WORD($wk, 14)}"; break; case MODE_EDIT: $title = "{$WORD($wk, 15)}"; break; } // form ---------------------------------------------------------------- if ( $result === RES_OK ){ if ( $isPost ){ // アクション(OK) $arrHtml["form"] = Printer::link("OK", "btn btn-default", NULL, NULL, "./"); header("Location: ./?q_project_id={$qProjectID}&q_prop={$qProp}"); } else { $arrControl = array(); $arrAction = array(); // フォーム(タイプ) $arrControl[] = array( "id" => "q_prop", "name" => "{$WORD($wk, 16)}", "form" => Printer::radio("q_prop", "q_prop", DAO::T_DATA_PROP_TABLE(), $qProp), "validate" => array( "required" => TRUE, ), "required" => TRUE, ); // フォーム(名前) $arrControl[] = array( "id" => "q_title", "name" => "{$WORD($wk, 17)}", "form" => Printer::input("text", "q_title", "q_title", $qTitle), "validate" => array( "required" => TRUE, "remote" => array( // Ajax "type" => "post", "url" => "/app/checkNameController.php", "data" => array( "q_kind" => APP_CHECK_NAME_CONTROLLER_KIND_DATA, "q_id" => $qID, // "q_title" は自動で入る ), ), ), "required" => TRUE, ); // フォーム(ファイル) $arrControl[] = array( "id" => "q_file", "name" => "{$WORD($wk, 18)}", "form" => Printer::input("file", "q_file", "q_file", NULL, "form-control-static"), ); // フォーム(公開状態) $arrControl[] = array( "id" => "q_public", "name" => "{$WORD($wk, 19)}", "form" => Printer::radio("public", "q_public", DAO::T_DATA_PUBLIC_TABLE(), $qPublic), ); // フォーム(コメント) $arrControl[] = array( "id" => "q_comment", "name" => "{$WORD($wk, 20)}", "form" => Printer::textarea("q_comment", "q_comment", $qComment), ); // フォーム(id) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_id", "q_id", $qID), ); if ( $mode === MODE_COPY ){ // フォーム(copy_id) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_copy_id", "q_copy_id", $qCopyID), ); } // フォーム(token) $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_token", "q_token", Util::token()), ); // アクション(OK) $arrAction[] = Printer::input("submit", NULL, NULL, "OK", "btn btn-primary"); // アクション(キャンセル) $arrAction[] = Printer::link("Cancel", "btn btn-default", NULL, NULL, "./"); $arrHtml["form"] = Printer::form("form_edit", "form_edit", "./edit.html", "post", $arrControl, $arrAction, array("enctype" => "multipart/form-data")); } } else { // アクション(OK) $arrHtml["form"] = Printer::link("OK", "btn btn-default", NULL, NULL, "/content/data/"); } // result -------------------------------------------------------------- $arrHtml["result"] = $gResult->string(TRUE, $result); } ?>