<?php
/****************************************************************************************
SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV

Version 0.9.9

Copyright (C) 2006-2009  Sylvain FATOME
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
(in the directory docs); 
if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
Boston, MA  02110-1301, USA.

Contact : galawa@free.fr

Web : http://smitst.homelinux.com
****************************************************************************************/


// Vérification des tentatives de hack
$pos=strpos($_SERVER['PHP_SELF'],"inc.php");
if ($pos===FALSE)
	$ok_inc=TRUE;
else
	$ok_inc=FALSE;
if ($ok_inc==FALSE) header("Location: ../index.php");

include_once("../inc/func_txt.inc.php");
include_once("../inc/func_geo.inc.php");
Archivelog(@$_SESSION["code_log"]);

$export_ok = TRUE;
$export_valid = TRUE;

if (isset($_GET['td']))
	$td = strip_tags(trim($_GET['td']));
else
	$td = strip_tags(trim($_POST['td']));

if ($td == "") // Si vide, c'est une erreur
	$export_ok = FALSE;

// Vérification du type de demande
switch ($td)
{
	case "cli" :
	case "art" :
	case "logs" :
	case "scli" :
		break;
	default :
		$export_ok = FALSE;
		break;
}

// Vérification du mode du connecté (pour éviter les hacks)
switch ($td)
{
	case "cli" :
	case "scli" :
		if (@$_SESSION["niv_log"] <= 3)
			$export_ok = FALSE;
		break;
	case "art" :
		// Les agences n'ont droit qu'aux exports clients et interventions
		if (@$_SESSION["niv_log"] <= 4)
			$export_ok = FALSE;
		break;
	case "logs" :
		// Les agences n'ont droit qu'aux exports clients et interventions
		if (@$_SESSION["niv_log"] <= 4)
			$export_ok = FALSE;
		break;
	default :
		$export_ok = FALSE;
		break;
}

