nothing, 1 => sql result, 2 => boucle checking, 3 other value checking)
$FG_DEBUG = 0;
getpost_ifset(array('min_call', 'fromstatsday_sday', 'days_compare', 'fromstatsmonth_sday', 'dsttype', 'srctype', 'clidtype', 'channel', 'resulttype', 'dst', 'src', 'clid', 'userfieldtype', 'userfield', 'accountcodetype', 'accountcode'));
// http://localhost/Asterisk/asterisk-stat-v1_4/graph_stat.php?min_call=0&fromstatsday_sday=11&days_compare=2&fromstatsmonth_sday=2005-02&dsttype=1&srctype=1&clidtype=1&channel=&resulttype=&dst=1649&src=&clid=&userfieldtype=1&userfield=&accountcodetype=1&accountcode=
// The variable FG_TABLE_NAME define the table name to use
$FG_TABLE_NAME=DB_TABLENAME;
//$link = DbConnect();
$DBHandle = DbConnect();
// The variable Var_col would define the col that we want show in your table
// First Name of the column in the html page, second name of the field
$FG_TABLE_COL = array();
/*******
Calldate Clid Src Dst Dcontext Channel Dstchannel Lastapp Lastdata Duration Billsec Disposition Amaflags Accountcode Uniqueid Serverid
*******/
$FG_TABLE_COL[]=array ("Calldate", "calldate", "18%", "center", "SORT", "19");
$FG_TABLE_COL[]=array ("Channel", "channel", "13%", "center", "", "30");
$FG_TABLE_COL[]=array ("Source", "src", "10%", "center", "", "30");
$FG_TABLE_COL[]=array ("Clid", "clid", "12%", "center", "", "30");
$FG_TABLE_COL[]=array ("Lastapp", "lastapp", "8%", "center", "", "30");
$FG_TABLE_COL[]=array ("Lastdata", "lastdata", "12%", "center", "", "30");
$FG_TABLE_COL[]=array ("Dst", "dst", "9%", "center", "SORT", "30");
//$FG_TABLE_COL[]=array ("Serverid", "serverid", "10%", "center", "", "30");
$FG_TABLE_COL[]=array ("Disposition", "disposition", "9%", "center", "", "30");
$FG_TABLE_COL[]=array ("Duration", "duration", "6%", "center", "SORT", "30");
$FG_TABLE_DEFAULT_ORDER = "calldate";
$FG_TABLE_DEFAULT_SENS = "DESC";
// This Variable store the argument for the SQL query
$FG_COL_QUERY='calldate, duration';
$FG_COL_QUERY_GRAPH='calldate, duration';
// The variable LIMITE_DISPLAY define the limit of record to display by page
$FG_LIMITE_DISPLAY=100;
// Number of column in the html table
$FG_NB_TABLE_COL=count($FG_TABLE_COL);
if ($FG_DEBUG == 3) echo "
Table : $FG_TABLE_NAME - Col_query : $FG_COL_QUERY";
$instance_table = new Table($FG_TABLE_NAME, $FG_COL_QUERY);
$instance_table_graph = new Table($FG_TABLE_NAME, $FG_COL_QUERY_GRAPH);
if ( is_null ($order) || is_null($sens) ){
$order = $FG_TABLE_DEFAULT_ORDER;
$sens = $FG_TABLE_DEFAULT_SENS;
}
function do_field($sql,$fld){
$fldtype = $fld.'type';
global $$fld;
global $$fldtype;
if (isset($$fld) && ($$fld!='')){
if (strpos($sql,'WHERE') > 0){
$sql = "$sql AND ";
}else{
$sql = "$sql WHERE ";
}
$sql = "$sql $fld";
if (isset ($$fldtype)){
switch ($$fldtype) {
case 1: $sql = "$sql='".$$fld."'"; break;
case 2: $sql = "$sql LIKE '".$$fld."%'"; break;
case 3: $sql = "$sql LIKE '%".$$fld."%'"; break;
case 4: $sql = "$sql LIKE '%".$$fld."'";
}
}else{ $sql = "$sql LIKE '%".$$fld."%'"; }
}
return $sql;
}
$SQLcmd = '';
if ($_GET['before']) {
if (strpos($SQLcmd, 'WHERE') > 0) { $SQLcmd = "$SQLcmd AND ";
}else{ $SQLcmd = "$SQLcmd WHERE "; }
$SQLcmd = "$SQLcmd calldate<'".addslashes($_GET['before'])."'";
}
if ($_GET['after']) { if (strpos($SQLcmd, 'WHERE') > 0) { $SQLcmd = "$SQLcmd AND ";
} else { $SQLcmd = "$SQLcmd WHERE "; }
$SQLcmd = "$SQLcmd calldate>'".addslashes($_GET['after'])."'";
}
$SQLcmd = do_field($SQLcmd, 'clid');
$SQLcmd = do_field($SQLcmd, 'src');
$SQLcmd = do_field($SQLcmd, 'dst');
$SQLcmd = do_field($SQLcmd, 'channel');
$SQLcmd = do_field($SQLcmd, 'userfield');
$SQLcmd = do_field($SQLcmd, 'accountcode');
$date_clause='';
$min_call= intval($min_call);
if (($min_call!=0) && ($min_call!=1)) $min_call=0;
if (!isset($fromstatsday_sday)){
$fromstatsday_sday = date("d");
$fromstatsmonth_sday = date("Y-m");
}
if (!isset($days_compare) ){
$days_compare=2;
}
if (DB_TYPE == "postgres"){
if (isset($fromstatsday_sday) && isset($fromstatsmonth_sday))
$date_clause.=" AND calldate < date'$fromstatsmonth_sday-$fromstatsday_sday'+ INTERVAL '1 DAY' AND calldate >= date'$fromstatsmonth_sday-$fromstatsday_sday' - INTERVAL '$days_compare DAY'";
}else{
if (isset($fromstatsday_sday) && isset($fromstatsmonth_sday)) $date_clause.=" AND calldate < ADDDATE('$fromstatsmonth_sday-$fromstatsday_sday',INTERVAL 1 DAY) AND calldate >= SUBDATE('$fromstatsmonth_sday-$fromstatsday_sday',INTERVAL $days_compare DAY)";
}
if (strpos($SQLcmd, 'WHERE') > 0) {
$FG_TABLE_CLAUSE = substr($SQLcmd,6).$date_clause;
}elseif (strpos($date_clause, 'AND') > 0){
$FG_TABLE_CLAUSE = substr($date_clause,5);
}
if ($FG_DEBUG == 3) echo $FG_TABLE_CLAUSE;
/* --AMP BEGIN-- */
//enforce restrictions for this AMP User
session_start();
$AMP_CLAUSE = $_SESSION['AMP_SQL'];
if (!isset($AMP_CLAUSE)) {
$AMP_CLAUSE = " AND src = 'NeverReturnAnything'";
}
$FG_TABLE_CLAUSE .= $AMP_CLAUSE;
/* --AMP END-- */
//$list = $instance_table -> Get_list ($FG_TABLE_CLAUSE, $order, $sens, null, null, null, null);
$list_total = $instance_table_graph -> Get_list ($FG_TABLE_CLAUSE, 'calldate', 'ASC', null, null, null, null);
/**************************************/
$table_graph=array();
$table_graph_hours=array();
$numm=0;
foreach ($list_total as $recordset){
$numm++;
$mydate= substr($recordset[0],0,10);
$mydate_hours= substr($recordset[0],0,13);
//echo "$mydate
";
if (is_array($table_graph_hours[$mydate_hours])){
$table_graph_hours[$mydate_hours][0]++;
$table_graph_hours[$mydate_hours][1]=$table_graph_hours[$mydate_hours][1]+$recordset[1];
}else{
$table_graph_hours[$mydate_hours][0]=1;
$table_graph_hours[$mydate_hours][1]=$recordset[1];
}
if (is_array($table_graph[$mydate])){
$table_graph[$mydate][0]++;
$table_graph[$mydate][1]=$table_graph[$mydate][1]+$recordset[1];
}else{
$table_graph[$mydate][0]=1;
$table_graph[$mydate][1]=$recordset[1];
}
}
//print_r($table_graph_hours);
//exit();
$mmax=0;
$totalcall==0;
$totalminutes=0;
foreach ($table_graph as $tkey => $data){
if ($mmax < $data[1]) $mmax=$data[1];
$totalcall+=$data[0];
$totalminutes+=$data[1];
}
/************************************************/
$datax1 = array_keys($table_graph_hours);
$datay1 = array_values ($table_graph_hours);
//$days_compare // 3
$nbday=0; // in tableau_value and tableau_hours to select the day in which you store the data
//$min_call=0; // min_call variable : 0 > get the number of call 1 > number minutes
$table_subtitle[]="Statistic : Number of call by Hours";
$table_subtitle[]="Statistic : Minutes by Hours";
$table_colors[]="green@0.3";
$table_colors[]="blue@0.3";
$table_colors[]="red@0.3";
$table_colors[]="yellow@0.3";
$table_colors[]="purple@0.3";
/*$table_graph_hours = array();
$table_graph_hours["2004-01-08 15"] = array (100, 15);
$table_graph_hours["2004-01-08 16"] = array (100, 15);
$table_graph_hours["2004-01-08 17"] = array (100, 15);
*/
$jour = substr($datax1[0],8,2); //le jour courant
$legend[0] = substr($datax1[0],0,10); //l
//print_r ($table_graph_hours);
// Create the graph to compare the day
// extract all minutes/nb call for each hours
foreach ($table_graph_hours as $key => $value) {
$jour_suivant = substr($key,8,2);
if($jour_suivant != $jour) {
$nbday++;
$legend[$nbday] = substr($key,0,10);
$jour = $jour_suivant;
}
$heure = intval(substr($key,11,2));
if ($min_call == 0) $div = 1; else $div = 60;
$tableau_value[$nbday][$heure] = $value[$min_call]/$div;
}
// je remplie les cases vide par des 0
for ($i=0; $i<=$nbday; $i++)
for ($j=0; $j<24; $j++)
if (!isset($tableau_value[$i][$j])) $tableau_value[$i][$j]=0;
//Je remplace les 0 par null pour pour les heures
$i = 23;
while ($tableau_value[$nbday][$i] == 0) {
$tableau_value[$nbday][$i] = null;
$i--;
}
//print_r($tableau_value);
//print_r($tableau_hours);
/*echo "
nb tableau_value:".count($tableau_value);
echo "
nb tableau_hours:".count($tableau_hours);
print_r($tableau_value[0]);
echo "
";
print_r($tableau_hours[0]);
echo "
";
*/
foreach ($datay1 as $tkey => $data){
$dataz1[]=$data[1];
$dataz2[]=$data[0];
}
/*$datay1 = array(2,6,7,12,13,18);
echo "
nb x1:".count($datax1);
echo "
nb z1:".count($dataz1);
print_r($datax1);
echo "
";
print_r($dataz1);
echo "
";
print_r($datay1);*/
//print_r($dataz1);
//$dataz1 = array(2,6,7,12,13,2,6,7,12,13,2,6,7,12,13,2,6,7,12,13,2,6,7,12,13);
//print_r($dataz1);
//$datax1 = array(5,12,12,19,25,20);
// Setup the graph
$graph = new Graph(750,450);
$graph->SetMargin(40,40,45,90); //droit,gauche,haut,bas
$graph->SetMarginColor('white');
$graph->SetScale("linlin");
// Hide the frame around the graph
$graph->SetFrame(false);
// Setup title
$graph->title->Set("Graphic");
//$graph->title->SetFont(FF_VERDANA,FS_BOLD,14);
// Note: requires jpgraph 1.12p or higher
$graph->SetBackgroundGradient('#FFFFFF','#CDDEFF:0.8',GRAD_HOR,BGRAD_PLOT);
$graph->tabtitle->Set($table_subtitle[$min_call]);
$graph->tabtitle->SetWidth(TABTITLE_WIDTHFULL);
// Enable X and Y Grid
$graph->xgrid->Show();
$graph->xgrid->SetColor('gray@0.5');
$graph->ygrid->SetColor('gray@0.5');
$graph->yaxis->HideZeroLabel();
$graph->xaxis->HideZeroLabel();
$graph->ygrid->SetFill(true,'#EFEFEF@0.5','#CDDEFF@0.5');
//$graph->xaxis->SetTickLabels($tableau_hours[0]);
// initialisaton fixe de AXE X
$tableau_hours[0] = array("","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23");
$graph->xaxis->SetTickLabels($tableau_hours[0]);
// Setup X-scale
//$graph->xaxis->SetTickLabels($tableau_hours[0]);
$graph->xaxis->SetLabelAngle(90);
// Format the legend box
$graph->legend->SetColor('navy');
$graph->legend->SetFillColor('gray@0.8');
$graph->legend->SetLineWeight(1);
//$graph->legend->SetFont(FF_ARIAL,FS_BOLD,8);
$graph->legend->SetShadow('gray@0.4',3);
$graph->legend->SetAbsPos(15,130,'right','bottom');
// Create the line plots
/*$p1 = new LinePlot($datax1);
$p1->SetColor("red");
$p1->SetFillColor("yellow@0.5");
$p1->SetWeight(2);
$p1->mark->SetType(MARK_IMG_DIAMOND,5,0.6);
$p1->SetLegend('2006');
$graph->Add($p1);
*/
for ($indgraph=0;$indgraph<=$nbday;$indgraph++){
$p2[$indgraph] = new LinePlot($tableau_value[$indgraph]);
$p2[$indgraph]->SetColor($table_colors[$indgraph]);
$p2[$indgraph]->SetWeight(2);
$p2[$indgraph]->SetLegend($legend[$indgraph]);
//$p2->mark->SetType(MARK_IMG_MBALL,'red');
$graph->Add($p2[$indgraph]);
}
// Add a vertical line at the end scale position '7'
//$l1 = new PlotLine(VERTICAL,7);
//$graph->Add($l1);
// Output the graph
$graph->Stroke();
?>