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