if ($export_ok == TRUE)
{
	switch ($td)
	{
		/******************************************************/
		/**                    CLIENTS                       **/
		/******************************************************/
		case "cli" :
			$cat = strip_tags(trim(@$_POST["cat"]));
			if (@$_SESSION["niv_log"] == 4)
				$age = @$_SESSION["code_age"];
			else
				$age = strip_tags(trim(@$_POST["age"]));
			$dep = @$_POST["deptxt"];
			
			$rech="SELECT";
			if (count($_POST["champs"]) <> 0) // Il doit y avoir au moins un champ
			{
				// On construit la chaîne de recherche
				for ($i = 0; $i < count($_POST["champs"]); $i++)
				{
					$rech.=" ".$_POST["champs"][$i].",";
				}
				$rech=substr($rech,0,strlen($rech)-1); // On enlève la dernière virgule
				$rech.=" FROM `" .TBCLI. "`";
				if ($cat <> "*")
				{
					$rech .= " WHERE cli_cat = '".$cat."'";
				}
				if ($age <> "*")
				{
					if(!stristr($rech,"WHERE "))
						$rech .= " WHERE cli_prop = '".$age."'";
					else
						$rech .= " AND cli_prop = '".$age."'";
				}
				$dep_tab = explode("_",$dep);
				if(!stristr($rech,"WHERE "))
				{
					if (count($dep_tab)==1)
						$rech .= " WHERE";
					else
						$rech .= " WHERE (";
				}
				else
				{
					if (count($dep_tab)==1)
						$rech .= " AND";
					else
						$rech .= " AND (";
				}					
					
				for ($i = 0; $i < count($dep_tab); $i++)
				{
					$rech .= " cli_dep = '".$dep_tab[$i]."' OR";
				}
				$rech=substr($rech,0,strlen($rech)-3); // On enlève le dernier OR
				if (count($dep_tab)>1)
					$rech .= ")";
				$fname="export_cli.csv";
			}
			break;
		/******************************************************/
		/**                 SITES CLIENTS                    **/
		/******************************************************/
		case "scli" :
			$cat = strip_tags(trim(@$_POST["cat"]));
			if (@$_SESSION["niv_log"] == 4)
				$age = @$_SESSION["code_age"];
			else
				$age = strip_tags(trim(@$_POST["age"]));
			$dep = @$_POST["deptxt"];
			
			$rech="SELECT";
			if (count($_POST["champs"]) <> 0) // Il doit y avoir au moins un champ
			{
				// On construit la chaîne de recherche
				for ($i = 0; $i < count($_POST["champs"]); $i++)
				{
					$rech.=" ".$_POST["champs"][$i].",";
				}
				$rech=substr($rech,0,strlen($rech)-1); // On enlève la dernière virgule
				$rech.=" FROM `" .TBCLI. "` ,`" .TBSCLI. "`";
				if ($cat <> "*")
				{
					$rech .= " WHERE cli_cat = '".$cat."'";
				}
				if ($age <> "*")
				{
					if(!stristr($rech,"WHERE "))
						$rech .= " WHERE cli_prop = '".$age."'";
					else
						$rech .= " AND cli_prop = '".$age."'";
				}
				$dep_tab = explode("_",$dep);
				if(!stristr($rech,"WHERE "))
				{
					if (count($dep_tab)==1)
						$rech .= " WHERE";
					else
						$rech .= " WHERE (";
				}
				else
				{
					if (count($dep_tab)==1)
						$rech .= " AND";
					else
						$rech .= " AND (";
				}					
					
				for ($i = 0; $i < count($dep_tab); $i++)
				{
					$rech .= " cli_dep = '".$dep_tab[$i]."' OR";
				}
				$rech=substr($rech,0,strlen($rech)-3); // On enlève le dernier OR
				if (count($dep_tab)>1)
					$rech .= ")";
				if(!stristr($rech,"WHERE "))
					$rech .= " WHERE scli_codecli = cli_code";
				else
					$rech .= " AND scli_codecli = cli_code";
				$fname="export_scli.csv";
			}
			break;
		/******************************************************/
		/**                    ARTICLES                      **/
		/******************************************************/
		case "art" :
			$cat = strip_tags(trim(@$_POST["cat"]));
			$fam = @$_POST["famtxt"];
			
			$rech="SELECT";
			if (count($_POST["champs"]) <> 0) // Il doit y avoir au moins un champ
			{
				// On construit la chaîne de recherche
				for ($i = 0; $i < count($_POST["champs"]); $i++)
				{
					$rech.=" ".$_POST["champs"][$i].",";
				}
				$rech=substr($rech,0,strlen($rech)-1); // On enlève la dernière virgule
				$rech.=" FROM `" .TBPDT. "`";
				if ($cat <> "*")
				{
					$rech .= " WHERE pdt_vendu = '".$cat."'";
				}
				$fam_tab = explode("_",$fam);
				if(!stristr($rech,"WHERE "))
				{
					if (count($fam_tab)==1)
						$rech .= " WHERE";
					else
						$rech .= " WHERE (";
				}
				else
				{
					if (count($fam_tab)==1)
						$rech .= " AND";
					else
						$rech .= " AND (";
				}					
					
				for ($i = 0; $i < count($fam_tab); $i++)
				{
					$rech .= " pdt_fam = '".$fam_tab[$i]."' OR";
				}
				$rech=substr($rech,0,strlen($rech)-3); // On enlève le dernier OR
				if (count($fam_tab)>1)
					$rech .= ")";
				$fname="export_art.csv";
			}
			break;
		/******************************************************/
		/**              LOGS DE CONNEXION                   **/
		/******************************************************/
		case "logs" :
			$rech="SELECT * FROM `" .TBLOG. "` ORDER BY log_date";
			$fname="export_log.csv";
			break;
		default :
			break;
	}
	
	// Variable d'encadrement
	switch ($_POST["cadre"])
	{
		case "A" :
			$encadre = "'";
			break;
		case "R" :
			$encadre = "";
			break;
		default :
			$encadre="\"";
			break;
	}

	// Délimiteur
	switch ($_POST["sep"])
	{
		case "V" :
			$delimiteur = ",";
			break;
		default :
			$delimiteur=";";
			break;
	}

	// Fin de ligne
	switch ($_POST["fl"])
	{
		case "R" :
			$finligne = "\r";
			break;
		case "RN" :
			$finligne = "\r\n";
			break;
		default :
			$finligne="\n";
			break;
	}

	// Définition des entêtes de page
	header("Content-disposition: filename=".$fname);
	header("Content-Type: application/csv-tab-delimited-table");
	header("Pragma: no-cache");
	header("Expires: 0");
	
	$conn = mysql_connect(DBHOST, DBUSER, DBPASS);
	mysql_select_db(DBNAME);
	$rs = mysql_query($rech)or die(mysql_error());
	$num = mysql_num_fields($rs);
	if (mysql_num_rows($rs) <> 0)
	{
		// Titres des colonnes
		if ($_POST["ligtitre"] == "O")
		{
			$i = 0;
			// Construction de ligne des titres
			$ligne="";
			for ($i = 0; $i < $num; $i++) 
			{
				$nom=mysql_field_name($rs,$i);
				switch ($td)
				{
					case "cli" :
						switch ($nom)
						{
							case "cli_ville" :
								$ligne=$ligne.$encadre."cli_cp".$encadre.$delimiteur;
								$ligne=$ligne.$encadre."cli_ville".$encadre.$delimiteur;
								break;
							default:
								$ligne=$ligne.$encadre.$nom.$encadre.$delimiteur;
								break;
						}
						break;
					case "scli" :
						switch ($nom)
						{
							case "scli_ville" :
								$ligne=$ligne.$encadre."scli_cp".$encadre.$delimiteur;
								$ligne=$ligne.$encadre."scli_ville".$encadre.$delimiteur;
								break;
							default:
								$ligne=$ligne.$encadre.$nom.$encadre.$delimiteur;
								break;
						}
						break;
					default :
						$ligne=$ligne.$encadre.$nom.$encadre.$delimiteur;
						break;
				}
			}
			$ligne=substr($ligne,0,strlen($ligne)-1);
			echo $ligne.$finligne;
		}
	
		// Données
		while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) 
		{
			$ligne="";
			foreach($row as $key=>$value) 
			{
				switch ($td)
				{
					case "cli" :
						switch ($key)
						{
							case "cli_ville" :
								// Ecriture Code Postal
								$ligne=$ligne.$encadre.Retournecp_openId($row["cli_ville"],FALSE).$encadre.$delimiteur;
							
								// Ecriture Ville
								$ligne=$ligne.$encadre.Retourneville_openId($row["cli_ville"],FALSE).$encadre.$delimiteur;
								break;
							default :
								$ligne=$ligne.$encadre.$value.$encadre.$delimiteur;
								break;
						}
						break;
					case "scli" :
						switch ($key)
						{
							case "scli_ville" :
								// Ecriture Code Postal
								$ligne=$ligne.$encadre.Retournecp_openId($row["scli_ville"],FALSE).$encadre.$delimiteur;
							
								// Ecriture Ville
								$ligne=$ligne.$encadre.Retourneville_openId($row["scli_ville"],FALSE).$encadre.$delimiteur;
								break;
							default :
								$ligne=$ligne.$encadre.$value.$encadre.$delimiteur;
								break;
						}
						break;
					default :
						$ligne=$ligne.$encadre.$value.$encadre.$delimiteur;
						break;
				}
			}
			$ligne=substr($ligne,0,strlen($ligne)-1);
			echo $ligne.$finligne;
		}
	}
	mysql_free_result($rs);
	mysql_close($conn);
}
?>
