<?php //require('./class.jabber2.php'); // fonctions & icones par nitro skateboarding // http://www.multimania.com/nskate $souriez = array( array("|:-)", "lunettes.gif"), array(";-)", "clin.gif"), array(";)", "clin.gif"), array(";o)", "clin.gif"), array(":-))", "dents.gif"), array(":))", "dents.gif"), array(":-)", "content.gif"), array(":)", "content.gif"), array(":-o", "couteau.gif"), array(":o)", "debile.gif"), array(":-((", "enerve.gif"), array(":((", "enerve.gif"), array(":-(", "decu.gif"), array(":(", "decu.gif"), array("8-)", "hallucine.gif"), array(":-p", "langue.gif"), array(";-(", "pleure.gif"), array(";(", "pleure.gif"), array(";o(", "pleure.gif") ); // traitement des chaines - transformation des caractères function parse_string($chaine,$striphtml="no") { include_once "include/theme.inc.php"; $traite = $chaine; if ($striphtml == "yes") { $traite = str_replace(">", ">", $traite); $traite = str_replace("<", "<", $traite); } // wiki syntax $traite = ereg_replace("!!!(('?[^\n'])*)!!!","<h3>\\1</h3>",$traite); $traite = ereg_replace("!!(('?[^\n'])*)!!","<h2>\\1</h2>",$traite); $traite = ereg_replace("!(('?[^\n'])*)!","<h1>\\1</h1>",$traite); $traite = ereg_replace("\*\*(('?[^\n'])*)\*\*", "<b>\\1</b>", $traite); $traite = ereg_replace("''(('?[^\n'])*)''", "<i>\\1</i>", $traite); $traite = ereg_replace("__(('?[^\n'])*)__", "<u>\\1</u>", $traite); $traite = ereg_replace("::(('?[^\n'])*)::", "<div align='center'>\\1</div>", $traite); $traite = str_replace("---", "<hr />", $traite); $traite = eregi_replace("\[([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)\]", "<a href='mailto:\\1'>\\1</a>", $traite); $traite = ereg_replace("\[(.*)\>([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])\]", "<a href='\\2://\\3\\4' target='_blank' rel='nofollow'>\\1</a>", $traite); $traite = ereg_replace("\[(.*)>([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])\]", "<a href='\\2://\\3\\4\' target='_blank' rel='nofollow'>\\1</a>", $traite); $traite = eregi_replace("\[([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])\]", "<a href='\\1://\\2\\3' target='_blank' rel='nofollow'>\\1://\\2\\3</a>", $traite); //$traite = ereg_replace( "\[(.*>[A-Z][a-z]+\)]", "<a href='\\1'>\\2</a>", $traite); $traite = ereg_replace( "\[(.*)\>(.*)\]", "<a href='\\2' rel='nofollow'>\\1</a>", $traite); $traite = ereg_replace( "\[(.*)>(.*)\]", "<a href='\\2' rel='nofollow'>\\1</a>", $traite); $traite = ereg_replace( "\[(.*)\]", "<a href='\\1' rel='nofollow'>\\1</a>", $traite); $traite = ereg_replace( "\{\{(.*)\|(.*)\|(.*)\|(.*)\|(.*)\|(.*)\}\}", "<img src='\\1' alt='\\2'/ height='\\3/ width='\\4' align='\\5' valign='\\6' />", $traite); $traite = ereg_replace( "\{\{(.*)\|(.*)\|(.*)\|(.*)\|(.*)\}\}", "<img src='\\1' alt='\\2'/ height='\\3' width='\\4' align='\\5' />", $traite); $traite = ereg_replace( "\{\{(.*)\|(.*)\|(.*)\|(.*)\}\}", "<img src='\\1' alt='\\2' height='\\3' width='\\4' />", $traite); $traite = ereg_replace( "\{\{(.*)\|(.*)\|(.*)\}\}", "<img src='\\1' alt='\\2' height='\\3' />", $traite); $traite = ereg_replace( "\{\{(.*)\|(.*)\}\}", "<img src='\\1' alt='\\2' />", $traite); // smileys global $souriez; $traite = str_replace($souriez[0][0], "<img src='modules/share/".$souriez[0][1]."' border='0' alt='|:-)' />", $traite); $traite = str_replace($souriez[1][0], "<img src='modules/share/".$souriez[1][1]."' border='0' alt=';-)' />", $traite); $traite = str_replace($souriez[2][0], "<img src='modules/share/".$souriez[2][1]."' border='0' alt=';)' />", $traite); $traite = str_replace($souriez[3][0], "<img src='modules/share/".$souriez[3][1]."' border='0' alt=';o)' />", $traite); $traite = str_replace($souriez[4][0], "<img src='modules/share/".$souriez[4][1]."' border='0' alt=':-))' />", $traite); $traite = str_replace($souriez[5][0], "<img src='modules/share/".$souriez[5][1]."' border='0' alt=':))' />", $traite); $traite = str_replace($souriez[6][0], "<img src='modules/share/".$souriez[6][1]."' border='0' alt=':-)' />", $traite); $traite = str_replace($souriez[7][0], "<img src='modules/share/".$souriez[7][1]."' border='0' alt=':)' />", $traite); $traite = str_replace($souriez[8][0], "<img src='modules/share/".$souriez[8][1]."' border='0' alt=':-o' />", $traite); $traite = str_replace($souriez[9][0], "<img src='modules/share/".$souriez[9][1]."' border='0' alt=':o(' />", $traite); $traite = str_replace($souriez[10][0], "<img src='modules/share/".$souriez[10][1]."' border='0' alt=':o((' />", $traite); $traite = str_replace($souriez[11][0], "<img src='modules/share/".$souriez[11][1]."' border='0' alt=':((' />", $traite); $traite = str_replace($souriez[12][0], "<img src='modules/share/".$souriez[12][1]."' border='0' alt=':-(' />", $traite); $traite = str_replace($souriez[13][0], "<img src='modules/share/".$souriez[13][1]."' border='0' alt=':(' />", $traite); $traite = str_replace($souriez[14][0], "<img src='modules/share/".$souriez[14][1]."' border='0' alt='8-)' />", $traite); $traite = str_replace($souriez[15][0], "<img src='modules/share/".$souriez[15][1]."' border='0' alt=':-p' />", $traite); $traite = str_replace($souriez[16][0], "<img src='modules/share/".$souriez[16][1]."' border='0' alt=';-(' />", $traite); $traite = str_replace($souriez[17][0], "<img src='modules/share/".$souriez[17][1]."' border='0' alt=';-(' />", $traite); $traite = str_replace($souriez[18][0], "<img src='modules/share/".$souriez[18][1]."' border='0' alt=';-(' />", $traite); $traite = str_replace("\n","<br />",$traite); return $traite; } function mailalert($to, $subject, $from_name, $from_mail, $from_subject, $from_text) { $email = ""; if ($from_name != "") $email .= "Auteur:".$from_name; if ($from_mail != "") $email .= "<".$from_mail.">"; if ($from_subject != "") $email .= "\nTitre:".$from_subject; if ($from_subject != "") $email .= "\nTexte:".$from_text; $subject = "[Tourmentine] ".$subject; //mail($to, $subject, $email); mail($to, $subject, $from_text, "From: ".$from_name." <".$from_mail.">\r\nX-Mailer: PHP/" . phpversion()); } // renvoie la page ou le module en cours // (nécessaire car netscape ne reconnait pas la constante __SELF__) function caller() { include "include/theme.inc.php"; global $section; global $page; global $modulepage; global $theme; if (($section != "") && ($page != "")) $liencaller = "?section=$section&page=$page&theme=$theme"; else if ($modulepage != "") $liencaller = "?modulepage=$modulepage&theme=$theme"; else $liencaller = "?theme=$theme"; return $liencaller; } // renvoie la page ou le module en cours, à ajouter dans un formulaire // (pour le passage de paramètres par méthode get) function formcaller() { require_once "include/theme.inc.php"; global $section; global $page; global $modulepage; global $theme; if (($section != "") && ($page != "")) $formcaller = " <input name='section' value='$section' type='hidden' /> <input name='page' value='$page' type='hidden' />"; else if ($modulepage != "") $formcaller = " <input name='modulepage' value='$modulepage' type='hidden' />"; else return $formcaller; } // formate un nombre pour stockage dans un fichier d'index function splitchar($Number) { $byte = strval(dechex($Number)); switch(strlen($byte)) { case 1: $byte0=$byte; $byte1=$byte2=$byte3=0; break; case 2: $byte0="$byte[0]$byte[1]"; $byte1=$byte2=$byte3=0; break; case 3: $byte0="$byte[1]$byte[2]"; $byte1=$byte[0]; $byte2=$byte3=0; break; case 4: $byte0="$byte[2]$byte[3]"; $byte1="$byte[0]$byte[1]"; $byte2=$byte3=0; break; case 5: $byte0="$byte[3]$byte[4]"; $byte1="$byte[1]$byte[2]"; $byte2=$byte[0]; $byte3=0; break; case 6: $byte0="$byte[4]$byte[5]"; $byte1="$byte[2]$byte[3]"; $byte2="$byte[0]$byte[1]"; $byte3=0; case 7: $byte0="$byte[5]$byte[6]"; $byte1="$byte[3]$byte[4]"; $byte2="$byte[1]$byte[2]"; $byte3=$byte[0]; break; case 8: $byte0="$byte[6]$byte[7]"; $byte1="$byte[4]$byte[5]"; $byte2="$byte[2]$byte[3]"; $byte3="$byte[0]$byte[1]"; break; default: echo "depassement !!!!!!"; } $string = sprintf("%c%c%c%c",hexdec($byte3),hexdec($byte2),hexdec($byte1),hexdec($byte0)); return $string; } // créé un fichier d'index function strfile($FileName) { $Nb = 0; $index[$Nb++] = "0"; $input = fopen("$FileName.csv","r"); while ($data = fgetcsv($input, 10000, ",")) $index[$Nb++] = ftell($input); fclose($input); $index[--$Nb] = 0; $output = fopen("$FileName.dat","w"); fwrite($output,splitchar($Nb)); for ($i = 0 ; $i < $Nb ; $i++) fwrite($output,splitchar($index[$i])); fclose($output); } // lit un fichier d'index et renvoie l'index correspondant au numéro d'enregistrement function unstr($FileName,$Num) { if (!file_exists("$FileName.dat")) strfile($FileName); $indexfile = fopen("$FileName.dat","r"); $total = hexdec(bin2hex(fread($indexfile,4))); if ($Num > $total) $Num = $total; fseek($indexfile,($Num*4)+4); $pos = hexdec(bin2hex(fread($indexfile,4))); fclose($indexfile); return $pos; } // retourne le nombre d'enregistrement d'après le fichier d'index function gettotal($FileName,$typefile="file") { if ($typefile == "db") { global $sqltimegen; $sqlstartgen = microtime(true); $db = sqlite_open("modules/db.sqlite"); $line = sqlite_query($db, "SELECT * FROM news ORDER BY id DESC LIMIT 1 OFFSET 0"); $row = sqlite_fetch_array($line); $total_records = $row["id"]; sqlite_close($db); $sqlendgen = microtime(true); $sqltimegen += $sqlendgen - $sqlstartgen; } else { if (!file_exists("$FileName.dat")) strfile($FileName); $indexfile = fopen("$FileName.dat","r"); $total_records = hexdec(bin2hex(fread($indexfile,4))); fclose($indexfile); } return $total_records; } // compte le nombre d'enregistrement d'un fichier csv function countcsv($File) { $max = 0; $fd = fopen("$File.csv","r"); while (fgetcsv($fd,10000 , ",")) $max++; fclose($fd); return $max; } // créé un fichier function createfile($FileName) { $fp = fopen($FileName,"w+"); fclose($fp); } // affiche une erreur 401 function err401($msg_err) { echo " <html> <head> <meta http-equiv='Content-Type' content='HTTP/1.0 401 Unauthorized'> <title>Rapport d'erreur</title> </head> <body> <h1><font color=red>Erreur 401</font></h1> <br> <br>$msg_err<br> <hr> </body> </html>"; exit(); } // créé un fichier de log function addlog($url) { $File = "/logs/".str_replace("/","_",$url).".log"; // si le fichier n'existe pas, on le crée: if (!file_exists("$File.csv") ) createfile("$File.csv"); $date = strftime ("%d/%m/%Y", time()); $string = sprintf("\"".$date."\",\"".iheure()."\",\"".$_SERVER["REMOTE_ADDR"]."\",\"".$_SERVER["HTTP_REFERER"]."\",\"".$_SERVER["HTTP_USER_AGENT"]."\"\n"); $fp = fopen("$File.csv","a"); fwrite($fp,$string); fclose($fp); strfile($File); } // convertit les entités HTML en charactères spéciaux function html2ascii($inputstring) { $outputstring = eregi_replace("é","é",$inputstring); $outputstring = eregi_replace("è","è",$outputstring); $outputstring = eregi_replace("à","à",$outputstring); $outputstring = eregi_replace("ù","ù",$outputstring); $outputstring = eregi_replace("ô","ô",$outputstring); $outputstring = eregi_replace("ê","ê",$outputstring); $outputstring = eregi_replace("î","î",$outputstring); $outputstring = eregi_replace("â","â",$outputstring); $outputstring = eregi_replace("û","û",$outputstring); $outputstring = eregi_replace("ï","ï",$outputstring); $outputstring = eregi_replace("ë","ë",$outputstring); $outputstring = eregi_replace("ç","ç",$outputstring); $outputstring = eregi_replace(" "," ",$outputstring); $outputstring = eregi_replace(""","\"",$outputstring); $outputstring = eregi_replace("&","&",$outputstring); return $outputstring; } function wiki_help($lang) { if ($lang == "fr") return " <table class='wikihelp' id='wikihelp'> <tr><td>Gras</td><td>**texte**</td><td><b>texte</b></td></tr> <tr><td>Italique</td><td>''texte''</td><td><i>texte</i></td></tr> <tr><td>Souligné</td><td>__texte__</td><td><u>texte</u></td></tr> <tr><td>Centré</td><td>::texte::</td><td><div align='center'>texte</div></td></tr> <tr><td>Lien interne</td><td>[fichier]</td><td><a href='fichier'>fichier</a></td></tr> <tr><td>Lien interne nommé</td><td>[lien>fichier]</td><td><a href='fichier'>lien</a></td></tr> <tr><td>Lien externe</td><td>[http://serveur/fichier]</td><td><a href='http://serveur/fichier' target='_blank'>http://serveur/fichier</a></td></tr> <tr><td>Lien externe nommé</td><td>[lien>http://serveur/fichier]</td><td><a href='http://serveur/fichier' target='_blank'>lien</a></td></tr> <tr><td>Adr. e-mail</td><td>[nom@serveur]</td><td><a href='mailto:nom@serveur'>nom@serveur</a></td></tr> <tr><td>Saut de ligne</td><td>___</td><td><hr /></td></tr> <tr><td>Images</td><td>{{http://serveur/image|nom}}</td><td><img src='http://tourmentine.com/favicon.ico' alt='nom' /></td></tr> <tr><td> </td><td> </td><td> </td></tr> <tr><td>Les tags HTML ne sont pas authorisés.</td><td>Pour afficher le symbole €, vous devez taper « &euro; ».</td></tr> </table> "; else return" <table class='wikihelp' id='wikihelp'> <tr><td>Bold</td><td>**text**</td><td><b>text</b></td></tr> <tr><td>Italic</td><td>''text''</td><td><i>text</i></td></tr> <tr><td>Underline</td><td>__text__</td><td><u>text</u></td></tr> <tr><td>Centered</td><td>::text::</td><td><div align='center'>text</div></td></tr> <tr><td>Internal link</td><td>[file]</td><td><a href='file'>file</a></td></tr> <tr><td>Named internal link</td><td>[link>file]</td><td><a href='file'>link</a></td></tr> <tr><td>External link</td><td>[http://server/file]</td><td><a href='http://server/file' target='_blank'>http://server/file</a></td></tr> <tr><td>Named external link</td><td>[lien>http://server/file]</td><td><a href='http://server/file' target='_blank'>link</a></td></tr> <tr><td>e-mail Adr.</td><td>[name@server]</td><td><a href='mailto:name@server'>name@server</a></td></tr> <tr><td>New line</td><td>___</td><td><hr /></td></tr> <tr><td>Images</td><td>{{http://server/picture|name}}</td><td><img src='http://tourmentine.com/favicon.ico' alt='name' /></td></tr> <tr><td> </td><td> </td><td> </td></tr> <tr><td>HTML tags are not allowed.</td><td>You have to put « &euro; » to print the € symbol.</td></tr> </table> "; } function fmtime(&$item,$key,$cache) { return (filemtime($cache) > filemtime($item)); } function cache($cachefile, $getfile, $dep) { // $cachefile = "tmp/titres.cache.php"; $FileNews = "modules/news/news"; $totalnews = gettotal($FileNews); if (file_exists($cachefile)) { if (array_walk ($dep, 'fmtime',$cachefile)) return "success"; else return "failed"; } else return "$cachefile not found"; echo "coucou!"; /* if (!file_exists($cachefile) || (filemtime($cachefile) < filemtime("modules/news/news.dat"))) { $cachecontent = "\n\n<!-- Partie mise en cache (".date("d/m/Y@H:i:s").")-->\n\n"; $cachecontent .= file_get_contents("http://".$_SERVER["SERVER_NAME"]."/modules/magicbox.php?module=affnews&titleonly=1&BoxNbMaxNews=$totalnews&NbMaxNews=$totalnews&cropdate=10&bodyclass=centerbody&start=$totalnews&titre=Les%20nouvelles%20anciennes%20de%20la%20Tourmentine"); $cachecontent .= "\n<!-- fin Partie mise en cache -->\n\n"; $cachecontent = str_replace("<!--NOCACHE","<?php",$cachecontent); $cachecontent = str_replace("NOCACHE-->","?>",$cachecontent); $fp = fopen($cachefile,"w"); fwrite($fp,$cachecontent); fclose($fp); } include $cachefile;a*/ } //echo cache("../tmp/titres.cache.php","http://".$_SERVER["SERVER_NAME"]."/modules/magicbox.php?module=affnews&titleonly=1&BoxNbMaxNews=$totalnews&NbMaxNews=$totalnews&cropdate=10&bodyclass=centerbody&start=$totalnews&titre=Les%20nouvelles%20anciennes%20de%20la%20Tourmentine",array ("modules/news/news.dat")); /** * Check if the browser is on a mobile device * * Adapted from the example code at url below * * @link http://www.brainhandles.com/2007/10/15/detecting-mobile-browsers/#code */ function clientismobile(){ if(isset($_SERVER['HTTP_X_WAP_PROFILE'])) return true; if(preg_match('/wap\.|\.wap/i',$_SERVER['HTTP_ACCEPT'])) return true; if(!isset($_SERVER['HTTP_USER_AGENT'])) return false; $uamatches = 'midp|j2me|avantg|docomo|novarra|palmos|palmsource|240x320|opwv|chtml|pda|windows ce|mmp\/|blackberry|mib\/|symbian|wireless|nokia|hand|mobi|phone|cdm|up\.b|audio|SIE\-|SEC\-|samsung|HTC|mot\-|mitsu|sagem|sony|alcatel|lg|erics|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|\d\d\di|moto'; if(preg_match("/$uamatches/i",$_SERVER['HTTP_USER_AGENT'])) return true; return false; } ?>