240 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| if ( !isset($site) )
 | |
| {
 | |
|     require_once( "config.inc.php" );
 | |
| 	header( 'Location:  ' . $accueil );
 | |
| }
 | |
| 
 | |
| require_once "config.inc.php";
 | |
| require_once "log.php";
 | |
| require_once "fonctions.inc.php";
 | |
| require_once "envoi_courriel.inc.php";
 | |
| 
 | |
| $table_prefix = "";
 | |
| class db
 | |
| {
 | |
|     private $server = "db351634-avionpoeme.sql-pro.online.net";
 | |
|     private $port = 3306;
 | |
|     private $user = "db120904";
 | |
|     private $passwd = "AvionPoème*DB";
 | |
|     private $database = "db351634_avionpoeme";
 | |
|     public $connect;
 | |
|     public $result;
 | |
| 	// avion
 | |
| 	public $uid;
 | |
| 	public $message;
 | |
| 	public $expeMail;
 | |
| 	public $expeKnown;
 | |
| 	public $expeLang;
 | |
| 	public $destLang;
 | |
| 	public $startLat;
 | |
| 	public $startLon;
 | |
| 	public $startName;
 | |
| 	public $startTime;
 | |
| 	public $startTimeRFC822;
 | |
| 	public $startTZ;
 | |
| 	public $destMail;
 | |
| 	public $destLat;
 | |
| 	public $destLon;
 | |
| 	public $destName;
 | |
| 	public $public;
 | |
| 	public $color;
 | |
| 	public $deliveryTime;
 | |
| 	public $deliveryTimeRFC822;
 | |
| 	public $deliveryTZ;
 | |
| 	public $deliveryTimeServer;
 | |
| 	public $deliveryMethod;
 | |
| 	public $avionJournalier;
 | |
| 	public $urlAvion;
 | |
| 
 | |
| 	// peripeties
 | |
| 	public $idPeripetie;
 | |
| 	public $datePeripetie;
 | |
| 	public $effetPeripetie;
 | |
| 
 | |
|     function __construct()
 | |
|     {
 | |
|         $this->open();
 | |
|     }
 | |
| 
 | |
|     function open()
 | |
|     {
 | |
| 		if ( !$this->connect )
 | |
| 		{
 | |
| 			$this->connect = new mysqli( $this->server, $this->user, $this->passwd, $this->database );
 | |
| 			if ( $this->connect->connect_errno )
 | |
| 			{
 | |
| 				log_error( "Échec de la connexion : => " . $this->connect->connect_error . "<br />" . __file__ . ' ligne ' . __line__, false,false);
 | |
| 				return false;
 | |
| 			}
 | |
| 		}
 | |
| 		$this->connect->set_charset("utf8");
 | |
| 		return true;
 | |
|     }
 | |
| 
 | |
|     function close()
 | |
|     {
 | |
|         $this->connect->close();
 | |
|         $this->connect = 0;
 | |
|     }
 | |
| 
 | |
|     function protect( $string )
 | |
|     {
 | |
| 		return $this->connect->real_escape_string( $string );
 | |
|     }
 | |
| 
 | |
| 	function query( $string )
 | |
| 	{
 | |
| 
 | |
| 		//log_write( $string );
 | |
| 		if ( empty( $this->connect ) )		$this->open();
 | |
| 
 | |
| 		$this->result = $this->connect->query( $string ) ;
 | |
| 
 | |
| 		if ( $this->connect->error )  log_error( "Échec de la commande query => " . $this->connect->error . "<br />" . __file__ . ' ligne ' . __line__ . "\n" . $string, true, false);
 | |
| 		//print_r( $this );
 | |
|     }
 | |
| 
 | |
|     function newPlane()				//return 0 on error
 | |
|     {
 | |
| 		global $base_url;
 | |
| 		$query = "INSERT INTO avionpoeme VALUES ('0','";
 | |
| 		$query .= $this->protect($this->message) . "', '";
 | |
| 		$query .= $this->protect($this->expeMail) . "', ";
 | |
| 		$query .= $this->protect($this->expeKnown) . ", '";
 | |
| 		$query .= $this->protect($this->expeLang) . "', '";
 | |
| 		$query .= $this->protect($this->destLang) . "', '";
 | |
| 		$query .= $this->protect($this->startLat) . "', '";
 | |
| 		$query .= $this->protect($this->startLon) . "', '";
 | |
| 		$query .= $this->protect($this->startName) . "', ";
 | |
| 		$query .= "FROM_UNIXTIME(" . $this->protect($this->startTime) . "), '";
 | |
| 		$query .= $this->protect($this->startTZ) . "', '";
 | |
| 		$query .= $this->protect($this->destMail) . "', '";
 | |
| 		$query .= $this->protect($this->destLat) . "', '";
 | |
| 		$query .= $this->protect($this->destLon) . "', '";
 | |
| 		$query .= $this->protect($this->destName) . "', ";
 | |
| 		$query .= $this->protect($this->public) . ", '";
 | |
| 		$query .= $this->protect($this->color) . "', ";
 | |
| 		$query .= "FROM_UNIXTIME(" . $this->protect($this->deliveryTime) . "), '";
 | |
| 		$query .= $this->protect($this->deliveryTZ) . "', ";
 | |
| 		$query .=  "FROM_UNIXTIME(" . $this->protect($this->deliveryTimeServer) . "), '";
 | |
| 		$query .= $this->protect($this->deliveryMethod) . "','";
 | |
| 		$query .= "0')";
 | |
| 		$this->query($query);
 | |
| 		$this->uid = $this->connect->insert_id;
 | |
| 		echo "{'uid':'" . $this->uid . "'}";
 | |
| 		$this->startTimeRFC822 = formatteDate( $this->expeLang, $this->startTime, $this->startTZ);
 | |
| 		$this->deliveryTimeRFC822 = formatteDate( $this->destLang, $this->deliveryTime, $this->deliveryTZ );
 | |
| 		$this->urlAvion = $base_url . "/?avionpoeme=" . $this->uid;
 | |
| 		$this->newPeripetie();
 | |
| 		courrielEnvoi($this);
 | |
| 
 | |
|     }
 | |
| 
 | |
| 	function getPlane($uid)
 | |
| 	{
 | |
| 		global $base_url;
 | |
| 		$query = "SELECT idAvion, message, expeMail, expeKnown, expeLang, destLang, startLat, startLon, startName, UNIX_TIMESTAMP(startTime) as startTime, startTZ, destMail, destLat, destLon, destName, color, UNIX_TIMESTAMP(deliveryTime) as deliveryTime, deliveryTZ, UNIX_TIMESTAMP(deliveryTimeServer) as deliveryTimeServer, deliveryMethod, public FROM avionpoeme WHERE idAvion='" . $uid  ."'";
 | |
| 		$this->query($query);
 | |
| 		$plane = $this->result->fetch_array(MYSQLI_ASSOC);
 | |
| 		$this->message = $plane["message"];
 | |
| 		$this->expeMail = $plane["expeMail"];
 | |
| 		$this->expeKnown = $plane["expeKnown"];
 | |
| 		$this->expeLang = $plane["expeLang"];
 | |
| 		$this->destLang = $plane["destLang"];
 | |
| 		$this->startLat = $plane["startLat"];
 | |
| 		$this->startLon = $plane["startLon"];
 | |
| 		$this->startName = $plane["startName"];
 | |
| 		$this->startTime = $plane["startTime"];
 | |
| 		$this->startTZ = $plane["startTZ"];
 | |
| 		$this->startTimeRFC822 = formatteDate( $this->expeLang, $this->startTime, $this->startTZ);
 | |
| 		$this->destMail = $plane["destMail"];
 | |
| 		$this->destLat = $plane["destLat"];
 | |
| 		$this->destLon = $plane["destLon"];
 | |
| 		$this->destName = $plane["destName"];
 | |
| 		$this->color = $plane["color"];
 | |
| 		$this->deliveryTime = $plane["deliveryTime"];
 | |
| 		$this->deliveryTZ = $plane["deliveryTZ"];
 | |
| 		$this->deliveryTimeRFC822 = formatteDate( $this->destLang, $this->deliveryTime, $this->deliveryTZ );
 | |
| 		$this->deliveryTimeServer = $plane["deliveryTimeServer"];
 | |
| 		$this->deliveryMethod = $plane["deliveryMethod"];
 | |
| 		$this->public = $plane["public"];
 | |
| 		$this->uid = $plane["idAvion"];
 | |
| 		$this->urlAvion = $base_url . "/?avionpoeme=" . $this->uid;
 | |
| 	}
 | |
| 
 | |
|     function getCurrentPlanes()
 | |
|     {
 | |
| 		$query = "SELECT idAvion as uid, UNIX_TIMESTAMP(deliveryTime) as deliveryTime, deliveryTZ, destLat, destLon, destName, UNIX_TIMESTAMP(startTime) as startTime, startTZ, startLon, startLat, startName, color FROM avionpoeme WHERE deliveryTimeServer>NOW()";
 | |
| 		$this->query($query);
 | |
| 		$planes = $this->result->fetch_all(MYSQLI_ASSOC);
 | |
| 		print json_encode($planes);
 | |
| 		//log_write(json_encode($planes), INFO);
 | |
| 		return $planes;
 | |
| 	}
 | |
| 
 | |
| 	function getAnthology($page=0)
 | |
| 	{
 | |
| 		$query = "SELECT COUNT(*) as count FROM avionpoeme WHERE deliveryTimeServer<NOW() AND public='1'";
 | |
| 		$this->query($query);
 | |
| 		$result = $this->result->fetch_assoc();
 | |
| 		$n_pages = floor(($result["count"] / RESULTS_BY_PAGE))+1;
 | |
| 		if ($page <= 0) //renvoie le nombre de ligne d'anthologie
 | |
| 		{
 | |
| 			print '{"nAnthology":"' . $result["count"] . '","nPages":"' . $n_pages .'"}';
 | |
| 			return $n_pages;
 | |
| 		}else  //renvoie les lignes d'anthologie
 | |
| 		{
 | |
| 			if ($page > $n_pages) $page=$n_pages;
 | |
| 			$query = "SELECT UNIX_TIMESTAMP(startTime) as startTime, startTZ, startName, message, UNIX_TIMESTAMP(deliveryTime) as deliveryTime , deliveryTZ, destName FROM avionpoeme WHERE deliveryTimeServer<NOW() AND public='1' ORDER BY deliveryTime DESC LIMIT " . ($page-1)*RESULTS_BY_PAGE . "," . RESULTS_BY_PAGE;
 | |
| 			$this->query($query);
 | |
| 			$planes = $this->result->fetch_all(MYSQLI_ASSOC);
 | |
| 			print json_encode($planes, JSON_FORCE_OBJECT);
 | |
| 			return $planes;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	function savePeripetie()
 | |
| 	{
 | |
| 
 | |
| 		$query = "INSERT INTO avionPeripetie VALUES ('0','";
 | |
| 		$query .= $this->protect($this->uid) . "','";
 | |
| 		$query .= $this->protect($this->idPeripetie) . "', ";
 | |
| 		$query .= "FROM_UNIXTIME(" . $this->protect($this->datePeripetie) . "), '0')";
 | |
| 		log_write("savePeripetie " . $query);
 | |
| 		//$query .= $this->protect($this->effetPeripetie) . "', '";
 | |
| 		//$query .= $this->protect($this->expeMail) . "', '";
 | |
| 		//$query .= $this->protect($this->destMail) . "')";
 | |
| 		$this->query($query);
 | |
| 	}
 | |
| 
 | |
| 	function newPeripetie()
 | |
| 	{
 | |
| 		$query = "SELECT *, DATEDIFF(quand,CURDATE()) as datePeripetie FROM peripeties WHERE quand IS NULL";
 | |
| 		$this->query($query);
 | |
| 		while ( ($result = $this->result->fetch_assoc()) )
 | |
| 		{
 | |
| 			$this->idPeripetie =  $result["idPeripetie"];
 | |
| 			if ((mt_rand(0,100) <= $result["probabilite"]))   //calcul de la probabilité de la péripétie
 | |
| 			{
 | |
| 				log_write("newPeripetie");
 | |
| 				$this->datePeripetie = mt_rand($this->startTime, $this->deliveryTime);        //ajustement de l'effet
 | |
| 				$this->savePeripetie();
 | |
| 				break;			//une seule péripétie par avionpoème. Enlever le break si pas de limites sur le nombre de péripéties
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	function avionJournalier()
 | |
| 	{
 | |
| 		$query = "SELECT COUNT(*) as count FROM avionpoeme WHERE DATEDIFF(startTime, NOW())=0";
 | |
| 		$this->query($query);
 | |
| 		$result = $this->result->fetch_assoc();
 | |
| 		$this->avionJournalier = $result["count"];
 | |
| 		return $this->avionJournalier;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| ?>
 |