#!/usr/bin/perl -w
#!perl -w
#print "Content-type: text/html\n\n";
#print "> OK";
#exit(0);

require './cgi/libs/config.lib';
require './cgi/libs/library.lib';
&TOSH_GetFormData;
$Client_Language = $form{"l"} || "fr";
$Client_Language = "gb" if ($Client_Language eq "en");
$Client_Language = "fr" if (grep (/^$Client_Language\|/,@Languages) <= 0);
require './cgi/libs/'.$Client_Language.'.lib';

$defaultpage = "home";

$page = $action || $defaultpage;
$template = "template";

use DBI; 
$trace_level = 2;
$dbh = DBI->connect("DBI:mysql:$VAR_db_name",$VAR_db_username,$VAR_db_password) || &TOSH_DieError('CANNOT CONNECT TO DATABASE');

	if ($action eq "logout") {
	$Close = $form{"c"} || 0;
	$Reset = $form{"r"} || 1;
	$sth = $dbh->prepare('UPDATE online SET id = ?, lastping = ? WHERE id = ?') || &TOSH_DieError('CANNOT PREPARE DATA');
	$sth->execute("V$Client_Id",$VAR_now,$Client_Id);# || &TOSH_DieError('CANNOT UPDATE DATA IN DATABASE5');
	$sth->finish;
		if ($Reset == 1) {
		$sth = $dbh->prepare('UPDATE users SET lastlog = ? WHERE id = ?') || &TOSH_DieError('CANNOT PREPARE DATA');
		$sth->execute($VAR_now,$Client_Id);# || &TOSH_DieError('CANNOT UPDATE DATA IN DATABASE5');
		$sth->finish;
		}
	$dbh->disconnect;
	$Cookie = "$Client_Ip|V$Client_Id|$Client_Language";
	&TOSH_SetCookie ("$VAR_cookie",$Cookie);
		if ($Close > 0) {
		&TOSH_Alert ("","close");
		}
	($Client_Id) = ("V$Client_Id");
	$VAR_client_logged = 0;
	$Client_Reseau = 0;
	print "Content-type: text/html\n";
	print "Location: $VAR_root_url\n\n";
	exit(0);
	}
	elsif (($action eq "login")&($VAR_referrer_domain =~ m!^$VAR_domain$!i)) {
	$EmailT = lc ($form{"logemail"});
	$KeyT = lc ($form{"logpass"});
	$KeyT = &TOSH_CleanForm ($KeyT);
		if ((&TOSH_CheckEmail ($EmailT))&($KeyT ne "")) {
		my $sth = $dbh->prepare('SELECT p1.id,p1.pubuser,p1.user,p1.language,p1.email_confirme,p1.reseau,p1.reseau_admin,p2.pays FROM users AS p1, profil AS p2 WHERE p1.email LIKE ? AND p1.pass LIKE ? AND p2.id = p1.id LIMIT 0,1') || &TOSH_DieError('CANNOT PREPARE DATABASE');
		$sth->execute("$EmailT","$KeyT") || &TOSH_DieError('CANNOT EXECUTE SEARCH COMMAND1');
		@row = $sth->fetchrow_array();
		$sth->finish;
		}
		else {
		push (@ToShow,"BADCODES");
		}
		if (@row > 0) {
		$Viz_Id = $Client_Id;
		($Client_Id,$Client_PubUser,$Client_User,$Client_Language,$Client_Email_Confirme,$Client_Reseau,$Client_Reseau_Admin,$Client_Pays) = @row;
		$Client_Reseau_Admin = 0 if ($Client_Reseau <= 0);
			if (length ($Client_Email_Confirme) == 6) {
			@SaveUsers = (1,0,$Client_Id);
			$sth = $dbh->prepare('UPDATE users SET email_confirme = ?, email_reject = ? WHERE id = ?') || &TOSH_DieError('CANNOT PREPARE DATA');
			$sth->execute(@SaveUsers) || &TOSH_DieError('CANNOT UPDATE DATA IN DATABASE2');
			$sth->finish;
			$firstcon = 1;
			$Client_Email_Confirme = 1;
			}
		$Client_Email = $EmailT;
		$sth = $dbh->prepare('INSERT INTO log (id,ip,date,observations) VALUES (?,?,?,?)') || &TOSH_DieError('CANNOT PREPARE DATA');
		$sth->execute($Client_Id,"$Client_Ip",$VAR_now,"login") || &TOSH_DieError('CANNOT UPDATE DATA IN DATABASE2');
		$sth->finish;
		$sth = $dbh->prepare('INSERT INTO online (id,page,lastping) VALUES (?,?,?) ON DUPLICATE KEY UPDATE page= ?, lastping = ?') || &TOSH_DieError('CANNOT PREPARE DATA');
		$sth->execute($Client_Id,"login",$VAR_now,"login",$VAR_now) || &TOSH_DieError('CANNOT UPDATE DATA IN DATABASE2');
		$sth->finish;
		$sth = $dbh->prepare('DELETE FROM online WHERE id LIKE ?') || &TOSH_DieError('CANNOT PREPARE DATABASE');
		$sth->execute($Viz_Id) || &TOSH_DieError('CANNOT UPDATE DATA IN DATABASE5');
		$sth->finish;
		$sth = $dbh->prepare('UPDATE users SET lastmes = ? WHERE id = ?') || &TOSH_DieError('CANNOT PREPARE DATABASE');
		$sth->execute(0,$Client_Id) || &TOSH_DieError('CANNOT EXECUTE SEARCH COMMAND1');
		$sth->finish;
		$Cookie = "$VAR_user_ip|$Client_Id|$Client_Language";
		&TOSH_SetCookie ("$VAR_cookie",$Cookie);
		$dbh->disconnect;
		print "Content-type: text/html\n";
		$URL_buffer = $form{"b"};
			if ($URL_buffer ne "") {
			$URL_buffer =~ s/::/&/g;
			$URL_buffer =~ s/:/=/g;
			$URL_buffer =~ s/[^a-z\_]?ts=[^&]*//gi;
			print "Location: $VAR_root_url?$URL_buffer\n\n";
			}
			else {
			$VAR_referrer =~ s/l=../l=$Client_Language/g;
			$VAR_referrer =~ s/&l2=..//g;
			print "Location: $VAR_referrer\n\n";
			}
		exit(0);
		}
		else {
		push (@ToShow,"BADCODES");
		}
	push (@ToHide,"OPTIN");
	push (@ToHide,"OPTOUT");
	push (@ToHide,"OPTERRIN");
	push (@ToHide,"OPTERROUT");
	push (@ToReplace,"NEWSEMAIL=>$YOUREMAIL");
	push (@ToReplace,"NEWSE=>0");
	push (@ToSelect,"opt=>in=>checked");
	}
	elsif (($action eq "newsletter")&($VAR_referrer_domain =~ m!^$VAR_domain$!i)) {
	$redir = $form{"red"} || $defaultpage;
	$newsemail = $form{"newsemail"};
	$opt = $form{"opt"};
	$nerr = 1;
		if (&TOSH_CheckEmail ($newsemail)) {
		$sth = $dbh->prepare('SELECT p1.email FROM dada_subscribers AS p1 WHERE p1.email LIKE ? AND p1.list LIKE ? LIMIT 0,1') || &TOSH_DieError('CANNOT PREPARE DATABASE');
		$sth->execute("$newsemail","sylm") || &TOSH_DieError('CANNOT EXECUTE SEARCH COMMAND');
		@row = $sth->fetchrow_array();
		$sth->finish;
			if (@row > 0) {
			$nexist++;
			}
			if (($opt eq "out")&($nexist > 0)) {
			$sth = $dbh->prepare('DELETE FROM dada_subscribers WHERE email LIKE ? AND list LIKE ?') || &TOSH_DieError('CANNOT PREPARE DATABASE');
			$sth->execute("$newsemail","sylm") || &TOSH_DieError('CANNOT EXECUTE SEARCH COMMAND');
			$sth->finish;
			$nerr = 0;
			}
			elsif ($opt eq "in") {
				if ($nexist <= 0) {
				$Language = $Client_Language;
				$Language = "en" if ($Language eq "gb");
				$sth = $dbh->prepare('INSERT INTO dada_subscribers (email,list,list_type,list_status,_language) VALUES (?,?,?,?,?)') || &TOSH_DieError('CANNOT PREPARE DATABASE');
				$sth->execute("$newsemail","sylm","list","1","$Client_Language") || &TOSH_DieError('CANNOT EXECUTE SEARCH COMMAND');
				@row = $sth->fetchrow_array();
				$sth->finish;
				}
			$nerr = 0;
			}
		}

		if ($nerr > 0) {
		push (@ToHide,"OPTERRIN") if ($opt eq "out");
		push (@ToHide,"OPTERROUT") if ($opt eq "in");
		push (@ToHide,"OPTIN");
		push (@ToHide,"OPTOUT");
		}
		else {
		push (@ToHide,"OPTERRIN");
		push (@ToHide,"OPTERROUT");
		push (@ToHide,"OPTIN") if ($opt eq "out");
		push (@ToHide,"OPTOUT") if ($opt eq "in");
		push (@ToHide,"NEWSFORM");
		}
	$action = $page = $redir;
	push (@ToReplace,"NEWSEMAIL=>$newsemail");
	push (@ToReplace,"NEWSE=>1");
	push (@ToSelect,"opt=>$opt=>checked");
	}
	else {
	push (@ToHide,"OPTIN");
	push (@ToHide,"OPTOUT");
	push (@ToHide,"OPTERRIN");
	push (@ToHide,"OPTERROUT");
	push (@ToReplace,"NEWSEMAIL=>$YOUREMAIL");
	push (@ToReplace,"NEWSE=>0");
	push (@ToSelect,"opt=>in=>checked");
	}

