Location: PHPKode > projects > ZKup > zKup_v2.06/include/fct_xml.php
<?php
# ***** AVERTISSEMENT SUR LA LICENSE *****
# Copyright COSSE Karl, 2006-2007
# 
# Adresse mail : hide@address.com
# 
# Ce logiciel est un programme informatique servant à la gestion
# de tournoi de jeux facilement via l'interface du site.
# 
# Ce logiciel est régi par la licence CeCILL soumise au droit français et
# respectant les principes de diffusion des logiciels libres. Vous pouvez
# utiliser, modifier et/ou redistribuer ce programme sous les conditions
# de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
# sur le site "http://www.cecill.info".
# 
# En contrepartie de l'accessibilité au code source et des droits de copie,
# de modification et de redistribution accordés par cette licence, il n'est
# offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
# seule une responsabilité restreinte pèse sur l'auteur du programme,  le
# titulaire des droits patrimoniaux et les concédants successifs.
# 
# A cet égard  l'attention de l'utilisateur est attirée sur les risques
# associés au chargement,  à l'utilisation,  à la modification et/ou au
# développement et à la reproduction du logiciel par l'utilisateur étant 
# donné sa spécificité de logiciel libre, qui peut le rendre complexe à 
# manipuler et qui le réserve donc à des développeurs et des professionnels
# avertis possédant  des  connaissances  informatiques approfondies.  Les
# utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
# logiciel à leurs besoins dans des conditions permettant d'assurer la
# sécurité de leurs systèmes et ou de leurs données et, plus généralement, 
# à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 
# 
# Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
# pris connaissance de la licence CeCILL, et que vous en avez accepté les
# termes.
# ***** AVERTISSEMENT SUR LA LICENSE *****

