tma/include/standard.inc.php

416 lines
14 KiB
PHP

<?php
// extract($themeset, EXTR_OVERWRITE);
// 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)
{
include "include/theme.inc.php";
// smileys
global $souriez;
$traite = str_replace($souriez[0][0], "<img src='modules/share/".$souriez[0][1]."' border='0' alt='|:-&#41;' />", $chaine);
$traite = str_replace($souriez[1][0], "<img src='modules/share/".$souriez[1][1]."' border='0' alt=';-&#41;' />", $traite);
$traite = str_replace($souriez[2][0], "<img src='modules/share/".$souriez[2][1]."' border='0' alt=';&#41;' />", $traite);
$traite = str_replace($souriez[3][0], "<img src='modules/share/".$souriez[3][1]."' border='0' alt=';o&#41;' />", $traite);
$traite = str_replace($souriez[4][0], "<img src='modules/share/".$souriez[4][1]."' border='0' alt=':-&#41;&#41; /'>", $traite);
$traite = str_replace($souriez[5][0], "<img src='modules/share/".$souriez[5][1]."' border='0' alt=':&#41;&#41' />", $traite);
$traite = str_replace($souriez[6][0], "<img src='modules/share/".$souriez[6][1]."' border='0' alt=':-&#41;' />", $traite);
$traite = str_replace($souriez[7][0], "<img src='modules/share/".$souriez[7][1]."' border='0' alt=':&#41;' />", $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&#40; /'>", $traite);
$traite = str_replace($souriez[10][0], "<img src='modules/share/".$souriez[10][1]."' border='0' alt=':o&#40;&#40; /'>", $traite);
$traite = str_replace($souriez[11][0], "<img src='modules/share/".$souriez[11][1]."' border='0' alt=':&#40;&#40;' />", $traite);
$traite = str_replace($souriez[12][0], "<img src='modules/share/".$souriez[12][1]."' border='0' alt=':-&#40;' />", $traite);
$traite = str_replace($souriez[13][0], "<img src='modules/share/".$souriez[13][1]."' border='0' alt=':&#40;' />", $traite);
$traite = str_replace($souriez[14][0], "<img src='modules/share/".$souriez[14][1]."' border='0' alt='8-&#41' />", $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=';-&#40;' />", $traite);
$traite = str_replace($souriez[17][0], "<img src='modules/share/".$souriez[17][1]."' border='0' alt=';-&#40;' />", $traite);
$traite = str_replace($souriez[18][0], "<img src='modules/share/".$souriez[18][1]."' border='0' alt=';-&#40;' />", $traite);
// liens
//$traite = ereg_replace("\n","<br />",$traite);
//$traite = ereg_replace("<url>","<a href=\"",$traite);
//$traite = ereg_replace("</url>","\">[Lien]</a>",$traite);
// themes
global $theme;
$traite = ereg_replace("THEME_COURANT", $theme, $traite);
return $traite;
}
// 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 = "index.php?section=$section&page=$page&theme=$theme";
} elseif ($modulepage != "") {
$liencaller = "index.php?modulepage=$modulepage&theme=$theme";
} else {
$liencaller = "index.php?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='theme' value='$theme' type=hidden>
<input name='section' value='$section' type=hidden>
<input name='page' value='$page' type=hidden>";
} elseif ($modulepage != "") {
$formcaller = "<input name='theme' value='$theme' type=hidden>
<input name='modulepage' value='$modulepage' type=hidden>";
} else {
$formcaller = "<input name='theme' value='$theme' type=hidden>";
}
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;
// no break
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)));
// echo $total;
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)
{
if (!file_exists("$FileName.dat")) {
strfile($FileName);
}
$indexfile = fopen("$FileName.dat", "r");
return hexdec(bin2hex(fread($indexfile, 4)));
}
// 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();
}
// affiche une demande de mot de passe suivant le fichier password.txt
function password($folder)
{
//************** indentification de l'utilisateur *************
$fd = fopen("$folder/password.txt", "r");
$titre = fgetcsv($fd, 10000, ",");
while($fd) {
$data = fgetcsv($fd, 10000, ",");
$login[$i] = $data[0];
$mdp[$i] = $data[1];
$bienvenue[$i] = parse_string(stripcslashes($data[2]));
}
fclose($fd);
// vide le cache
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date du passé
if (!isset($PHP_AUTH_USER)) {
header("WWW-Authenticate: Basic realm=\"iphp\" ");
err401("Action annulée");
} else {
if ($login[0] == $PHP_AUTH_USER) {
echo "bienvenue superuser !";
} else {
while (($login[$Cpt++] != $PHP_AUTH_USER) && ($mdp[$Cpt++] != $PHP_AUTH_PW));
echo "bienvenue user !";
}
}
}
// 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("&eacute;", "é", $inputstring);
$outputstring = eregi_replace("&egrave;", "è", $outputstring);
$outputstring = eregi_replace("&agrave;", "à", $outputstring);
$outputstring = eregi_replace("&ugrave;", "ù", $outputstring);
$outputstring = eregi_replace("&ocirc;", "ô", $outputstring);
$outputstring = eregi_replace("&ecirc;", "ê", $outputstring);
$outputstring = eregi_replace("&icirc;", "î", $outputstring);
$outputstring = eregi_replace("&acirc;", "â", $outputstring);
$outputstring = eregi_replace("&ucirc;", "û", $outputstring);
$outputstring = eregi_replace("&iuml;", "ï", $outputstring);
$outputstring = eregi_replace("&euml;", "ë", $outputstring);
$outputstring = eregi_replace("&ccedil;", "ç", $outputstring);
$outputstring = eregi_replace("&nbsp;", " ", $outputstring);
$outputstring = eregi_replace("&quot;", "\"", $outputstring);
$outputstring = eregi_replace("&amp;", "&", $outputstring);
return $outputstring;
}
// ------------------------------------------------------------------------- //
// Compteur de connectés //
// ------------------------------------------------------------------------- //
// Auteur: Merckel Loïc <loic@merckel.org> //
// Web: http://www.merckel.org/spip //
// ------------------------------------------------------------------------- //
/*
Ce script permet de connaitre le nombre de visiteurs connectés sur une période
de temps donnée (i.e. permet de savoir combien il y a de visiteurs en ligne).
Ce script n'utilise pas de base de données. Il stocke les informations dans un
fichier .dat
*/
// $time est le temps en seconde à partir duquel on considère que
// le visiteur n'est plus connecté
// $text_color est la couleur d'affichage du compteur
// $filename est le nom du fichier créé pour stocker les informations
function nb_visiteurs_connecte($time, $filename = "/tmp/nbweb.dat")
{
$ip = getenv("REMOTE_ADDR");
$date = time();
$i = 0;
$ii = 0;
$bool = 0;
if(file_exists($filename)) {
if($fichier = fopen($filename, "r")) {
while(!feof($fichier)) {
$ligne = fgets($fichier, 4096);
$tab = explode("|", $ligne);
if($tab[1] > 0) {
$tab_de_tab[$i][0] = $tab[0];
$tab_de_tab[$i][1] = $tab[1];
$i++;
}
}
fclose($fichier);
}
}
for($j = 0;$j < $i;$j++) {
if(($date - chop($tab_de_tab[$j][1])) > $time) {
//on ne fait rien
} else {
$tab_de_tab_actualise[$ii][0] = $tab_de_tab[$j][0];
$tab_de_tab_actualise[$ii][1] = chop($tab_de_tab[$j][1]);
$ii++;
}
}
for($j = 0;$j < $ii;$j++) {
if($tab_de_tab_actualise[$j][0] == $ip) {
$bool = 1;
}
}
if($bool == 0) {
$tab_de_tab_actualise[$ii][0] = $ip;
$tab_de_tab_actualise[$ii][1] = $date;
$ii++;
}
if($fichier = fopen($filename, "w")) {
for($j = 0;$j < $ii;$j++) {
fputs($fichier, chop($tab_de_tab_actualise[$j][0]));
fputs($fichier, "|");
fputs($fichier, chop($tab_de_tab_actualise[$j][1]));
fputs($fichier, "\n");
}
fclose($fichier);
}
return $ii;
}