<?PHP
/************************************************************************/
/* META-LANG engine for NPDS V  / Net Portal Dynamic System .           */
/*                                                                      */
/* This version name NPDS Copyright (c) 2002-2005 by Philippe Brunier   */
/*                                                                      */
/* 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.       */
/************************************************************************/
function extend_meta_mot($Ycontent,$meta_mot,$chaine_rep) {
   if (stristr($Ycontent,$meta_mot)) {
      $tmp=eregi_replace($meta_mot, $chaine_rep, $Ycontent);
      return ($tmp);
   } else {
      return ($Ycontent);
   }
}

function meta_lang($Xcontent) {

   #autodoc !msg_foot! : Gestion des messages du footer du theme (les 4 pieds de page dans Admin / Pr&eacute;f&eacute;rences)
   if (strstr($Xcontent,"!msg_foot!")) {
      global $foot1, $foot2, $foot3, $foot4;
      if ($foot1) $MT_foot=stripslashes($foot1)."<br />\n";
      if ($foot2) $MT_foot.=stripslashes($foot2)."<br />\n";
      if ($foot3) $MT_foot.=stripslashes($foot3)."<br />\n";
      if ($foot4) $MT_foot.=stripslashes($foot4)."\n";
      $MT_foot=aff_langue($MT_foot);
   }

   #autodoc !date! : Date du jour - se base sur le format de daydate (fichier de traduction)
   if (strstr($Xcontent,"!date!")) {
      global $locale, $gmt;
      setlocale (LC_TIME, aff_langue($locale));
      $MT_date=strftime(translate("daydate"),time()+($gmt*3600));
   }

   #autodoc !banner! : Syst&egrave;me de banni&egrave;re
   if (strstr($Xcontent,"!banner!")) {
      global $banners, $hlpfile;
      if (($banners) and (!$hlpfile)) {
         ob_start();
            include("banners.php");
            $MT_banner=ob_get_contents();
         ob_end_clean();
      } else {
         $MT_banner="";
      }
   }

   #autodoc !search_topics! : Liste des Topic => Moteur de recherche
   if (strstr($Xcontent,"!search")) {
      if (strstr($Xcontent,"!search_topics!")) {
         $MT_search_topics="<form action=\"search.php\" method=\"post\"><b>".translate("Topics")." </b>";
         $toplist = mysql_query("select topicid, topictext from topics order by topictext");
         $MT_search_topics.="<select class=\"TEXTBOX_STANDARD\" name=\"topic\"onChange='submit()'>" ;
         $MT_search_topics.="<option value=\"\">".translate("All Topics")."</option>\n";
         while(list($topicid, $topics) = mysql_fetch_row($toplist)) {
            $MT_search_topics.="<option $sel value=\"$topicid\">".aff_langue($topics)."</option>\n";
         }
         $MT_search_topics.="</select></form>";
      }

      #autodoc !search! : Ligne de saisie => Moteur de recherche
      if (strstr($Xcontent,"!search!")) {
         $MT_search="<form action=\"search.php\" method=\"post\"><b>".translate("Search")."</b>
         <input class=\"TEXTBOX_STANDARD\" type=\"name\" name=\"query\" size=\"10\"></form>";
      }
   }

   #autodoc !member! : Ligne Anonyme / membre gestion du compte / Message Interne (MI)
   if (strstr($Xcontent,"!member!")) {
      global $cookie, $anonymous;
      $username = $cookie[1];
      if ($username=="") {$username=$anonymous;}
      ob_start();
         Mess_Check_Mail($username);
         $MT_member=ob_get_contents();
      ob_end_clean();
   }

   #autodoc !nb_online! : Nombre de session active
   #autodoc !whoim! : Phrase de bienvenue ("vous &ecirc;tes connect&eacute; en tant que ...")
   if ( (strstr($Xcontent,"!nb_online!")) or (strstr($Xcontent,"!whoim!")) ) {
      list($MT_nb_online, $MT_whoim)=Who_Online();
   }

   #autodoc !membre_nom! : R&eacute;cup&eacute;ration du nom du membre ou rien
   #autodoc !membre_pseudo! : R&eacute;cup&eacute;ration du pseudonyme ou rien
   if ( (strstr($Xcontent,"!membre_nom!")) or (strstr($Xcontent,"!membre_pseudo!")) ) {
      global $cookie;
      $MT_uname=$cookie[1];
      $Mresult = mysql_query("select name from users where uname='$MT_uname'");
      if (mysql_num_rows($Mresult)==1) {
         list($MT_name)=mysql_fetch_row($Mresult);
      } else {
         $MT_name="";
      }
      mysql_free_result($Mresult);
   }

   #autodoc !block!RID ou LID: fabrique un bloc R (droite) ou L (gauche) en s'appuyant sur l'ID (voir gestionnaire de blocs) pour incorporation
   #autodoc : il faut ABSOLUMENT METTRE un espace apr&egrave;s l'ID !
   while (strstr($Xcontent,"!block!")) {
      $deb=strpos($Xcontent,"!block!",0)+7;
      $fin=strpos($Xcontent," ",$deb);
      if ($fin) {
         $s_bid=substr($Xcontent,$deb,$fin-$deb);
      } else {
         $s_bid=substr($Xcontent,$deb);
      }
      $Xcontent=str_replace("!block!$s_bid",@oneblock(substr($s_bid,1), substr($s_bid,0,1)."B"),$Xcontent);
   }
   #autodoc !leftblocs! : Fabrique les blocs de gauche
   if (strstr($Xcontent,"!leftblocs!")) {
      ob_start();
         leftblocks();
         $M_Lblocs=ob_get_contents();
      ob_end_clean();
   }
   #autodoc !rightblocs! : Fabrique les blocs de droite
   if (strstr($Xcontent,"!rightblocs!")) {
      ob_start();
         rightblocks();
         $M_Rblocs=ob_get_contents();
      ob_end_clean();
   }

   #autodoc !article!ID : R&eacute;cup&eacute;ration du titre et fabrication d'une l'url pointant sur l'article (ID)
   #autodoc : il faut ABSOLUMENT METTRE un espace apr&egrave;s l'ID !
   global $nuke_url;
   while (strstr($Xcontent,"!article!")) {
      $deb=strpos($Xcontent,"!article!",0)+9;
      $fin=strpos($Xcontent," ",$deb);
      if ($fin) {
         $s_sid=substr($Xcontent,$deb,$fin-$deb);
      } else {
         $s_sid=substr($Xcontent,$deb);
      }
      $result = mysql_query("SELECT title FROM stories where sid='$s_sid'");
      list($title)=mysql_fetch_array($result);
      $Xcontent=str_replace("!article!$s_sid","<a href=\"".$nuke_url."/article.php?sid=$s_sid\" class=\"NOIR\">$title</a>",$Xcontent);
   }

   #autodoc !article_complet!ID : R&eacute;cup&eacute;ration de l'article complet (ID) et "themisation" pour incorporation
   #autodoc : il faut ABSOLUMENT METTRE un espace apr&egrave;s l'ID !
   #autodoc : si ID > 0   : l'article publi&eacute; avec l'ID indiqu&eacute;e
   #autodoc : si ID = 0   : le dernier article publi&eacute;
   #autodoc : si ID = -1  : l'avant dernier ... jusqu'à -9 (limite actuelle)
   $one=false;
   while (strstr($Xcontent,"!article_complet!")) {
      $deb=strpos($Xcontent,"!article_complet!",0)+17;
      $fin=strpos($Xcontent," ",$deb);
      if ($fin) {
         $s_sid=substr($Xcontent,$deb,$fin-$deb);
      } else {
         $s_sid=substr($Xcontent,$deb);
      }
      if ($s_sid>0) {
         $story_limit=1;
         $news_tab=prepa_aff_news("article",$s_sid,"");
      } else {
         if (!$one) {
            $news_tab=prepa_aff_news("index","","");
            $one=true;
         }
         $story_limit=abs($s_sid)+1;
      }
      $aid=unserialize($news_tab[$story_limit][aid]);
      $informant=unserialize($news_tab[$story_limit][informant]);
      $datetime=unserialize($news_tab[$story_limit][datetime]);
      $title=unserialize($news_tab[$story_limit][title]);
      $counter=unserialize($news_tab[$story_limit][counter]);
      $topic=unserialize($news_tab[$story_limit][topic]);
      $hometext=unserialize($news_tab[$story_limit][hometext]);
      $notes=unserialize($news_tab[$story_limit][notes]);
      $morelink=unserialize($news_tab[$story_limit][morelink]);
      $topicname=unserialize($news_tab[$story_limit][topicname]);
      $topicimage=unserialize($news_tab[$story_limit][topicimage]);
      $topictext=unserialize($news_tab[$story_limit][topictext]);
      if ($aid) {
         ob_start();
            themeindex($aid, $informant, $datetime, $title, $counter, $topic, $hometext, $notes, $morelink, $topicname, $topicimage, $topictext);
            $remp=ob_get_contents();
         ob_end_clean();
      } else {
         $remp="";
      }
      $Xcontent=str_replace("!article_complet!$s_sid",$remp,$Xcontent);
   }

   #autodoc !headline!ID : R&eacute;cup&eacute;ration du canal RSS (ID) et fabrication d'un retour pour affichage
   if (strstr($Xcontent,"!headline!")) {
      $deb=strpos($Xcontent,"!headline!",0)+10;
      $fin=strpos($Xcontent," ",$deb);
      if ($fin) {
         $H_hid=substr($Xcontent,$deb,$fin-$deb);
      } else {
         $H_hid=substr($Xcontent,$deb);
      }
      $M_headline=headlines($H_hid,"");
   }

   #autodoc !list_mns! : Affiche une liste de tout les membres poss&eacute;dant un minisite avec un lien vers celui-ci
   // Tito 2004
   if (strstr($Xcontent,"!list_mns!")) {
      $query=mysql_query("SELECT uname FROM users WHERE mns='1'");
      $MT_mns="<table width=\"100%\">";
      while (list($uname)=mysql_fetch_array($query)) {
         $rowcolor=tablos();
         $MT_mns.="<tr $rowcolor><td><a href=\"minisite.php?op=$uname\" target=\"_blank\" class=\"NOIR\">$uname</a></td></tr>";
      }
      $MT_mns.="</table>";
   }

   #autodoc !LastMember! : Renvoie le pseudo du dernier membre inscrit
   // Tito 2004
   if (strstr($Xcontent,"!LastMember!")) {
      $query=mysql_query("SELECT uname FROM users ORDER BY uid DESC LIMIT 0,1");
      $result=mysql_fetch_array($query);
      $MT_lastm=$result[0];
   }

   #autodoc !edito! : Fabrique et affiche l'EDITO
   if (strstr($Xcontent,"!edito!")) {
      list($affich,$M_edito)=fab_edito();
      if ((!$affich) or ($M_edito=="")) {
         $M_edito="";
      }
   }
   #autodoc !edito-notitle! : Supprime le Titre EDITO et le premier niveau de tableau dans l'edito (ce meta-mot n'est actif que dans l'Edito)

   #autodoc !langue! : Fabrique une zone de selection des langues disponibles
   if (strstr($Xcontent,"!langue!")) {
      $M_langue=aff_local_langue("","index.php", "choice_user_language");
   }

   #autodoc !anti_spam!EMAIL : Encode un email et cr&eacute; un &lta href=mailto ...&gtEmail&lt/a&gt
   if (strstr($Xcontent,"!anti_spam!")) {
      $deb=strpos($Xcontent,"!anti_spam!",0)+11;
      $fin=strpos($Xcontent," ",$deb);
      if ($fin) {
         $H_as=substr($Xcontent,$deb,$fin-$deb);
      } else {
         $H_as=substr($Xcontent,$deb);
      }
      $M_anti_spam="<a href=\"mailto:".anti_spam($H_as)."\" class=\"NOIR\" target=\"_blank\">".str_replace("@","_".translate("at")."_",$H_as)."</a>";
   }

   #autodoc !a/! : Permet d'utiliser l'antislash dans un document. Sera remplac&eacute; par le code html de l'antislash

   #autodoc !groupe_text!groupe_ID : Test si le membre appartient aux(x) groupe(s) : groupe_ID (sous la forme : gp1,gp2,gp3) et n'affiche que le texte encadr&eacute; par !groupe_text!ID_group .... !/!
   #autodoc : Si groupe_ID est nul, la v&eacute;rification portera simplement sur la qualit&eacute; de membre
   #autodoc : il faut ABSOLUMENT METTRE un espace apr&egrave;s groupe_ID (m&ecirc;me si il est vide) !
   if (strstr($Xcontent,"!groupe_text!")) {
      while (strstr($Xcontent,"!groupe_text!")) {
         $H_gt=""; $fragment=""; $affich=false;
         $deb=strpos($Xcontent,"!groupe_text!",0)+13;
         $fin=strpos($Xcontent," ",$deb);
         if ($fin) {
            $H_gt=substr($Xcontent,$deb,$fin-$deb);
         } else {
            $H_gt=substr($Xcontent,$deb);
         }
         $pos_deb=strpos($Xcontent,"!groupe_text!$H_gt",0);
         $pos_fin=strpos($Xcontent,"!/!",0);
         if ($pos_deb===false) {$pos_deb=-1;}
         if ($pos_fin===false) {$pos_fin=-1;}
         if (($pos_deb>=0) and ($pos_fin>=0)) {
            $fragment=substr($Xcontent,$pos_deb+strlen("!groupe_text!$H_gt")+1,($pos_fin-strlen($H_gt)-$pos_deb-14));
         } else {
            $Xcontent=str_replace("!groupe_text!$H_gt","!groupe-text!$H_gt <span class=\"ROUGE\"> Erreur / Error </span>", $Xcontent);
         }
         if ($fragment) {
            global $user;
            if ($H_gt!="") {
               if (groupe_autorisation($H_gt, valid_group($user)))
                  $affich=true;
            } else {
               if ($user)
                  $affich=true;
            }
            if ($affich) {
               $Xcontent=str_replace("!groupe_text!$H_gt ".$fragment."!/!", $fragment, $Xcontent);
            } else {
               $Xcontent=str_replace("!groupe_text!$H_gt ".$fragment."!/!", "", $Xcontent);
            }
         }
      }
   }
   #autodoc !/! : Termine LES meta-mot ENCADRANTS (!groupe_text!, ...) : le fonctionnement est assez similaire &agrave; [langue] ... [/langue]

   #autodoc !sc_infos! : R&eacute;cup&eacute;ration de l'infos disponible quand SuperCache est actif
   #autodoc !sc_infos_else! : R&eacute;cup&eacute;ration de l'infos disponible quand SuperCache est inactif

   #autodoc !slogan!</b> : R&eacute;cup&eacute;ration du contenu du slogan du site (Admin / Pr&eacute;f&eacute;rences)
   global $slogan;
   #autodoc:

   #autodoc !theme!</b> : R&eacute;cup&eacute;ration du du contenu de la variable $theme du th&egrave;me (fichier theme.php)
   global $theme;
   #autodoc !bgcolor1 : R&eacute;cup&eacute;ration du contenu de la variable $bgcolor1 du th&egrave;me (fichier theme.php)
   global $bgcolor1;
   #autodoc !bgcolor2 : R&eacute;cup&eacute;ration du contenu de la variable $bgcolor2 du th&egrave;me (fichier theme.php)
   global $bgcolor2;
   #autodoc !bgcolor3 : R&eacute;cup&eacute;ration du contenu de la variable $bgcolor3 du th&egrave;me (fichier theme.php)
   global $bgcolor3;
   #autodoc !bgcolor4 : R&eacute;cup&eacute;ration du contenu de la variable $bgcolor4 du th&egrave;me (fichier theme.php)
   global $bgcolor4;
   #autodoc !bgcolor5 : R&eacute;cup&eacute;ration du contenu de la variable $bgcolor5 du th&egrave;me (fichier theme.php)
   global $bgcolor5;
   #autodoc !bgcolor6 : R&eacute;cup&eacute;ration du contenu de la variable $bgcolor6 du th&egrave;me (fichier theme.php)
   global $bgcolor6;
   #autodoc !textcolor1 : R&eacute;cup&eacute;ration du contenu de la variable $textcolor1 du th&egrave;me (fichier theme.php)
   global $textcolor1;
   #autodoc !textcolor2 : R&eacute;cup&eacute;ration du contenu de la variable $textcolor2 du th&egrave;me (fichier theme.php)
   global $textcolor2;
   #autodoc !bargif : R&eacute;cup&eacute;ration du contenu de la variable $bargif du th&egrave;me (fichier theme.php)
   global $bargif;

   #autodoc:
   #autodoc !PHP! : Int&eacute;gration de code PHP "noy&eacute;" dans vos fichiers html (voir readme.txt dans /modules/meta-lang)

   $npds_METALANG_words=array(
   "'!banner!'i"=>"$MT_banner",
   "'!date!'i"=>"$MT_date",
   "'!search_topics!'i"=>"$MT_search_topics",
   "'!search!'i"=>"$MT_search",
   "'!member!'i"=>"$MT_member",
   "'!nb_online!'i"=>"$MT_nb_online",
   "'!whoim!'i"=>"$MT_whoim",
   "'!membre_nom!'i"=>"$MT_name",
   "'!membre_pseudo!'i"=>"$MT_uname",
   "'!msg_foot!'i"=>"$MT_foot",
   "'!sc_infos!'i"=>SC_infos(),
   "'!sc_infos_else!'i"=>"&nbsp;",
   "'!headline!$H_hid'i"=>"$M_headline",
   "'!list_mns!'i"=>"$MT_mns",
   "'!LastMember!'i"=>"$MT_lastm",
   "'!edito!'i"=>"$M_edito",
   "'!langue!'i"=>"$M_langue",
   "'!anti_spam!$H_as'i"=>"$M_anti_spam",
   "'!a/!'i"=>"&#92;",
   "'!leftblocs!'"=>"$M_Lblocs",
   "'!rightblocs!'"=>"$M_Rblocs",
   "'!marquetapage!'i"=>"$M_tapage",
   "'!slogan!'i"=>"$slogan",
   "'!theme!'i"=>"$theme",
   "'!bgcolor1'i"=>"$bgcolor1",
   "'!bgcolor2'i"=>"$bgcolor2",
   "'!bgcolor3'i"=>"$bgcolor3",
   "'!bgcolor4'i"=>"$bgcolor4",
   "'!bgcolor5'i"=>"$bgcolor5",
   "'!bgcolor6'i"=>"$bgcolor6",
   "'!textcolor1'i"=>"$textcolor1",
   "'!textcolor2'i"=>"$textcolor2",
   "'!bargif'i"=>"$bargif",
   "'!PHP!'i"=>"",
   "'<!--meta'i"=>"",
   "'meta-->'i"=>""
   );
   $Xcontent=preg_replace(array_keys($npds_METALANG_words),array_values($npds_METALANG_words), $Xcontent);

   if (file_exists("modules/meta-lang/extend-meta_lang.php")) {
      static $extend_meta_lang;
      if ($extend_meta_lang=="") {
         ob_start();
            readfile("modules/meta-lang/extend-meta_lang.php");
            $extend_meta_lang=ob_get_contents();
         ob_end_clean();
         $extend_meta_lang=str_replace("<?","",$extend_meta_lang);
         $extend_meta_lang=str_replace("PHP","",$extend_meta_lang);
         $extend_meta_lang=str_replace("php","",$extend_meta_lang);
         $extend_meta_lang=str_replace("?>","",$extend_meta_lang);
      }
      eval($extend_meta_lang);
   }
   return ($Xcontent);
}
?>