$sth = $dbh->prepare('INSERT INTO online (id,ip,page,lastping) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE ip = ?, page = ?, lastping = ?');# || &TOSH_DieError('CANNOT PREPARE DATA');
$sth->execute("$Client_Id","$VAR_user_ip","$page",$VAR_now,"$VAR_user_ip","$page",$VAR_now);# || &TOSH_DieError('CANNOT UPDATE DATA IN DATABASE2');
$sth->finish;

$newimg = "<img src=\"images/new.png\" width=\"16\" height=\"9\" name=\"imgnew\" id=\"imgnew\" alt=\"$NEW\" title=\"$NEW\" border=\"0\" align=\"absmiddle\">";
	if ($VAR_client_logged > 0) {
	$sth = $dbh->prepare('SELECT p1.id,p1.reseau_admin FROM users AS p1 WHERE p1.reseau > 0 AND p1.reseau_admin > 0') || &TOSH_DieError('CANNOT PREPARE DATABASE');
	$sth->execute() || &TOSH_DieError('CANNOT EXECUTE SEARCH COMMAND1');
		while ((@row = $sth->fetchrow_array()) != NULL) {
		push (@AllAdmins,"$row[0]");
		push (@AllModos,"$row[0]") if ($row[1] == 2);
		}
	$sth->finish;

	$sth = $dbh->prepare('SELECT p1.id FROM mouvements AS p1 WHERE p1.admin = ? LIMIT 0,1') || &TOSH_DieError('CANNOT PREPARE DATABASE');
	$sth->execute($Client_Id) || &TOSH_DieError('CANNOT EXECUTE SEARCH COMMAND');
	@row = $sth->fetchrow_array();
	$sth->finish;
	($Client_Mouvement_Admin) = @row;

	$sth = $dbh->prepare('SELECT p1.fbid,p1.user,p1.pubuser,p1.email,p1.email_confirme,p1.email_reject,p1.reseau,p1.reseau_admin,p1.parrain,p1.rgroupes,p1.don_year,p1.don_total,p1.init,p1.lastlog,p1.stealth,p2.forum,p2.groupe,p2.news,p2.mp,p3.nom,p3.nomjf,p3.prenom,p3.sexe,p3.naissance,p3.profession,p3.profession_detail,p3.adresse1,p3.adresse2,p3.zip,p3.ville,p3.pays,p3.tel,p3.fax,p3.mob,p3.icq,p4.favoris,p4.blacklist FROM users AS p1, preferences AS p2, profil AS p3, contacts AS p4 WHERE p1.id = ? AND p2.id = p1.id AND p3.id = p1.id AND p4.id = p1.id LIMIT 0,1') || &TOSH_DieError('CANNOT PREPARE DATABASE');
	$sth->execute($Client_Id) || &TOSH_DieError('CANNOT EXECUTE SEARCH COMMAND');
	@row = $sth->fetchrow_array();
	$sth->finish;
	($Client_FBId,$Client_User,$Client_PubUser,$Client_Email,$Client_Email_Confirme,$Client_Email_Reject,$Client_Reseau,$Client_Reseau_Admin,$Client_Parrain,$Client_Groupes,$Client_DonYear,$Client_DonTotal,$Initialize,$Client_LastLog,$Client_Stealth,$Pref_Forum,$Pref_Groupe,$Pref_News,$Pref_Mp,$Client_Nom,$Client_Nomjf,$Client_Prenom,$Client_Sexe,$Client_Naissance,$Client_Profession,$Client_Profession_Detail,$Client_Adresse1,$Client_Adresse2,$Client_Zip,$Client_Ville,$Client_Pays,$Client_Tel,$Client_Fax,$Client_Mob,$Client_Skype,$Client_Favoris,$Client_Blacklist) = @row;
	$Client_PubUser = "user$Client_Id" if ($Client_PubUser =~ m![a-z]!i <= 0);
	$TimeIt = 1 if (($Client_Reseau_Admin <= 0)&(grep (/^$Client_Id$/,@AllAllowed) <= 0));
	@Client_Groupes = split (/\|/,$Client_Groupes);
	@Client_Groupes = grep (/^\*?[1-9][0-9]*$/,@Client_Groupes);
	}
