I have proven my theory that data can be extracted from any database table including the core tables within the graph generating php file. In the first example I extracted data from another module's tables and then in the second example I extracted the user registration data from the core's user table.
You can see the examples displayed at
X Basic GraphsHere is what the code looks like for generating the number of new user registrations for the last 6 months:
include ("../../../../mainfile.php");
include (XOOPS_ROOT_PATH."/modules/basicgraphs/class/xgraphs/jpgraph/jpgraph.php");
include (XOOPS_ROOT_PATH."/modules/basicgraphs/class/xgraphs/jpgraph/jpgraph_bar.php");
global $xoopsDB;
$datay = array();
$datax = array();
// Get the data
$result = $xoopsDB->query("SELECT * FROM ".$xoopsDB->prefix("users")." WHERE level > 0 ORDER BY user_regdate");
$regarray = array();
while ($row = $xoopsDB->fetcharray($result)) {
$registration_date = $row['user_regdate'];
$tempDate = $dateArray=explode(',',strftime("%Y,%m,%d,%I,%M,%p",time()));
$currentmonth = (int)$tempDate[1];
$currentyear = $tempDate[0];
$startDate = mktime(0, 0, 0, date("m")-6, date("d"), date("Y"));
$tempDate = $dateArray=explode(',',strftime("%Y,%m,%d,%I,%M,%p",$startDate));
$startmonth = (int)$tempDate[1];
$startyear = $tempDate[0];
$tempDate = $dateArray=explode(',',strftime("%Y,%m,%d,%I,%M,%p",$registration_date));
$month = (int)$tempDate[1];
$year = $tempDate[0];
if ($year == $startyear && $month >= $startmonth) {
$regarray[$month - $startmonth] = $regarray[$month - $startmonth] + 1;
}elseif ($year > $startyear) {
$regarray[(12 - $startmonth) + $month] = $regarray[(12 - $startmonth) + $month] + 1;
}
}
$datay = $regarray;
// Generate the month with year labels for the x axis
while ($count < 7) {
$count++;
$labelDate = mktime(0, 0, 0, date("m")-(7-$count), date("d"), date("Y"));
$tempDate = $dateArray=explode(',',strftime("%Y,%m,%d,%I,%M,%p",$labelDate));
$tempDateString = date('M Y', mktime(0, 0, 0, $tempDate[1], $tempDate[2], $tempDate[0]));
$datax[] = $tempDateString;
}
// Create the graph. These two calls are always required
$graph = new Graph(500,300,"auto");
$graph->SetScale("textlin");
$graph->yaxis->scale->SetGrace(30);
$graph->xaxis->SetTickLabels($datax);
$graph->xaxis->SetLabelAngle(90);
// Add a drop shadow
$graph->SetShadow();
// Adjust the margin a bit to make more room for titles
$graph->img->SetMargin(50,50,40,100);
$graph->SetMarginColor('lightred');
// Create a bar pot
$bplot = new BarPlot($datay);
// Adjust fill color
$bplot->SetFillColor('darkred');
$bplot->value->Show();
$bplot->value->SetFormat('%d');
$graph->Add($bplot);
// Setup the titles
$graph->title->Set("New User Registration at CVD In Last 6 Months");
//$graph->xaxis->title->Set("Month");
$graph->yaxis->title->Set("Number of New Users");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
// Display the graph
$graph->Stroke();