<?php

	require_once($_SERVER['DOCUMENT_ROOT'] ."/eclipse.org-common/system/app.class.php");
	require_once("/home/data/httpd/eclipse-php-classes/menu/menu.class.php");

	#*****************************************************************************
	#
	# showyearlystats.php
	#
	# Author: 		M. Ward
	# Date:			2008-04-10
	#
	# Description: show the load stats for the all available years on the given server.
	#
	#
	#
	#
	# HISTORY:
	#
	#****************************************************************************

    //set the default debug level nice and low
    define('DEBUG',0);
    //define('BASEPATH','/tmp/')

  $Session = $this->App->useSession('required');
  $Friend = $this->Session->getFriend();
  if (!$Friend->getIsCommitter()){
    header("HTTP/1.1 403 Forbidden");
    exit;
  }

	include "../html/header.php";
	//do menu stuff
	$Menu = new Menu("en");
	$Menu->addMenuItem("Main stats page", "dailyloadstats.php", "_self");
    include("../modules/menu.php");

	//get the servername
    $server= $_REQUEST['server'];
	//get directory data
	$contents = scandir($server);

	$html = "<h2>Yearly Summaries</h2>";

	foreach( $contents as $entry) {
	  //is it a directory?
	  if ( $entry != "." && $entry != ".." ){
	    if( is_dir( $server ."/" . $entry ) == true) {
	      $html .= "</br></br><img src='drawyearstats.php?server=$server&year=$entry'></br></br></br>";
	    } else {
	      $html .= "not a directory !$entries";
	    }
	  }
	}

  echo $html;

  include "../html/footer.php";

?>