$Client_Majeur = 1 if ($Client_Naissance <= ($VAR_ToDay - 180000));

	if (-e "$VAR_cgi_path/libs/$page.lib") {
	require "$VAR_cgi_path/libs/$page.lib";
	}
	else {
	$page = $action = $defaultpage;
	require "$VAR_cgi_path/libs/$defaultpage.lib";
	}

#################################################################

$dbh->disconnect;

@Languages = sort (@Languages);
	foreach $lan (@Languages) {
	($lan1,$lan2) = split (/\|/,$lan);
	$AllLan .= "<option value=\"$lan1\">$lan2</option>";
	}
$AllLan =~ s/("$Client_Language")/$1 selected/i;

	if ($Client_Id =~ m!^[1-9][0-9]*$!) {
		if (($Client_Reseau_Admin == 1)|($Client_Mouvement_Admin > 0)) {
		$LeftMenu .= &MakeMenu ("","","","","left");
			if ($Client_Reseau_Admin == 1) {
			$LeftMenu .= &MakeMenu ("home2","$MENU_HOME","","","left");
			$LeftMenu .= &MakeMenu ("admin","$MENU_ADMIN","","","left");
			$LeftMenu .= &MakeMenu ("","","","","left");
			}
		$LeftMenu .= &MakeMenu ("adminag","$MENU_ADMIN_AG","","","left");
		$LeftMenu .= &MakeMenu ("adminca","$MENU_ADMIN_CA","","","left");
		$LeftMenu .= &MakeMenu ("adminwork","$MENU_ADMIN_WORK","","","left");
		}
	}

