<?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('"','"',$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(
'&' => '&',
'¡' => '¡', '¢' => '¢', '£' => '£', '¤' => '¤',
'¥' => '¥', '¦' => '¦', '§' => '§', '¨' => '¨',
'©' => '©', 'ª' => 'ª', '«' => '«', '¬' => '¬',
'' => '­', '®' => '®', '¯' => '¯', '°' => '°',
'±' => '±', '²' => '²', '³' => '³', '´' => '´',
'µ' => 'µ', '¶' => '¶', '·' => '·', '¸' => '¸',
'¹' => '¹', 'º' => 'º', '»' => '»', '¼' => '¼',
'½' => '½', '¾' => '¾', '¿' => '¿', 'À' => 'À',
'Á' => 'Á', 'Â' => 'Â', 'Ã' => 'Ã', 'Ä' => 'Ä',
'Å' => 'Å', 'Æ' => 'Æ', 'Ç' => 'Ç', 'È' => 'È',
'É' => 'É', 'Ê' => 'Ê', 'Ë' => 'Ë', 'Ì' => 'Ì',
'Í' => 'Í', 'Î' => 'Î', 'Ï' => 'Ï', 'Ð' => 'Ð',
'Ñ' => 'Ñ', 'Ò' => 'Ò', 'Ó' => 'Ó', 'Ô' => 'Ô',
'Õ' => 'Õ', 'Ö' => 'Ö', '×' => '×', 'Ø' => 'Ø',
'Ù' => 'Ù', 'Ú' => 'Ú', 'Û' => 'Û', 'Ü' => 'Ü',
'Ý' => 'Ý', 'Þ' => 'Þ', 'ß' => 'ß', 'à' => 'à',
'á' => 'á', 'â' => 'â', 'ã' => 'ã', 'ä' => 'ä',
'å' => 'å', 'æ' => 'æ', 'ç' => 'ç', 'è' => 'è',
'é' => 'é', 'ê' => 'ê', 'ë' => 'ë', 'ì' => 'ì',
'í' => 'í', 'î' => 'î', 'ï' => 'ï', 'ð' => 'ð',
'ñ' => 'ñ', 'ò' => 'ò', 'ó' => 'ó', 'ô' => 'ô',
'õ' => 'õ', 'ö' => 'ö', '÷' => '÷', 'ø' => 'ø',
'ù' => 'ù', 'ú' => 'ú', 'û' => 'û', 'ü' => 'ü',
'ý' => 'ý', 'þ' => 'þ', 'ÿ' => 'ÿ'
);
// 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 été supprimé !</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 été supprimé !</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 été déplacé !</h4><?php } }
else
{ if ($affichage){ ?><h4>impossible de dé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é</h4>
<p>Pensez à supprimer son dossier manuellement <br />
chemin du dossier : <strong class="rouge">'.$chemin.'</strong><br />
Une des causes du problème peut être un fichier supplémentaire dans
le dossier du tournoi. Ce tournoi n\'apparaitra plus dans la liste mais une suppression du
dossier serai préférable.</p>';
}
if ( $avec_arret ) { die(); }
return false;
}
return true;
}
}
?>