File "functions.php"
Full path: /home/argothem/www/memo/site/site/CoolForum_0.8.4_beta/CoolForum_0.8.4_beta/admin/functions.php
File size: 74.63 KB
MIME-type: text/plain
Charset: 8 bit
<?
//*********************************************************************************
//* *
//* CoolForum v.0.8 Beta : Forum de discussion *
//* Copyright 2001-2002 SORIANO Denis alias Cool Coyote *
//* *
//* *
//* This program is free software; you can redistribute it and/or *
//* modify it under the terms of the GNU General Public License *
//* as published by the Free Software Foundation; either version 2 *
//* of the License, or (at your option) any later version. *
//* *
//* This program is distributed in the hope that it will be useful, *
//* but WITHOUT ANY WARRANTY; without even the implied warranty of *
//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
//* GNU General Public License for more details. *
//* *
//* You should have received a copy of the GNU General Public License *
//* along with this program; if not, write to the Free Software *
//* Foundation, Inc., 59 Temple Place - Suite 330, *
//* Boston, MA 02111-1307, USA. *
//* *
//* *
//* Forum Cr par SORIANO Denis (Cool Coyote) *
//* contact : coyote@coolcoyote.net *
//* site web et tlchargement : http://www.coolforum.net *
//* *
//*********************************************************************************
// ********************************************************
// * CLASSE MYSQL *
// ********************************************************
if(!class_exists('My_SQL'))
{
include('../secret/connect.php');
}
class SQLConnect extends My_SQL
{
function SQLConnect()
{
@mysql_connect($this->host,$this->user,$this->pass) or die("Impossible de se connecter la base de donnes");
@mysql_select_db("$this->bdd") or die("Impossible de se connecter la base de donnes");
}
function query($query)
{
global $NBRequest;
$msql=mysql_query($query);
if($msql)
$NBRequest++;
else
{
echo(mysql_error()."<br>");
echo($query."<p>");
}
return($msql);
}
function list_tables()
{
$msql=mysql_list_tables($this->bdd);
return($msql);
}
}
// ********************************************************
// * CLASSE DE TEMPLATES *
// ********************************************************
class Template
{
var $isloaded = array();
var $tplcode = array();
var $temp = array();
var $tmp = array();
var $box = array();
var $infomember = array();
var $globales = array(); // chaines des globables pour eval()
var $LNG = array(); //tableau langages
function evalue($name)
{
$glob = "";
if(!empty($this->globales[$name]))
$glob = "global \$".$this->globales[$name].";";
$templ = $this->tplcode[$name];
eval("$glob \$templ=\"$templ\";");
return($templ);
}
function forme($templ)
{
$templ = preg_replace("'\/\*(.*?)\*\/'si","",$templ); // On supprimer les commentaires
$templ = addslashes(addslashes($templ)); // double backslash
// **** evaluation des variables de langages ****
if(get_magic_quotes_runtime()==0)
$templ = addslashes($templ); // 1 backslash
$templ = str_replace("\$","\\\\\\\\\\\\\\$",$templ);//\\\$
$templ = preg_replace("/{%LNG\[([^\[]+)\]%}/","\".\$this->LNG['\\1'].\"",$templ); // On transforme les variables de langage
eval("\$templ=\"$templ\";");
// **** clatement du fichier ****
$tpleclate = explode("<!--********** TPL NAME = ",$templ); // Eclatement gnral des templates
// **** traitement bloc par bloc ****
for($i=1;$i<count($tpleclate);$i++)
{
$temp = explode(" **********-->",$tpleclate[$i]);
$tplname = $temp[0];
$this->tplcode[$tplname]=$temp[1];
$this->tplcode[$tplname]=preg_replace("/^(\r\n)+/","",$this->tplcode[$tplname]);
preg_match_all("/{%::(.*?)%}/",$this->tplcode[$tplname],$out,PREG_PATTERN_ORDER);
if(count($out[1])>0)
{
for($j=0;$j<(count($out[1]));$j++)
{
$out[1][$j] = preg_replace("'\[(.*?)\]'","",$out[1][$j]);
$tabl[$out[1][$j]] = $out[1][$j];
}
$this->globales[$tplname] = implode(",\$",$tabl);
}
$this->tplcode[$tplname] = preg_replace("/{%([^\[]+)\[([^\]]+)\]%}/","{%\\1['\\2']%}", $this->tplcode[$tplname]);
$this->tplcode[$tplname] = preg_replace("/{%::(.*?)%}/","\".\$\\1.\"",$this->tplcode[$tplname]); // On transforme les variables globales
$this->tplcode[$tplname] = preg_replace("/{%(.*?)%}/","\".\$this->\\1.\"",$this->tplcode[$tplname]); // On transforme les variables de classe
unset($out);
}
}
function gettemplate($filename,$tpl)
{
if(empty($this->isloaded[$filename]))
$this->loadfile($filename);
$chaine = $this->evalue($tpl);
return($chaine);
}
function loadfile($file)
{
global $_SKIN,$_SERVER;
if(ereg("admin/",$_SERVER['REQUEST_URI'])) $prefix="../";
else $prefix="";
$temp = implode("",file($prefix."templates/".$_SKIN['reptpl']."/tpl_".$file.".html"));
$this->forme($temp);
$this->isloaded[$file] = true;
}
function attlang($param)
{
return($this->LNG[$param]);
}
function output($tmpl)
{
echo(stripslashes(stripslashes($tmpl)));
}
}
// ********************************************************
// * FONCTIONS SYSTEMES *
// ********************************************************
function get_microtime()
{
list($tps_usec, $tps_sec) = explode(" ",microtime());
return ((float)$tps_usec + (float)$tps_sec);
}
function get_rightfromint($tableau,$int)
{
$i = 20;
$Mask = 1 << $i;
while($Mask>0)
{
if($int >= $Mask)
{
$tableau[$i] = 'true';
$int -= $Mask;
}
$Mask = $Mask >> 1;
$i--;
}
return($tableau);
}
function get_intfromright($tableau)
{
$i = 1;
$int = 0;
foreach($tableau as $key => $value)
{
if($value == 'true')
$int += $i << $key;
}
return($int);
}
function addToArray(&$array, $key, $val)
{
$tempArray = array($key => $val);
$array = array_merge ($array, $tempArray);
}
function array_rempl(&$array, $start, $end, $value)
{
for($i = $start; $i < $end+1; $i++)
$array[$i] = $value;
}
function stopaction($msg='')
{
if(strlen($msg) > 0)
echo("> $msg");
else
echo("script stopp");
die;
}
//********** FONCTION GESTION MESSAGES D'ERREUR **********
function geterror($error)
{
global $tpl,$cache,$_FORUMCFG,$tps,$tps_start,$_PRE;
getlangage("error");
if($error == "closedforum")
$tpl->box['errorcontent'] = $_FORUMCFG['closeforummsg'];
elseif($error == "initcookie")
{
sendcookie("CoolForumID","",0);
sendcookie("listeforum_coolforum","",0);
sendcookie("nbpmvu","0",-1);
$sql = mysql_query("SELECT forumid FROM ".$_PRE."forums");
$nb = mysql_numrows($sql);
if($nb>0)
{
while($j = mysql_fetch_array($sql))
{
$name = "CoolForumDetails".$j['forumid'];
sendcookie($name,"",0);
}
}
sendcookie("CF_LastINI",time(),-1);
$tpl->box['errorcontent'] = $tpl->gettemplate("error","initcookie");
}
else
$tpl->box['errorcontent'] = $tpl->gettemplate("error",$error);
$cache .= $tpl->gettemplate("error","errorbox");
$tps = number_format(get_microtime() - $tps_start,4);
$cache .= $tpl->gettemplate("baspage","endhtml");
$tpl->output($cache);
exit;
}
//********** FONCTION D'ENVOI DE COOKIES **********
function sendcookie($name,$value,$expire)
{
global $_FORUMCFG;
if($expire==-1)
$expire=mktime(0,0,0,1,1,2010);
if(empty($_FORUMCFG['cookiedomain'])) setcookie($name,$value,$expire,$_FORUMCFG['cookierep']);
else setcookie($name,$value,$expire,$_FORUMCFG['cookierep'],".".$_FORUMCFG['cookiedomain']);
}
//********** FONCTION D'ENVOI DE MAILS **********
function sendmail($To,$Subject,$Msg)
{
global $_FORUMCFG;
switch ($_FORUMCFG['mailfunction'])
{
case "normal":
if(!mail($To,$Subject,$Msg,"From: ".inversemail($_FORUMCFG['contactmail'])."\nReply-To: ".inversemail($_FORUMCFG['contactmail'])."\nX-Priority: 1"))
return false;
break;
case "online":
if(!email("webmaster",$To,$Subject,$Msg))
return false;
break;
case "nexen":
if(!email($To,$Subject,$Msg,"From: ".inversemail($_FORUMCFG['contactmail'])))
return false;
break;
}
return true;
}
//********** FONCTIONS ENCODAGE/DECODAGE **********
function getencrypt($txt,$cle)
{
srand((double)microtime()*1000000);
$getencrypt_key = md5(rand(0,32000));
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++)
{
if ($ctr==strlen($getencrypt_key))
$ctr=0;
$aff1 = substr($getencrypt_key,$ctr,1);
$tmp.= $aff1.(substr($txt,$i,1) ^ $aff1);
$ctr++;
}
$ctr=0;
$code="";
for ($i=0;$i<strlen($tmp);$i++)
{
if ($ctr==strlen($cle))
$ctr=0;
$code.=(substr($tmp,$i,1)) ^ (substr($cle,$ctr,1));
$ctr++;
}
return($code);
}
function getdecrypt($tplxt,$cle)
{
$ctr=0;
$decode="";
for ($i=0;$i<strlen($tplxt);$i++)
{
if ($ctr==strlen($cle))
$ctr=0;
$decode.=(substr($tplxt,$i,1)) ^ (substr($cle,$ctr,1));
$ctr++;
}
$tmp = "";
for ($i=0;$i<strlen($decode);$i+=2)
{
$tmp.= (substr($decode,$i,1))^(substr($decode,$i+1,1));
}
return($tmp);
}
function getconfig()
{
global $sql,$_PRE;
$result=$sql->query("SELECT * FROM ".$_PRE."config");
while($j=mysql_fetch_array($result))
{
$tableau[$j['options']]=$j['valeur'];
}
$tableau['catseparate']=htmlentities($tableau['catseparate']);
return($tableau);
}
function getlangage($file)
{
global $_USER,$_FORUMCFG,$tpl,$_SERVER;
if(ereg("admin/",$_SERVER['REQUEST_URI']))
$prefix="../";
else
$prefix="";
if(!isset($_USER['lng']))
$lng=$_FORUMCFG['defaultlangage'];
else
$lng=$_USER['lng'];
include($prefix."lng/$lng/lng_$file.php");
}
function getforumname($id)
{
global $_USER, $sql, $_PRE, $_GENERAL;
$id = intval($id);
$query = $sql->query("SELECT ".$_PRE."forums.forumid,".$_PRE."forums.forumtitle,".$_PRE."forums.forumcat,".$_PRE."forums.openforum,".$_PRE."forums.forumtopic,".$_PRE."forums.forumposts,".$_PRE."categorie.cattitle,".$_PRE."categorie.catid FROM ".$_PRE."forums,".$_PRE."categorie WHERE ".$_PRE."forums.forumid='$id' AND ".$_PRE."categorie.catid=".$_PRE."forums.forumcat");
$nb = mysql_numrows($query);
if($nb==0)
geterror("novalidlink");
else
{
$j = mysql_fetch_array($query);
if($j['openforum']=="N" && !$_GENERAL[20])
geterror("forumclosed");
else
return($j);
}
}
function getnumberpages($nb,$template,$nbmax,&$page)
{
global $_GET,$nbpages,$_FORUMCFG,$tpl;
$chaine="";
/*if (empty($_GET['page']))
$page=1;
else
$page=$_GET['page'];*/
$nbpages=Ceil($nb/$nbmax);
if($nbpages>1)
{
if($page>1)
{
$tpl->box['pagebefore']=$page-1;
$chaine.=$tpl->gettemplate($template,"leftpagearrowlink");
}
else $chaine.=$tpl->gettemplate($template,"leftpagearrow");
if($page<6) $debut=1;
else $debut=$page-4;
if($nbpages-$page<5) $fin=$nbpages;
else $fin=$page+5;
for($i=$debut; $i<($fin+1); $i++)
{
$tpl->box['pagenumber']=$i;
if ($i==$page)
$chaine.=$tpl->gettemplate($template,"ourpage");
else
$chaine.=$tpl->gettemplate($template,"otherpage");
if ($i<$fin)
$chaine.=" | ";
}
if($page<$nbpages)
{
$tpl->box['pageafter']=$page+1;
$chaine.=$tpl->gettemplate($template,"rightpagearrowlink");
}
else
$chaine.=$tpl->gettemplate($template,"rightpagearrow");
}
return($chaine);
}
function getpagestopic($nb,$id,$page)
{
global $forumid,$nbpagepost,$_FORUMCFG,$tpl;
$chaine="";
$nb++;
if(empty($forumid))
$forumid=$tpl->tmp['forumid'];
$nbpagepost=Ceil($nb/$_FORUMCFG['msgparpage']);
if($nbpagepost>1)
{
$flagpoint=0;
//$chaine.=" (aller page: ";
$tpl->box['cachepages'] = "";
for($i=1; $i<($nbpagepost+1); $i++)
{
if($i>3 && $i<$nbpagepost && $nbpagepost>4)
{
if($flagpoint==0)
{
$tpl->box['cachepages'] .=" ...";
$flagpoint=1;
}
}
else
{
$tpl->tmp['i'] = $i;
$tpl->tmp['id'] = $id;
$tpl->tmp['page'] = $page;
//$chaine.=" <a href=\"detail.php?forumid=$forumid&id=$id&page=$i&p=$page\" class=men>$i</A>";
$tpl->box['cachepages'] .= $tpl->gettemplate("entete","topicgotopagelink");
}
}
//$chaine.=")";
$chaine = $tpl->gettemplate("entete","topicgotopage");
}
return($chaine);
}
// #### CHARGEMENT IDENTIFICATION MEMBRE ####
function getuserid()
{
global $_COOKIE, $tpl, $sql, $_FORUMCFG, $_PERMFORUM, $_FORUMINTER, $_PRE, $_GENERAL;
$user = array();
$errorset = false;
if(isset($_COOKIE['CoolForumID']))
{
$j = unserialize(urldecode($_COOKIE['CoolForumID']));
$j['userpass'] = getdecrypt(rawurldecode($j['userpass']),$_FORUMCFG['chainecodage']);
$j['userid'] = intval($j['userid']);
$query = $sql->query("SELECT ".$_PRE."user.userid,
".$_PRE."user.login AS username,
".$_PRE."user.password,
".$_PRE."user.userstatus,
".$_PRE."user.skin AS userskin,
".$_PRE."user.timezone,
".$_PRE."user.lng,
".$_PRE."user.popuppm,
".$_PRE."user.lastpost,
".$_PRE."user.lastvisit,
".$_PRE."user.nbpmtot,
".$_PRE."user.nbpmvu,
".$_PRE."user.wysiwyg,
".$_PRE."groups.*
FROM ".$_PRE."user
LEFT JOIN ".$_PRE."groups ON ".$_PRE."groups.id_group = ".$_PRE."user.userstatus
WHERE ".$_PRE."user.userid=".$j['userid']);
$x = mysql_fetch_array($query);
$temppass = getdecrypt(rawurldecode($x['password']),$_FORUMCFG['chainecodage']);
if($j['userpass'] == $temppass)
{
$user = $x;
$user['password'] = "";
}
else
$errorset = true;
}
else
$errorset = true;
if($errorset)
{
$query = $sql->query("SELECT * FROM ".$_PRE."groups WHERE id_group = 1");
$user = mysql_fetch_array($query);
$user['username'] = NULLSTR;
$user['userstatus'] = 1;
$user['userid'] = 0;
$user['lastvisit'] = 0;
$user['userskin'] = $_FORUMCFG['defaultskin'];
$user['timezone'] = $_FORUMCFG['defaulttimezone'];
$user['popuppm'] = "N";
$user['lastpost'] = 0;
$user['wysiwyg'] = "N";
}
// Chargement droits gnraux
$_GENERAL = get_rightfromint($_GENERAL,$user['Droits_generaux']);
// Chargement droits des forums
$request = $sql->query("SELECT * FROM ".$_PRE."groups_perm WHERE id_group=".$user['userstatus']);
$nb = mysql_numrows($request);
if($nb>0)
while($i = mysql_fetch_array($request))
{
$temp_array = array();
$temp_array = get_rightfromint($temp_array,$i['droits']);
$_PERMFORUM[$i['id_forum']] = $temp_array;
$_PERMFORUM[$i['id_forum']]['MaxChar'] = $i['MaxChar'];
}
return($user);
}
// #### LE MEMBRE EST-IL MODERATEUR POUR CE FORUM? ####
function getismodo($forum)
{
global $_MODORIGHTS, $_USER, $sql, $_PRE, $_GENERAL;
array_rempl($_MODORIGHTS,0,8,false);
if($_GENERAL[19])
{
if($_GENERAL[20])
{
$_MODORIGHTS = get_rightfromint($_MODORIGHTS,511);
return true;
}
else
{
$query = $sql->query("SELECT idusermodo, modorights FROM ".$_PRE."moderateur WHERE idusermodo=".$_USER['userid']." AND forumident='$forum'");
$nb = mysql_numrows($query);
if($nb>0)
{
$j = mysql_fetch_array($query);
$_MODORIGHTS = get_rightfromint($_MODORIGHTS,$j['modorights']);
return true;
}
else return false;
}
}
else return false;
}
// #### CHARGEMENT DES DROITS POUR L'EDITION D'UN MESSAGE ####
function getrightedit($idpost,$forumid)
{
global $_MODORIGHTS, $sql, $_USER, $_FORUMCFG, $_PRE, $_GENERAL, $_PERMFORUM;
$query = $sql->query("SELECT idforum,idmembre,parent FROM ".$_PRE."posts WHERE idpost=".$idpost);
$j = mysql_fetch_array($query);
$ismodo = false;
$ismodo = getismodo($forumid);
if($_GENERAL[20])
return true;
elseif($ismodo && $forumid==$j['idforum'])
return true;
elseif($_USER['userstatus']>1)
{
$parent = $j['parent'];
if($j['idmembre']==$_USER['userid'])
{
if(!isset($_PERMFORUM[$forumid][6]) || !$_PERMFORUM[$forumid][6])
{
$query = $sql->query("SELECT idpost FROM ".$_PRE."posts WHERE parent='$parent' ORDER BY date DESC");
$i = mysql_fetch_array($query);
if($i['idpost']==$idpost) return true;
else return false;
}
else return true;
}
else return false;
}
else return false;
}
function init_session()
{
srand((double)microtime()*1000000);
$session = md5(rand(0,32000));
return($session);
}
// #### ENREGISTRMEMENT DE LA SESSION POUR CHAQUE MEMBRE / INVITE ####
function getsession()
{
global $_COOKIE, $_USER, $sql, $_PRE, $SessLieu, $SessForum, $SessTopic;
$tablename = array();
if(!empty($SessLieu))
{
$pseudo = getformatdbtodb($_USER['username']);
if(!isset($_COOKIE['CF_sessionID']))
$_COOKIE['CF_sessionID'] = init_session();
$now = time();
$perim = $now - 300;
$delsql = $sql->query("DELETE FROM ".$_PRE."session WHERE time<".$perim);
$query = $sql->query("SELECT sessionID, username, userid, userstatus, typelieu, forumid, topicid FROM ".$_PRE."session");
$nb = mysql_numrows($query);
$found = false;
$i = 0;
if($nb>0)
{
while($j=mysql_fetch_array($query))
{
if($_USER['userid']>0 && $_USER['username']==$j['username']) // si trouv membre
{
$updsess = $sql->query("UPDATE ".$_PRE."session SET sessionID='".$_COOKIE['CF_sessionID']."', time=$now, typelieu='$SessLieu', forumid=$SessForum, topicid=$SessTopic WHERE username='".$pseudo."'");
$tablename[$i]['name'] = $j['username'];
$tablename[$i]['status'] = $j['userstatus'];
$tablename[$i]['userid'] = $j['userid'];
$found = true;
$tablename[$i]['typelieu'] = $SessLieu;
$tablename[$i]['forumid'] = $SessForum;
$tablename[$i]['topicid'] = $SessTopic;
}
elseif($j['sessionID']==$_COOKIE['CF_sessionID']) // sinon si les sessions concordent => soit invit soit vient de se logguer
{
$updsess = $sql->query("UPDATE ".$_PRE."session SET username='".$pseudo."', userid=".$_USER['userid'].", userstatus=".$_USER['userstatus'].", time=$now, typelieu='$SessLieu', forumid=$SessForum, topicid=$SessTopic WHERE sessionID='".$_COOKIE['CF_sessionID']."'");
$tablename[$i]['name'] = $_USER['username'];
$tablename[$i]['status'] = $_USER['userstatus'];
$tablename[$i]['userid'] = $_USER['userid'];
$found = true;
$tablename[$i]['typelieu'] = $SessLieu;
$tablename[$i]['forumid'] = $SessForum;
$tablename[$i]['topicid'] = $SessTopic;
}
else //sinon ce n'est pas moi
{
$tablename[$i]['name'] = $j['username'];
$tablename[$i]['status'] = $j['userstatus'];
$tablename[$i]['userid'] = $j['userid'];
$tablename[$i]['typelieu'] = $j['typelieu'];
$tablename[$i]['forumid'] = $j['forumid'];
$tablename[$i]['topicid'] = $j['topicid'];
}
$i++;
}
}
if(!$found)
{
$query = $sql->query("INSERT into ".$_PRE."session (sessionID, username, userid, userstatus, time, typelieu, forumid, topicid) VALUES ('".$_COOKIE['CF_sessionID']."','$pseudo', ".$_USER['userid'].",'".$_USER['userstatus']."','$now','$SessLieu','$SessForum','$SessTopic')");
$tablename[$i]['name'] = $_USER['username'];
$tablename[$i]['status'] = $_USER['userstatus'];
$tablename[$i]['userid'] = $_USER['userid'];
$tablename[$i]['typelieu'] = $SessLieu;
$tablename[$i]['forumid'] = $SessForum;
$tablename[$i]['topicid'] = $SessTopic;
$LastINI = intval($_COOKIE['CF_LastINI']);
if($_USER['userid'] > 0)
$query = $sql->query("UPDATE ".$_PRE."user SET lastvisit = $LastINI WHERE userid = ".$_USER['userid']);
}
sendcookie("CF_sessionID",$_COOKIE['CF_sessionID'],-1);
sendcookie("CF_LastINI",$now,-1);
}
return($tablename);
}
function get_connected($Lieu = "",$forumid = 0, $topicid = 0)
{
global $NombreConnectes, $tpl;
$InfoMember['nbmembres'] = 0;
$InfoMember['nbguests'] = 0;
$InfoMember['nbtotalvisit'] = 0;
$NbTotalcon = count($NombreConnectes);
$ListMembres = array();
$nameconnect = array();
// **** Dfinition du nbre de membres et d'invits selon le lieu ****
for($i = 0; $i < $NbTotalcon; $i++)
{
$mbvalid = false;
if($Lieu == "TOP" && $Lieu == $NombreConnectes[$i]['typelieu'] && $forumid == $NombreConnectes[$i]['forumid'] && $topicid == $NombreConnectes[$i]['topicid'])
$mbvalid = true;
elseif($Lieu == "FOR" && ($Lieu == $NombreConnectes[$i]['typelieu'] || $NombreConnectes[$i]['typelieu'] == "TOP") && $forumid == $NombreConnectes[$i]['forumid'])
$mbvalid = true;
elseif(strlen($Lieu) > 0 && $Lieu != "TOP" && $Lieu != "FOR" && $Lieu == $NombreConnectes[$i]['typelieu'])
$mbvalid = true;
if(strlen($Lieu) == 0)
$mbvalid = true;
if($mbvalid)
{
if(!empty($NombreConnectes[$i]['name']))
{
$InfoMember['nbmembres']++;
$ListMembres[] = $i;
}
else
$InfoMember['nbguests']++;
}
}
$InfoMember['nbtotalvisit'] = $InfoMember['nbmembres'] + $InfoMember['nbguests'];
// **** Formattage des membres pour affichage ****
if($InfoMember['nbmembres']>0)
{
foreach($ListMembres as $val)
$nameconnect[] = "<b>".getformatpseudo($NombreConnectes[$val]['name'],$NombreConnectes[$val]['status'],$NombreConnectes[$val]['userid'])."</b>";
$InfoMember['listconnected'] = implode(", ",$nameconnect);
}
return($InfoMember);
}
function getjumpforum($template="entete")
{
global $_USER, $tpl, $sql, $_PRE, $_PERMFORUM;
$query = $sql->query("SELECT * FROM ".$_PRE."categorie ORDER BY catorder");
$nb = mysql_numrows($query);
$tpl->box['forumlist'] = "";
if($nb>0)
{
$sqlforums = $sql->query("SELECT forumid,forumcat,forumtitle FROM ".$_PRE."forums ORDER BY forumcat,forumorder");
$nbforums = mysql_numrows($sqlforums);
if($nbforums>0)
while($TabForum[] = mysql_fetch_array($sqlforums));
$i = 0;
while($Cats = mysql_fetch_array($query))
{
$chaine = "";
for($i = 0; $i < count($TabForum); $i++)
{
if($Cats['catid'] == $TabForum[$i]['forumcat'] && !empty($_PERMFORUM[$TabForum[$i]['forumid']][0]) && $_PERMFORUM[$TabForum[$i]['forumid']][0])
{
$tpl->box['FJforumname']=getformatrecup($TabForum[$i]['forumtitle']);
$tpl->box['FJforumid']=$TabForum[$i]['forumid'];
$chaine.=$tpl->gettemplate($template,"forumjumpfor");
}
}
if(strlen($chaine)>0)
{
$tpl->box['FJcatname']=getformatrecup($Cats['cattitle']);
$tpl->box['forumlist'].=$tpl->gettemplate($template,"forumjumpcat").$chaine;
}
}
$tpl->box['forumjump']=$tpl->gettemplate($template,"structforumjump");
}
}
function getskin()
{
global $_SKIN, $_USER, $sql, $_POST, $_FORUMCFG, $_PRE, $ListColorGroup;
if($_FORUMCFG['defaultskin']<$_USER['userskin'])
$order="DESC";
else
$order="ASC";
$query=$sql->query("SELECT propriete,valeur FROM ".$_PRE."skins WHERE id=".$_USER['userskin']." OR id=".$_FORUMCFG['defaultskin']." ORDER BY id ".$order);
while(list($skcle,$skvalue)=mysql_fetch_array($query))
{
if(empty($_SKIN[$skcle]))
addToArray($_SKIN,$skcle,$skvalue);
//$_SKIN[$skcle]=$skvalue;
if(ereg("^grp",$skcle))
$ListColorGroup[] = intval(str_replace("grp","",$skcle));
}
if(!empty($_POST['skins']) && count($_POST['skins'])>0 && isset($_POST['act']) && $_POST['act']=="preview")
{
for($i=0;$i<count($_POST['skins']);$i++)
{
$valeur=each($_POST['skins']);
if(strlen($valeur['value'])>0)
if(empty($_SKIN[$skcle]))
addToArray($_SKIN,$valeur['key'],$valeur['value']);
else
$_SKIN[$valeur['key']]=$valeur['value'];
}
}
}
function getloadsmileys()
{
global $sql,$_PRE;
$query=$sql->query("SELECT imgsmile,codesmile FROM ".$_PRE."smileys ORDER BY ordersmile ASC");
$i=0;
while($j=mysql_fetch_array($query))
{
$tplable_smileys[$i]['code']=getformatrecup($j['codesmile']);
$tplable_smileys[$i]['img']=$j['imgsmile'];
$i++;
}
return($tplable_smileys);
}
function getreturnsmilies($msg)
{
global $table_smileys,$_SERVER;
if(ereg("admin/",$_SERVER['REQUEST_URI']))
$prefix="../";
else
$prefix="";
for($i=0;$i<count($table_smileys);$i++)
{
$msg = str_replace($table_smileys[$i]['code'],"<img src=\"".$prefix."smileys/".$table_smileys[$i]['img']."\" align=absmiddle>", $msg);
}
return($msg);
}
function InitBBcode()
{
global $BBcodeHTML,$tpl, $_FORUMCFG, $ListWords, $ListWordsRpl;
$BBcodeHTML['codeopen'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbcodeopen"))));
$BBcodeHTML['codeclose'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbcodeclose"))));
$BBcodeHTML['urlauto1'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bburlauto1"))));
$BBcodeHTML['urlauto2'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bburlauto2"))));
$BBcodeHTML['swf'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbswf"))));
$BBcodeHTML['mail'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbmail"))));
$BBcodeHTML['img'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbimg"))));
$BBcodeHTML['bold'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbbold"))));
$BBcodeHTML['ita'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbita"))));
$BBcodeHTML['under'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbunder"))));
$BBcodeHTML['center'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbcenter"))));
$BBcodeHTML['left'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbleft"))));
$BBcodeHTML['right'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbright"))));
$BBcodeHTML['fontopen'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbfontopen"))));
$BBcodeHTML['fontclose'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbfontclose"))));
$BBcodeHTML['sizeopen'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbsizeopen"))));
$BBcodeHTML['sizeclose'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbsizeclose"))));
$BBcodeHTML['coloropen'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbcoloropen"))));
$BBcodeHTML['colorclose'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbcolorclose"))));
$BBcodeHTML['url'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bburl"))));
$BBcodeHTML['quoteopen'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbquoteopen"))));
$BBcodeHTML['quoteclose'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","bbquoteclose"))));
$BBcodeHTML['msgcache1'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","msgcache1"))));
$BBcodeHTML['msgcache2'] = trim(stripslashes(stripslashes($tpl->gettemplate("entete","msgcache2"))));
if(strlen($_FORUMCFG['censuredwords'])>0)
{
$Rpl="**************************************************************************************************";
$ListWords = explode(", ",$_FORUMCFG['censuredwords']);
for($i=0;$i<count($ListWords);$i++)
{
$ListWordsRpl[$i] = "\\1".getformatmsg(substr($ListWords[$i],0,1).substr($Rpl,0,strlen($ListWords[$i])-2).substr($ListWords[$i],-1))."\\2";
$ListWords[$i] = "'([^a-zA-Z])".addslashes(getformatmsg($ListWords[$i]))."([^a-zA-Z]|\Z|\s)'si";
}
}
}
function getcolorsearch($chain)
{
global $SearchOrig, $SearchReplace;
$chain = stripslashes($chain);
if(count($SearchOrig)>0)
return(str_replace($SearchOrig,$SearchReplace,$chain));
else
return($chain);
}
// *******************************************************
// * FONCTIONS WYSIWYG *
// *******************************************************
function get_htmlmoztocss($color)
{
$color = strtolower($color);
switch($color)
{
case 'aqua':
$rgb = '0, 255, 255';
break;
case 'black':
$rgb = '0, 0, 0';
break;
case 'blue':
$rgb = '0, 0, 255';
break;
case 'fuchsia':
$rgb = '255, 0, 255';
break;
case 'gray':
$rgb = '128, 128, 128';
break;
case 'green':
$rgb = '0, 128, 0';
break;
case 'lime':
$rgb = '0, 255, 0';
break;
case 'maroon':
$rgb = '128, 0, 0';
break;
case 'navy':
$rgb = '0, 0, 128';
break;
case 'olive':
$rgb = '128, 128, 0';
break;
case 'purple':
$rgb = '128, 0, 128';
break;
case 'red':
$rgb = '255, 0, 0';
break;
case 'silver':
$rgb = '192, 192, 192';
break;
case 'teal':
$rgb = '0, 128, 128';
break;
case 'white':
$rgb = '255, 255, 255';
break;
case 'yellow':
$rgb = '255, 255, 0';
break;
default:
$array_dec = array();
$color = substr($color,1,strlen($color));
$array_dec[0] = hexdec(substr($color,0,2));
$array_dec[1] = hexdec(substr($color,2,2));
$array_dec[2] = hexdec(substr($color,4,2));
$rgb = implode(", ",$array_dec);
break;
}
$text = "<span style=\"color: rgb(".$rgb.");\">";
return($text);
}
// #### PARSER CSS ####
function css_process($chaine, $statut='')
{
static $close_tag = "";
$to_return = "";
if($statut == 'open')
{
if(NAVIGATEUR == "MOZILLA")
{
$css = preg_replace("/<(span|font|br) (.*?)>/si","\\2",$chaine);
$css = str_replace("\" ","\"----",$css);
$temp_options = explode("----",$css);
foreach($temp_options AS $html_options)
{
if(substr($html_options,0,6) == "style=")
{
$html_options = preg_replace("/style=\"(.*?);\"/si","\\1",$html_options);
$temp_array = explode("; ",$html_options);
foreach($temp_array AS $value)
{
switch ($value)
{
case 'font-weight: bold' :
$to_return .= '[bold]';
$close_tag = '[/bold]'.$close_tag;
break;
case 'font-style: italic' :
$to_return .= '[ita]';
$close_tag = '[/ita]'.$close_tag;
break;
case 'text-decoration: underline' :
$to_return .= '[under]';
$close_tag = '[/under]'.$close_tag;
break;
default :
if(substr($value,0,11)=="font-family")
{
$font = preg_replace("/font-family: (.*?)/si","\\1",$value);
$to_return .= '[font='.$font.']';
$close_tag = '[/font]'.$close_tag;
}
if(substr($value,0,5)=="color")
{
$decstring = preg_replace("/color: rgb\((.*?)\)/","\\1",$value);
$array_dec = explode(", ",$decstring);
$hexstring = "";
foreach($array_dec AS $dec_value)
{
$tempvalue = dechex($dec_value);
if(strlen($tempvalue)==1)
$tempvalue = "0".$tempvalue;
$hexstring .= $tempvalue;
}
$to_return .= '[color=#'.$hexstring.']';
$close_tag = '[/color]'.$close_tag;
}
break;
}
}
}
elseif(substr($html_options,0,5) == "size=")
{
$html_options = preg_replace("/size=\"(.*?)\"/si","\\1",$html_options);
$to_return .= '[size='.$html_options.']';
$close_tag = '[/size]'.$close_tag;
}
}
}
elseif(NAVIGATEUR == "MSIE")
{
$css = preg_replace("/<font (.*?)>/si","\\1",$chaine);
$temp_options = explode(" ",$css);
foreach($temp_options AS $html_options)
{
if(substr($html_options,0,5) == "face=")
{
$html_options = preg_replace("/face=(.*?)/si","\\1",$html_options);
$to_return .= '[font='.$html_options.']';
$close_tag = '[/font]'.$close_tag;
}
elseif(substr($html_options,0,5) == "size=")
{
$html_options = preg_replace("/size=(.*?)/si","\\1",$html_options);
$to_return .= '[size='.$html_options.']';
$close_tag = '[/size]'.$close_tag;
}
elseif(substr($html_options,0,6) == "color=")
{
$html_options = preg_replace("/color=(.*?)/si","\\1",$html_options);
$to_return .= '[color='.$html_options.']';
$close_tag = '[/color]'.$close_tag;
}
}
}
}
elseif($statut == 'close')
{
$to_return = $close_tag;
$close_tag = "";
}
else
$to_return = $chaine;
return($to_return);
}
// #### PARSER BALISE DIV ####
function div_process($chaine, $statut='')
{
static $active_tag = "";
if($statut == 'open')
{
$chaine = preg_replace("/<div (.*?)>/si","\\1",$chaine);
$chaine = str_replace("\"","",$chaine);
// **** si CODE ****
if(ereg("class=code_class",$chaine))
{
$active_tag = "code";
return("[code]");
}
// **** si QUOTE ****
elseif(ereg("class=quote_class",$chaine))
{
$active_tag = "quote";
return("[quote]");
}
// **** si ALIGN ****
elseif(ereg("text-align",$chaine))
{
$chaine = preg_replace("/style=text-align: (.*?);/si","\\1",$chaine);
switch($chaine)
{
case 'left':
$active_tag = "left";
$to_return = "[left]";
break;
case 'center':
$active_tag = "center";
$to_return = "[center]";
break;
case 'right':
$active_tag = "right";
$to_return = "[right]";
break;
}
return($to_return);
}
}
elseif($statut == 'close')
{
$to_return = "";
switch($active_tag)
{
case 'code':
$to_return = "[/code]";
break;
case 'quote':
$to_return = "[/quote]";
break;
case 'left':
$to_return = "[/left]";
break;
case 'center':
$to_return = "[/center]";
break;
case 'right':
$to_return = "[/right]";
break;
}
$active_tag = "";
return($to_return);
}
else
return($chaine);
}
function code_process($chaine, $statut='')
{
global $BBcodeHTML;
if($statut == 'open')
return($BBcodeHTML['codeopen']);
elseif($statut == 'close')
return($BBcodeHTML['codeclose']);
else
return(strip_tags($chaine));
}
function quote_process($chaine, $statut='')
{
global $BBcodeHTML;
if($statut == 'open')
return($BBcodeHTML['quoteopen']);
elseif($statut == 'close')
return($BBcodeHTML['quoteclose']);
else
return($chaine);
}
function color_process($chaine, $statut='')
{
global $BBcodeHTML;
if($statut == 'open')
{
$chaine = preg_replace("/\[color=(.*?)\]/si",$BBcodeHTML['coloropen'],$chaine);
return($chaine);
}
elseif($statut == 'close')
return($BBcodeHTML['colorclose']);
else
return($chaine);
}
function size_process($chaine, $statut='')
{
global $BBcodeHTML;
if($statut == 'open')
{
$chaine = preg_replace("/\[size=(.*?)\]/si",$BBcodeHTML['sizeopen'],$chaine);
return($chaine);
}
elseif($statut == 'close')
return($BBcodeHTML['sizeclose']);
else
return($chaine);
}
function font_process($chaine, $statut='')
{
global $BBcodeHTML;
if($statut == 'open')
{
$chaine = preg_replace("/\[font=(.*?)\]/si",$BBcodeHTML['fontopen'],$chaine);
return($chaine);
}
elseif($statut == 'close')
return($BBcodeHTML['fontclose']);
else
return($chaine);
}
function code_edit_process($chaine, $statut='')
{
global $_SKIN;
if($statut == 'open')
{
if(NAVIGATEUR == "MSIE")
$chaine = "<DIV class=code_class>";
elseif(NAVIGATEUR == "MOZILLA")
$chaine = "<DIV class=\"code_class\" style=\"background: $_SKIN[bgtable2]; border: 1px solid $_SKIN[textcol1]; color: $_SKIN[textcol2]; font-size: 10px; margin: 8px auto 0 auto; padding: 3px;\">";
}
elseif($statut == 'close')
$chaine = "</DIV><br>";
else
{
if(NAVIGATEUR == "MSIE")
$chaine = str_replace("<br />","<br>",$chaine);
$chaine = str_replace(" "," ",$chaine);
$chaine = htmlentities($chaine);
if(NAVIGATEUR == "MSIE")
$chaine = str_replace("<br>","<br>",$chaine);
}
return($chaine);
}
function quote_edit_process($chaine, $statut='')
{
global $_SKIN;
if($statut == 'open')
{
if(NAVIGATEUR == "MSIE")
$chaine = "<DIV class=quote_class>";
elseif(NAVIGATEUR == "MOZILLA")
$chaine = "<DIV class=\"quote_class\" style=\"background: $_SKIN[bgtable3]; border: 1px solid $_SKIN[textcol1]; color: $_SKIN[textcol1]; font-size: 10px; margin: 8px auto 0 auto; padding: 3px;\">";
}
elseif($statut == 'close')
$chaine = "</DIV><br>";
return($chaine);
}
function font_edit_process($chaine, $statut='')
{
global $_SKIN;
if($statut == 'open')
{
if(NAVIGATEUR == "MSIE")
$chaine = preg_replace("/\[font=(.*?)\]/si","<FONT face=\\1>",$chaine);
elseif(NAVIGATEUR == "MOZILLA")
$chaine = preg_replace("/\[font=(.*?)\]/si","<font style=\"font-family: \\1;\">",$chaine);
}
elseif($statut == 'close')
$chaine = "</font>";
return($chaine);
}
function size_edit_process($chaine, $statut='')
{
global $_SKIN;
if($statut == 'open')
{
if(NAVIGATEUR == "MSIE")
$chaine = preg_replace("/\[size=(.*?)\]/si","<FONT size=\\1>",$chaine);
elseif(NAVIGATEUR == "MOZILLA")
$chaine = preg_replace("/\[size=(.*?)\]/si","<FONT size=\\1>",$chaine);
}
elseif($statut == 'close')
$chaine = "</font>";
return($chaine);
}
function color_edit_process($chaine, $statut='')
{
global $_SKIN;
if($statut == 'open')
{
if(NAVIGATEUR == "MSIE")
$chaine = preg_replace("/\[color=(.*?)\]/si","<FONT color=\\1>",$chaine);
elseif(NAVIGATEUR == "MOZILLA")
$chaine = preg_replace("/\[color=(.*?)\]/sie","get_htmlmoztocss('\\1')",$chaine);
}
elseif($statut == 'close')
{
if(NAVIGATEUR == "MSIE")
$chaine = "</font>";
elseif(NAVIGATEUR == "MOZILLA")
$chaine = "</span>";
}
return($chaine);
}
// #### PARSER HTML ####
function parser($tableau, $chaine)
{
$tabl = preg_split("/(".$tableau['open']."|".$tableau['close'].")/si", $chaine, -1, PREG_SPLIT_DELIM_CAPTURE);
$process_list = array();
$start = array();
$niv = 0;
foreach($tabl AS $key => $value)
{
if(preg_match("/".$tableau['open']."/si",$value) == 1)
{
$niv++;
$start[$niv] = $key;
}
elseif(preg_match("/".$tableau['close']."/si",$value) == 1)
{
if(isset($start[$niv]))
{
$end = $key;
$tabl[$start[$niv]] = $tableau['function']($tabl[$start[$niv]],'open');
if(strlen($tableau['function']) > 0 && !in_array($key, $process_list))
{
for($i = $start[$niv]+1; $i < $end; $i++)
{
$tabl[$i] = $tableau['function']($tabl[$i]);
$process_list[] = $i;
}
}
$tabl[$end] = $tableau['function']($tabl[$end],'close');
$process_list[] = $start[$niv];
$process_list[] = $end;
unset($start[$niv]);
$niv--;
}
}
}
return(implode("",$tabl));
}
// ###########################################################
// #### TRANSFORME LE CODE HTML ISSU DU WYSIWYG EN BBCODE ####
// ###########################################################
function change_smilies_to_code($msg)
{
global $_SERVER, $_FORUMCFG;
$table_smileys = getloadsmileys();
for($i=0;$i<count($table_smileys);$i++)
$msg = preg_replace("'<IMG src=\"".$_FORUMCFG['urlforum']."smileys/".$table_smileys[$i]['img']."\".*?>'si",$table_smileys[$i]['code'],$msg);
return($msg);
}
function convert_html_to_bbcode($msg)
{
if(get_magic_quotes_gpc()==1)
$msg = stripslashes($msg);
// #### TRANSFORMATION DES SMILEYS ####
$msg = change_smilies_to_code($msg);
$msg = str_replace("&","&",$msg);
$regex = array();
if(NAVIGATEUR == "MSIE")
{
$_parser[0]['open'] = "<div .*?>";
$_parser[0]['close'] = "<\/div>";
$_parser[0]['function'] = "div_process";
$_parser[1]['open'] = "<font .*?>";
$_parser[1]['close'] = "<\/font>";
$_parser[1]['function'] = "css_process";
$regex['bold']['mask'] = "/<STRONG>(.*?)<\/STRONG>/si";
$regex['bold']['replace'] = "[bold]\\1[/bold]";
$regex['ita']['mask'] = "/<EM>(.*?)<\/EM>/si";
$regex['ita']['replace'] = "[ita]\\1[/ita]";
$regex['under']['mask'] = "/<U>(.*?)<\/U>/si";
$regex['under']['replace'] = "[under]\\1[/under]";
$regex['left']['mask'] = "/<P align=left>(.*?)<\/P>/si";
$regex['left']['replace'] = "[left]\\1[/left]";
$regex['center']['mask'] = "/<P align=center>(.*?)<\/P>/si";
$regex['center']['replace'] = "[center]\\1[/center]";
$regex['right']['mask'] = "/<P align=right>(.*?)<\/P>/si";
$regex['right']['replace'] = "[right]\\1[/right]";
$regex['mail']['mask'] = "/<A href=\"mailto:(.*?)\">(.*?)<\/A>/si";
$regex['mail']['replace'] = "[mail]\\1[/mail]";
$regex['url']['mask'] = "/<A href=\"(?!(?i)javascript:)(.*?)\">(.*?)<\/A>/si";
$regex['url']['replace'] = "[url=\\1]\\2[/url]";
$regex['img']['mask'] = "/<IMG .*src=\"(.*?)\".*?>/si";
$regex['img']['replace'] = "[img]\\1[/img]";
$msg = parser($_parser[0],$msg);
$msg = parser($_parser[1],$msg);
$msg = preg_replace($regex['bold']['mask'],$regex['bold']['replace'],$msg);
$msg = preg_replace($regex['ita']['mask'],$regex['ita']['replace'],$msg);
$msg = preg_replace($regex['under']['mask'],$regex['under']['replace'],$msg);
$msg = preg_replace($regex['left']['mask'],$regex['left']['replace'],$msg);
$msg = preg_replace($regex['center']['mask'],$regex['center']['replace'],$msg);
$msg = preg_replace($regex['right']['mask'],$regex['right']['replace'],$msg);
$msg = preg_replace($regex['mail']['mask'],$regex['mail']['replace'],$msg);
$msg = preg_replace($regex['url']['mask'],$regex['url']['replace'],$msg);
$msg = preg_replace($regex['img']['mask'],$regex['img']['replace'],$msg);
$msg = str_replace("<P>","",$msg);
$msg = str_replace("</P>","\n",$msg);
$msg = str_replace("<BR>","\n",$msg);
$msg = str_replace(" "," ",$msg);
$msg = strip_tags($msg);
}
elseif(NAVIGATEUR == "MOZILLA")
{
// #### OK pour le moment ####
// #### voir dbugguer si on met du texte en formattage + ensuite citation, le formattage disparat ####
$_parser[0]['open'] = "<div .*?>";
$_parser[0]['close'] = "<\/div>";
$_parser[0]['function'] = "div_process";
$_parser[1]['open'] = "<font .*?>";
$_parser[1]['close'] = "<\/font>";
$_parser[1]['function'] = "css_process";
$_parser[2]['open'] = "<span .*?>";
$_parser[2]['close'] = "<\/span>";
$_parser[2]['function'] = "css_process";
$_parser[3]['open'] = "<br .*?>";
$_parser[3]['close'] = "<\/br>";
$_parser[3]['function'] = "css_process";
$regex['mail']['mask'] = "/<A href=\"mailto:(.*?)\">(.*?)<\/A>/si";
$regex['mail']['replace'] = "[mail]\\1[/mail]";
$regex['url']['mask'] = "/<A href=\"(?!(?i)javascript:)(.*?)\">(.*?)<\/A>/si";
$regex['url']['replace'] = "[url=\\1]\\2[/url]";
$regex['img']['mask'] = "/<IMG .*src=\"(.*?)\">/si";
$regex['img']['replace'] = "[img]\\1[/img]";
$msg = parser($_parser[0],$msg);
$msg = parser($_parser[1],$msg);
$msg = parser($_parser[2],$msg);
$msg = parser($_parser[3],$msg);
$msg = preg_replace($regex['mail']['mask'],$regex['mail']['replace'],$msg);
$msg = preg_replace($regex['url']['mask'],$regex['url']['replace'],$msg);
$msg = preg_replace($regex['img']['mask'],$regex['img']['replace'],$msg);
$msg = strip_tags($msg);
$msg = str_replace(" "," ",$msg);
}
return($msg);
}
// ################################################################################
// #### TRANSFORME DU BBCODE EN HTML SELON LE NAVIGATEUR POUR L'EDITION DE MSG ####
// ################################################################################
function change_code_to_smileys($msg)
{
global $table_smileys, $_SERVER, $_FORUMCFG;
for($i=0;$i<count($table_smileys);$i++)
{
$msg = str_replace($table_smileys[$i]['code'],"<img src=\"".$_FORUMCFG['urlforum']."smileys/".$table_smileys[$i]['img']."\">", $msg);
}
return($msg);
}
function get_html_from_bbcode($chaine)
{
global $_SKIN;
// #### TRANSFORMATION DES SMILEYS ####
$chaine = change_code_to_smileys($chaine);
$regex = array();
$_parser[0]['open'] = "\[code\]";
$_parser[0]['close'] = "\[\/code\]";
$_parser[0]['function'] = "code_edit_process";
$_parser[1]['open'] = "\[quote\]";
$_parser[1]['close'] = "\[\/quote\]";
$_parser[1]['function'] = "quote_edit_process";
$_parser[2]['open'] = "\[font=.*?\]";
$_parser[2]['close'] = "\[\/font\]";
$_parser[2]['function'] = "font_edit_process";
$_parser[3]['open'] = "\[size=.*?\]";
$_parser[3]['close'] = "\[\/size\]";
$_parser[3]['function'] = "size_edit_process";
$_parser[4]['open'] = "\[color=.*?\]";
$_parser[4]['close'] = "\[\/color\]";
$_parser[4]['function'] = "color_edit_process";
if(NAVIGATEUR == "MSIE")
{
$search = array( "/\[bold\](.*?)\[\/bold\]/si",
"/\[ita\](.*?)\[\/ita\]/si",
"/\[under\](.*?)\[\/under\]/si",
"/\[left\](.*?)\[\/left\]/si",
"/\[center\](.*?)\[\/center\]/si",
"/\[right\](.*?)\[\/right\]/si",
"/\[mail\](.*?)\[\/mail\]/si",
"/\[url=(.*?)\](.*?)\[\/url\]/si",
"/\[img\](.*?)\[\/img\]/si");
$replace = array( "<STRONG>\\1</STRONG>",
"<EM>\\1</EM>",
"<U>\\1</U>",
"<P align=left>\\1</P>",
"<P align=center>\\1</P>",
"<P align=right>\\1</P>",
"<A href=\"mailto:\\1\">\\1</A>",
"<A href=\"\\1\">\\2</A>",
"<IMG src=\"\\1\">");
}
elseif(NAVIGATEUR == "MOZILLA")
{
$search = array( "/\[bold\](.*?)\[\/bold\]/si",
"/\[ita\](.*?)\[\/ita\]/si",
"/\[under\](.*?)\[\/under\]/si",
"/\[left\](.*?)\[\/left\]/si",
"/\[center\](.*?)\[\/center\]/si",
"/\[right\](.*?)\[\/right\]/si",
"/\[mail\](.*?)\[\/mail\]/si",
"/\[url=(.*?)\](.*?)\[\/url\]/si",
"/\[img\](.*?)\[\/img\]/si");
$replace = array( "<span style=\"font-weight: bold;\">\\1</span>",
"<span style=\"font-style: italic;\">\\1</span>",
"<span style=\"text-decoration: underline;\">\\1</span>",
"<div style=\"text-align: left;\">\\1</div>",
"<div style=\"text-align: center;\">\\1</div>",
"<div style=\"text-align: rigth;\">\\1</div>",
"<A href=\"mailto:\\1\">\\1</A>",
"<A href=\"\\1\">\\2</A>",
"<IMG src=\"\\1\">");
}
$chaine = parser($_parser[0],$chaine);
$chaine = parser($_parser[1],$chaine);
$chaine = parser($_parser[2],$chaine);
$chaine = parser($_parser[3],$chaine);
$chaine = parser($_parser[4],$chaine);
$chaine = preg_replace($search,$replace,$chaine);
return($chaine);
}
// ##################################################################
// #### TRANSFORME LE BBCODE EN HTML POUR AFFICHAGE SUR LE FORUM ####
// ##################################################################
function format_bbcode_to_html($chaine)
{
global $BBcodeHTML;
$chaine = trim($chaine);
$chaine = str_replace('<br />','',$chaine);
$chaine = str_replace('\\\"','\"',$chaine);
return $chaine;
}
function getreturnbbcode($msg,$topic=false)
{
global $bground, $_SKIN, $_USER, $_FORUMCFG, $DetailMsg, $sql, $BBcodeHTML, $_PRE;
$regex = array();
$_parser[0]['open'] = "\[code\]";
$_parser[0]['close'] = "\[\/code\]";
$_parser[0]['function'] = "code_process";
$_parser[1]['open'] = "\[quote\]";
$_parser[1]['close'] = "\[\/quote\]";
$_parser[1]['function'] = "quote_process";
$_parser[2]['open'] = "\[color=.*?\]";
$_parser[2]['close'] = "\[\/color\]";
$_parser[2]['function'] = "color_process";
$_parser[3]['open'] = "\[size=[\d]\]";
$_parser[3]['close'] = "\[\/size\]";
$_parser[3]['function'] = "size_process";
$_parser[4]['open'] = "\[font=.*?\]";
$_parser[4]['close'] = "\[\/font\]";
$_parser[4]['function'] = "font_process";
$msg = parser($_parser[0],$msg);
$msg = parser($_parser[1],$msg);
$msg = parser($_parser[2],$msg);
$msg = parser($_parser[3],$msg);
$msg = parser($_parser[4],$msg);
// **** transformation autres balises ****
$search=array("/(?<!url:|url=|\])(http|ftp|https):\/\/(([a-zA-Z0-9.\/@:%=?~_#\-\+]|&)+)(?<![\.:#%?])/",
"/(\Z|\s|^|[^a-zA-Z\/])www\\.(([a-zA-Z0-9.\/@:%=?~_#\-\+]|&)+)(?<![\.:#%?])/",
"/\[swf\]url:((?:[a-zA-Z0-9.\/:%~_\-]+)\.swf) largeur:([0-9]+) hauteur:([0-9]+) \[\/swf\]/",
"/\[mail\]([a-zA-Z0-9-_\.]+)@([a-zA-Z0-9-_\.]+\.[a-zA-Z0-9]{2,4})\[\/mail\]/",
"/\[img\](?!(?i)javascript:)(.*?)\[\/img\]/",
"/\[bold\](.*?)\[\/bold\]/si",
"/\[ita\](.*?)\[\/ita\]/si",
"/\[under\](.*?)\[\/under\]/si",
"/\[center\](.*?)\[\/center\]/si",
"/\[left\](.*?)\[\/left\]/si",
"/\[right\](.*?)\[\/right\]/si",
"/\[url=(?!(?i)javascript:)(.*?)\](.*?)\[\/url\]/si",
"/\[\!([\/]{0,1})(code|quote|mail|img|bold|ita|under|center|font|size|color|url)\]/si");
$replace=array($BBcodeHTML['urlauto1'],
$BBcodeHTML['urlauto2'],
$BBcodeHTML['swf'],
$BBcodeHTML['mail'],
$BBcodeHTML['img'],
$BBcodeHTML['bold'],
$BBcodeHTML['ita'],
$BBcodeHTML['under'],
$BBcodeHTML['center'],
$BBcodeHTML['left'],
$BBcodeHTML['right'],
$BBcodeHTML['url'],
"[\\1\\2]");
$msg=preg_replace($search,$replace,$msg);
// **** gestion de la balise des messages cachs ****
if($_FORUMCFG['canpostmsgcache']=="Y" && ereg("[cache]",$msg) && $topic==true)
{
$isposter=$sql->query("SELECT COUNT(*) AS present FROM ".$_PRE."posts WHERE parent='".$DetailMsg['parent']."' AND idmembre=".$_USER['userid']);
$isrespond=mysql_fetch_array($isposter);
if($isrespond['present']>0)
$msg=preg_replace("/\[cache\](.*?)\[\/cache\]/si",$BBcodeHTML['msgcache1'],$msg);
else
$msg=preg_replace("/\[cache\](.*?)\[\/cache\]/si",$BBcodeHTML['msgcache2'],$msg);
}
return($msg);
}
function censuredwords($msg)
{
global $_FORUMCFG, $ListWords, $ListWordsRpl;
if(strlen($_FORUMCFG['censuredwords'])>0)
$msg=preg_replace($ListWords,$ListWordsRpl,$msg);
return($msg);
}
function getquote($id)
{
global $_PRE, $sql, $tpl, $QuoteName, $OrigMsg, $QuoteMsg, $_USER;
$query = $sql->query("SELECT pseudo,msg FROM ".$_PRE."posts WHERE idpost='$id'");
list($QuoteName,$OrigMsg) = mysql_fetch_array($query);
$QuoteName = getformatrecup($QuoteName);
$OrigMsg = getformatrecup($OrigMsg);
$QuoteMsg = preg_replace("/\[quote\](.*?)\[\/quote\]/si","",$OrigMsg);
$QuoteMsg = preg_replace("/\[cache\](.*?)\[\/cache\]/si",$tpl->gettemplate("repondre","msgcache"),$QuoteMsg);
$msg = $tpl->gettemplate("repondre","origmsg");
return($msg);
}
function gettopictitle($id,$annonce=false)
{
global $sql, $_PRE;
if($annonce)
$query = $sql->query("SELECT sujet FROM ".$_PRE."annonces WHERE idpost=".$id);
else
$query = $sql->query("SELECT idforum,sujet,nbrep,opentopic,poll FROM ".$_PRE."topics WHERE idtopic=".$id);
$nb = mysql_numrows($query);
if($nb==0)
return false;
else
{
$j = mysql_fetch_array($query);
return($j);
}
}
function updateforumlastposter($idforum)
{
global $sql, $_PRE;
$query = $sql->query("SELECT COUNT(*) AS nbtopic FROM ".$_PRE."topics WHERE idforum='$idforum'");
list($nbtopic)=mysql_fetch_array($query);
$query = $sql->query("SELECT COUNT(*) AS nbmsg FROM ".$_PRE."posts WHERE idforum='$idforum'");
list($nbmsg)=mysql_fetch_array($query);
$nbmsg = $nbmsg - $nbtopic;
if($nbtopic>0)
{
$query = $sql->query("SELECT idpost,date,idmembre,pseudo FROM ".$_PRE."posts WHERE idforum='$idforum' ORDER BY date DESC");
$i=mysql_fetch_array($query);
}
else
{
$i['pseudo']="";
$i['date']=0;
$i['idpost']=0;
}
$i['pseudo'] = getformatdbtodb($i['pseudo']);
$query=$sql->query("UPDATE ".$_PRE."forums SET forumtopic='$nbtopic' ,forumposts='$nbmsg' ,lastforumposter='".$i['pseudo']."', lastdatepost='".$i['date']."', lastidpost='".$i['idpost']."' WHERE forumid='$idforum'");
}
function updatetopiclastposter($idpost)
{
global $sql, $_PRE;
$query = $sql->query("SELECT COUNT(*) AS nbpost FROM ".$_PRE."posts WHERE parent='$idpost'");
list($nbpost) = mysql_fetch_array($query);
$nbpost--;
$query = $sql->query("SELECT idpost,date,idmembre,pseudo FROM ".$_PRE."posts WHERE parent='$idpost' ORDER BY date DESC");
$j = mysql_fetch_array($query);
// voir !!
$j['pseudo'] = getformatdbtodb($j['pseudo']);
$query = $sql->query("UPDATE ".$_PRE."topics SET nbrep='$nbpost', derposter='".$j['pseudo']."', idderpost='".$j['idmembre']."', datederrep='".$j['date']."', idderpost='".$j['idpost']."' WHERE idtopic='$idpost'");
}
function updatenbtopics()
{
global $sql, $_PRE, $_FORUMCFG;
$query=$sql->query("SELECT COUNT(*) AS nbtopics FROM ".$_PRE."topics");
list($nbtopics)=mysql_fetch_array($query);
$query=$sql->query("UPDATE ".$_PRE."config SET valeur='$nbtopics' WHERE options='statnbtopics'");
$_FORUMCFG['statnbtopics'] = $nbtopics;
}
function updatenbposts()
{
global $sql,$_FORUMCFG, $_PRE;
$query=$sql->query("SELECT COUNT(*) AS nbposts FROM ".$_PRE."posts");
list($nbposts)=mysql_fetch_array($query);
$nbposts = $nbposts - $_FORUMCFG['statnbtopics'];
$query=$sql->query("UPDATE ".$_PRE."config SET valeur='$nbposts' WHERE options='statnbposts'");
}
function updatemembers()
{
global $sql, $_PRE;
$query = $sql->query("SELECT login FROM ".$_PRE."user WHERE userstatus<>'0' ORDER BY registerdate DESC");
$nbuser=mysql_numrows($query);
list($lastmember)=mysql_fetch_array($query);
$lastmember = getformatdbtodb($lastmember);
$query=$sql->query("UPDATE ".$_PRE."config SET valeur='$nbuser' WHERE options='statnbuser'");
$query=$sql->query("UPDATE ".$_PRE."config SET valeur='$lastmember' WHERE options='statlastmember'");
}
// A supprimer ?????????????????????
function updatestatsmembers()
{
global $sql, $_PRE;
$query=$sql->query("SELECT COUNT(*) AS nbmb FROM ".$_PRE."user");
list($nbmb)=mysql_fetch_array($query);
$query=$sql->query("SELECT login FROM ".$_PRE."user ORDER BY registerdate DESC LIMIT 0,1");
list($lastpseudo)=mysql_fetch_array($query);
$query=$sql->query("UPDATE ".$_PRE."config SET valeur='$nbmb' WHERE options='statnbuser'");
$query=$sql->query("UPDATE ".$_PRE."config SET valeur='$lastpseudo' WHERE options='statlastmember'");
}
function updatepmstats($user)
{
global $sql,$_PRE,$_USER;
$query=$sql->query("SELECT COUNT(*) AS nbpm,vu FROM ".$_PRE."privatemsg WHERE iddest='$user' GROUP BY vu");
$nb=mysql_numrows($query);
$nbpmtot=0;
$nbpmnew=0;
if($nb>0)
{
while($j=mysql_fetch_array($query))
{
if($j['vu']==0)
$nbpmnew=$j['nbpm'];
$nbpmtot+=$j['nbpm'];
}
}
$query=$sql->query("UPDATE ".$_PRE."user SET nbpmtot='$nbpmtot', nbpmvu='$nbpmnew' WHERE userid='$user'");
if($user==$_USER['userid'] && $nbpmnew<$_USER['nbpmvu'])
sendcookie("nbpmvu",$nbpmnew,-1);
}
function getfuseauhoraire()
{
global $_USER,$_FORUMCFG;
$zone=$_USER['timezone'];
$fuseaux = array();
$fuseaux[-12] = "GMT -12:00, Eniwetok";
$fuseaux[-11] = "GMT -11:00, Samoa";
$fuseaux[-10] = "GMT -10:00, Hawaii";
$fuseaux[-9] = "GMT -9:00, Alaska";
$fuseaux[-8] = "GMT -8:00, PST, Pacific US";
$fuseaux[-7] = "GMT -7:00, MST, Mountain US";
$fuseaux[-6] = "GMT -6:00, CST, Central US";
$fuseaux[-5] = "GMT -5:00, EST, Eastern US";
$fuseaux[-4] = "GMT -4:00, Atlantic, Canada";
$fuseaux[-3] = "GMT -3:00, Brazilia, Buenos Aries";
$fuseaux[-2] = "GMT -2:00, Mid-Atlantic";
$fuseaux[-1] = "GMT -1:00, Cape Verdes";
$fuseaux[0] = "GMT, Greenwich, London, Lisbon, Casablanca";
$fuseaux[1] = "GMT +1:00, Berlin, Rome, Madrid, Paris";
$fuseaux[2] = "GMT +2:00, Israel, Cairo";
$fuseaux[3] = "GMT +3:00, Moscow, Kuwait, Baghdad";
$fuseaux[4] = "GMT +4:00, Abu Dhabi, Muscat";
$fuseaux[5] = "GMT +5:00, Islamabad, Karachi";
$fuseaux[6] = "GMT +6:00, Almaty, Dhaka";
$fuseaux[7] = "GMT +7:00, Bangkok, Jakarta";
$fuseaux[8] = "GMT +8:00, Hong Kong, Beijing";
$fuseaux[9] = "GMT +9:00, Tokyo, Osaka";
$fuseaux[10] = "GMT +10:00, Sydney, Melbourne, Guam";
$fuseaux[11] = "GMT +11:00, Magadan, Soloman Is.";
$fuseaux[12] = "GMT +12:00, Fiji, Wellington, Auckland";
return($fuseaux[$zone]);
}
function updatebirth()
{
global $sql,$tpl,$_FORUMCFG,$_PRE;
$day = gmstrftime("%d-%m",time()+(($_FORUMCFG['defaulttimezone'] + intval(date("I")))*3600));
$year = gmstrftime("%Y",time()+(($_FORUMCFG['defaulttimezone'] + intval(date("I")))*3600));
$query = $sql->query("SELECT ".$_PRE."userplus.birth,
".$_PRE."user.userid,
".$_PRE."user.login,
".$_PRE."user.userstatus
FROM ".$_PRE."userplus
LEFT JOIN ".$_PRE."user ON ".$_PRE."user.userid = ".$_PRE."userplus.idplus
WHERE ".$_PRE."userplus.birth LIKE \"$day-%\"");
$nb = mysql_numrows($query);
if($nb>0)
{
while($j=mysql_fetch_array($query))
{
$j['birth'] = explode("-",$j['birth']);
$j['login'] = getformatrecup($j['login']);
$tpl->box['age'] = $year-$j['birth'][2];
$tpl->box['user'] = getformatpseudo($j['login'],$j['userstatus'],$j['userid']); // tpl: 2 x addslashes
$birth[] = $tpl->gettemplate("entete","formatbirth");
}
$birth = implode(", ",$birth);
}
else $birth = "";
$_FORUMCFG['birth'] = stripslashes(stripslashes($birth));
$sql->query("UPDATE ".$_PRE."config SET valeur='".stripslashes($birth)."' WHERE options='birth'");
}
// ********************************************************
// * FONCTIONS DE FORMATTAGE DES DONNEES *
// ********************************************************
function getformatpreview($msg)
{
$msg=htmlentities($msg);
if(get_magic_quotes_gpc()==0)
$msg=addslashes($msg);
$msg=addslashes($msg);
$msg=nl2br($msg);
return($msg);
}
function getformathtml($msg)
{
if(get_magic_quotes_gpc()==0)
$msg=addslashes($msg);
return($msg);
}
function getformatmsg($msg,$activenl2br=true)
{
if(get_magic_quotes_gpc()==0)
$msg=addslashes($msg);
$msg=htmlentities($msg);
if($activenl2br)
$msg=nl2br($msg);
return($msg);
}
function getformatmsghtml($msg,$activenl2br=true)
{
$msg=htmlentities($msg);
$msg=addslashes($msg);
$msg = str_replace("&lt;","<",$msg);
$msg = str_replace("&gt;",">",$msg);
if($activenl2br)
$msg=nl2br($msg);
return($msg);
}
function getformatrecup($msg,$strip=false)
{
if($strip)
$msg=strip_tags($msg);
if(get_magic_quotes_runtime()==0)
$msg=addslashes($msg);
$msg=addslashes($msg);
return($msg);
}
function getformatdbtodb($msg)
{
if(get_magic_quotes_runtime()==0)
$msg=addslashes($msg);
return($msg);
}
function getrecupforform($msg, $squote = false)
{
if($squote)
$msg = htmlentities($msg, ENT_QUOTES);
else
$msg = htmlentities($msg);
if(get_magic_quotes_gpc()==1 & get_magic_quotes_runtime()==0)
$msg=stripslashes($msg);
elseif(get_magic_quotes_gpc()==0 & get_magic_quotes_runtime()==1)
$msg=addslashes($msg);
return($msg);
}
function getrecupfromcookie($cook)
{
if(get_magic_quotes_gpc()==0)
$cook = addslashes($cook);
return($cook);
}
function getlocaltime($time,$format=0)
{
global $_USER;
$decalage = ($_USER['timezone']+intval(date("I"))) * 3600;
if($format==1)
$result = gmstrftime("%d/%m/%Y",$time+$decalage);
else
$result = gmstrftime("%d/%m/%Y %H:%M",$time+$decalage);
return($result);
}
function getformatpseudo($pseudo,$status,$userid)
{
global $tpl;
if($status<0)
$tpl->box['mbstatus']="ban";
else
$tpl->box['mbstatus']=$status;
$tpl->box['mbpseudo']=getformatrecup($pseudo);
$tpl->box['mbuserid']=$userid;
if($status>1 || $status<0)
$chaine=$tpl->gettemplate("entete","mbpseudolink");
else
$chaine=$tpl->gettemplate("entete","mbpseudo");
return($chaine);
}
function cookdecode($tabl)
{
$transfert=explode("_",$tabl);
for($i=0;$i<count($transfert);$i++)
{
$transitintestinal=explode("-",$transfert[$i]);
$IdString = $transitintestinal[0];
$chaine[$IdString."m"]=$transitintestinal[1];
}
return($chaine);
}
function cookencode($tabl,$reverse=false)
{
for($i=0;$i<count($tabl);$i++)
{
$dif=each($tabl);
$transfert[$i]=intval($dif['key'])."-".$dif['value'];
}
if($reverse)
$transfert = array_reverse($transfert);
if(count($tabl)>0)
$chaine=implode("_",$transfert);
return($chaine);
}
function getemail($email)
{
global $_FORUMCFG;
$email=str_replace("@",$_FORUMCFG['emailmask'],$email);
return($email);
}
function inversemail($email)
{
global $_FORUMCFG;
$email=str_replace($_FORUMCFG['emailmask'],"@",$email);
return($email);
}
function formatstrformail($str)
{
$trans = get_html_translation_table(HTML_ENTITIES);
$trans = array_flip($trans);
$encoded = strtr($str, $trans);
return($encoded);
}
function recupDBforMail($msg)
{
if(get_magic_quotes_runtime()==1)
$msg=stripslashes($msg);
//$msg=stripslashes($msg);
return($msg);
}
function testemail($email)
{
return( ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'([-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]{2,}\.){1,3}'.
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]{2,4}$',
$email) );
}
function testurl($url)
{
if(preg_match("/^(http|ftp|https):\/\/([a-z0-9-\/\.@:%=?&;]+(?<![\.:%?&;]))$/",$url)==0)
return false;
else
return true;
}
function testlength($var,$maxlength,$null="",$max="")
{
global $tpl,$error,$_POST;
if(strlen($null)>0)
{
$testchain=preg_replace("/([\s]{1,})/","",$_POST[$var]);
if(strlen($testchain)==0)
$error=$tpl->attlang($null);
}
if($maxlength > 0 && strlen($_POST[$var])>$maxlength)
{
if(strlen($max)>0)
$error=$tpl->attlang($max);
else
$_POST[$var]=substr($_POST[$var],0,$maxlength);
}
}
function test_max_length($msg, $maxlength)
{
$chaine = strip_tags($msg); // Supprime les balises HTML
$chaine = preg_replace("/(\r\n|\n)/si","",$chaine); // Supprime les retour la ligne
// Supprime les \
if(get_magic_quotes_gpc()==1 & get_magic_quotes_runtime()==0) // Supprime les \
$chaine=stripslashes($chaine);
$trans = get_html_translation_table(HTML_ENTITIES); // |
$trans = array_flip($trans); // > Remplace les entites HTML par leur caractre quivalent
$chaine = strtr($chaine,$trans); // |
$trop_plein = strlen($chaine) - $maxlength;
if($trop_plein > 0 && $maxlength > 0)
$msg = substr($msg,0,-($trop_plein));
return($msg);
}
// ********************************************************
// * FORMATTAGE DE FORMULAIRES / TABLEAUX *
// ********************************************************
function return_int($nombre)
{
return(intval($nombre));
}
function Return_Checked($value)
{
if($value)
return(" CHECKED");
else
return("");
}
// ********************************************************
// * FONCTIONS D'AFFICHAGE *
// ********************************************************
function affforumlist($cat)
{
global $zecook,$tpl,$Forums,$TabForum,$TabModos,$_USER,$_PERMFORUM,$_FORUMRIGHTS, $modoname;
$chaine="";
for($cpt=0;$cpt<count($TabForum);$cpt++)
if($TabForum[$cpt]['forumcat']==$cat)
{
$Forums=$TabForum[$cpt];
if(!empty($_PERMFORUM[$Forums['forumid']][0]))
{
$Forums['forumtitle'] = getformatrecup($Forums['forumtitle']);
$Forums['forumcomment'] = getformatrecup($Forums['forumcomment']);
if($Forums['openforum']=="Y")
{
if(empty($zecook[$Forums['forumid']."m"]))
$zecook[$Forums['forumid']."m"] = 0;
if ($zecook[$Forums['forumid']."m"] < ($Forums['forumtopic']+$Forums['forumposts']))
$Forums['imgforum']="on";
else
$Forums['imgforum']="off";
}
else
$Forums['imgforum']="closed";
if($Forums['lastdatepost']>0)
{
$Forums['lastdatepost']=getlocaltime($Forums['lastdatepost']);
$Forums['lastforumposter'] = getformatrecup($Forums['lastforumposter']);
$tpl->box['infolastpost']=$tpl->gettemplate("forumlist","iflastpost");
}
else
$tpl->box['infolastpost']=$tpl->gettemplate("forumlist","ifnolastpost");
$modoname = "";
$tpl->box['modonames'] = "";
for($cpt2=0;$cpt2<count($TabModos);$cpt2++)
if($TabModos[$cpt2]['forumident']==$Forums['forumid'])
{
$modoname=$TabModos[$cpt2]['modologin'];
$tpl->box['modonames'] .= $tpl->gettemplate("forumlist","modonames");
}
if(strlen($modoname)>0)
{
$tpl->box['modolist'] = $tpl->gettemplate("forumlist","modolist");
}
else
$tpl->box['modolist']=" ";
$chaine.=$tpl->gettemplate("forumlist","ifforum");
}
}
return($chaine);
}
function affwritebox($cancache="Y")
{
global $table_smileys, $cachedir, $tpl, $_FORUMCFG, $Parent, $_USER;
// On dfinit le template selon wysiwyg ou non
if($_USER['wysiwyg']=="Y") $tpl_writebox = "writebox_wysiwyg";
else $tpl_writebox = "writebox";
if (!empty($tpl->box['quotemsg']) && strlen($tpl->box['quotemsg'])>0)
{
if($_USER['wysiwyg'] == "Y")
$tpl->box['quotemsg'] = get_html_from_bbcode($tpl->box['quotemsg']);
else
$tpl->box['quotemsg']=strip_tags($tpl->box['quotemsg']);
}
else
$tpl->box['quotemsg']=NULLSTR;
$compt=0;
$tpl->box['smileybox']="";
for($zz=0;$zz<18;$zz++)
{
$tpl->box['smileybox'].="\t\t";
if($compt%3!=0)
$tpl->box['smileybox'].=" ";
if($_USER['wysiwyg']=="Y")
$tpl->box['smileybox'].="<img src=\"".$cachedir."smileys/".$table_smileys[$zz]['img']."\" onClick=\"addsmile('".$table_smileys[$zz]['img']."');\" border=0>";
else
$tpl->box['smileybox'].="<a href=\"javascript:;\" onClick=\"addsmile(' ".$table_smileys[$zz]['code']." '); Compter(formulaire.msg,formulaire.limitchar)\"><img src=\"".$cachedir."smileys/".$table_smileys[$zz]['img']."\" border=0></A>";
$compt++;
if($compt%3==0)
$tpl->box['smileybox'].="<P>\n\n";
else
$tpl->box['smileybox'].="\n";
}
if($_FORUMCFG['canpostmsgcache']=="Y" && $cancache=="Y" && $Parent==0)
$tpl->box['cancache']=$tpl->gettemplate($tpl_writebox,"addcachebutton");
else
$tpl->box['cancache']=NULLSTR;
$chaine=$tpl->gettemplate($tpl_writebox,"wrtboxaccueil");
return($chaine);
}
function afftopiclist($annonce=0,$template="list")
{
global $cookiespost,$_GET,$page,$tpl,$Topics;
$chaine="";
if($annonce==1)
$Topics['icontopic']="annonce.gif";
else
{
if(!empty($Topics['opentopic']) && $Topics['opentopic'] == 'N')
$Topics['icontopic']="closed.gif";
else
{
$IdString = $Topics['idtopic'];
settype($IdString,"string");
if (empty($cookiespost[$IdString."m"]) || $cookiespost[$IdString."m"]<($Topics['nbrep']+1))
$Topics['icontopic']="on.gif";
else
$Topics['icontopic']="off.gif";
}
}
$tpl->box['pretopic']="";
if(!empty($Topics['postit']) && $Topics['postit']=="1")
$tpl->box['pretopic'].=$tpl->gettemplate($template,"ifpostittopic");
if(!empty($Topics['poll']) && $Topics['poll']>0)
$tpl->box['pretopic'].=$tpl->gettemplate($template,"iftopicpoll");
if($annonce==1)
{
$Topics['idtopic'] = $Topics['idpost'];
$tpl->box['pretopic']=$tpl->gettemplate($template,"iftopicannonce");
$tpl->box['linkpage']="readannonce";
}
else
$tpl->box['linkpage']="detail";
$Topics['sujet']=getformatrecup($Topics['sujet']);
$tpl->box['topic']=$tpl->gettemplate($template,"topiclinktomsg");
if(empty($Topics['nbrep'])) $Topics['nbrep'] = 0;
$tpl->box['affichepages']=getpagestopic($Topics['nbrep'],$Topics['idtopic'],$page);
if($Topics['userid']==0)
$Topics['userstatus'] = 0;
$Topics['loginposter']=getformatpseudo($Topics['pseudo'],$Topics['userstatus'],$Topics['userid']);
$Topics['derposter'] = getformatrecup($Topics['derposter']);
$Topics['datederrep']=getlocaltime($Topics['datederrep']);
if($annonce==0)
$tpl->box['gotobutton']=$tpl->gettemplate($template,"linklastmsg");
else
$tpl->box['gotobutton']= NULLSTR;
$chaine=$tpl->gettemplate($template,"lignetopic");
unset($tpl->box['pretopic'],$tpl->box['gotobutton']);
return($chaine);
}
// #### AFFICHAGE DU DETAIL D'UN MESSAGE ####
function affdetailtopic($annonce=0,$cit=true)
{
global $tpl,$DetailMsg,$_FORUMCFG, $IdTopic, $NombreConnectes, $SearchOrig, $SearchReplace, $Grades;
// **** Initialisation variables ****
$chaine = NULLSTR;
$tpl->box['affusergrade'] = NULLSTR;
$tpl->box['affpins'] = NULLSTR;
$tpl->box['affusergrade'] = NULLSTR;
$tpl->box['grade'] = NULLSTR;
$tpl->box['affusersign'] = NULLSTR;
$tpl->box['buttonmail'] = NULLSTR;
$tpl->box['affuserlogo'] = NULLSTR;
$tpl->box['affsujetpost'] = NULLSTR;
$tpl->box['buttonsearch'] = NULLSTR;
$tpl->box['affregisterdate'] = NULLSTR;
$tpl->box['isconnected'] = NULLSTR;
$tpl->box['buttonpm'] = NULLSTR;
// **** Si c'est un membre ****
if($DetailMsg['posterid']>0)
{
// **** initialisation des variables ****
$connected = false;
$DetailMsg['pseudo'] = $DetailMsg['login'];
$Key_Grade = 0;
// **** gestion des grades ****
if($_FORUMCFG['use_grades'] == "Y" && is_array($Grades))
{
foreach($Grades AS $key => $value)
{
$Key_Grade = $key;
if($DetailMsg['usermsg'] < $value[1])
{
$Key_Grade --;
break;
}
}
$tpl->box['grade'] = $Grades[$Key_Grade][0];
for($i=0; $i< $Grades[$Key_Grade][2];$i++)
$tpl->box['affpins'] .= trim($tpl->gettemplate("detail", "imgpins"));
$tpl->box['affusergrade'] = $tpl->gettemplate("detail", "usergrade");
}
// **** connect ou pas ? ****
for($i = 0; $i < count($NombreConnectes); $i++)
if($NombreConnectes[$i]['userid'] == $DetailMsg['posterid'])
$connected = true;
if($connected) $tpl->box['isconnected'] = $tpl->gettemplate("detail","connecty");
else $tpl->box['isconnected'] = $tpl->gettemplate("detail","connectn");
// **** gestion du logo ****
if(ereg("^\"http://",$DetailMsg['userlogo']))
{
if($_FORUMCFG['logos'][6] == "Y" && $_FORUMCFG['logos'][0] == "Y")
$tpl->box['affuserlogo'] = $tpl->gettemplate("detail","extuserlogo");
}
elseif(!empty($DetailMsg['userlogo']) && $_FORUMCFG['logos'][0] == "Y")
$tpl->box['affuserlogo'] = $tpl->gettemplate("detail","userlogo");
// **** gestion date d'enregistrement ****
if (!empty($DetailMsg['registerdate']))
{
$DetailMsg['registerdate']=getlocaltime($DetailMsg['registerdate'],1);
$tpl->box['affregisterdate']=$tpl->gettemplate("detail","userinfo");
}
}
else
$DetailMsg['usercitation']=$tpl->attlang("guestcit");
// **** gestion de la citation ****
if (!empty($DetailMsg['usercitation']))
{
$DetailMsg['usercitation'] = getformatrecup($DetailMsg['usercitation']);
$tpl->box['affusercitation'] = $tpl->gettemplate("detail","usercitation");
}
else
$tpl->box['affusercitation'] = NULLSTR;
$DetailMsg['formatpseudo']=getformatpseudo($DetailMsg['pseudo'],$DetailMsg['userstatus'],$DetailMsg['userid']);
if(!empty($DetailMsg['sujetpost']))
{
$DetailMsg['sujetpost']=getformatrecup($DetailMsg['sujetpost']);
$tpl->box['affsujetpost']=$tpl->gettemplate("detail","msgsujet");
}
$DetailMsg['datepost']=getlocaltime($DetailMsg['datepost']);
if($DetailMsg['smiles']=="Y")
$DetailMsg['msgpost']=getreturnsmilies($DetailMsg['msgpost']);
if($DetailMsg['afbbcode']=="Y")
{
if($DetailMsg['idpost']==$IdTopic)
$DetailMsg['msgpost']=getreturnbbcode($DetailMsg['msgpost'],true);
else
$DetailMsg['msgpost']=getreturnbbcode($DetailMsg['msgpost']);
}
if(count($SearchOrig)>0)
$DetailMsg['msgpost'] = preg_replace("/(.+?)((<(.*?)>)|$)/sie","getcolorsearch('\\1').stripslashes('\\2')",$DetailMsg['msgpost']);
$DetailMsg['msgpost'] = censuredwords($DetailMsg['msgpost']);
$tpl->box['affmessage']=getformatrecup($DetailMsg['msgpost']);
if(!empty($DetailMsg['usersign']))
{
$DetailMsg['usersign']=getformatrecup($DetailMsg['usersign']);
if($_FORUMCFG['smileinsign']=="Y")
$DetailMsg['usersign']=getreturnsmilies($DetailMsg['usersign']);
if($_FORUMCFG['bbcodeinsign']=="Y")
$DetailMsg['usersign']=getreturnbbcode($DetailMsg['usersign']);
$tpl->box['affusersign']=$tpl->gettemplate("detail","usersignature");
}
if (!empty($DetailMsg['guestmail']))
$DetailMsg['postermail']=getemail($DetailMsg['guestmail']);
elseif(!empty($DetailMsg['usermail']) && $DetailMsg['showmail']=="Y")
$DetailMsg['postermail']=getemail($DetailMsg['usermail']);
if(!empty($DetailMsg['postermail']))
$tpl->box['buttonmail']=$tpl->gettemplate("detail","buttonmail");
if (!empty($DetailMsg['guestsite']))
$DetailMsg['postersite']=$DetailMsg['guestsite'];
elseif(!empty($DetailMsg['usersite']) && $DetailMsg['showusersite']=="Y")
$DetailMsg['postersite']=$DetailMsg['usersite'];
if(!empty($DetailMsg['postersite']))
$tpl->box['buttonsite']=$tpl->gettemplate("detail","buttonweb");
else
$tpl->box['buttonsite']=NULLSTR;
/*if (!empty($DetailMsg['usericq']) && $DetailMsg['showicq']=="Y")
$tpl->box['buttonicq']=$tpl->gettemplate("detail","buttonicq");*/
if($DetailMsg['posterid']>0)
{
$tpl->box['buttonpm']=$tpl->gettemplate("detail","buttonpm");
$tpl->box['buttonsearch']=$tpl->gettemplate("detail","buttonsearch");
}
if($annonce==0)
{
if($cit == true)
$tpl->box['buttonquote']=$tpl->gettemplate("detail","buttonquote");
else
$tpl->box['buttonquote']="";
$tpl->box['buttonedit']=$tpl->gettemplate("detail","buttonedit");
$tpl->box['buttonip']=$tpl->gettemplate("detail","buttonip");
$tpl->box['buttonalert']=$tpl->gettemplate("detail","buttonalert");
}
$chaine=$tpl->gettemplate("detail","boxmsg");
$tpl->box['affsujetpost']=$tpl->box['affusercitation']=$tpl->box['affuserlogo']=$tpl->box['affregisterdate']=$tpl->box['affsujetpost']=$tpl->box['affusersign']=$tpl->box['isconnected']="";
$tpl->box['buttonmail']=$tpl->box['buttonsite']=$tpl->box['buttonicq']=$tpl->box['buttonpm']=$tpl->box['buttonsearch']=$tpl->box['buttonquote']=$tpl->box['buttonedit']=$tpl->box['buttonip']=$tpl->box['buttonalert']="";
unset($DetailMsg);
return($chaine);
}
// *****************************************************
// * FONCTIONS JAVASCRIPT *
// *****************************************************
function getjsredirect($url,$tplime)
{
global $tpl;
$tpl->box['urlredirect'] = $url;
$tpl->box['timeredirect'] = $tplime;
$chaine = $tpl->gettemplate("entete","getjsredirect");
return($chaine);
}
// ********************************************************
// * INITIALISATION DU FORUM *
// ********************************************************
$tps_start = get_microtime();
$NbRequest = 0;
$sql = new SQLConnect;
$tpl = new Template;
$_FORUMCFG = getconfig();
addToArray($_FORUMCFG, 'mailforumname', formatstrformail(recupDBforMail($_FORUMCFG['forumname'])));
$_FORUMCFG['contactmail'] = getemail($_FORUMCFG['contactmail']);
$_FORUMCFG['forumname'] = getformatrecup($_FORUMCFG['forumname']);
$_FORUMCFG['sitename'] = getformatrecup($_FORUMCFG['sitename']);
define("NULLSTR","");
if(!isset($_SERVER))
{
$_SERVER = $HTTP_SERVER_VARS;
$_ENV = $HTTP_ENV_VARS;
$_COOKIE = $HTTP_COOKIE_VARS;
$_GET = $HTTP_GET_VARS;
$_POST = $HTTP_POST_VARS;
$_FILES = $HTTP_POST_FILES;
$_SESSION = $HTTP_SESSION_VARS;
$_REQUEST = array_merge($_GET,$_POST);
}
$ForumVersion = "0.8.4 beta";
$ForumDBVersion = "0.8 beta";
?>