$LeftMenu .= &MakeMenu ("","","","","left");
$LeftMenu .= &MakeMenu ("home","$MENU_HOME","","","left");
$LeftMenu .= &MakeMenu ("","","","","left");
$LeftMenu .= &MakeMenu ("charte","$MENU_CHARTE","","","left");
$LeftMenu .= &MakeMenu ("hq","$MENU_HQ","","","left") if ($Client_Id == 2);
$LeftMenu .= &MakeMenu ("statuts","$MENU_STATUTS","","","left") if ($Client_Id == 2);
$LeftMenu .= &MakeMenu ("","","","","left");
$LeftMenu .= &MakeMenu ("membres","$MENU_MEMBRES","","","left");
$LeftMenu .= &MakeMenu ("publications","$MENU_PUBLICATIONS","","","left") if ($Client_Id == 2);
$LeftMenu .= &MakeMenu ("","","","","left");
$LeftMenu .= &MakeMenu ("presse","<b>$MENU_PRESSE</b>","","","left");
$LeftMenu .= &MakeMenu ("","","","","left");
$LeftMenu .= &MakeMenu ("http://www.monarchiste.com","$MENU_PORTAIL","pop","11111110","left");
$LeftMenu .= &MakeMenu ("","","","","left");
$LeftMenu .= &MakeMenu ("contact","$MENU_CONTACT","","","left");

