"",
"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
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
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);
}
?>