<?php
/**
 * SoapError - Gère les erreurs SOAP
 * @package SoapError
 * @author Michael RICOIS
 * @copyright Scores&Decisions
 */

require_once 'phpmailer/class.phpmailer.php';

/**
 * Recupère les erreurs SOAP et les traite.
 * @param string $lastRequest
 * @param string $lastResponse
 * @param array $fault
 * @param bool $debug
 * @return string
 */
function processSoapFault($clientSoap, $fault, $tabInfo, $debug = FALSE){

	global $firephp;
	$message = 'Request : '. htmlspecialchars($clientSoap->__getLastRequest()) . '<br/><br/>' .
			   'Response : '. htmlspecialchars($clientSoap->__getLastResponse()) . '<br/><br/>';

	if(is_object($fault)){

	}else{
		foreach ($fault as $key => $value){ $message.= $key .' : '. $value . '<br/><br/>';}
	}
	$message.= '<br/>';
	$message.= 'Informations de debug : <br/>';
	$message.= '<pre>';
	$message.= 'REQUEST : '.print_r($_REQUEST,true).'<br/><br/>';
	$message.= 'SERVER : '.print_r($_REQUEST,true).'<br/><br/>';
	$message.= 'SESSION : '.print_r($_SESSION,true).'<br/><br/>';
	$message.= 'tabInfo : '.print_r($tabInfo,true).'<br/><br/>';
	$message.= '</pre>';

	if($debug == TRUE){
		print '<pre>';
		print $message;
		print '</pre>';
	}else{
		mailSoapFault($message);
		print messageSoapFault();
	}
}


/**
 * Affiche un message d'erreur sympatique pour le client.
 * @return string
 */
function messageSoapFault(){
	(defined('ERROR_SOAP')) ? ($message = ERROR_SOAP) : ($message = "Une erreur est survenue lors de votre requête") ;
	return $message;
}

/**
 * Envoi de l'erreur Soap par mail.
 * @param string $message
 * @return void
 */
function mailSoapFault($message){
	$mail			= new PHPMailer();
	$mail->From		= "contact@scores-decisions.com";
	$mail->FromName	= "Serveur SD-13408";
	$mail->Host		= "mail.scores-decisions.com";
	$mail->Mailer   = "smtp";
	$mail->Subject	= "Erreur SOAP - (Date :".date("d")."/".date("m")."/".date("Y").")";
	$body 			= $message;
	$mail->MsgHTML($body);
	$mail->AddAddress(EMAIL_SUPPORTDEV, "Support");
	if(!$mail->Send()) {
		//logSoapFault($mail->ErrorInfo);
	}
}

/**
 * Fonction qui enregistre les messages d'erreur dans un log.
 * @param string $message
 * @return void
 */
function logSoapFault($message){
	echo $message;
}


?>