$BottomMenu .= &MakeMenu ("contact","$MENU_CONTACT","","","bottom");

#	if ($VAR_cookie_on <= 0) {
#	push (@ToHide,"ISCOOKIE");
#	}
#	elsif ($VAR_client_logged > 0) {
	if ($VAR_client_logged > 0) {
	push (@ToHide,"LOGINFORM");
	push (@ToHide,"NEWLFORM");
		if ($Client_Reseau > 0) {
		push (@ToReplace,"LOGGEDAS=>\u$Client_User");
		push (@ToReplace,"USEREMAIL=>$Client_Email");
		}
		else {
		push (@ToReplace,"LOGGEDAS=>\u$Client_PubUser");
		push (@ToReplace,"USEREMAIL=>$Client_Email");
		}
	}
	else {
	push (@ToHide,"ISLOGGED");
	}
$LimPing = ($VAR_now - 200);
$OldClient_Id = $Client_Id;
$OldClient_Id =~ s/V//;
$sth = $dbh->prepare('SELECT p1.id FROM online AS p1 WHERE p1.lastping >= ? AND p1.id NOT LIKE ? AND p1.id != ?') || &TOSH_DieError('CANNOT PREPARE DATABASE');
$sth->execute($LimPing,"$Client_Id","$OldClient_Id") || &TOSH_DieError('CANNOT EXECUTE SEARCH COMMAND1');
	while ((@row = $sth->fetchrow_array()) != NULL) {
	$Acon++;
	}
$sth->finish;
$buddy = "blank";
	if ($Acon > 1) {
	$AllCon = "$Acon $MENU_ONLINEPLURPUB";
	$buddy = "buddy";
	}
	elsif ($Acon > 0) {
	$AllCon = "$MENU_ONLINEONEPUB";
	$buddy = "buddy";
	}
push (@ToReplace,"ALLCON=>$AllCon");
push (@ToReplace,"BUDDY=>$buddy");

$PageTitle = " - $PageTitle" if ($PageTitle ne "");
push (@ToReplace,"PAGETITLE=>$PageTitle");
push (@ToReplace,"META_DESCRIPTION=>$MetaDescription");
push (@ToReplace,"META_KEYWORDS=>$Meta_Keywords");
push (@ToReplace,"TOPJAVA=>$TopJava");
push (@ToReplace,"ONLOAD=>$OnLoad");
push (@ToReplace,"ALLLANGUAGES=>$AllLan");
push (@ToReplace,"SUBMENU=>$SubMenu");

push (@ToReplace,"LEFTMENU=>$LeftMenu");
push (@ToReplace,"BOTTOMMENU=>$BottomMenu");
push (@ToReplace,"CLIENT_LANGUAGE=>$Client_Language");
push (@ToReplace,"REDIR=>$page");

push (@ToReplace,"BOTTOMJAVA=>$BottomJava");
push (@ToReplace,"DATA_URL=>$VAR_data_url");
$ToHide = join ("|",@ToHide);
$ToShow = join ("|",@ToShow);
$ToReplace = join ("|",@ToReplace);
$ToSelect = join ("|",@ToSelect);
$ToPopulate = join ("|",@ToPopulate);
$ToConvert = join ("|",@ToConvert);
&TOSH_DisplayFile ("$template$tmpopit"."_$Client_Language.htm","$ToHide","$ToShow","$ToReplace","$ToSelect","$ToPopulate","$ToConvert");

exit(0);

