<?php
//this make the page not accessible outside the foundation


function get_filename(){

	$currentFile = $_SERVER["SCRIPT_NAME"];
	$parts = Explode('/', $currentFile);
	return $parts[count($parts) - 1];


}


/*START OF TEST DATA : This need's to be commented out before the code is commited to the server!
*$number_projects = rand(20,200);
*$friends = rand(0,444);
*$donarlist = '<li>Jeffrey t Buyna - $35</li><li>Zoran Bebic - $35</li><li>Lee Jiyul - $35</li><li>Anonymous - $50</li><li>Mirko Friedenhagen - $40</li><li>Chris Charlton - $35</li><li>Gandon Sebastien - $35</li><li>Dmitry Mityaev - $40</li>';
/*END OF TEST DATA : This need's to be commented out before the code is commited to the server!*/


$current_file = get_filename();
$release = 'juno';


if($_SERVER['REMOTE_ADDR'] == '206.191.52.58'){
	include_once('friendsFunctions.php');
	if($current_file == 'projects.php'){
		require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/Project.class.php");
		require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/SimultaneousReleaseInfo.class.php");
		require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/debug.php");
		require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/common.php");
		require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/images.inc");
		$projects = getAllProjectsInSimultaneousRelease($release);
		sortProjects($projects, 'name');
		$number_projects = count($projects);
	
		
	}
}else{
	exit();
}

$progress = getWantedCount();