if (!defined('FCT_XML') ) {
	define("FCT_XML",true);
	/**
* Function to actually perform parsing
* 
* @param	string		$file		name of XML file to be parsed.
* @access	public
* @author	Christian Machmeier
*/
	function parseXML($xmlFile)
	{
		// Of course the XMl file is mandatory.
		if (empty($xmlFile)) {
			die('Fichier vide');
		}

		// Open the XML file for reading.
		if (!($fileHandle = @fopen($xmlFile, 'r'))) {
			die("Je ne peux pas lire le fichier XML: " . $xmlFile);
		}

		// Read the XML file.
		$data = '';
		while (($chunk = @fread($fileHandle, 4096))) {
			$data .= $chunk;
		}

		// Initialize the SAX parser.
		$xmlParser = @xml_parser_create();

		// Control the parser behaviour.
		@xml_parser_set_option($xmlParser, XML_OPTION_CASE_FOLDING, false);
		@xml_parser_set_option($xmlParser, XML_OPTION_SKIP_WHITE, 	true);

		// Parse the XML file.
		$elementArray 	= array();
		$frequencyArray = array();

		if (!xml_parse_into_struct($xmlParser, $data, $elementArray, $frequencyArray)) {
			die('XML Parser error: ' . xml_error_string(xml_get_error_code($xmlParser)));
		}

		// All done, clean up!
		@xml_parser_free($xmlParser);

		return $elementArray;
	}

	function completerChemin($fichier,$extension='')
	{
		if (eregi("^".addslashes(CHEMIN)."(.*)$",$fichier) ) return $fichier;
		return CHEMIN.'/'.$fichier.$extension;
	}

	function completer($en_cours,$num_dossier,$fichier)
	{
		$doss = ($en_cours)?DOSSIER_LIVE:DOSSIER_HISTORIQUE;
		return CHEMIN.'/'.$doss.'/'.$num_dossier.'/'.$fichier;
	}
	function smallConvert($str=null)
	{
		if ( empty($str) )
		return $str;

		return str_replace('"','&quot;',$str);
	}

	/**
* Convert a string to a non-ambigious string.
* 
* @param	string		$str		String to convert
* @return	string		$str		Converted string
* @access	public
* @author	Christian Machmeier
*/
	function convertStr($str = null)
	{
		if (empty($str)) {
			return $str;
		}

		$str = utf8_decode($str);

		// Array to cover all special letters from ISO-8859-1, used for captions and album titles.
		$replaceChars = array(
		'&' => '&amp;',
		'¡' => '&#161;', '¢' => '&#162;', '£' => '&#163;', '¤' => '&#164;',
		'¥' => '&#165;', '¦' => '&#166;', '§' => '&#167;', '¨' => '&#168;',
		'©' => '&#169;', 'ª' => '&#170;', '«' => '&#171;', '¬' => '&#172;',
		'­' => '&#173;', '®' => '&#174;', '¯' => '&#175;', '°' => '&#176;',
		'±' => '&#177;', '²' => '&#178;', '³' => '&#179;', '´' => '&#180;',
		'µ' => '&#181;', '¶' => '&#182;', '·' => '&#183;', '¸' => '&#184;',
		'¹' => '&#185;', 'º' => '&#186;', '»' => '&#187;', '¼' => '&#188;',
		'½' => '&#189;', '¾' => '&#190;', '¿' => '&#191;', 'À' => '&#192;',
		'Á' => '&#193;', 'Â' => '&#194;', 'Ã' => '&#195;', 'Ä' => '&#196;',
		'Å' => '&#197;', 'Æ' => '&#198;', 'Ç' => '&#199;', 'È' => '&#200;',
		'É' => '&#201;', 'Ê' => '&#202;', 'Ë' => '&#203;', 'Ì' => '&#204;',
		'Í' => '&#205;', 'Î' => '&#206;', 'Ï' => '&#207;', 'Ð' => '&#208;',
		'Ñ' => '&#209;', 'Ò' => '&#210;', 'Ó' => '&#211;', 'Ô' => '&#212;',
		'Õ' => '&#213;', 'Ö' => '&#214;', '×' => '&#215;', 'Ø' => '&#216;',
		'Ù' => '&#217;', 'Ú' => '&#218;', 'Û' => '&#219;', 'Ü' => '&#220;',
		'Ý' => '&#221;', 'Þ' => '&#222;', 'ß' => '&#223;', 'à' => '&#224;',
		'á' => '&#225;', 'â' => '&#226;', 'ã' => '&#227;', 'ä' => '&#228;',
		'å' => '&#229;', 'æ' => '&#230;', 'ç' => '&#231;', 'è' => '&#232;',
		'é' => '&#233;', 'ê' => '&#234;', 'ë' => '&#235;', 'ì' => '&#236;',
		'í' => '&#237;', 'î' => '&#238;', 'ï' => '&#239;', 'ð' => '&#240;',
		'ñ' => '&#241;', 'ò' => '&#242;', 'ó' => '&#243;', 'ô' => '&#244;',
		'õ' => '&#245;', 'ö' => '&#246;', '÷' => '&#247;', 'ø' => '&#248;',
		'ù' => '&#249;', 'ú' => '&#250;', 'û' => '&#251;', 'ü' => '&#252;',
		'ý' => '&#253;', 'þ' => '&#254;', 'ÿ' => '&#255;'
		);


		// Either which one of the above arrays is specified to be processed, the
		// given string of characters will now be converted and returned afterwards.
		foreach ($replaceChars as $k => $v) {
			$str = str_replace($k, $v, $str);
		}

		return $str;
	}



	function ecrireFichier($destination, $contenu)
	{
		if (!$handle = fopen($destination, 'w'))
		return false;
		if (fwrite($handle, $contenu) === FALSE)
		return false;
		fclose($handle);
		return true;
	}
	function creerXML($Fichier)
	{
		return ( file_exists($Fichier) )?false: ecrireFichier($Fichier,Header_XML.Footer_XML);
	}

	function sup_fichier($fichier,$affichage=true)
	{
		$fichier = completerChemin($fichier);
		$etat = @unlink($fichier);
		if ( $affichage ){
			if ( $etat )
			{ ?><h4>le fichier <?php echo basename($fichier);?> a &eacute;t&eacute; supprim&eacute !</h4><?php  }
			else
			{ ?><h4>impossible de supprimer le fichier <?php echo basename($fichier); ?> !</h4><?php  }
		}
		return $etat;
	}
	function sup_dossier($dossier,$affichage=true)
	{
		$dossier = completerChemin($dossier);
		$etat = @rmdir($dossier);
		if ( $affichage ) {
			if ( $etat )
			{ ?><h4>le dossier <?php echo $dossier;?> a &eacute;t&eacute; supprim&eacute !</h4><?php }
			else
			{ ?><h4>impossible de supprimer le dossier <?php echo $dossier; ?> !</h4><?php }
		}
		return $etat;
	}
	function dep_fichier($fichier_src,$fichier_dest,$affichage=false)
	{
		if ( ($etat = @copy($fichier_src, $fichier_dest)) )
		{ if ($affichage){ ?><h4>le fichier <?php echo $fichier_src;?> a &eacute;t&eacute; d&eacute;plac&eacute !</h4><?php } }
		else
		{ if ($affichage){ ?><h4>impossible de d&eacute;placer le fichier <?php echo $fichier_src; ?> !</h4><?php } ; }
		return $etat;
	}

	function verifier_integrite($dossier,$objet,$en_cours,$supprimer_si_incorrect=false,$avec_arret=false)
	{
		$status_tn = $en_cours?DOSSIER_LIVE:DOSSIER_HISTORIQUE;
		$chemin = completerChemin($status_tn.'/'.$dossier);
		$f_eq = $chemin.'/'.Nom_Fichier_Equipes; $f_tn = $chemin.'/'.Nom_Fichier_Tournoi;
		
		if ( !is_dir($chemin) || !file_exists($f_eq) || !file_exists($f_tn) )
		{
			if ( $supprimer_si_incorrect && $objet->supprimer($dossier,true) )
			{
				echo '<h4>Le tournoi que vous souhaitez supprimer n\'existe plus ou est endommag&eacute</h4>
			<p>Pensez &agrave; supprimer son dossier manuellement <br />
			chemin du dossier : <strong class="rouge">'.$chemin.'</strong><br />
			Une des causes du probl&egrave;me peut &ecirc;tre un fichier suppl&eacute;mentaire dans
			le dossier du tournoi. Ce tournoi n\'apparaitra plus dans la liste mais une suppression du 
			dossier serai pr&eacute;f&eacute;rable.</p>';		
			}
			if ( $avec_arret ) { die(); }
			return false;
		}
		return true;
	}
	
}
?>
Return current item: ZKup