<?php
include "checklog.php";

$home = dirname($HTTP_SERVER_VARS['SCRIPT_NAME']);
$querystr = isset($HTTP_SERVER_VARS['QUERY_STRING']) ? $HTTP_SERVER_VARS['QUERY_STRING'] : '';

function checkdatum($datum,$pattern) {
	if (trim($datum) == "" && $pattern['required']){
		$error['type'] = 1;
		$error['normalvalue'] = $pattern['required'];
		return $error;
	}
	elseif (!$datum && !$pattern['required']) {
		return 0;
	}
	else {
		if ($pattern['maxlength']) {
			if (strlen($datum)>$pattern['maxlength']) {
				$error['type'] = 2;
				$error['normalvalue'] = $pattern['maxlength'];
				return $error;
			}
		}
		if ($pattern['minlength']) {
			if (strlen($datum)<$pattern['minlength']) {
				$error['type'] = 3;
				$error['normalvalue'] = $pattern['minlength'];
				return $error;
			}
		}
		if ($pattern['maxvalue']) {
			if ($datum>$pattern['maxvalue']) {
				$error['type'] = 4;
				$error['normalvalue'] = $pattern['maxvalue'];
				return $error;
			}
		}
		if ($pattern['minvalue']) {
			if ($datum<$pattern['minvalue']) {
				$error['type'] = 5;
				$error['normalvalue'] = $pattern['minvalue'];
				return $error;
			}
		}
		if ($pattern['regexp']) {
			if (!ereg($pattern['regexp'],$datum)) {
				$error['type'] = 6;
				$error['normalvalue'] = $pattern['regexp'];
				return $error;
			}
		}
		return 0;
	}
}

function checkdata($data_array) {
	$user = Array("name"=>"Username","required"=>"1","maxlength"=>"32","minlength"=>"3","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$list = Array("name"=>"Listino","required"=>"1","maxlength"=>"1","minlength"=>"1","maxvalue"=>"","minvalue"=>"","regexp"=>"[0-9]");
	$pw = Array("name"=>"Password","required"=>"1","maxlength"=>"32","minlength"=>"5","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$full_name = Array("name"=>"Nome e cognome","required"=>"1","maxlength"=>"","minlength"=>"2","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$corp = Array("name"=>"Ragione sociale","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$cf_piva = Array("name"=>"P.iva / CF","required"=>"0","maxlength"=>"20","minlength"=>"10","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$addr = Array("name"=>"Indirizzo","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$zip = Array("name"=>"C.A.P","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$city = Array("name"=>"Località","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$del_name = Array("name"=>"Denominazione","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$del_addr = Array("name"=>"Indirizzo (spedizione)","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$del_zip = Array("name"=>"C.A.P. (spedizione)","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$del_city = Array("name"=>"Località (spedizione)","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$country = Array("name"=>"Stato","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$email = Array("name"=>"E-mail","required"=>"1","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>'^([a-zA-Z0-9_\.-]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$');
	$phone = Array("name"=>"Telefono","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$new_usr = Array("name"=>"new_usr","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$notes = Array("name"=>"Note","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$news = Array("name"=>"Newsletter","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$refer = Array("name"=>"refer","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$Submit = Array("name"=>"submit","required"=>"0","maxlength"=>"","minlength"=>"","maxvalue"=>"","minvalue"=>"","regexp"=>"");
	$errors = Array();
	$i = 0;
	foreach($data_array as $key => $value) {
		if (isset($$key)) {
			$field = $$key;		
			if ($error = checkdatum($value, $field)) {			 
				$errors[$i] = Array("field"=>$field['name'],"errortype"=>$error['type'],"value"=>$error['normalvalue']);
				$i++;
			}
		}
	}	
	return $errors;
}

function checkUser($usr, $link) { 
	$query = "SELECT user FROM clienti WHERE user = '$usr'";
	$result = mysql_query($query,$link);
	if (mysql_num_rows($result)!= 0){
		return false;
	}
	else {
		return true;
	}
}

function errorparse($errs) {
	$out = "";
	if (count($errs)>0) {
		$out = "Il modulo compilato presenta i seguenti errori:<br><br><ol>";
		foreach($errs as $key=>$value) {
			$out .= "<li>";
			switch ($value['errortype']) {
				case 1:
					$str = "Il campo \"%1\$s\" &egrave; obbligatorio e non pu&ograve; essere omesso";
					$out .= sprintf ($str,$value['field'],$value['value']);
					break;
				case 2:
					$str = "Il campo \"%1\$s\" deve avere una lunghezza massima di %2\$d caratteri";
					$out .= sprintf ($str,$value['field'],$value['value']);
					break;
				case 3:
					$str = "Il campo \"%1\$s\" deve avere una lunghezza minima di %2\$d caratteri";
					$out .= sprintf ($str,$value['field'],$value['value']);
					break;
				case 4:
					$str = "Il campo \"%1\$s\" deve avere un valore massimo di %2\$d";
					$out .= sprintf ($str,$value['field'],$value['value']);
					break;
				case 5:
					$str = "Il campo \"%1\$s\" deve avere un valore minimo di %2\$d";
					$out .= sprintf ($str,$value['field'],$value['value']);
					break;
				case 6:
					$str = "Il campo \"%1\$s\" non contiene un valore corretto";
					$out .= sprintf ($str,$value['field'],$value['value']);
					break;
			}
			$out .= "</li>";
		}
		$out .= "</ol>";
	}
	return $out;	
}

$ref =isset($HTTP_SERVER_VARS['HTTP_REFERER']) ? basename($HTTP_SERVER_VARS['HTTP_REFERER'], $querystr) : $home;

$err=errorparse(checkdata($HTTP_POST_VARS));

if ($err) {
	die(Output($err));
}
if (!checkUser($HTTP_POST_VARS['user'], $conn)) {
	die(Output("Il nome utente selezionato &egrave; gi&agrave; presente nel database"));
}
$HTTP_POST_VARS['Submit'] = "";
$HTTP_POST_VARS['new_usr'] = "";
$HTTP_POST_VARS['refer'] = "";
$usr = $HTTP_POST_VARS['usr'];
$HTTP_POST_VARS['usr'] = "";
$query = "insert into clienti (";
foreach($HTTP_POST_VARS as $key => $value){
	if ($key != "Submit" && $key != "new_usr" && $key != "refer" && $key != "usr") {
		$query .= $key.", ";
	}
}
if(!isset($HTTP_POST_VARS['news'])) {
	$query .= "news, ";
}
$query .= "subsc_date) values (";
foreach($HTTP_POST_VARS as $key => $value){
	if ($key != "Submit" && $key != "new_usr" && $key != "refer" && $key != "usr") {
		$query .= "'".MakeQuery($value)."', ";
	}
}
if(!isset($HTTP_POST_VARS['news'])) {
	$query .= "'0', ";
}
$query .= " now())";
$res = mysql_query($query);
header("Location: boclienti.php");

?>