<?php | |
function get_stats_file($build) { | |
$dir = "/home/data/httpd/writable/henshin"; | |
if (!file_exists($dir)) { | |
mkdir($dir); | |
} | |
return "$dir/download-stats-$build.txt"; | |
} | |
function get_month_key() { | |
return date('Y-m'); | |
} | |
function load_stats($build) { | |
$stats = array(); | |
$file = get_stats_file($build); | |
if (file_exists($file)) { | |
$f = fopen($file, 'r'); | |
while (!feof($f)) { | |
$line = fgets($f); | |
$arr = explode(':',$line); | |
if (count($arr)>1) { | |
$stats[$arr[0]] = $arr[1]; | |
} | |
} | |
fclose($f); | |
} else { | |
$reset = "Reset to initial values."; | |
if (!reset_stats($build)) { | |
$reset = "Cannot reset stats file!"; | |
} | |
mail("henshin.ck@gmail.com", | |
"Error loading Henshin download stats", | |
"Cannot find $file.\n$reset"); | |
} | |
return $stats; | |
} | |
function reset_stats($build) { | |
$init = "init-$build.txt"; | |
$file = get_stats_file($build); | |
return copy($init, $file); | |
} | |
function save_stats($build, $stats) { | |
$file = get_stats_file($build); | |
$f = fopen($file, 'w'); | |
if ($f!=FALSE) { | |
foreach ($stats as $month=>$count) { | |
fwrite($f, "$month:$count\n"); | |
} | |
fclose($f); | |
} else { | |
mail("henshin.ck@gmail.com", | |
"Error saving Henshin download stats", | |
"Cannot write to file $file"); | |
} | |
} | |
function update_stats($build) { | |
$stats = load_stats($build); | |
$month = get_month_key(); | |
if (!isset($stats[$month])) { | |
$stats[$month] = 1; | |
} else { | |
$stats[$month] = $stats[$month]+1; | |
} | |
save_stats($build, $stats); | |
mail("henshin.ck@gmail.com", | |
"Henshin download notification", | |
"See http://www.eclipse.org/modeling/emft/henshin/stats/info.php"); | |
return $stats; | |
} | |
function print_stats($build) { | |
$stats = load_stats($build); | |
echo "<table border=\"1\">\n"; | |
echo "<tr><th>Month</th><th>Count</th></tr>\n"; | |
foreach ($stats as $month=>$count) { | |
echo "<tr><td>$month</td><td>$count</td></tr>\n"; | |
} | |
echo "</table>\n"; | |
} | |
?> |