<?php

error_reporting(0);

$sRnd = $HTTP_POST_VARS['rnd'];
$sSecurity = $HTTP_POST_VARS['sec'];
$sMode = $HTTP_GET_VARS['w'];

if ($sMode == "phpinfo") {
	phpinfo();
	die();
}

$HostName = "<<1-db_hostname>>";
$UserName = "<<1-db_username>>";
$Password = "<<1-db_password>>";
$DbName = "<<1-db_dbname>>";

$conn = mysql_connect($HostName, $UserName, $Password) or die ("Accesso al database non autorizzato:\nverificare i parametri della connessione al database (host, username, password),\n se necessario correggerli e ricostruire il negozio");

mysql_select_db($DbName,$conn)  or die ("Accesso al database non autorizzato:\nverificare il nome del database,\n se necessario correggerlo e ricostruire il negozio");

$AuthOK = true;

if ($sRnd == "") {
  print "Accesso al database non autorizzato\n";
  $AuthOK = false;
} elseif ($sSecurity != "<<1-db_security>>") {
  print "Accesso al database non autorizzato:\nricostruire il negozio e aggiornare il sito prima di eseguire l'aggiornamento del database\n";
  $AuthOK = false;
}

if ($AuthOK) {

@set_time_limit(28800);

$sql = "CREATE TABLE giacenze (";
$sql .= " ID int(11) NOT NULL auto_increment,";
$sql .= " codice varchar(50) default NULL,";
$sql .= " giacenza double default NULL,";
$sql .= " UNIQUE KEY codice (codice),";
$sql .= " KEY ID (ID,codice),";
$sql .= " KEY giacenza (giacenza)";
$sql .= " )";
$result = mysql_query($sql);

$sql = "ALTER IGNORE TABLE giacenze";
$sql .= " ADD UNIQUE codice (codice)";
$result = mysql_query($sql);

$sql = "CREATE TABLE clienti (";
$sql .= " cust_id int(11) NOT NULL auto_increment,";
$sql .= " user varchar(32) NOT NULL default '',";
$sql .= " pw varchar(32) NOT NULL default '',";
$sql .= " full_name text,";
$sql .= " cf_piva text,";
$sql .= " corp text,";
$sql .= " addr text,";
$sql .= " zip text,";
$sql .= " city text,";
$sql .= " country text,";
$sql .= " del_name text,";
$sql .= " del_addr text,";
$sql .= " del_zip text,";
$sql .= " del_city text,";
$sql .= " email text,";
$sql .= " phone text,";
$sql .= " list tinyint(3) default '0',";
$sql .= " notes text,";
$sql .= " subsc_date datetime default '0000-00-00 00:00:00',";
$sql .= " status tinyint(3) default '0',";
$sql .= " edisplay text,";
$sql .= " news tinyint(4) default '0',";
$sql .= " flag1 tinyint(4) default '0',";
$sql .= " sconto_cl double default '0',";
$sql .= " PRIMARY KEY  (cust_id),";
$sql .= " KEY news (news,flag1)";
$sql .= " )";
$result = mysql_query($sql);

$sql = "ALTER TABLE clienti CHANGE sconto_cl sconto_cl DOUBLE DEFAULT '0'";
$result = mysql_query($sql);

$sql = "CREATE TABLE ordini (";
$sql .= " ID int(11) NOT NULL auto_increment,";
$sql .= " codice varchar(20) default NULL,";
$sql .= " cliente int(11) default NULL,";
$sql .= " nome tinytext,";
$sql .= " ragione_sociale tinytext,";
$sql .= " indirizzo tinytext,";
$sql .= " cap tinytext,";
$sql .= " localita tinytext,";
$sql .= " sp_denominazione tinytext,";
$sql .= " sp_indirizzo tinytext,";
$sql .= " sp_cap tinytext,";
$sql .= " sp_localita tinytext,";
$sql .= " stato tinytext,";
$sql .= " email tinytext,";
$sql .= " telefono tinytext,";
$sql .= " note text,";
$sql .= " edisplay text,";
$sql .= " metodo1 text,";
$sql .= " metodo2 text,";
$sql .= " partita_iva text,";
$sql .= " totale_netto double default '0',";
$sql .= " iva_totale double default '0',";
$sql .= " sconto double default '0',";
$sql .= " ivasconto double default '0',";
$sql .= " spese_spedizione double default '0',";
$sql .= " iva_spedizione double default '0',";
$sql .= " totale_lordo double default '0',";
$sql .= " ivacompresa tinyint(4) default '0',";
$sql .= " listino tinyint(4) default '0',";
$sql .= " data datetime default '0000-00-00 00:00:00',";
$sql .= " status tinyint(4) default '0',";
$sql .= " track text,";
$sql .= " valuta varchar(20) default NULL,";
$sql .= " PRIMARY KEY  (ID),";
$sql .= " KEY ID (ID,cliente),";
$sql .= " KEY codice (codice)";
$sql .= " )";
$result = mysql_query($sql);

 
$sql = "ALTER TABLE ordini ADD visto TINYINT DEFAULT '0'";
$result = mysql_query($sql);
if (mysql_errno() == 0) {
	$sql = "ALTER TABLE ordini ADD INDEX (visto)";
	$result = mysql_query($sql);
}

$sql = "ALTER TABLE ordini ADD ip VARCHAR(40)";
$result = mysql_query($sql);

$sql = "CREATE TABLE ordini_dettagli (";
$sql .= "  ID int(11) NOT NULL auto_increment,";
$sql .= "  ID_ordine int(11) NOT NULL default '0',";
$sql .= "  ID_articolo int(11) NOT NULL default '0',";
$sql .= "  codice_articolo tinytext,";
$sql .= "  codice_completo text,";
$sql .= "  descrizione text,";
$sql .= "  variante1 tinytext,";
$sql .= "  variante2 tinytext,";
$sql .= "  variante3 tinytext,";
$sql .= "  variante4 tinytext,";
$sql .= "  prezzo double NOT NULL default '0',";
$sql .= "  quantita double NOT NULL default '0',";
$sql .= "  totale double NOT NULL default '0',";
$sql .= "  aliquota float NOT NULL default '0',";
$sql .= "  iva double NOT NULL default '0',";
$sql .= "  iva_totale double NOT NULL default '0',";
$sql .= "  PRIMARY KEY  (ID),";
$sql .= "  KEY ID (ID,ID_ordine)";
$sql .= " )";
$result = mysql_query($sql);

  $FileNameAdd = "db<<1-IDlingua>>.sql";
  $FileNameDel = "dbdel<<1-IDlingua>>.sql";

  if (file_exists($FileNameAdd) && file_exists($FileNameDel))
  {
    $errmsg = "";
    $GoOn = true;
    $file = fopen($FileNameDel, "rb");
    if ($file)
    {
      $sql = "";
      $sql = fread($file, filesize($FileNameDel));
      fclose($file);
      if (get_magic_quotes_runtime() == 1) {
        $sql = stripslashes($sql);
      }
      $sql = trim($sql);
      $ss = substr ($sql,0,21);
      if ($ss == "#".$sSecurity) {
	  	$divider = "";
		$sql2 = trim(substr($sql,23));
		if (substr($sql2,0,4) == '#QS=') {
			$dividerPos = strpos($sql2,"\n");
			if ($dividerPos > 4) {
				$divider = trim(substr($sql2,4,$dividerPos - 4));
			}
		}
		if ($divider == "") {
	        $pieces = array();
	        dividi_query($pieces, $sql);
			$pieces_count = count($pieces);
	        for ($i = 0; $i < $pieces_count; $i++) {
    	      $a_sql_query = $pieces[$i];
        	  $result = mysql_query($a_sql_query);
	        }
		} else {
			$sql2 = trim(substr($sql2,$dividerPos));
			$pieces = explode($divider,$sql2);
			$pieces_count = count($pieces);
	        for ($i = 0; $i < $pieces_count; $i++) {
				$a_sql_query = trim($pieces[$i]);
				if ($a_sql_query != "") {
					$result = mysql_query($a_sql_query);
				}
	        }
		}
        unset($pieces);
      } else {
        $errmsg .= "\nAggiornamento query #1 non autorizzato\n";
	$GoOn = False;
      }
    }

    if ($GoOn) {
      $file = fopen($FileNameAdd, "rb");
      if ($file)
      {
        $sql = "";
        $sql = fread($file, filesize($FileNameAdd));
        fclose($file);
    	if (get_magic_quotes_runtime() == 1) {
          $sql = stripslashes($sql);
        }
        $sql = trim($sql);
        $ss = substr ($sql,0,21);
        if ($ss == "#".$sSecurity) {
	  	  	$divider = "";
			$sql2 = trim(substr($sql,23));
			if (substr($sql2,0,4) == '#QS=') {
				$dividerPos = strpos($sql2,"\n");
				if ($dividerPos > 4) {
					$divider = trim(substr($sql2,4,$dividerPos - 4));
				}
			}
			if ($divider == "") {
		        $pieces = array();
		        dividi_query($pieces, $sql);
				$pieces_count = count($pieces);
		        for ($i = 0; $i < $pieces_count; $i++) {
	    	    	$a_sql_query = $pieces[$i];
		        	$result = mysql_query($a_sql_query);
	            	if ($result == FALSE) {
   			        	$errmsg .= "2.$i-".mysql_errno().": ".mysql_error()."\n";
       			    	$errmsg .= $a_sql_query."\n\n";
           			}
		        }
			} else {
				$sql2 = trim(substr($sql2,$dividerPos));
				$pieces = explode($divider,$sql2);
				$pieces_count = count($pieces);
		        for ($i = 0; $i < $pieces_count; $i++) {
	    	    	$a_sql_query = trim($pieces[$i]);
					if ($a_sql_query != "") {
		        		$result = mysql_query($a_sql_query);
		            	if ($result == FALSE) {
    			        	$errmsg .= "2.$i-".mysql_errno().": ".mysql_error()."\n";
        			    	$errmsg .= $a_sql_query."\n\n";
            			}
					}
				}
			}
			unset($pieces);
        } else {
          $errmsg .= "\nAggiornamento query #2 non autorizzato\n";
        }
      }
    }

    if ($errmsg == "") {
      print "OK";
    } else {
      $errmsg .= "MySql: ".mysql_get_server_info()."\n";
      $errmsg .= "PHP: ".phpversion()."\n";
      die("$errmsg\n");
    }
  } else {
    print "\nFile di aggiornamento non trovati\n";
  }
}


