"", "result" => "", "table" => "", "form" => "", ); //---------------------------- // request parameter //---------------------------- $qProjectID = isset($_SESSION["project_id"]) ? $_SESSION["project_id"] : REQ_NON; $qID = isset($_REQUEST["q_id"]) ? $_REQUEST["q_id"] : REQ_NON; $qViewMode = isset($_REQUEST["q_view_mode"]) ? $_REQUEST["q_view_mode"] : REQ_NON; $qKeyword = isset($_REQUEST["q_keyword"]) ? $_REQUEST["q_keyword"] : REQ_NON; $qOrder = isset($_REQUEST["q_order"]) ? $_REQUEST["q_order"] : REQ_NON; // filter foreach ( $G_FILTER_NAME_TABLE as $name ){ $arrFilter[$name] = isset($_REQUEST[$name]) ? $_REQUEST[$name] : REQ_NON; } //---------------------------- // judge post //---------------------------- //---------------------------- // set types //---------------------------- Util::setType($qProjectID, "int"); Util::setType($qID, "int"); Util::setType($qViewMode, "int"); Util::setType($qKeyword, "string"); Util::setType($qOrder, "string"); // filterは必ずint foreach ( $arrFilter as &$val ){ Util::setType($val, "int"); } //---------------------------- // Auth-Before validate //---------------------------- if ( $result === RES_OK ){ if ( ! Validate::isNumeric($qID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 1)}"); } if ( ! Validate::isNumeric($qProjectID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 2)}"); } } //---------------------------- // Auth //---------------------------- if ( $result === RES_OK ){ $auth = Auth::instance("bbs"); if( ! $auth->read($qID, $qProjectID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 3)}"); } } //---------------------------- // Auth-After validate //---------------------------- if ( $result === RES_OK ){ // viewmode if ( ! Validate::inKeyArray($qViewMode, View_bbs_post::VIEW_MODE_TABLE()) ){ $qViewMode = INIT_VIEW_MODE; } // order if ( ! Validate::isOrderParam($qOrder, DAO_bbs_post::ORDER_KEY_SQL_TABLE(), DAO_bbs_post::ORDER_VALUE_SQL_TABLE()) ){ $qOrder = NULL; } // filter if ( isset($arrFilter["q_stage"]) && ! Validate::inKeyArray($arrFilter["q_stage"], DAO::T_BBS_POST_STAGE_TABLE()) ){ unset($arrFilter["q_stage"]); } if ( isset($arrFilter["q_type"]) && ! Validate::inKeyArray($arrFilter["q_type"], DAO::T_BBS_POST_TYPE_TABLE()) ){ unset($arrFilter["q_type"]); } if ( isset($arrFilter["q_user_role"]) && ! Validate::inKeyArray($arrFilter["q_user_role"], DAO::T_BBS_POST_TYPE_TABLE()) ){ unset($arrFilter["q_user_role"]); } } //---------------------------- // function //---------------------------- //---------------------------- // process //---------------------------- if ( $result === RES_OK ){ DAO::begin(); $objDAOBbsPost = DAO::instance("bbs_post"); $objDAOBbsPostTarget = DAO::instance("bbs_post_target"); $objDAOProjectUser = DAO::instance("project_user"); $objViewBbsPost = View::instance("bbs_post"); $objProject = new Project($qProjectID); // プロジェクトデータ取得 -------------------- if ( $result === RES_OK ){ if ( ($arrAppended = $objProject->getAppended()) === FALSE ){ $result = RES_NG; $gResult->push("{$WORD($wk, 4)}"); } } // ユーザー一覧 ----------------------- $arrUser = NULL; if ( $result === RES_OK ){ $resDAOProjectUser = $objDAOProjectUser->get($qProjectID); if ( $resDAOProjectUser["result"] === RES_OK ){ $arrUser = $resDAOProjectUser["data"]; } else { $result = RES_NG; $gResult->push("{$WORD($wk, 5)}"); } } // 投稿一覧 -------------------- if ( $result === RES_OK ){ // order if ( $qOrder ){ list($orderName, $orderType) = explode("-", $qOrder); $orderName = DAO_bbs_post::ORDER_KEY_SQL_TABLE($orderName); $orderType = DAO_bbs_post::ORDER_VALUE_SQL_TABLE($orderType); $arrOrder = array( $orderName => $orderType, ); } else { $arrOrder = NULL; } $isViewThread = ($qViewMode === View_bbs_post::VIEW_MODE_THREAD); $arrState = DAO::T_BBS_POST_STATE_VALID_TABLE(); /* // 削除したメッセージを表示させないようにする if ( ! $isViewThread ){ unset($arrState[DAO::T_BBS_POST_STATE_HIDE]); } */ $arrData = NULL; if ( $isViewThread ){ // 有効なメッセージを全て取得する $resDAOBbsPost = $objDAOBbsPost->get(NULL, $qID, NULL, array_keys($arrState), NULL, NULL, NULL, $arrOrder, NULL, NULL); if ( ($result = $resDAOBbsPost["result"]) === RES_OK ){ $arrData = $resDAOBbsPost["data"]; // 検索した場合は、ヒットしなかったメッセージにフラグを立てて VIEW_BBS_POST に渡す if ( Validate::isString($qKeyword) ){ $arrValidBbsPostNo = array(); $resDAOBbsPost = $objDAOBbsPost->get(NULL, $qID, NULL, array_keys($arrState), $qKeyword); if ( ($result = $resDAOBbsPost["result"]) === RES_OK ){ foreach ( $resDAOBbsPost["data"] as $dataBbsPost ){ $arrValidBbsPostNo[ $dataBbsPost["t_bbs_post_no"] ] = $dataBbsPost["t_bbs_post_title"]; } } } } } else { $resDAOBbsPost = $objDAOBbsPost->get(NULL, $qID, NULL, array_keys($arrState), $qKeyword, NULL, NULL, $arrOrder, NULL, NULL); if ( ($result = $resDAOBbsPost["result"]) === RES_OK ){ $arrData = $resDAOBbsPost["data"]; } } if ( $result === RES_NG ){ $gResult->push("{$WORD($wk, 8)}"); } else { parse_str( $_SERVER["QUERY_STRING"], $query); $arrHtml["table"] = $objViewBbsPost->__table($isViewThread, $arrData, $qKeyword, $query, $qOrder, $arrFilter, $arrAppended, $arrUser, User::get("id")); } } DAO::end($result); } //---------------------------- // html //---------------------------- { // menu ---------------------------------------------------------------- if ( $result !== RES_NG ){ $arrMenu = array(); //----- $arrMenu[0] = $objViewBbsPost->tab_list($auth, $qProjectID, $qID, $qViewMode); $arrMenu[1] = $objViewBbsPost->tab(View_bbs_post::TAB_NEW, $auth, $qProjectID, $qID); //----- $arrHtml["menu"] = Printer::menuTab($arrMenu, 0); } // title --------------------------------------------------------------- $title = "{$WORD($wk, 9)}"; // form ---------------------------------------------------------------- if ( $result !== RES_NG ){ $arrControl = array(); $arrAction = array(); $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_project_id", "q_project_id", $qProjectID), ); $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_id", "q_id", $qID), ); $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_view_mode", "q_view_mode", $qViewMode), ); // $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_keyword", "q_keyword", $qKeyword), ); $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_order", "q_order", $qOrder), ); // filter foreach ( $arrFilter as $name => $val ){ if ( ! Validate::isNumeric($val) ){ continue; } $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", $name, $name, $val), ); } if ( Validate::isArray($arrValidBbsPostNo) ){ $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_no", "q_no", "[".implode(array_keys($arrValidBbsPostNo), ",")."]", NULL, array("disabled" => "disabld")), ); } $arrHtml["form"] = Printer::form("form-bbs-post-table", NULL, "./detail.html", "get", $arrControl, $arrAction); } else { // アクション(OK) $arrHtml["form"] = Printer::link("OK", "btn btn-default", NULL, NULL, "/content/project/"); } // result -------------------------------------------------------------- $arrHtml["result"] = $gResult->string(TRUE, $result); } ?>