"", "result" => "", "form" => "", "table" => "", ); $arrIntervalList = array( 0 => array( "unit" => 1, "text" => "{$WORD($wk, 1)}" ), 1 => array( "unit" => 24, "text" => "{$WORD($wk, 2)}" ), ); $arrDialogActs = array_merge( array( 0=>"{$WORD($wk, 3)}" ), DAO::T_BBS_POST_TYPE_GROUP_TABLE()); //---------------------------- // request parameter //---------------------------- $qProjectID = isset($_SESSION["project_id"]) ? $_SESSION["project_id"] : REQ_NON; $qKind = isset($_REQUEST["q_kind"]) ? $_REQUEST["q_kind"] : REQ_NON; $qSub = isset($_REQUEST["q_sub"]) ? $_REQUEST["q_sub"] : REQ_NON; $qTaskType = isset($_REQUEST["q_task_type"]) ? $_REQUEST["q_task_type"] : REQ_NON; $qTaskRole = isset($_REQUEST["q_task_role"]) ? $_REQUEST["q_task_role"] : REQ_NON; $qUserID = isset($_REQUEST["q_user_id"]) ? $_REQUEST["q_user_id"] : REQ_NON; $qDocumentID = isset($_REQUEST["q_document_id"]) ? $_REQUEST["q_document_id"] : REQ_NON; $qLimit = isset($_REQUEST["q_limit"]) ? $_REQUEST["q_limit"] : REQ_NON; $qOffset = isset($_REQUEST["q_offset"]) ? $_REQUEST["q_offset"] : REQ_NON; $qDownload = isset($_REQUEST["q_download"]) ? $_REQUEST["q_download"] : REQ_NON; // BBSPOST $qDialogActs = isset($_REQUEST["q_dialog_acts"]) ? $_REQUEST["q_dialog_acts"] : REQ_NON; $qInterval = isset($_REQUEST["q_interval"]) ? $_REQUEST["q_interval"] : REQ_NON; $qIntervalUnit = isset($_REQUEST["q_interval_unit"]) ? $_REQUEST["q_interval_unit"] : REQ_NON; //---------------------------- // judge post //---------------------------- //---------------------------- // set types //---------------------------- Util::setType($qProjectID, "int"); Util::setType($qKind, "int"); Util::setType($qSub, "int"); Util::setType($qTaskType, "int"); Util::setType($qTaskRole, "int"); Util::setType($qUserID, "int"); Util::setType($qDocument, "int"); Util::setType($qLimit, "int"); Util::setType($qOffset, "int"); Util::setType($qDownload, "int"); Util::setType($qDialogActs, "int"); Util::setType($qInterval, "float"); Util::setType($qIntervalUnit, "int"); //---------------------------- // Auth-Before validate //---------------------------- if ( $result === RES_OK ){ if ( ! Validate::inKeyArray($qKind, Statistics::KIND_TABLE(NULL)) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 4)}"); } if ( ! Validate::isNumeric($qProjectID) ){ $result = RES_NG; $gResult->push("{$WORD($wk, 5)}"); } if ( ! Validate::inArray($qDownload, $G_ONOFF_TABLE) ){ $qDownload = OFF; } } //---------------------------- // Auth //---------------------------- if ( $result === RES_OK ){ $auth = Auth::instance("statistics"); if( ! $auth->process($qKind, $qProjectID)){ $result = RES_NG; $gResult->push("{$WORD($wk, 6)}"); } } //---------------------------- // Auth-After validate //---------------------------- if ( $result === RES_OK ){ if ( ! Validate::isNumeric($qSub) ){ $qSub = NULL; } if ( ! Validate::isNumeric($qTaskType) ){ $qTaskType = NULL; } if ( ! Validate::isNumeric($qTaskRole) ){ $qTaskRole = NULL; } if ( ! Validate::isNumeric($qUserID) ){ $qUserID = NULL; } if ( ! Validate::isNumeric($qDocumentID) ){ $qDocumentID = NULL; } if ( ! Validate::isNumeric($qLimit) ){ $qLimit = HTML_LIMIT; } if ( ! Validate::isNumeric($qOffset) ){ $qOffset = HTML_OFFSET; } if ( $qKind === Statistics::KIND_BBS_LINE_GRAPH ) { if ( ! Validate::isNumeric($qDialogActs) ){ $qDialogActs = 0; } if ( ! Validate::isNumeric($qInterval) ){ $qInterval = 0.5; } if ( ! Validate::inKeyArray($qIntervalUnit, $arrIntervalList) ){ $qIntervalUnit = 0; } } switch ( $qKind ){ case Statistics::KIND_TASK_USER: case Statistics::KIND_TASK_DOCUMENT: case Statistics::KIND_TASK_ROLE: $selectTab = 0; break; case Statistics::KIND_BBS_LOG: case Statistics::KIND_BBS_FLOW_CHARTS: case Statistics::KIND_BBS_BAR_GRAPH: case Statistics::KIND_BBS_LINE_GRAPH: $selectTab = 1; break; } } //---------------------------- // function //---------------------------- function getIntervalSelectElement($value = NULL, $unit = NULL){ global $arrIntervalList; if ( is_null($value) ){ $value = 1; } $hInput = Printer::input("text", "q_interal", "q_interval", $value, NULL, array("style" => "text-align:right")); $hHidden = Printer::input("hidden", NULL, "q_interval_unit", $unit); $hStartUnit = Util::esc($arrIntervalList[$unit]["text"]); $hList = ""; foreach ( $arrIntervalList as $key => $list ){ $hText = Util::esc($list["text"]); $hList .= <<< HTML
  • {$hText}
  • HTML; } $html = <<< HTML
    {$hHidden} {$hInput}
    HTML; return $html; } //---------------------------- // process //---------------------------- if ( $result === RES_OK ){ $objDAOStatistics = DAO::instance("statistics"); $objViewStatistics = Statistics::viewInstance($qKind, FALSE); if ( $result === RES_OK ){ if ( $qDownload === ON ){ $qLimit = NULL; $qOffset = NULL; } switch ( $qKind ){ case Statistics::KIND_TASK_USER: case Statistics::KIND_TASK_DOCUMENT: case Statistics::KIND_TASK_ROLE: $resDAOStatistics = $objDAOStatistics->getTaskStatisticByProject($qTaskType, $qTaskRole, $qUserID, $qProjectID, $qDocumentID, $qLimit, $qOffset); $result = $resDAOStatistics["result"]; break; case Statistics::KIND_BBS_LOG: $resDAOStatistics = $objDAOStatistics->getBbsPostTargetStatisticByProject($qProjectID, NULL, NULL, NULL, $qLimit, $qOffset); break; case Statistics::KIND_BBS_FLOW_CHARTS: $result = RES_OK; if ( $result === RES_OK ){ $graph = new Graph(Graph::KIND_TRANSITION, $qProjectID, DAO::T_BBS_POST_STAGE_PREPARE); if ( ! $graph->fileExists() && $graph->createImage() === FALSE ){ $result = RES_NO_DATA; } } if ( $result === RES_OK ){ $graph = new Graph(Graph::KIND_TRANSITION, $qProjectID, DAO::T_BBS_POST_STAGE_TRANSLATE); if ( ! $graph->fileExists() && $graph->createImage() === FALSE ){ $result = RES_NO_DATA; } } $resDAOStatistics = array("result" => $result); break; case Statistics::KIND_BBS_BAR_GRAPH: $arrFilterBbsPostType = NULL; if ( Validate::inKeyArray($qDialogActs, DAO::T_BBS_POST_TYPE_GROUP_TABLE()) ){ $arrFilterBbsPostType = array_keys(DAO::T_BBS_POST_TYPE_GROUP_TO_TYPE_TABLE($qDialogActs)); } $resDAOStatistics = $objDAOStatistics->getBbsPostStatisticByProject($qProjectID, NULL, $arrFilterBbsPostType, NULL, $qLimit, $qOffset); $result = $resDAOStatistics["result"]; break; case Statistics::KIND_BBS_LINE_GRAPH: $resDAOStatistics = $objDAOStatistics->getBbsPostStatisticByProject($qProjectID, NULL, NULL, NULL, $qLimit, $qOffset); $result = $resDAOStatistics["result"]; break; default: $reult = RES_NG; } $result = $resDAOStatistics["result"]; if ( $result === RES_OK ){ // ダウンロード if ( $qDownload === ON ){ switch ( $qKind ){ case Statistics::KIND_BBS_LOG: header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"bbs-log." . date("Ymd_His") . ".tsv\""); $objViewStatistics->tableDetailBbsPostByProjectDownload($resDAOStatistics["data"], array(View_statistics::BBSPOST_COLUMN_USER)); exit(); break; default: $result = RES_NG; break; } } else { switch ( $qKind ){ case Statistics::KIND_TASK_USER: if ( $qSub === View_statistics_task::COLUMN_TASK ){ $arrHtml["table"] = $objViewStatistics->tableDetailTaskByProject($resDAOStatistics["data"], array(View_statistics_task::COLUMN_USER, View_statistics_task::COLUMN_TASK) ); } else if ( $qSub === View_statistics_task::COLUMN_ROLE ){ $arrHtml["table"] = $objViewStatistics->tableDetailTaskByProject($resDAOStatistics["data"], array(View_statistics_task::COLUMN_USER, View_statistics_task::COLUMN_ROLE) ); } else { $arrHtml["table"] = $objViewStatistics->tableDetailTaskByProject($resDAOStatistics["data"], array(View_statistics_task::COLUMN_USER, View_statistics_task::COLUMN_ROLE) ); } break; case Statistics::KIND_TASK_DOCUMENT: if ( $qSub === View_statistics_task::COLUMN_TASK ){ $arrHtml["table"] = $objViewStatistics->tableDetailTaskByProject($resDAOStatistics["data"], array(View_statistics_task::COLUMN_DOCUMENT, View_statistics_task::COLUMN_TASK) ); } else if ( $qSub === View_statistics_task::COLUMN_ROLE ){ $arrHtml["table"] = $objViewStatistics->tableDetailTaskByProject($resDAOStatistics["data"], array(View_statistics_task::COLUMN_DOCUMENT, View_statistics_task::COLUMN_ROLE) ); } else { $arrHtml["table"] = $objViewStatistics->tableDetailTaskByProject($resDAOStatistics["data"], array(View_statistics_task::COLUMN_DOCUMENT) ); } break; case Statistics::KIND_TASK_ROLE: $arrHtml["table"] = $objViewStatistics->tableDetailTaskByProject($resDAOStatistics["data"], array(View_statistics_task::COLUMN_TASK, View_statistics_task::COLUMN_ROLE) ); break; case Statistics::KIND_BBS_LOG: $arrHtml["table"] = $objViewStatistics->tableDetailBbsPostByProject($resDAOStatistics["data"], array(View_statistics_bbspost::COLUMN_USER)); break; case Statistics::KIND_BBS_FLOW_CHARTS: $arrHtml["table"] = $objViewStatistics->graphBbsPostTransition($qProjectID); break; case Statistics::KIND_BBS_BAR_GRAPH: $arrHtml["table"] = $objViewStatistics->graphBbsPostBar($resDAOStatistics["data"]); break; case Statistics::KIND_BBS_LINE_GRAPH: $arrHtml["table"] = $objViewStatistics->graphBbsPostLine($resDAOStatistics["data"], $qDialogActs, $qInterval*$arrIntervalList[$qIntervalUnit]["unit"]); break; default: $result = RES_NG; break; } } } } if ( $result === RES_NO_DATA ){ $gResult->push("{$WORD($wk, 7)}"); } else if ( $result === RES_NG ){ $gResult->push("{$WORD($wk, 8)}"); } } //---------------------------- // html //---------------------------- { // menu ---------------------------------------------------------------- if ( $result !== RES_NG ){ $arrMenu = array(); $arrMenuSub = array(); //----- $arrMenu[0] = $objViewStatistics->tab(View_statistics::TAB_TASK, $auth, $qProjectID); $arrMenu[1] = $objViewStatistics->tab(View_statistics::TAB_BBS, $auth, $qProjectID); $arrMenu[$selectTab]["title"] .= " - ".Statistics::KIND_TABLE($qKind); //----- if ( $qKind === Statistics::KIND_BBS_LOG ){ $arrMenuSub[] = Printer::link("{$WORD($wk, 9)}", "btn btn-default", "icon-arrow-up", NULL, "./?q_kind={$qKind}&q_project_id={$qProjectID}&q_download=" . ON); } $arrHtml["menu"] = Printer::menuTab($arrMenu, $selectTab, $arrMenuSub); } // title --------------------------------------------------------------- $title = "{$WORD($wk, 10)}"; // form ---------------------------------------------------------------- if ( $result !== RES_NG ){ $arrControl = array(); $arrAction = array(); switch ( $qKind ){ //case Statistics::KIND_TASK_USER: //case Statistics::KIND_TASK_DOCUMENT: //case Statistics::KIND_TASK_ROLE: //case Statistics::KIND_BBS_LOG: //case Statistics::KIND_BBS_FLOW_CHARTS: case Statistics::KIND_BBS_BAR_GRAPH: case Statistics::KIND_BBS_LINE_GRAPH: // フォーム(タイプ:DialogActs) $arrControl[] = array( "id" => "q_dialog_acts", "name" => "{$WORD($wk, 11)}", "form" => array( Printer::select("q_dialog_acts", "q_dialog_acts", $arrDialogActs, $qDialogActs), ), ); if ( $qKind === Statistics::KIND_BBS_LINE_GRAPH ){ // フォーム(インターバル) $arrControl[] = array( "id" => "q_interval", "name" => "{$WORD($wk, 12)}", "form" => array( getIntervalSelectElement($qInterval, $qIntervalUnit), ), ); } // $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_kind", "q_kind", $qKind), ); $arrControl[] = array( "id" => NULL, "name" => NULL, "form" => Printer::input("hidden", "q_project_id", "q_project_id", $qProjectID), ); $arrHtml["form"] = Printer::form("form_bbs_graph", "form_bbs_graph", "./detail.html", "get", $arrControl, $arrAction); $hButton = Printer::button(NULL, NULL, "{$WORD($wk, 13)}", "btn-primary", array("onclick"=>"minhon.common.onClickSubmit('#form_bbs_graph')")); $arrHtml["form"] = <<< HTML
    {$arrHtml["form"]}
    HTML; break; default: } } else { // アクション(OK) $arrHtml["table"] = Printer::link("OK", "btn btn-default", NULL, NULL, "/content/project/"); } if ( $qKind === Statistics::KIND_BBS_LINE_GRAPH ){ $arrJavascriptFile = array( "/js/jquery.jqplot/jquery.jqplot.min.js", "/js/jquery.jqplot/jqplot.tableMarkerLegendRenderer.js", "/js/jquery.jqplot/jqplot.highlighter.js", ); $arrCssFile = array( "/css/jquery.jqplot.min.css", ); } else { $arrJavascriptFile = array(); $arrCssFile = array(); } // form ---------------------------------------------------------------- // result -------------------------------------------------------------- $arrHtml["result"] = $gResult->string(TRUE, $result); } ?>