<?

//make sure logs folder exists, and htaccess it to deny access
if(!file_exists("../data/logs"))
	@mkdir("../data/logs");

 if(!file_exists("../data/logs/.htaccess"))
 	@file_put_contents("../data/logs/.htaccess","Order Deny,Allow\r\nDeny From All\r\n");
//   Check which OS we are running
$pos = strpos(getcwd(),'/');
if($pos === false)
	{
	// Windows os server. 
	// if IIS Web Server use WScript.Shell 'run' command and.. we need a batch file to start a process and return immediately
	$bat_filename = "../data/judges_sa.bat";
	if(file_exists($bat_filename)){
	// delete the batch file then re-create it with the current date
	unlink($bat_filename);
	}
	$bat_file = fopen($bat_filename, "w");
	if($bat_file) {
      	fwrite($bat_file, "ECHO OFF"."\n");
        fwrite($bat_file, "START /BELOWNORMAL /B php judges_sa.php >../data/logs/judge_scheduler_".date("YmdHis").".log 2>&1 &"."\n");
        fwrite($bat_file, "EXIT"."\n");
  	 	fclose($bat_file);
	}
	$WshShell = new COM("WScript.Shell");
	//  next line designed for Windows os with IIS web server. It will probably fail if Windows using apache web server
	try {
		$oExec = $WshShell->run($bat_filename,0,false );     // THIS SHOULD WORK for windows using IIS as webserver. 
	}
	catch (Exception $e) {
		//  if the wshshell-> run fails then we are perhaps running an apache server and the next might work.
		//  But, the call in judges_sa_launcher_apache.php does not return until completed so I use this logic
		//  to inform the user how to get to the status page.
		//	CAUTION:  This path REQUIRES that php be compiled with CLI option and other things Dennis does not understand!
		//  This may work for some servers.    NEVER use this on a shared server - you will hog it and get your account suspended.
		echo " This server requires manual intervention to start the scheduler and to navigate to the Status page.<br/>";
		echo " The scheduler will run at normal priority - which in some servers may present a sluggish response.<br />";
		echo " Please follow these instruction exactly:<br />";
		echo " 1. Click 'Start the Scheduler' link ONCE. (You will not see any change in this screen) <br />";
		echo "       *** DO NOT Click 'Start the Scheduler' more than once!<br />";
		echo " 2. Click 'Check the Status' link and wait. (You will be taken to the Status Page. There, you should see that the scheduler is running.) <br />";
		echo "<br /><a href=\"judges_sa_launcher_apache.php\">Start the Scheduler</a><br /><br />";
		echo "<a href=\"judges_scheduler_status.php\">Check the Status</a><br />";
		exit;
	 // This is the call that works - but it does not return until judges_sa is finished so... I launch it from another window
		//	exec("php judges_sa.php >../data/logs/judge_scheduler_".date("YmdHis").".log 2>&1 &");
	}
}
else{
	// *nix server
//add PHP_SELF just so when we do a process listing on the server we know which fair its running for
//the argument does not get used by the script at all
exec("nice php judges_sa.php {$_SERVER['PHP_SELF']} >../data/logs/judge_scheduler_".date("YmdHis").".log 2>&1 &");
}
usleep(1500000); // 1.5 second to allow the judges_sa to update the % status to 0% otherwise the status page will think its not running if it gets there too soon
header("Location: judges_scheduler_status.php");
exit;
?>