function dividi_query(&$ret, $sql)
{
    $sql = trim($sql);
    $sql_len = strlen($sql);
    $char = "";
    $string_start = "";
    $in_string = FALSE;
    for ($i = 0; $i < $sql_len; ++$i) {
        $char = $sql[$i];
        if ($in_string) {
            for (;;) {
                $i = strpos($sql, $string_start, $i);
                if (!$i) {
                    $ret[] = $sql;
                    return TRUE;
                }
                else if ($string_start == '`' || $sql[$i-1] != '\\') {
                    $string_start = "";
                    $in_string = FALSE;
                    break;
                }
                else {
                    $j = 2;
                    $escaped_backslash = FALSE;
                    while ($i-$j > 0 && $sql[$i-$j] == '\\') {
                        $escaped_backslash = !$escaped_backslash;
                        $j++;
                    }
                    if ($escaped_backslash) {
                        $string_start = "";
                        $in_string = FALSE;
                        break;
                    }
                    else {
                        $i++;
                    }
                }
            }
        }
        else if ($char == ';') {
            $ret[] = substr($sql, 0, $i);
            $sql = ltrim(substr($sql, min($i + 1, $sql_len)));
            $sql_len = strlen($sql);
            if ($sql_len) {
                $i = -1;
            } else {
                return TRUE;
            }
        }
        else if (($char == '"') || ($char == '\'') || ($char == '`')) {
            $in_string = TRUE;
            $string_start = $char;
        }
        else if ($char == '#'
                 || ($char == ' ' && $i > 1 && $sql[$i-2] . $sql[$i-1] == '--')) {
            $start_of_comment = (($sql[$i] == '#') ? $i : $i-2);
            $end_of_comment = (strpos(' ' . $sql, "\012", $i+2))
                              ? strpos(' ' . $sql, "\012", $i+2)
                              : strpos(' ' . $sql, "\015", $i+2);
            if (!$end_of_comment) {
                $ret[] = trim(substr($sql, 0, $i-1));
                return TRUE;
            } else {
                $sql = substr($sql, 0, $start_of_comment)
                         . ltrim(substr($sql, $end_of_comment));
                $sql_len = strlen($sql);
                $i--;
            }
        }
    }
    if (!empty($sql) && ereg('[^[:space:]]+', $sql)) {
        $ret[] = $sql;
    }
    return TRUE;
}

?>
