<?php | <?php |
include_once ("./lib/common.inc.php"); | include_once ("./lib/common.inc.php"); |
if ($_REQUEST['agency']) { | if ($_REQUEST['agency']) { |
$agency = htmlentities(strip_tags($_REQUEST['agency'])); | $agency = htmlentities(strip_tags($_REQUEST['agency'])); |
include_header($agency); | include_header($agency); |
echo '<center><h1>'.$agency.'</h1></center>'; | echo '<center><h1>'.$agency.'</h1></center>'; |
// MethodCountGraph($agency); | // MethodCountGraph($agency); |
// CnCGraph($agency); | // CnCGraph($agency); |
// MethodValueGraph($agency); | // MethodValueGraph($agency); |
/* biggest contracts | /* biggest contracts |
spending by year | spending by year |
spending by industry/category | spending by industry/category |
spending by supplier | spending by supplier |
spread procurement methods (stacked bar graph) | spread procurement methods (stacked bar graph) |
+ percent consultancies + percent confidential (bar graph) | + percent consultancies + percent confidential (bar graph) |
Average value by procurement type | Average value by procurement type |
--- info | --- info |
website, procurement plan, annual reports | website, procurement plan, annual reports |
Breakdown of divisions/branches | Breakdown of divisions/branches |
Breakdown percentage,number,value by procurement type | Breakdown percentage,number,value by procurement type |
Histograph, overlaying number value reported per week over X years | Histograph, overlaying number value reported per week over X years |
Compliance statistics: amendments, delay in reporting average and number completely late */ | Compliance statistics: amendments, delay in reporting average and number completely late */ |
$query = 'SELECT "CNID", "description", "value", "agencyName", "category", | $query = 'SELECT "CNID", "description", "value", "agencyName", "category", |
"contractStart", "supplierName" | "contractStart", "supplierName" |
FROM contractnotice | FROM contractnotice |
WHERE "agencyName" = :agency | WHERE "agencyName" like :agency |
ORDER BY "value" DESC limit 100'; | ORDER BY "value" DESC limit 100'; |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->bindParam(":agency", $agency); | $query->bindParam(":agency", $agency); |
$query->execute(); | $query->execute(); |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
echo "<table> <thead> | echo "<table> <thead> |
<tr> | <tr> |
<th>Contract Notice Number</th> | <th>Contract Notice Number</th> |
<th>Contract Description</th> | <th>Contract Description</th> |
<th>Total Contract Value</th> | <th>Total Contract Value</th> |
<th>Agency</th> | <th>Agency</th> |
<th>Contract Start Date</th> | <th>Contract Start Date</th> |
<th>Supplier</th> | <th>Supplier</th> |
</tr> | </tr> |
</thead>"; | </thead>"; |
foreach ($query->fetchAll() as $row) { | foreach ($query->fetchAll() as $row) { |
setlocale(LC_MONETARY, 'en_US'); | setlocale(LC_MONETARY, 'en_US'); |
$value = number_format(doubleval($row['value']), 2); | $value = number_format(doubleval($row['value']), 2); |
echo ("<tr> | echo ("<tr> |
<td><a href=\"displayContract.php?CNID={$row['CNID']}\">{$row['CNID']}</a></td> | <td><a href=\"displayContract.php?CNID={$row['CNID']}\">{$row['CNID']}</a></td> |
<td><b>{$row['description']}</b></a></td> | <td><b>{$row['description']}</b></a></td> |
<td>\$$value</td><td>{$row['agencyName']}</td> | <td>\$$value</td><td>{$row['agencyName']}</td> |
<td>{$row['contractStart']}</td> | <td>{$row['contractStart']}</td> |
<td>{$row['supplierName']}</td> | <td>{$row['supplierName']}</td> |
</tr>"); | </tr>"); |
} | } |
echo "</table>"; | echo "</table>"; |
} else { | } else { |
/* | /* |
split by portfolio | split by portfolio |
*/ | */ |
include_header("Agencies"); | include_header("Agencies"); |
agenciesGraph(); | agenciesGraph(); |
$query = 'SELECT SUM("value"), "agencyName" | $query = 'SELECT SUM("value"), "agencyName" |
FROM contractnotice | FROM contractnotice |
WHERE "childCN" is null | WHERE "childCN" is null |
GROUP BY "agencyName" '; | GROUP BY "agencyName" '; |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->execute(); | $query->execute(); |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
echo "<table> <thead> | echo "<table> <thead> |
<tr> | <tr> |
<th>Agency</th> | <th>Agency</th> |
<th>Total Contracts Value</th> | <th>Total Contracts Value</th> |
</tr> | </tr> |
</thead>"; | </thead>"; |
foreach ($query->fetchAll() as $row) { | foreach ($query->fetchAll() as $row) { |
setlocale(LC_MONETARY, 'en_US'); | setlocale(LC_MONETARY, 'en_US'); |
$value = number_format(doubleval($row[0]), 2); | $value = number_format(doubleval($row[0]), 2); |
$agency = stripslashes($row[1]); | $agency = stripslashes($row[1]); |
echo ("<tr><td><b><a href=\"displayAgency.php?agency={$agency}\">{$agency}</a></b></td><td>\$$value</td></tr>\n"); | echo ("<tr><td><b><a href=\"displayAgency.php?agency={$agency}\">{$agency}</a></b></td><td>\$$value</td></tr>\n"); |
} | } |
echo "</table>"; | echo "</table>"; |
} | } |
include_footer(); | include_footer(); |
?> | ?> |
<?php | <?php |
include_once("./lib/common.inc.php"); | include_once("./lib/common.inc.php"); |
/* | /* |
agencies that use alot of Confidentialities | agencies that use alot of Confidentialities |
suppliers that provide alot | suppliers that provide alot |
how much is spent overall per year | how much is spent overall per year |
*/ | */ |
include_header("Confidentialities"); | include_header("Confidentialities"); |
$query = "SELECT value, procurementMethod | $query = 'SELECT SUM(value) as value, "procurementMethod" |
FROM `contractnotice` | FROM contractnotice |
GROUP BY procurementMethod "; | GROUP BY "procurementMethod" '; |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->execute(); | $query->execute(); |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
echo "<table>"; | echo "<table>"; |
foreach ($query->fetchAll() as $row) { | foreach ($query->fetchAll() as $row) { |
setlocale(LC_MONETARY, 'en_US'); | setlocale(LC_MONETARY, 'en_US'); |
$value = number_format(doubleval($row[0]),2); | $value = number_format(doubleval($row[0]),2); |
echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>"); | echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>"); |
} | } |
echo "</table>"; | echo "</table>"; |
include_footer(); | include_footer(); |
?> | ?> |
<?php | <?php |
include_once("./lib/common.inc.php"); | include_once("./lib/common.inc.php"); |
/* | /* |
agencies that use alot of consultacies | agencies that use alot of consultacies |
suppliers that provide alot | suppliers that provide alot |
how much is spent overall per year | how much is spent overall per year |
*/ | */ |
include_header("Consultancies"); | include_header("Consultancies"); |
$query = "SELECT value, procurementMethod | $query = 'SELECT SUM(value) as value, "procurementMethod" |
FROM `contractnotice` | FROM contractnotice |
GROUP BY procurementMethod "; | GROUP BY "procurementMethod" '; |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->execute(); | $query->execute(); |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
echo "<table>"; | echo "<table>"; |
foreach ($query->fetchAll() as $row) { | foreach ($query->fetchAll() as $row) { |
setlocale(LC_MONETARY, 'en_US'); | setlocale(LC_MONETARY, 'en_US'); |
$value = number_format(doubleval($row[0]),2); | $value = number_format(doubleval($row[0]),2); |
echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>"); | echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>"); |
} | } |
echo "</table>"; | echo "</table>"; |
include_footer(); | include_footer(); |
?> | ?> |
<?php | <?php |
include_once("./lib/common.inc.php"); | include_once("./lib/common.inc.php"); |
/* | /* |
biggest suppliers in each method | biggest suppliers in each method |
biggest agencies in each method (weighted for size? percentage of total expenditure) | biggest agencies in each method (weighted for size? percentage of total expenditure) |
largest Average value by procurement type? | largest Average value by procurement type? |
*/ | */ |
include_header("Procurement Methods"); | include_header("Procurement Methods"); |
$query = "SELECT SUM(value) as value, procurementMethod | $query = 'SELECT SUM(value) as value, "procurementMethod" |
FROM `contractnotice` | FROM contractnotice |
WHERE childCN is null | WHERE "childCN" is null |
GROUP BY procurementMethod "; | GROUP BY "procurementMethod"'; |
$query = $conn->prepare($query); | $query = $conn->prepare($query); |
$query->execute(); | $query->execute(); |
databaseError($conn->errorInfo()); | databaseError($conn->errorInfo()); |
echo "<table>"; | echo "<table>"; |
foreach ($query->fetchAll() as $row) { | foreach ($query->fetchAll() as $row) { |
setlocale(LC_MONETARY, 'en_US'); | setlocale(LC_MONETARY, 'en_US'); |
$value = number_format(doubleval($row[0]),2); | $value = number_format(doubleval($row[0]),2); |
echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>"); | echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>"); |
} | } |
echo "</table>"; | echo "</table>"; |
include_footer(); | include_footer(); |
?> | ?> |
<?php | <?php |
date_default_timezone_set("Australia/ACT"); | date_default_timezone_set("Australia/ACT"); |
error_reporting(E_ALL ^ E_NOTICE); | error_reporting(E_ALL ^ E_NOTICE); |
$conn = new PDO("pgsql:dbname=contractDashboard;user=postgres;password=snmc;host=localhost"); | $conn = new PDO("pgsql:dbname=contractDashboard;user=postgres;password=snmc;host=localhost"); |
if (!$conn) { | if (!$conn) { |
die("A database error occurred.\n"); | die("A database error occurred.\n"); |
} | } |
define('ROOT', pathinfo(__FILE__, PATHINFO_DIRNAME)); | define('ROOT', pathinfo(__FILE__, PATHINFO_DIRNAME)); |
if (strstr($_SERVER['PHP_SELF'], "labs/")) { | if (strstr($_SERVER['PHP_SELF'], "labs/")) { |
$basePath = "../"; | $basePath = "../"; |
} | } |
require ROOT . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'openid.php'; | require ROOT . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'openid.php'; |
$openid = new LightOpenID($_SERVER['HTTP_HOST']); | $openid = new LightOpenID($_SERVER['HTTP_HOST']); |
function login() { | function login() { |
global $openid; | global $openid; |
if (!$openid->mode) { | if (!$openid->mode) { |
$openid->required = array('contact/email'); | $openid->required = array('contact/email'); |
$openid->identity = 'https://www.google.com/accounts/o8/id'; | $openid->identity = 'https://www.google.com/accounts/o8/id'; |
header('Location: ' . $openid->authUrl()); | header('Location: ' . $openid->authUrl()); |
} | } |
} | } |
function auth() { | function auth() { |
global $openid; | global $openid; |
if ($_SESSION['authed'] == true) { | if ($_SESSION['authed'] == true) { |
return true; | return true; |
} | } |
if ($openid->mode) { | if ($openid->mode) { |
$attr = $openid->getAttributes(); | $attr = $openid->getAttributes(); |
if ($attr['contact/email'] != 'maxious@gmail.com') { | if ($attr['contact/email'] != 'maxious@gmail.com') { |
die('Access Denied'); | die('Access Denied'); |
} else { | } else { |
$_SESSION['authed'] = true; | $_SESSION['authed'] = true; |
} | } |
} else { | } else { |
login(); | login(); |
} | } |
} | } |
// $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | // $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
function databaseError($errMsg) { | function databaseError($errMsg) { |
if ($errMsg[2] != "") { | if ($errMsg[2] != "") { |
echo '<div class="alert-message error">'; | echo '<div class="alert-message error">'; |
die(print_r($errMsg, true)); | die(print_r($errMsg, true)); |
echo "</div>"; | echo "</div>"; |
} | } |
} | } |
function ucsmart($str) { | function ucsmart($str) { |
$shortWords = Array("The", "Pty", "Ltd", "Inc", "Red", "Oil", "A", "An", "And", "At", "For", "In" | $shortWords = Array("The", "Pty", "Ltd", "Inc", "Red", "Oil", "A", "An", "And", "At", "For", "In" |
, "Of", "On", "Or", "The", "To", "With"); | , "Of", "On", "Or", "The", "To", "With"); |
$strArray = explode(" ", preg_replace("/(?<=(?<!:|’s)\W) | $strArray = explode(" ", preg_replace("/(?<=(?<!:|’s)\W) |
(A|An|And|At|For|In|Of|On|Or|The|To|With) | (A|An|And|At|For|In|Of|On|Or|The|To|With) |
(?=\W)/e", 'strtolower("$1")', ucwords(strtolower($str)))); | (?=\W)/e", 'strtolower("$1")', ucwords(strtolower($str)))); |
foreach ($strArray as &$word) { | foreach ($strArray as &$word) { |
if (strlen($word) <= 4 && !in_array($word, $shortWords)) | if (strlen($word) <= 4 && !in_array($word, $shortWords)) |
$word = strtoupper($word); | $word = strtoupper($word); |
} | } |
return implode(" ", $strArray); | return implode(" ", $strArray); |
} | } |
function percent($num_amount, $num_total) { | function percent($num_amount, $num_total) { |
$count1 = $num_amount / $num_total; | $count1 = $num_amount / $num_total; |
$count2 = $count1 * 100; | $count2 = $count1 * 100; |
$count = number_format($count2, 2); | $count = number_format($count2, 2); |
return $count; | return $count; |
} | } |
function array_sum_all($a) { | function array_sum_all($a) { |
if (!is_array($a)) | if (!is_array($a)) |
return $a; | return $a; |
foreach ($a as $key => $value) | foreach ($a as $key => $value) |
$totale += array_sum_all($value); | $totale += array_sum_all($value); |
return $totale; | return $totale; |
} | } |
// magic query modifiers | // magic query modifiers |
$agency = filter_var($_REQUEST['agency'], FILTER_SANITIZE_STRING); | $agency = filter_var($_REQUEST['agency'], FILTER_SANITIZE_STRING); |
if ($agency != "") | if ($agency != "") |
$agencyQ = "agencyName = '" . $agency . "' AND "; | $agencyQ = "agencyName = '" . $agency . "' AND "; |
$supplier = filter_var($_REQUEST['supplier'], FILTER_SANITIZE_STRING); | $supplier = filter_var($_REQUEST['supplier'], FILTER_SANITIZE_STRING); |
if ($supplier != "") { | if ($supplier != "") { |
$supplierParts = explode("-", $supplier); | $supplierParts = explode("-", $supplier); |
$supplierName = "%" . $supplierParts[1] . "%"; | $supplierName = "%" . $supplierParts[1] . "%"; |
$supplierABN = $supplierParts[0]; | $supplierABN = $supplierParts[0]; |
if ($supplierParts[0] > 0) | if ($supplierParts[0] > 0) |
$supplierQ = ' "supplierABN" = :supplierABN AND '; | $supplierQ = ' "supplierABN" = :supplierABN AND '; |
else | else |
$supplierQ = ' "supplierName" LIKE :supplierName AND '; | $supplierQ = ' "supplierName" LIKE :supplierName AND '; |
} | } |
$startYear = 2007; | $startYear = 2007; |
$year = filter_var($_REQUEST['year'], FILTER_SANITIZE_NUMBER_INT); | $year = filter_var($_REQUEST['year'], FILTER_SANITIZE_NUMBER_INT); |
if ($year != "") | if ($year != "") { |
$yearQ = "YEAR(publishDate) = " . $year . " AND "; | $yearQ = "YEAR(publishDate) = " . $year . " AND "; |
} | |
$standardQ = ' "childCN" is null '; // AND YEAR(contractStart) >= 2007 AND YEAR(contractStart) <= 2010'; | $standardQ = ' "childCN" is null '; // AND YEAR(contractStart) >= 2007 AND YEAR(contractStart) <= 2010'; |
$start = 0.0; | $start = 0.0; |
function local_url() { | function local_url() { |
return "http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/"; | return "http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/"; |
} | } |
function include_header($title) { | function include_header($title) { |
global $start; | global $start; |
?> | ?> |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" |
"http://www.w3.org/TR/html4/strict.dtd"> | "http://www.w3.org/TR/html4/strict.dtd"> |
<html> | <html> |
<head> | <head> |
<title><?php echo $title; ?> - Contract Dashboard</title> | <title><?php echo $title; ?> - Contract Dashboard</title> |
<link rel="stylesheet" type="text/css" href="bootstrap.min.css"> | <link rel="stylesheet" type="text/css" href="bootstrap.min.css"> |
<link rel="stylesheet" type="text/css" href="bootstrap-responsive.css"> | <link rel="stylesheet" type="text/css" href="bootstrap-responsive.css"> |
<!-- Le HTML5 shim, for IE6-8 support of HTML elements --> | <!-- Le HTML5 shim, for IE6-8 support of HTML elements --> |
<!--[if lt IE 9]> | <!--[if lt IE 9]> |
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> | <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> |
<![endif]--> | <![endif]--> |
<script type="text/javascript" src="lib/bsn.AutoSuggest_2.1.3_comp.js" charset="utf-8"></script> | <script type="text/javascript" src="lib/bsn.AutoSuggest_2.1.3_comp.js" charset="utf-8"></script> |
<link rel="stylesheet" href="autosuggest_inquisitor.css" type="text/css" media="screen" charset="utf-8" /> | <link rel="stylesheet" href="autosuggest_inquisitor.css" type="text/css" media="screen" charset="utf-8" /> |
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> | <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> |
<script type="text/javascript"> | <script type="text/javascript"> |
$(document).ready(function() | $(document).ready(function() |
{ | { |
//hide the all of the element with class msg_body | //hide the all of the element with class msg_body |
$(".msg_body").hide(); | $(".msg_body").hide(); |
//toggle the componenet with class msg_body | //toggle the componenet with class msg_body |
$(".msg_head").click(function() | $(".msg_head").click(function() |
{ | { |
$(this).next(".msg_body").slideToggle(600); | $(this).next(".msg_body").slideToggle(600); |
}); | }); |
}); | }); |