|
<?php |
|
//long contract period (number of weeks/days?) |
|
$heuristics["DATE_LONG_CONTRACT_PERIOD"] = Array( |
|
"description" => "long contract period (number of weeks/days?)" |
|
); |
|
function DATE_LONG_CONTRACT_PERIOD($cn) |
|
{ |
|
$averageContractPeriod = getAverageContractPeriod(); |
|
$stddevContractPeriod = getstddevContractPeriod(); |
|
$diff = strtotime($cn['contractEnd']) - strtotime($cn['contractStart']); |
|
$days = intval($diff / (60 * 60 * 24)); |
|
$value = abs($days - $averageContractPeriod) / $stddevContractPeriod; |
|
return Array( |
|
"heuristic_value" => $value, |
|
"raw_value" => $days, |
|
"mean" => $averageContractPeriod, |
|
"stddev" => $stddevContractPeriod |
|
); |
|
} |
|
$averageContractPeriod; |
|
function getAverageContractPeriod() |
|
{ |
|
global $averageContractPeriod; |
|
if (!$averageContractPeriod) { |
|
$query = "select AVG(dateDiff(contractEnd,contractStart)) from contractnotice"; |
|
$result = mysql_query($query); |
|
$r = mysql_fetch_array($result, MYSQL_BOTH); |
|
$averageContractPeriod = $r[0]; |
|
} |
|
return $averageContractPeriod; |
|
} |
|
$stddevContractPeriod; |
|
function getstddevContractPeriod() |
|
{ |
|
global $stddevContractPeriod; |
|
if (!$stddevContractPeriod) { |
|
$query = "select STDDEV(dateDiff(contractEnd,contractStart)) from contractnotice"; |
|
$result = mysql_query($query); |
|
$r = mysql_fetch_array($result, MYSQL_BOTH); |
|
$stddevContractPeriod = $r[0]; |
|
} |
|
return $stddevContractPeriod; |
|
} |
|
//Reported late, 45 days? A late contract is a dodgy contract except maybe for variations? |
|
$heuristics["DATE_REPORTED_LATE"] = Array( |
|
"description" => "Reported late, 45 days?" |
|
); |
|
function DATE_REPORTED_LATE($cn) |
|
{ |
|
$averageDaysLate = getAverageDaysLate(); |
|
$stddevDaysLate = getStddevDaysLate(); |
|
$diff = strtotime($cn['publishDate']) - strtotime($cn['contractStart']); |
|
$days = intval($diff / (60 * 60 * 24)); |
|
if ($days <= 0) { |
|
$value = 0; |
|
} |
|
else { |
|
// +1 demerit for exceeding 45 day requirement |
|
$value = (abs($days - $averageDaysLate) / $stddevDaysLate) + ($days < 45 ? 0 : 1); |
|
} |
|
return Array( |
|
"heuristic_value" => $value, |
|
"raw_value" => $days, |
|
"mean" => $averageDaysLate, |
|
"stddev" => $stddevDaysLate |
|
); |
|
} |
|
$averageDaysLate; |
|
function getAverageDaysLate() |
|
{ |
|
global $averageDaysLate; |
|
if (!$averageDaysLate) { |
|
$query = "select AVG(dateDiff(publishDate,contractStart)) from contractnotice"; |
|
$result = mysql_query($query); |
|
$r = mysql_fetch_array($result, MYSQL_BOTH); |
|
$averageDaysLate = $r[0]; |
|
} |
|
return $averageDaysLate; |
|
} |
|
$stddevDaysLate; |
|
function getStddevDaysLate() |
|
{ |
|
global $stddevDaysLate; |
|
if (!$stddevDaysLate) { |
|
$query = "select STDDEV(dateDiff(publishDate,contractStart)) from contractnotice"; |
|
$result = mysql_query($query); |
|
$r = mysql_fetch_array($result, MYSQL_BOTH); |
|
$stddevDaysLate = $r[0]; |
|
} |
|
return $stddevDaysLate; |
|
} |
|
?> |