sub MakeMenu {
($tmp_page,$tmp_texte,$tmp_popd,$tmp_pops,$tmp_loc) = @_;
$tmp_pagesub = $tmp_page;
$tmp_pagesub =~ s/^.*&([a-z0-9\_]+)$/$1/i;
$tmp_pagesup = $tmp_pagesub;
$tmp_pagesup =~ s/^([a-z0-9]+)\_.*$/$1/;
$tmp_pops = '11001000' if ($tmp_pops eq "");
$link1 = "";
$link2 = "";
	if ($tmp_loc eq "bottom") {
	$font = "#333333";
	$fontsize = "A9";
	$spacer = "";
	$link = ": <LINK1><font color=\"<FONT>\">$tmp_texte</font><LINK2> :";
	}
	elsif ($tmp_loc eq "sub") {
	$font = "#333333";
	$fontsize = "A11";
	$tmp_bgcolor = "#DDDFE8";
	$spacer = "";
	$link = "<td bgcolor=\"#FFFFFF\" class=\"A11\"><img src=\"images/blank.png\" width=\"1\" height=\"5\"></td>";
	$link .= "<td bgcolor=\"<BGCOLOR>\" class=\"A11\">&nbsp;<LINK1><font color=\"<FONT>\">$tmp_texte</font><LINK2>&nbsp;</td>";
	}
	elsif ($tmp_loc eq "left") {
	$font = "#333333";
	$font = "#CC0000" if ($tmp_page =~ m!^admin!);
	$fontsize = "A11";
	$tmp_bgcolor = "#DDDFE8";
	$spacer = <<ZARMA;
	<tr>
		<td class="A11"><img src="images/blank.png" width="160" height="3"></td>
	</tr>
ZARMA
	$link = <<ZARMA;
	<tr>
		<td bgcolor="<BGCOLOR>" class="A11"><LINK1><font color="<FONT>">$tmp_texte</font><LINK2></td>
	</tr>
ZARMA
	}
	if ($tmp_pagesub eq $page) {
		if ($tmp_loc eq "bottom") {
		$font = "#009900";
		}
		elsif ($tmp_loc eq "sub") {
		$font = "#FFFFFF";
		$tmp_bgcolor = "#009900";
		}
		elsif ($tmp_loc eq "left") {
		$font = "#FFFFFF";
		$tmp_bgcolor = "#009900";
		}
	$link1 = "<b><a href=\"?l=$Client_Language&$tmp_page\" target=\"_top\">";
	$link2 = "</a></b>";
	}
#	elsif (($tmp_page =~ m!^$page!)&($tmp_loc ne "sub")) {
	elsif (($tmp_pagesup eq $action)&($tmp_loc ne "sub")) {
		if ($tmp_loc eq "bottom") {
		$font = "#009900";
		}
		elsif ($tmp_loc eq "left") {
		$font = "#FFFFFF";
		$tmp_bgcolor = "#009900";
		}
	$link1 = "<b><a href=\"?l=$Client_Language&$tmp_page\" target=\"_top\">";
	$link2 = "</a></b>";
	}
	else {
		if ($tmp_popd ne "") {
			if ($tmp_page =~ m!^http:\/\/!) {
			$tmp_target = "_blank";
			}
			else {
			$tmp_target = "$tmp_page";
			$tmp_page = "http://www.$VAR_domain?sz=1&l=$Client_Language&$tmp_page";
			}
		$link1 = "<a href=\"$tmp_page\" target=\"$tmp_target\" onClick=\"zarma_popup (600,400,'$tmp_page','$tmp_target','$tmp_pops');return false\">";
		}
		else {
		$link1 = "<a href=\"?l=$Client_Language&$tmp_page\" target=\"_top\">";
		}
	$link2 = "</a>";
		if ($tmp_page eq "annuaire_online") {
		$font = "#009900";
		$tmp_bgcolor = "#FFFFFF";
		$link1 = "<center><span class=\"A10\"><a href=\"?l=$Client_Language&$tmp_page\" target=\"_top\">";
		$link2 = "</a></span></center>";
		}
	}


	if ($tmp_page eq "") {
	$Link = $spacer;
	}
	else {
	$Link = $link;
	$Link =~ s/<BGCOLOR>/$tmp_bgcolor/;
	$Link =~ s/<FONT>/$font/;
	$Link =~ s/<LINK1>/$link1/;
	$Link =~ s/<LINK2>/$link2/;
	}
return $Link;
}