[ PHPXref.com ] [ Generated: Sun Jul 20 17:59:13 2008 ] [ GLPI 0.65 ]
[ Index ]     [ Variables ]     [ Functions ]     [ Classes ]     [ Constants ]     [ Statistics ]

title

Body

[close]

/ -> update.php (source)

   1  <?php
   2  /*
   3   * @version $Id: update.php,v 1.296 2006/03/15 13:47:36 moyo Exp $
   4   ----------------------------------------------------------------------
   5   GLPI - Gestionnaire Libre de Parc Informatique
   6   Copyright (C) 2003-2006 by the INDEPNET Development Team.
   7   
   8   http://indepnet.net/   http://glpi.indepnet.org
   9   ----------------------------------------------------------------------
  10  
  11   LICENSE
  12  
  13      This file is part of GLPI.
  14  
  15      GLPI is free software; you can redistribute it and/or modify
  16      it under the terms of the GNU General Public License as published by
  17      the Free Software Foundation; either version 2 of the License, or
  18      (at your option) any later version.
  19  
  20      GLPI is distributed in the hope that it will be useful,
  21      but WITHOUT ANY WARRANTY; without even the implied warranty of
  22      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  23      GNU General Public License for more details.
  24  
  25      You should have received a copy of the GNU General Public License
  26      along with GLPI; if not, write to the Free Software
  27      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  28   ------------------------------------------------------------------------
  29  */
  30  
  31  // ----------------------------------------------------------------------
  32  // Original Author of file:
  33  // Purpose of file:
  34  // ----------------------------------------------------------------------
  35  
  36  
  37  include  ("_relpos.php");
  38  include  ($phproot . "/glpi/common/classes.php");
  39  include  ($phproot . "/glpi/common/functions.php");
  40  include  ($phproot . "/glpi/common/functions_db.php");
  41  include  ($phproot . "/glpi/config/based_config.php");
  42  include ($cfg_glpi["config_dir"] . "/config_db.php");
  43  
  44  // Init debug variable
  45  $cfg_glpi["debug"]=0;
  46  
  47  $db=new DB();
  48  
  49  // ITEMS TYPE
  50  define("GENERAL_TYPE","0");
  51  define("COMPUTER_TYPE","1");
  52  define("NETWORKING_TYPE","2");
  53  define("PRINTER_TYPE","3");
  54  define("MONITOR_TYPE","4");
  55  define("PERIPHERAL_TYPE","5");
  56  define("SOFTWARE_TYPE","6");
  57  define("CONTACT_TYPE","7");
  58  define("ENTERPRISE_TYPE","8");
  59  define("INFOCOM_TYPE","9");
  60  define("CONTRACT_TYPE","10");
  61  define("CARTRIDGE_TYPE","11");
  62  define("TYPEDOC_TYPE","12");
  63  define("DOCUMENT_TYPE","13");
  64  define("KNOWBASE_TYPE","14");
  65  define("USER_TYPE","15");
  66  define("TRACKING_TYPE","16");
  67  define("CONSUMABLE_TYPE","17");
  68  define("CONSUMABLE_ITEM_TYPE","18");
  69  define("CARTRIDGE_ITEM_TYPE","19");
  70  define("LICENSE_TYPE","20");
  71  define("LINK_TYPE","21");
  72  define("STATE_TYPE","22");
  73  
  74  // DEVICE TYPE
  75  define("MOBOARD_DEVICE","1");
  76  define("PROCESSOR_DEVICE","2");
  77  define("RAM_DEVICE","3");
  78  define("HDD_DEVICE","4");
  79  define("NETWORK_DEVICE","5");
  80  define("DRIVE_DEVICE","6"); 
  81  define("CONTROL_DEVICE","7");
  82  define("GFX_DEVICE","8");
  83  define("SND_DEVICE","9");
  84  define("PCI_DEVICE","10");
  85  define("CASE_DEVICE","11");
  86  define("POWER_DEVICE","12");
  87  
  88  //Load language
  89  if(!function_exists('loadLang')) {
  90  	function loadLang($language) {
  91          
  92              unset($lang);
  93              global $lang;
  94              include  ("_relpos.php");
  95              $file = $phproot ."/glpi/dicts/".$language.".php";
  96              include($file);
  97      }
  98  }
  99  
 100  /* ----------------------------------------------------------------- */
 101  /**
 102  * Get data from old dropdowns to new devices
 103  *
 104  * This function assure to keep clean data and integrity, during the change from 
 105  * computers-dropdown to computers devices. Then delete the unused old elements.
 106  *
 107  * @param $devtype integer the devtype number 
 108  * @param $devname string the device table name (end of the name (glpi_device_thisparam))
 109  * @param $dpdname string the dropdown table name (end of the name (glpi_dropdown_thisparam))
 110  * @param $compDpdName string the name of the dropdown foreign key on glpi_computers (eg : hdtype, processor) 
 111  * @param $specif string the name of the dropdown value entry on glpi_computer (eg : hdspace, processor_speed) optionnal argument.
 112  * @returns nothing if everything is good, else display mysql query and error.
 113  */
 114  function compDpd2Device($devtype,$devname,$dpdname,$compDpdName,$specif='') {
 115      global $db,$lang;
 116      $query = "select * from glpi_dropdown_".$dpdname."";
 117  
 118      $result = $db->query($query);
 119      while($lndropd = $db->fetch_array($result)) {
 120          $query2 = "insert into glpi_device_".$devname." (designation) values ('".addslashes($lndropd["name"])."')";
 121          $db->query($query2) or die("unable to transfer ".$dpdname." to ".$devname."  ".$lang["update"][90].$db->error());
 122          $devid = $db->insert_id();
 123          $query3 = "select * from glpi_computers where ".$compDpdName." = '".$lndropd["ID"]."'";
 124          $result3 = $db->query($query3);
 125          while($lncomp = $db->fetch_array($result3)) {
 126              $query4 = "insert into glpi_computer_device (device_type, FK_device, FK_computers) values ('$devtype','".$devid."','".$lncomp["ID"]."')";
 127              if(!empty($specif)) {
 128                  $queryspecif = "SELECT ".$specif." FROM glpi_computers WHERE ID = '".$lncomp["ID"]."'";
 129                  if($resultspecif = $db->query($queryspecif)) {
 130                      $query4 = "insert into glpi_computer_device (specificity, device_type, FK_device, FK_computers) values ('".$db->result($resultspecif,0,$specif)."','$devtype','".$devid."','".$lncomp["ID"]."')";
 131                  }
 132                  
 133              }
 134              $db->query($query4) or die("unable to migrate from ".$dpdname." to ".$devname." for item computer:".$lncomp["ID"]."  ".$lang["update"][90].$db->error());
 135          }
 136      }
 137      mysql_free_result($result);
 138      //Delete unused elements (dropdown on the computer table, dropdown table and specif)
 139      $query = "ALTER TABLE glpi_computers drop `".$compDpdName."`";
 140      $db->query($query) or die("Error : ".$query." ".$db->error());
 141      $query = "DROP TABLE `glpi_dropdown_".$dpdname."`";
 142      $db->query($query) or die("Error : ".$query." ".$db->error());
 143      if(!empty($specif)) {
 144          $query = "ALTER TABLE glpi_computers drop `".$specif."`";
 145          $db->query($query) or die("Error : ".$query." ".$db->error());
 146      }
 147  }
 148  
 149  /*---------------------------------------------------------------------*/
 150  /**
 151  * Test if there is an user with superadmin rights
 152  *
 153  *
 154  * @returns boolean true if its ok, elsewhere false.
 155  */
 156  function superAdminExists() {
 157      global $db;
 158      $query = "select type, password from glpi_users";
 159      $result = $db->query($query);
 160      $var1 = false;
 161      while($line = $db->fetch_array($result)) {
 162          if($line["type"] == "super-admin" && !empty($line["password"])) $var1 = true;
 163      }
 164      mysql_free_result($result);
 165      return $var1;
 166  }
 167  
 168  /*---------------------------------------------------------------------*/
 169  /**
 170  * Put the correct root_doc value on glpi_config table.
 171  *
 172  *
 173  * @returns nothing if everything is right, display query and mysql error if bad.
 174  */
 175  function updaterootdoc() {
 176      global $db;
 177      // hack pour IIS qui ne connait pas $_SERVER['REQUEST_URI']  grrrr
 178      if ( !isset($_SERVER['REQUEST_URI']) ) {
 179          $_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'];
 180      }
 181      
 182      $root_doc = ereg_replace("/update.php","",$_SERVER['REQUEST_URI']);
 183      $query = "update glpi_config set root_doc = '".$root_doc."' where ID = '1'";
 184      $db->query($query) or die(" root_doc ".$lang["update"][90].$db->error());
 185  }
 186  
 187  /*---------------------------------------------------------------------*/
 188  /**
 189  * Display the form of content update (addslashes compatibility (V0.4))
 190  *
 191  *
 192  * @returns nothing (displays)
 193  */
 194  function showContentUpdateForm() {
 195      
 196      global $lang;
 197      echo "<div align='center'>";
 198      echo "<h3>".$lang["update"][94]."</h3>";
 199      echo "<p>".$lang["install"][63]."</p>";
 200      echo "<p>".$lang["update"][107]."</p></div>";
 201      echo "<p class='submit'> <a href=\"update_content.php\"><span class='button'>".$lang["install"][25]."</span></a>";
 202  }
 203  
 204  
 205  ///// FONCTION POUR UPDATE LOCATION
 206  
 207  function validate_new_location(){
 208      global $db;
 209      $query=" DROP TABLE `glpi_dropdown_locations`";    
 210      $db->query($query);
 211      $query=" ALTER TABLE `glpi_dropdown_locations_new` RENAME `glpi_dropdown_locations`";    
 212      $db->query($query);
 213  }
 214  
 215  function display_new_locations(){
 216      global $db;
 217  
 218      $MAX_LEVEL=10;
 219  
 220      $SELECT_ALL="";
 221      $FROM_ALL="";
 222      $ORDER_ALL="";
 223      $WHERE_ALL="";
 224      for ($i=1;$i<=$MAX_LEVEL;$i++){
 225          $SELECT_ALL.=" , location$i.name AS NAME$i , location$i.parentID AS PARENT$i ";
 226          $FROM_ALL.=" LEFT JOIN glpi_dropdown_locations_new AS location$i ON location".($i-1).".ID = location$i.parentID ";
 227          //$WHERE_ALL.=" AND location$i.level='$i' ";
 228          $ORDER_ALL.=" , NAME$i";
 229  
 230      }
 231  
 232      $query="select location0.name AS NAME0, location0.parentID AS PARENT0 $SELECT_ALL FROM glpi_dropdown_locations_new AS location0 $FROM_ALL  WHERE location0.parentID='0' $WHERE_ALL  ORDER BY NAME0 $ORDER_ALL";
 233      //echo $query;
 234      //echo "<hr>";
 235      $result=$db->query($query);
 236      $data_old=array();
 237      echo "<table><tr>";
 238      for ($i=0;$i<=$MAX_LEVEL;$i++){
 239          echo "<th>$i</th><th>&nbsp;</th>";
 240      }
 241      echo "</tr>";
 242  
 243      while ($data =  $db->fetch_array($result)){
 244      
 245          echo "<tr class=tab_bg_1>";
 246          for ($i=0;$i<=$MAX_LEVEL;$i++){
 247              if (!isset($data_old["NAME$i"])||($data_old["PARENT$i"]!=$data["PARENT$i"])||($data_old["NAME$i"]!=$data["NAME$i"])){
 248                  $name=$data["NAME$i"];
 249                  if (isset($data["NAME".($i+1)])&&!empty($data["NAME".($i+1)]))
 250                  $arrow="--->";
 251              else $arrow="";
 252              } else {
 253                  $name="";
 254                  $arrow="";
 255              }
 256      
 257              echo "<td>".$name."</td>";
 258              echo "<td>$arrow</td>";
 259          }
 260      
 261          echo "</tr>";
 262      $data_old=$data;
 263      }
 264      mysql_free_result($result);
 265      echo "</table>";
 266  }
 267  
 268  function display_old_locations(){
 269      global $db;
 270      $query="SELECT * from glpi_dropdown_locations order by name;";
 271      $result=$db->query($query);
 272  
 273      while ($data =  $db->fetch_array($result))
 274      echo "<b>".$data['name']."</b> - ";
 275      
 276      mysql_free_result($result);
 277  }
 278  
 279  function location_create_new($split_char,$add_first){
 280  
 281      global $db;
 282      
 283      $query_auto_inc= "ALTER TABLE `glpi_dropdown_locations_new` CHANGE `ID` `ID` INT(11) NOT NULL";
 284      $result_auto_inc=$db->query($query_auto_inc);
 285      
 286      $query="SELECT MAX(ID) AS MAX from glpi_dropdown_locations;";
 287      //echo $query."<br>";
 288      $result=$db->query($query);
 289      $new_ID=$db->result($result,0,"MAX");
 290      $new_ID++;
 291  
 292  
 293      
 294      $query="SELECT * from glpi_dropdown_locations;";
 295      $result=$db->query($query);
 296  
 297      $query_clear_new="TRUNCATE TABLE `glpi_dropdown_locations_new`";
 298      //echo $query_clear_new."<br>";
 299      
 300      $result_clear_new=$db->query($query_clear_new); 
 301  
 302      if (!empty($add_first)){
 303          $root_ID=$new_ID;
 304          $new_ID++;
 305          $query_insert="INSERT INTO glpi_dropdown_locations_new VALUES ('$root_ID','".addslashes($add_first)."',0,'')";
 306          
 307          $result_insert=$db->query($query_insert);
 308          
 309      } else {
 310          $root_ID=0;
 311      }
 312  
 313      while ($data =  $db->fetch_array($result)){
 314          
 315          if (!empty($split_char))
 316              $splitter=split($split_char,$data['name']);
 317          else $splitter=array($data['name']);
 318      
 319          $up_ID=$root_ID;
 320      
 321          for ($i=0;$i<count($splitter)-1;$i++){
 322              // Entr� existe deja ??
 323              $query_search="select ID from glpi_dropdown_locations_new WHERE name='".addslashes($splitter[$i])."'  AND parentID='".$up_ID."'";
 324  //                echo $query_search."<br>";
 325              $result_search=$db->query($query_search);
 326              if ($db->numrows($result_search)==1){    // Found
 327                  $up_ID=$db->result($result_search,0,"ID");
 328              } else { // Not FOUND -> INSERT
 329                  $query_insert="INSERT INTO glpi_dropdown_locations_new VALUES ('$new_ID','".addslashes($splitter[$i])."','$up_ID','')";
 330  //                    echo $query_insert."<br>";
 331                  $result_insert=$db->query($query_insert);
 332                  $up_ID=$new_ID++;
 333  
 334              }
 335          }
 336  
 337          // Ajout du dernier
 338          $query_insert="INSERT INTO glpi_dropdown_locations_new VALUES ('".$data["ID"]."','".addslashes($splitter[count($splitter)-1])."','$up_ID','')";
 339  //            echo $query_insert."<br>";
 340  
 341          $result_insert=$db->query($query_insert);
 342  
 343      }
 344      mysql_free_result($result);
 345      $query_auto_inc= "ALTER TABLE `glpi_dropdown_locations_new` CHANGE `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT";
 346      $result_auto_inc=$db->query($query_auto_inc);
 347  
 348  }
 349  
 350  ///// FIN FONCTIONS POUR UPDATE LOCATION
 351  
 352  function showLocationUpdateForm(){
 353      global $db,$lang;
 354      
 355      
 356      if (FieldExists("glpi_dropdown_locations", "parentID")) {
 357          updateTreeDropdown();
 358          return true;
 359      }
 360  
 361      if (!isset($_POST['root'])) $_POST['root']='';
 362      if (!isset($_POST['car_sep'])) $_POST['car_sep']='';
 363  
 364      if(!TableExists("glpi_dropdown_locations_new")) {
 365          $query = " CREATE TABLE `glpi_dropdown_locations_new` (
 366                  `ID` INT NOT NULL auto_increment,
 367                  `name` VARCHAR(255) NOT NULL ,
 368                  `parentID` INT NOT NULL ,
 369                  `comments` TEXT NULL ,
 370                  PRIMARY KEY (`ID`),
 371                  UNIQUE KEY (`name`,`parentID`), 
 372                  KEY(`parentID`)) TYPE=MyISAM;";
 373          $db->query($query) or die("LOCATION ".$db->error());
 374      }
 375  
 376      if (!isset($_POST["validate_location"])){
 377          echo "<div align='center'>";
 378          echo "<h4>".$lang["update"][130]."</h4>";
 379          echo "<p>".$lang["update"][131]."</p>";
 380          echo "<p>".$lang["update"][132]."<br>".$lang["update"][133]."</p>";
 381          echo "<form action=\"".$_SERVER["PHP_SELF"]."\" method=\"post\">";
 382          echo "<p>".$lang["update"][134].": <input type=\"text\" name=\"car_sep\" value=\"".$_POST['car_sep']."\"/></p>";
 383          echo "<p>".$lang["update"][135].": <input type=\"text\" name=\"root\" value=\"".$_POST['root']."\"/></p>";
 384          echo "<input type=\"submit\" class='submit' name=\"new_location\" value=\"".$lang["buttons"][2]."\" />";
 385          echo "<input type=\"hidden\" name=\"from_update\" value=\"from_update\" />";
 386          echo "</form>";
 387          echo "</div>";
 388      }
 389  
 390  
 391  
 392      if (isset($_POST["new_location"])){
 393          location_create_new($_POST['car_sep'],$_POST['root']);    
 394          echo "<h4>".$lang["update"][138].": </h4>";
 395          display_old_locations();    
 396          echo "<h4>".$lang["update"][137].": </h4>";
 397          display_new_locations();    
 398          echo "<p>".$lang["update"][136]."</p>";
 399          echo "<form action=\"".$_SERVER["PHP_SELF"]."\" method=\"post\">";
 400          echo "<input type=\"submit\" class='submit' name=\"validate_location\" value=\"".$lang["buttons"][2]."\" />";
 401          echo "<input type=\"hidden\" name=\"from_update\" value=\"from_update\" />";
 402          echo "</form>";
 403      }
 404      else if (isset($_POST["validate_location"])){
 405          validate_new_location();
 406          updateTreeDropdown();
 407          return true;
 408      } else {
 409      display_old_locations();    
 410      }
 411  }
 412  
 413  
 414  //test la connection a la base de donn�.
 415  function test_connect() {
 416  global $db;
 417  if($db->error == 0) return true;
 418  else return false;
 419  }
 420  
 421  //Change table2 from varchar to ID+varchar and update table1.chps with depends
 422  function changeVarcharToID($table1, $table2, $chps)
 423  {
 424  
 425  global $db,$lang;
 426  
 427  if(!FieldExists($table2, "ID")) {
 428      $query = " ALTER TABLE `". $table2 ."` ADD `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST";
 429      $db->query($query) or die("".$lang["update"][90].$db->error());
 430  }
 431  $query = "ALTER TABLE $table1 ADD `temp` INT";
 432  $db->query($query) or die($lang["update"][90].$db->error());
 433  
 434  $query = "select ". $table1 .".ID as row1, ". $table2 .".ID as row2 from ". $table1 .",". $table2 ." where ". $table2 .".name = ". $table1 .".". $chps." ";
 435  $result = $db->query($query) or die($lang["update"][90].$db->error());
 436  while($line = $db->fetch_array($result)) {
 437      $query = "update ". $table1 ." set temp = ". $line["row2"] ." where ID = '". $line["row1"] ."'";
 438      $db->query($query) or die($lang["update"][90].$db->error());
 439  }
 440  mysql_free_result($result);
 441  
 442  $query = "ALTER TABLE ". $table1 ." DROP ". $chps."";
 443  $db->query($query) or die($lang["update"][90].$db->error());
 444  $query = "ALTER TABLE ". $table1 ." CHANGE `temp` `". $chps ."` INT";
 445  $db->query($query) or die($lang["update"][90].$db->error());
 446  }
 447  
 448  //update the database to the 0.31 version
 449  function updateDbTo031()
 450  {
 451  
 452  global $db,$lang;
 453  
 454  
 455  //amSize ramSize
 456   $query = "Alter table users drop can_assign_job";
 457   $db->query($query) or die($lang["update"][90].$db->error());
 458   $query = "Alter table users add can_assign_job enum('yes','no') NOT NULL default 'no'";
 459   $db->query($query) or die($lang["update"][90].$db->error());
 460   $query = "Update users set can_assign_job = 'yes' where type = 'admin'";
 461   $db->query($query) or die($lang["update"][90].$db->error());
 462   
 463   echo "<p class='center'>Version 0.2 & < </p>";
 464  
 465  //Version 0.21 ajout du champ ramSize a la table printers si non existant.
 466  
 467  
 468  if(!FieldExists("printers", "ramSize")) {
 469      $query = "alter table printers add ramSize varchar(6) NOT NULL default ''";
 470      $db->query($query) or die($lang["update"][90].$db->error());
 471  }
 472  
 473   echo "<p class='center'>Version 0.21  </p>";
 474  
 475  //Version 0.3
 476  //Ajout de NOT NULL et des valeurs par defaut.
 477  
 478  $query = "ALTER TABLE computers MODIFY achat_date date NOT NULL default '0000-00-00'";
 479  $db->query($query) or die($lang["update"][90].$db->error());
 480  $query = "ALTER TABLE computers MODIFY date_fin_garantie date NOT NULL default '0000-00-00'";
 481  
 482  
 483  $query = "ALTER TABLE monitors MODIFY achat_date date NOT NULL default '0000-00-00'";
 484  $db->query($query) or die($lang["update"][90].$db->error());
 485  $query = "ALTER TABLE monitors MODIFY date_fin_garantie date NOT NULL default '0000-00-00'";
 486  
 487  $query = "ALTER TABLE networking MODIFY achat_date date NOT NULL default '0000-00-00'";
 488  $db->query($query) or die($lang["update"][90].$db->error());
 489  $query = "ALTER TABLE networking MODIFY date_fin_garantie date NOT NULL default '0000-00-00'";
 490  
 491  
 492  $query = "ALTER TABLE printers MODIFY achat_date date NOT NULL default '0000-00-00'";
 493  $db->query($query) or die($lang["update"][90].$db->error());
 494  $query = "ALTER TABLE printers MODIFY date_fin_garantie date NOT NULL default '0000-00-00'";
 495  
 496  $query = "ALTER TABLE templates MODIFY achat_date date NOT NULL default '0000-00-00'";
 497  $db->query($query) or die($lang["update"][90].$db->error());
 498  $query = "ALTER TABLE templates MODIFY date_fin_garantie date NOT NULL default '0000-00-00'";
 499  
 500   echo "<p class='center'>Version 0.3  </p>";
 501  
 502   
 503  }
 504   
 505  
 506  //update database up to 0.31
 507  function updatedbUpTo031()
 508  {
 509  
 510  global $db,$lang;
 511  $ret = array();
 512  
 513  if(!TableExists("glpi_config"))
 514  {
 515  $query = "CREATE TABLE `glpi_config` (
 516    `ID` int(11) NOT NULL auto_increment,
 517    `num_of_events` varchar(200) NOT NULL default '',
 518    `jobs_at_login` varchar(200) NOT NULL default '',
 519    `sendexpire` varchar(200) NOT NULL default '',
 520    `cut` varchar(200) NOT NULL default '',
 521    `expire_events` varchar(200) NOT NULL default '',
 522    `list_limit` varchar(200) NOT NULL default '',
 523    `version` varchar(200) NOT NULL default '',
 524    `logotxt` varchar(200) NOT NULL default '',
 525    `root_doc` varchar(200) NOT NULL default '',
 526    `event_loglevel` varchar(200) NOT NULL default '',
 527    `mailing` varchar(200) NOT NULL default '',
 528    `imap_auth_server` varchar(200) NOT NULL default '',
 529    `imap_host` varchar(200) NOT NULL default '',
 530    `ldap_host` varchar(200) NOT NULL default '',
 531    `ldap_basedn` varchar(200) NOT NULL default '',
 532    `ldap_rootdn` varchar(200) NOT NULL default '',
 533    `ldap_pass` varchar(200) NOT NULL default '',
 534    `admin_email` varchar(200) NOT NULL default '',
 535    `mailing_signature` varchar(200) NOT NULL default '',
 536    `mailing_new_admin` varchar(200) NOT NULL default '',
 537    `mailing_followup_admin` varchar(200) NOT NULL default '',
 538    `mailing_finish_admin` varchar(200) NOT NULL default '',
 539    `mailing_new_all_admin` varchar(200) NOT NULL default '',
 540    `mailing_followup_all_admin` varchar(200) NOT NULL default '',
 541    `mailing_finish_all_admin` varchar(200) NOT NULL default '',
 542    `mailing_new_all_normal` varchar(200) NOT NULL default '',
 543    `mailing_followup_all_normal` varchar(200) NOT NULL default '',
 544    `mailing_finish_all_normal` varchar(200) NOT NULL default '',
 545    `mailing_new_attrib` varchar(200) NOT NULL default '',
 546    `mailing_followup_attrib` varchar(200) NOT NULL default '',
 547    `mailing_finish_attrib` varchar(200) NOT NULL default '',
 548    `mailing_new_user` varchar(200) NOT NULL default '',
 549    `mailing_followup_user` varchar(200) NOT NULL default '',
 550    `mailing_finish_user` varchar(200) NOT NULL default '',
 551    `ldap_field_name` varchar(200) NOT NULL default '',
 552    `ldap_field_email` varchar(200) NOT NULL default '',
 553    `ldap_field_location` varchar(200) NOT NULL default '',
 554    `ldap_field_realname` varchar(200) NOT NULL default '',
 555    `ldap_field_phone` varchar(200) NOT NULL default '',
 556    PRIMARY KEY  (`ID`)
 557  ) TYPE=MyISAM AUTO_INCREMENT=2 ";
 558  $db->query($query) or die($lang["update"][90].$db->error());
 559  
 560  $query = "INSERT INTO `glpi_config` VALUES (1, '10', '1', '1', '80', '30', '15', ' 0.31', 'GLPI powered by indepnet', '/glpi', '5', '0', '', '', '', '', '', '', 'admsys@xxxxx.fr', 'SIGNATURE', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0','1', '1', '1', 'uid', 'mail', 'physicaldeliveryofficename', 'cn', 'telephonenumber')";
 561  $db->query($query) or die($lang["update"][90].$db->error());
 562  
 563    echo "<p class='center'>Version > 0.31  </p>";
 564  }
 565  
 566  // Get current version
 567  $query="SELECT version FROM glpi_config";
 568  $result=$db->query($query) or die("get current version".$db->error());
 569  $current_version=trim($db->result($result,0,0));
 570  
 571  switch ($current_version){
 572      case "0.31": update031to04();
 573      case "0.4": 
 574      case "0.41": update04to042();
 575      case "0.42": update042to05();
 576      case "0.5": update05to051();
 577      case "0.51": 
 578      case "0.51a": update051to06();
 579      case "0.6": update06to065();
 580      case "0.65": 
 581      break;
 582      default:
 583      update031to04();
 584      update04to042();
 585      update042to05();
 586      update05to051();
 587      update051to06();
 588      break;
 589  }
 590  
 591  // Update version number and default langage and new version_founded ---- LEAVE AT THE END
 592      $query = "UPDATE `glpi_config` SET `version` = ' 0.65', default_language='".$_SESSION["dict"]."',founded_new_version='' ;";
 593      $db->query($query) or die("0.6 ".$lang["update"][90].$db->error());
 594  
 595  optimize_tables();
 596  
 597  return $ret;
 598  }
 599  
 600  function update031to04(){
 601  global $db,$lang;
 602  
 603  //0.4 Prefixage des tables : 
 604  echo "<p class='center'>Version 0.4 </p>";
 605  
 606  if(!TableExists("glpi_computers")) {
 607  
 608      $query = "ALTER TABLE computers RENAME glpi_computers";
 609      $db->query($query) or die($lang["update"][90].$db->error());
 610      $query = "ALTER TABLE connect_wire RENAME glpi_connect_wire";
 611      $db->query($query) or die($lang["update"][90].$db->error());
 612      $query = "ALTER TABLE dropdown_gfxcard RENAME glpi_dropdown_gfxcard";
 613      $db->query($query) or die($lang["update"][90].$db->error());
 614      $query = "ALTER TABLE dropdown_hdtype RENAME glpi_dropdown_hdtype";
 615      $db->query($query) or die($lang["update"][90].$db->error());
 616      $query = "ALTER TABLE dropdown_iface RENAME glpi_dropdown_iface";
 617      $db->query($query) or die($lang["update"][90].$db->error());
 618      $query = "ALTER TABLE dropdown_locations RENAME glpi_dropdown_locations";
 619      $db->query($query) or die($lang["update"][90].$db->error());
 620      $query = "ALTER TABLE dropdown_moboard RENAME glpi_dropdown_moboard";
 621      $db->query($query) or die($lang["update"][90].$db->error());
 622      $query = "ALTER TABLE dropdown_network RENAME glpi_dropdown_network";
 623      $db->query($query) or die($lang["update"][90].$db->error());
 624      $query = "ALTER TABLE dropdown_os RENAME glpi_dropdown_os";
 625      $db->query($query) or die($lang["update"][90].$db->error());
 626      $query = "ALTER TABLE dropdown_processor RENAME glpi_dropdown_processor";
 627      $db->query($query) or die($lang["update"][90].$db->error());
 628      $query = "ALTER TABLE dropdown_ram RENAME glpi_dropdown_ram";
 629      $db->query($query) or die($lang["update"][90].$db->error());
 630      $query = "ALTER TABLE dropdown_sndcard RENAME glpi_dropdown_sndcard";
 631      $db->query($query) or die($lang["update"][90].$db->error());
 632      $query = "ALTER TABLE event_log RENAME glpi_event_log";
 633      $db->query($query) or die($lang["update"][90].$db->error());
 634      $query = "ALTER TABLE followups RENAME glpi_followups";
 635      $db->query($query) or die($lang["update"][90].$db->error());
 636      $query = "ALTER TABLE inst_software RENAME glpi_inst_software";
 637      $db->query($query) or die($lang["update"][90].$db->error());
 638      $query = "ALTER TABLE licenses RENAME glpi_licenses";
 639      $db->query($query) or die($lang["update"][90].$db->error());
 640      $query = "ALTER TABLE monitors RENAME glpi_monitors";
 641      $db->query($query) or die($lang["update"][90].$db->error());
 642      $query = "ALTER TABLE networking RENAME glpi_networking";
 643      $db->query($query) or die($lang["update"][90].$db->error());
 644      $query = "ALTER TABLE networking_ports RENAME glpi_networking_ports";
 645      $db->query($query) or die($lang["update"][90].$db->error());
 646      $query = "ALTER TABLE networking_wire RENAME glpi_networking_wire";
 647      $db->query($query) or die($lang["update"][90].$db->error());
 648      if(TableExists("prefs")&&!TableExists("glpi_prefs")) {
 649          $query = "ALTER TABLE prefs RENAME glpi_prefs";
 650          $db->query($query) or die($lang["update"][90].$db->error());
 651      }
 652      $query = "ALTER TABLE printers RENAME glpi_printers";
 653      $db->query($query) or die($lang["update"][90].$db->error());
 654      $query = "ALTER TABLE software RENAME glpi_software";
 655      $db->query($query) or die($lang["update"][90].$db->error());
 656      $query = "ALTER TABLE templates RENAME glpi_templates";
 657      $db->query($query) or die($lang["update"][90].$db->error());
 658      $query = "ALTER TABLE tracking RENAME glpi_tracking";
 659      $db->query($query) or die($lang["update"][90].$db->error());
 660      $query = "ALTER TABLE type_computers RENAME glpi_type_computers";
 661      $db->query($query) or die($lang["update"][90].$db->error());
 662      $query = "ALTER TABLE type_monitors RENAME glpi_type_monitors";
 663      $db->query($query) or die($lang["update"][90].$db->error());
 664      $query = "ALTER TABLE type_networking RENAME glpi_type_networking";
 665      $db->query($query) or die($lang["update"][90].$db->error());
 666      $query = "ALTER TABLE type_printers RENAME glpi_type_printers";
 667      $db->query($query) or die($lang["update"][90].$db->error());
 668      $query = "ALTER TABLE users RENAME glpi_users";
 669      $db->query($query) or die($lang["update"][90].$db->error()); 
 670  
 671  }    
 672  
 673  //Ajout d'un champs ID dans la table users
 674  if(!FieldExists("glpi_users", "ID")) {
 675      $query = "ALTER TABLE `glpi_users` DROP PRIMARY KEY";
 676      $db->query($query) or die($lang["update"][90].$db->error());
 677      $query = "ALTER TABLE `glpi_users` ADD UNIQUE (`name`)";
 678      $db->query($query) or die($lang["update"][90].$db->error());
 679      $query = "ALTER TABLE `glpi_users` ADD INDEX (`name`)";
 680      $db->query($query) or die($lang["update"][90].$db->error());
 681      $query = " ALTER TABLE `glpi_users` ADD `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST";
 682      $db->query($query) or die($lang["update"][90].$db->error());
 683  
 684  }
 685  //Mise a jour des ID pour les tables dropdown et type. cl� primaires sur les tables dropdown et type, et mise a jour des champs li�
 686  if(!FieldExists("glpi_dropdown_os", "ID")) {
 687      changeVarcharToID("glpi_computers", "glpi_dropdown_os", "os");
 688      changeVarcharToID("glpi_computers", "glpi_dropdown_hdtype", "hdtype");
 689      changeVarcharToID("glpi_computers", "glpi_dropdown_sndcard", "sndcard");
 690      changeVarcharToID("glpi_computers", "glpi_dropdown_moboard", "moboard");
 691      changeVarcharToID("glpi_computers", "glpi_dropdown_gfxcard", "gfxcard");
 692      changeVarcharToID("glpi_computers", "glpi_dropdown_network", "network");
 693      changeVarcharToID("glpi_computers", "glpi_dropdown_ram", "ramtype");
 694      changeVarcharToID("glpi_computers", "glpi_dropdown_locations", "location");
 695      changeVarcharToID("glpi_computers", "glpi_dropdown_processor", "processor");
 696      changeVarcharToID("glpi_monitors", "glpi_dropdown_locations", "location");
 697      changeVarcharToID("glpi_networking", "glpi_dropdown_locations", "location");
 698      changeVarcharToID("glpi_networking_ports", "glpi_dropdown_iface", "iface");
 699      changeVarcharToID("glpi_printers", "glpi_dropdown_locations", "location");
 700      changeVarcharToID("glpi_software", "glpi_dropdown_locations", "location");
 701      changeVarcharToID("glpi_software", "glpi_dropdown_os", "platform");
 702      changeVarcharToID("glpi_templates", "glpi_dropdown_os", "os");
 703      changeVarcharToID("glpi_templates", "glpi_dropdown_hdtype", "hdtype");
 704      changeVarcharToID("glpi_templates", "glpi_dropdown_sndcard", "sndcard");
 705      changeVarcharToID("glpi_templates", "glpi_dropdown_moboard", "moboard");
 706      changeVarcharToID("glpi_templates", "glpi_dropdown_gfxcard", "gfxcard");
 707      changeVarcharToID("glpi_templates", "glpi_dropdown_network", "network");
 708      changeVarcharToID("glpi_templates", "glpi_dropdown_ram", "ramtype");
 709      changeVarcharToID("glpi_templates", "glpi_dropdown_locations", "location");
 710      changeVarcharToID("glpi_templates", "glpi_dropdown_processor", "processor");
 711      changeVarcharToID("glpi_users", "glpi_dropdown_locations", "location");
 712      
 713      changeVarcharToID("glpi_monitors", "glpi_type_monitors", "type");
 714      changeVarcharToID("glpi_printers", "glpi_type_printers", "type");
 715      changeVarcharToID("glpi_networking", "glpi_type_networking", "type");
 716      changeVarcharToID("glpi_computers", "glpi_type_computers", "type");
 717      changeVarcharToID("glpi_templates", "glpi_type_computers", "type");
 718      
 719  }
 720  
 721  if(!TableExists("glpi_type_peripherals")) {
 722  
 723  $query = "CREATE TABLE `glpi_type_peripherals` (
 724      `ID` int(11) NOT NULL auto_increment,
 725      `name` varchar(255),
 726       PRIMARY KEY  (`ID`)
 727      ) TYPE=MyISAM;";
 728  $db->query($query)or die("0A ".$lang["update"][90].$db->error());
 729  }
 730  
 731  if(!TableExists("glpi_peripherals")) {
 732  
 733      $query = "CREATE TABLE `glpi_peripherals` (
 734      `ID` int(11) NOT NULL auto_increment,
 735      `name` varchar(255) NOT NULL default '',
 736      `date_mod` datetime NOT NULL default '0000-00-00 00:00:00',
 737       `contact` varchar(255) NOT NULL default '',
 738       `contact_num` varchar(255) NOT NULL default '',
 739      `comments` text NOT NULL,
 740      `serial` varchar(255) NOT NULL default '',
 741       `otherserial` varchar(255) NOT NULL default '',
 742       `date_fin_garantie` date default NULL,
 743        `achat_date` date NOT NULL default '0000-00-00',
 744       `maintenance` int(2) default '0',
 745        `location` int(11) NOT NULL default '0',
 746       `type` int(11) NOT NULL default '0',
 747       `brand` varchar(255) NOT NULL default '',
 748        PRIMARY KEY  (`ID`)
 749      ) TYPE=MyISAM;";
 750  
 751  $db->query($query) or die("0 ".$lang["update"][90].$db->error());
 752  }
 753  
 754  if(TableExists("glpi_prefs")&&!FieldExists("glpi_prefs", "ID")) {
 755      $query = "Alter table glpi_prefs drop primary key";
 756      $db->query($query) or die("1 ".$lang["update"][90].$db->error());
 757      $query = "Alter table glpi_prefs add ID INT(11) not null auto_increment primary key";
 758      $db->query($query) or die("3 ".$lang["update"][90].$db->error());
 759  }
 760  if(!FieldExists("glpi_config", "ID")) {
 761  
 762      $query = "ALTER TABLE `glpi_config` CHANGE `config_id` `ID` INT(11) NOT NULL AUTO_INCREMENT ";
 763      $db->query($query) or die("4 ".$lang["update"][90].$db->error());
 764  }
 765  
 766  if(!isIndex("glpi_computers", "location")) {
 767      $query = "ALTER TABLE `glpi_computers` ADD INDEX (`location`) ";
 768      $db->query($query) or die("5 ".$lang["update"][90].$db->error());
 769  }
 770  
 771  if(!isIndex("glpi_computers", "os")) {
 772      $query = "ALTER TABLE `glpi_computers` ADD INDEX (`os`) ";
 773      $db->query($query) or die("6 ".$lang["update"][90].$db->error());
 774  }
 775  
 776  if(!isIndex("glpi_computers", "type")) {
 777      $query = "ALTER TABLE `glpi_computers` ADD INDEX (`type`) ";
 778      $db->query($query) or die("7 ".$lang["update"][90].$db->error());
 779  }
 780  
 781  if(!isIndex("glpi_followups", "tracking")) {
 782      $query = "ALTER TABLE `glpi_followups` ADD INDEX (`tracking`) ";
 783      $db->query($query) or die("12 ".$lang["update"][90].$db->error());
 784  }
 785  
 786  if(!isIndex("glpi_networking", "location")) {
 787      $query = "ALTER TABLE `glpi_networking` ADD INDEX (`location`) ";
 788      $db->query($query) or die("13 ".$lang["update"][90].$db->error());
 789  }
 790  
 791  if(!isIndex("glpi_networking_ports", "on_device")) {
 792      $query = "ALTER TABLE `glpi_networking_ports` ADD INDEX (`on_device` , `device_type`)";
 793      $db->query($query) or die("14 ".$lang["update"][90].$db->error());
 794  }
 795  
 796  if(!isIndex("glpi_peripherals", "type")) {
 797      $query = "ALTER TABLE `glpi_peripherals` ADD INDEX (`type`) ";
 798      $db->query($query) or die("14 ".$lang["update"][90].$db->error());
 799  }
 800  
 801  if(!isIndex("glpi_peripherals", "location")) {
 802      $query = "ALTER TABLE `glpi_peripherals` ADD INDEX (`location`) ";
 803      $db->query($query) or die("15 ".$lang["update"][90].$db->error());
 804  }
 805  
 806  if(!isIndex("glpi_printers", "location")) {
 807      $query = "ALTER TABLE `glpi_printers` ADD INDEX (`location`) ";
 808      $db->query($query) or die("16 ".$lang["update"][90].$db->error());
 809  }
 810  
 811  if(!isIndex("glpi_tracking", "computer")) {
 812      $query = "ALTER TABLE `glpi_tracking` ADD INDEX (`computer`) ";
 813      $db->query($query) or die("17 ".$lang["update"][90].$db->error());
 814  }
 815  
 816  if(!isIndex("glpi_tracking", "author")) {
 817      $query = "ALTER TABLE `glpi_tracking` ADD INDEX (`author`) ";
 818      $db->query($query) or die("18 ".$lang["update"][90].$db->error());
 819  }
 820  
 821  if(!isIndex("glpi_tracking", "assign")) {
 822      $query = "ALTER TABLE `glpi_tracking` ADD INDEX (`assign`) ";
 823      $db->query($query) or die("19 ".$lang["update"][90].$db->error());
 824  }
 825  
 826  if(!isIndex("glpi_tracking", "date")) {
 827      $query = "ALTER TABLE `glpi_tracking` ADD INDEX (`date`) ";
 828      $db->query($query) or die("20 ".$lang["update"][90].$db->error());
 829  }
 830  
 831  if(!isIndex("glpi_tracking", "closedate")) {
 832      $query = "ALTER TABLE `glpi_tracking` ADD INDEX (`closedate`) ";
 833      $db->query($query) or die("21 ".$lang["update"][90].$db->error());
 834  }
 835  
 836  if(!isIndex("glpi_tracking", "status")) {
 837      $query = "ALTER TABLE `glpi_tracking` ADD INDEX (`status`) ";
 838      $db->query($query) or die("22 ".$lang["update"][90].$db->error());
 839  }
 840  
 841  
 842  if(!TableExists("glpi_dropdown_firmware")) {
 843      $query = " CREATE TABLE `glpi_dropdown_firmware` (`ID` INT NOT NULL AUTO_INCREMENT ,`name` VARCHAR(255) NOT NULL ,PRIMARY KEY (`ID`))";
 844      $db->query($query) or die("23 ".$lang["update"][90].$db->error());
 845  }
 846  
 847  if(!FieldExists("glpi_networking","firmware")) {
 848      $query = "ALTER TABLE `glpi_networking` ADD `firmware` INT(11);";
 849      $db->query($query) or die("24 ".$lang["update"][90].$db->error());
 850  }
 851  
 852  if(!FieldExists("glpi_tracking","realtime")) {
 853      $query = "ALTER TABLE `glpi_tracking` ADD `realtime` FLOAT NOT NULL;";
 854      $db->query($query) or die("25 ".$lang["update"][90].$db->error());
 855  }
 856  
 857  if(!FieldExists("glpi_printers","flags_usb")) {
 858      $query = "ALTER TABLE `glpi_printers` ADD `flags_usb` TINYINT DEFAULT '0' NOT NULL AFTER `flags_par`";
 859      $db->query($query) or die("26 ".$lang["update"][90].$db->error());
 860  }
 861  
 862  if(!FieldExists("glpi_licenses","expire")) {
 863      $query = "ALTER TABLE `glpi_licenses` ADD `expire` date default NULL";
 864      $db->query($query) or die("27 ".$lang["update"][90].$db->error());
 865  }
 866  
 867  if(!isIndex("glpi_licenses", "sID")) {
 868  $query = "ALTER TABLE `glpi_licenses` ADD INDEX (`sID`) ";
 869  $db->query($query) or die("32 ".$lang["update"][90].$db->error());
 870  }
 871  
 872  if(!isIndex("glpi_followups", "author")) {
 873  $query = "ALTER TABLE `glpi_followups` ADD INDEX (`author`) ";
 874  $db->query($query) or die("33 ".$lang["update"][90].$db->error());
 875  }
 876  
 877  if(!isIndex("glpi_monitors", "type")) {
 878  $query = "ALTER TABLE `glpi_monitors` ADD INDEX (`type`) ";
 879  $db->query($query) or die("34 ".$lang["update"][90].$db->error());
 880  }
 881  
 882  if(!isIndex("glpi_monitors", "location")) {
 883  $query = "ALTER TABLE `glpi_monitors` ADD INDEX (`location`) ";
 884  $db->query($query) or die("35 ".$lang["update"][90].$db->error());
 885  }
 886  
 887  if(!isIndex("glpi_monitors", "type")) {
 888  $query = "ALTER TABLE `glpi_monitors` ADD INDEX (`type`) ";
 889  $db->query($query) or die("37 ".$lang["update"][90].$db->error());
 890  }
 891  
 892  if(!isIndex("glpi_networking", "type")) {
 893  $query = "ALTER TABLE `glpi_networking` ADD INDEX (`type`) ";
 894  $db->query($query) or die("38 ".$lang["update"][90].$db->error());
 895  }
 896  
 897  if(!isIndex("glpi_networking", "firmware")) {
 898  $query = "ALTER TABLE `glpi_networking` ADD INDEX (`firmware`) ";
 899  $db->query($query) or die("39 ".$lang["update"][90].$db->error());
 900  }
 901  
 902  if(!isIndex("glpi_printers", "type")) {
 903  $query = "ALTER TABLE `glpi_printers` ADD INDEX (`type`) ";
 904  $db->query($query) or die("42 ".$lang["update"][90].$db->error());
 905  }
 906  
 907  if(!isIndex("glpi_software", "platform")) {
 908  $query = "ALTER TABLE `glpi_software` ADD INDEX (`platform`) ";
 909  $db->query($query) or die("44 ".$lang["update"][90].$db->error());
 910  }
 911  
 912  if(!isIndex("glpi_software", "location")) {
 913  $query = "ALTER TABLE `glpi_software` ADD INDEX (`location`) ";
 914  $db->query($query) or die("45 ".$lang["update"][90].$db->error());
 915  }
 916  
 917  if(!TableExists("glpi_dropdown_netpoint")) {
 918      $query = " CREATE TABLE `glpi_dropdown_netpoint` (`ID` INT NOT NULL AUTO_INCREMENT ,`location` INT NOT NULL ,`name` VARCHAR(255) NOT NULL ,PRIMARY KEY (`ID`))";
 919      $db->query($query) or die("46 ".$lang["update"][90].$db->error());
 920  }
 921  
 922  if(!isIndex("glpi_dropdown_netpoint", "location")) {
 923  $query = "ALTER TABLE `glpi_dropdown_netpoint` ADD INDEX (`location`) ";
 924  $db->query($query) or die("47 ".$lang["update"][90].$db->error());
 925  }
 926  
 927  if(!FieldExists("glpi_networking_ports","netpoint")) {
 928      $query = "ALTER TABLE `glpi_networking_ports` ADD `netpoint` INT default NULL";
 929      $db->query($query) or die("27 ".$lang["update"][90].$db->error());
 930  }
 931  
 932  if(!isIndex("glpi_networking_ports", "netpoint")) {
 933  $query = "ALTER TABLE `glpi_networking_ports` ADD INDEX (`netpoint`) ";
 934  $db->query($query) or die("47 ".$lang["update"][90].$db->error());
 935  }
 936  
 937  if(!isIndex("glpi_networking_wire", "end1")) {
 938  $query = "ALTER TABLE `glpi_networking_wire` ADD INDEX (`end1`) ";
 939  $db->query($query) or die("40 ".$lang["update"][90].$db->error());
 940  
 941  
 942  // Clean Table
 943  $query = "SELECT * FROM  `glpi_networking_wire` ORDER BY end1, end2 ";
 944  $result=$db->query($query);
 945  $curend1=-1;
 946  $curend2=-1;
 947  while($line = $db->fetch_array($result)) {
 948      if ($curend1==$line['end1']&&$curend2==$line['end2']){
 949          $q2="DELETE FROM `glpi_networking_wire` WHERE `ID`='".$line['ID']."' LIMIT 1";
 950          $db->query($q2);
 951          }
 952      else {$curend1=$line['end1'];$curend2=$line['end2'];}
 953      }    
 954  mysql_free_result($result);
 955          
 956  $query = "ALTER TABLE `glpi_networking_wire` ADD UNIQUE end1_1 (`end1`,`end2`) ";
 957  $db->query($query) or die("477 ".$lang["update"][90].$db->error());
 958  }
 959  
 960  if(!isIndex("glpi_networking_wire", "end2")) {
 961  $query = "ALTER TABLE `glpi_networking_wire` ADD INDEX (`end2`) ";
 962  $db->query($query) or die("41 ".$lang["update"][90].$db->error());
 963  }
 964  
 965  if(!isIndex("glpi_connect_wire", "end1")) {
 966  $query = "ALTER TABLE `glpi_connect_wire` ADD INDEX (`end1`) ";
 967  $db->query($query) or die("40 ".$lang["update"][90].$db->error());
 968  
 969  // Clean Table
 970  $query = "SELECT * FROM  `glpi_connect_wire` ORDER BY type, end1, end2 ";
 971  $result=$db->query($query);
 972  $curend1=-1;
 973  $curend2=-1;
 974  $curtype=-1;
 975  while($line = $db->fetch_array($result)) {
 976      if ($curend1==$line['end1']&&$curend2==$line['end2']&&$curtype==$line['type']){
 977          $q2="DELETE FROM `glpi_connect_wire` WHERE `ID`='".$line['ID']."' LIMIT 1";
 978          $db->query($q2);
 979          }
 980      else{ $curend1=$line['end1'];$curend2=$line['end2'];$curtype=$line['type'];}
 981      }    
 982  mysql_free_result($result);    
 983  $query = "ALTER TABLE `glpi_connect_wire` ADD UNIQUE end1_1 (`end1`,`end2`,`type`) ";
 984  $db->query($query) or die("478 ".$lang["update"][90].$db->error());
 985  }
 986  
 987  if(!isIndex("glpi_connect_wire", "end2")) {
 988  $query = "ALTER TABLE `glpi_connect_wire` ADD INDEX (`end2`) ";
 989  $db->query($query) or die("40 ".$lang["update"][90].$db->error());
 990  }
 991  
 992  if(!isIndex("glpi_connect_wire", "type")) {
 993  $query = "ALTER TABLE `glpi_connect_wire` ADD INDEX (`type`) ";
 994  $db->query($query) or die("40 ".$lang["update"][90].$db->error());
 995  }
 996  
 997  
 998  
 999  if(!FieldExists("glpi_config","ldap_condition")) {
1000      $query = "ALTER TABLE `glpi_config` ADD `ldap_condition` varchar(255) NOT NULL default ''";
1001      $db->query($query) or die("48 ".$lang["update"][90].$db->error());
1002  }
1003  
1004  $query = "ALTER TABLE `glpi_users` CHANGE `type` `type` ENUM('normal', 'admin', 'post-only', 'super-admin') DEFAULT 'normal' NOT NULL";
1005  $db->query($query) or die("49 ".$lang["update"][90].$db->error());
1006  
1007  $ret["adminchange"] = false;
1008  //All "admin" users have to be set as "super-admin"
1009  if(!superAdminExists()) {
1010      $query = "update glpi_users set type = 'super-admin' where type = 'admin'";
1011      $db->query($query) or die("49 ".$lang["update"][90].$db->error());
1012      if($db->affected_rows() != 0) {
1013          $ret["adminchange"] = true;
1014      }
1015  }
1016  
1017  if(!FieldExists("glpi_users","password_md5")) {
1018      $query = "ALTER TABLE `glpi_users` ADD `password_md5` VARCHAR(80) NOT NULL AFTER `password` ";
1019      $db->query($query) or die("glpi_users.Password_md5".$lang["update"][90].$db->error());
1020  }
1021  
1022  if(!FieldExists("glpi_config","permit_helpdesk")) {
1023      $query = "ALTER TABLE `glpi_config` ADD `permit_helpdesk` varchar(200) NOT NULL";
1024      $db->query($query) or die("glpi_config_permit_helpdesk ".$lang["update"][90].$db->error());
1025  }
1026  
1027  }
1028  
1029  // Update from 0.4 and 0.41 to 0.42
1030  function update04to042(){
1031  global $db,$lang;
1032  
1033  echo "<p class='center'>Version 0.42 </p>";
1034  
1035  if(!TableExists("glpi_reservation_item")) {
1036  
1037   
1038      $query = "CREATE TABLE glpi_reservation_item (ID int(11) NOT NULL auto_increment,device_type tinyint(4) NOT NULL default '0', id_device int(11) NOT NULL default '0', comments text NOT NULL, PRIMARY KEY  (ID), KEY device_type (device_type));";
1039  
1040      $db->query($query) or die("4201 ".$lang["update"][90].$db->error());
1041  }
1042  
1043  if(!TableExists("glpi_reservation_resa")) {
1044      $query = "CREATE TABLE glpi_reservation_resa (  
1045      ID bigint(20) NOT NULL auto_increment,  
1046      id_item int(11) NOT NULL default '0',  
1047      begin datetime NOT NULL default '0000-00-00 00:00:00',  
1048      end datetime NOT NULL default '0000-00-00 00:00:00',  
1049      id_user int(11) NOT NULL default '0',  
1050      PRIMARY KEY  (`ID`),  
1051      KEY id_item (`id_item`),  
1052      KEY id_user (`id_user`),  
1053      KEY begin (`begin`),  
1054      KEY end (`end`));";
1055  
1056      $db->query($query) or die("4202 ".$lang["update"][90].$db->error());
1057  }
1058  
1059  if(!FieldExists("glpi_tracking","device_type")) {
1060      $query = "ALTER TABLE `glpi_tracking` ADD `device_type` INT DEFAULT '1' NOT NULL AFTER `assign` ;";
1061      $db->query($query) or die("4203 ".$lang["update"][90].$db->error());
1062  }
1063  
1064  // Ajout language par defaut
1065  if(!FieldExists("glpi_config","default_language")) {
1066  
1067      $query = "ALTER TABLE `glpi_config` ADD `default_language` VARCHAR(255) DEFAULT 'french' NOT NULL ;";
1068      $db->query($query) or die("4204 ".$lang["update"][90].$db->error());
1069  
1070  }
1071  
1072  }
1073  
1074  // Update from 0.42 to 0.5
1075  function update042to05(){
1076  global $db,$lang;
1077  
1078   echo "<p class='center'>Version 0.5 </p>";
1079  
1080  
1081  // Augmentation taille itemtype
1082      $query = "ALTER TABLE `glpi_event_log` CHANGE `itemtype` `itemtype` VARCHAR(20) NOT NULL ;";
1083      $db->query($query) or die("4204 ".$lang["update"][90].$db->error());
1084  
1085      // Correction des itemtype tronqu�
1086      $query = "UPDATE `glpi_event_log` SET `itemtype` = 'reservation' WHERE `itemtype` = 'reservatio' ;";
1087      $db->query($query) or die("4204 ".$lang["update"][90].$db->error());
1088  
1089  
1090  /*******************************GLPI 0.5***********************************************/
1091  //pass all templates to computers
1092  if(!FieldExists("glpi_computers","is_template")) {
1093      $query = "ALTER TABLE `glpi_computers` ADD `is_template` ENUM('0','1') DEFAULT '0' NOT NULL ";
1094      $db->query($query) or die("0.5 alter computers add is_template ".$lang["update"][90].$db->error());
1095      $query = "ALTER TABLE `glpi_computers` ADD `tplname` VARCHAR(200) DEFAULT NULL ";
1096      $db->query($query) or die("0.5 alter computers add tplname ".$lang["update"][90].$db->error());
1097      
1098      $query = "Select * from glpi_templates";
1099      $result = $db->query($query);
1100      
1101      
1102      while($line = $db->fetch_array($result)) {
1103          $line=addslashes_deep($line);
1104          $query2 = "INSERT INTO glpi_computers (`ID`,`name`, `osver`, `processor_speed`, `serial`, `otherserial`, `ram`, `hdspace`, `contact`, `contact_num`, `comments`, `achat_date`, `date_fin_garantie`, `maintenance`, `os`, `hdtype`, `sndcard`, `moboard`, `gfxcard`, `network`, `ramtype`, `location`, `processor`, `type`, `is_template`, `tplname`)";
1105          
1106          $query2 .= " VALUES ('','".$line["name"]."', '".$line["osver"]."', '".$line["processor_speed"]."', '".$line["serial"]."', '".$line["otherserial"]."', '".$line["ram"]."', '".$line ["hdspace"]."', '".$line["contact"]."', '".$line["contact_num"]."', '".$line["comments"]."', '".$line["achat_date"]."', '".$line["date_fin_garantie"]."', '".$line["maintenance"]."', '".$line["os"]."', '".$line["hdtype"]."', '".$line["sndcard"]."', '".$line["moboard"]."', '".$line["gfxcard"]."', '".$line["network"]."', '".$line["ramtype"]."', '".$line["location"]."', '".$line["processor"]."', '".$line["type"]."','1','".$line["templname"]."')";    
1107          //echo $query2;
1108          $db->query($query2) or die("0.5-convert template 2 computers ".$db->error());
1109      }
1110      mysql_free_result($result);
1111      $query = "DROP TABLE glpi_templates";
1112      $db->query($query) or die("0.5 drop table templates ".$db->error());
1113      
1114      $query="SELECT ID FROM glpi_computers WHERE tplname='Blank Template'";
1115      $result=$db->query($query);
1116      if ($db->numrows($result)==0){
1117          $query="INSERT INTO glpi_computers (is_template,tplname) VALUES ('1','Blank Template')";
1118          $db->query($query) or die("0.5 add blank template ".$lang["update"][90].$db->error());    
1119      }
1120      mysql_free_result($result);
1121  }
1122  
1123  
1124  
1125  
1126  //New internal peripherals ( devices ) config
1127  
1128  if(!TableExists("glpi_computer_device")) {
1129      $query = "CREATE TABLE `glpi_computer_device` (
1130    `ID` int(11) NOT NULL auto_increment,
1131    `specificity` varchar(250) NOT NULL default '',
1132    `device_type` tinyint(4) NOT NULL default '0',
1133    `FK_device` int(11) NOT NULL default '0',
1134    `FK_computers` int(11) NOT NULL default '0',
1135    PRIMARY KEY  (`ID`),
1136    KEY (`device_type`),
1137    KEY (`device_type`,`FK_device`),
1138    KEY (`FK_computers`)
1139  ) TYPE=MyISAM;";
1140      $db->query($query) or die("0.5 CREATE TABLE `glpi_computer_device` ".$lang["update"][90].$db->error());
1141  }
1142  
1143  if(!TableExists("glpi_device_gfxcard")) {
1144      $query = "CREATE TABLE `glpi_device_gfxcard` (
1145    `ID` int(11) NOT NULL auto_increment,
1146    `designation` varchar(120) NOT NULL default '',
1147    `ram` varchar(10) NOT NULL default '',
1148    `interface` enum('AGP','PCI','PCI-X','Other') NOT NULL default 'AGP',
1149    `comment` text NOT NULL,
1150    `FK_glpi_enterprise` int(11) NOT NULL default '0',
1151     `specif_default` VARCHAR(250) NOT NULL,
1152    PRIMARY KEY  (`ID`),
1153    KEY(`FK_glpi_enterprise`)
1154  ) TYPE=MyISAM;";
1155      $db->query($query) or die("0.5 create table `glpi_device_gfxcard` ".$lang["update"][90].$db->error());
1156      compDpd2Device(GFX_DEVICE,"gfxcard","gfxcard","gfxcard");
1157  }
1158  if(!TableExists("glpi_device_hdd")) {
1159      $query = "CREATE TABLE `glpi_device_hdd` (
1160    `ID` int(11) NOT NULL auto_increment,
1161    `designation` varchar(100) NOT NULL default '',
1162    `rpm` varchar(20) NOT NULL default '',
1163    `interface` enum('IDE','SATA','SCSI') NOT NULL default 'IDE',
1164    `cache` varchar(20) NOT NULL default '',
1165    `comment` text NOT NULL,
1166    `FK_glpi_enterprise` int(11) NOT NULL default '0',
1167    `specif_default` VARCHAR(250) NOT NULL,
1168    PRIMARY KEY  (`ID`),
1169    KEY(`FK_glpi_enterprise`)
1170  ) TYPE=MyISAM;";
1171      $db->query($query) or die("0.5 CREATE TABLE `glpi_device_hdtype` ".$lang["update"][90].$db->error());
1172      compDpd2Device(HDD_DEVICE,"hdd","hdtype","hdtype","hdspace");
1173  }
1174  if(!TableExists("glpi_device_iface")) {
1175      $query = "CREATE TABLE `glpi_device_iface` (
1176    `ID` int(11) NOT NULL auto_increment,
1177    `designation` varchar(120) NOT NULL default '',
1178    `bandwidth` varchar(20) NOT NULL default '',
1179    `comment` text NOT NULL,
1180    `FK_glpi_enterprise` int(11) NOT NULL default '0',
1181    `specif_default` VARCHAR(250) NOT NULL,
1182    PRIMARY KEY  (`ID`),
1183    KEY(`FK_glpi_enterprise`)
1184  ) TYPE=MyISAM;";
1185      $db->query($query) or die("0.5- CREATE TABLE `glpi_device_iface` ".$lang["update"][90].$db->error());
1186      compDpd2Device(NETWORK_DEVICE,"iface","network","network");
1187  }
1188  if(!TableExists("glpi_device_moboard")) {
1189      $query = "CREATE TABLE `glpi_device_moboard` (
1190    `ID` int(11) NOT NULL auto_increment,
1191    `designation` varchar(100) NOT NULL default '',
1192    `chipset` varchar(120) NOT NULL default '',
1193    `comment` text NOT NULL,
1194    `FK_glpi_enterprise` int(11) NOT NULL default '0',
1195    `specif_default` VARCHAR(250) NOT NULL,
1196    PRIMARY KEY  (`ID`),
1197    KEY(`FK_glpi_enterprise`)
1198  ) TYPE=MyISAM;";
1199      $db->query($query) or die("0.5 CREATE TABLE `glpi_device_moboard` ".$lang["update"][90].$db->error());
1200      compDpd2Device(MOBOARD_DEVICE,"moboard","moboard","moboard");
1201  }
1202  if(!TableExists("glpi_device_processor")) {
1203      $query = "CREATE TABLE `glpi_device_processor` (
1204    `ID` int(11) NOT NULL auto_increment,
1205    `designation` varchar(120) NOT NULL default '',
1206    `frequence` int(11) NOT NULL default '0',
1207    `comment` text NOT NULL,
1208    `FK_glpi_enterprise` int(11) NOT NULL default '0',
1209    `specif_default` VARCHAR(250) NOT NULL,
1210    PRIMARY KEY  (`ID`),
1211    KEY(`FK_glpi_enterprise`)
1212  ) TYPE=MyISAM;";
1213      $db->query($query) or die("0.5 CREATE TABLE `glpi_device_processor` ".$lang["update"][90].$db->error());
1214      compDpd2Device(PROCESSOR_DEVICE,"processor","processor","processor","processor_speed");
1215  }
1216  if(!TableExists("glpi_device_ram")) {
1217      $query = "CREATE TABLE `glpi_device_ram` (
1218    `ID` int(11) NOT NULL auto_increment,
1219    `designation` varchar(100) NOT NULL default '',
1220    `type` enum('EDO','DDR','SDRAM','SDRAM-2') NOT NULL default 'EDO',
1221    `frequence` varchar(8) NOT NULL default '',
1222    `comment` text NOT NULL,
1223    `FK_glpi_enterprise` int(11) NOT NULL default '0',
1224    `specif_default` VARCHAR(250) NOT NULL,
1225    PRIMARY KEY  (`ID`),
1226    KEY(`FK_glpi_enterprise`)
1227  ) TYPE=MyISAM;";
1228      $db->query($query) or die("0.5 CREATE TABLE `glpi_device_ram` ".$lang["update"][90].$db->error());
1229      compDpd2Device(RAM_DEVICE,"ram","ram","ramtype","ram");
1230  }
1231  if(!TableExists("glpi_device_sndcard")) {
1232      $query = "CREATE TABLE `glpi_device_sndcard` (
1233    `ID` int(11) NOT NULL auto_increment,
1234    `designation` varchar(120) NOT NULL default '',
1235    `type` varchar(100) NOT NULL default '',
1236    `comment` text NOT NULL,
1237    `FK_glpi_enterprise` int(11) NOT NULL default '0',
1238    `specif_default` VARCHAR(250) NOT NULL,
1239    PRIMARY KEY  (`ID`),
1240    KEY(`FK_glpi_enterprise`)
1241  ) TYPE=MyISAM;";
1242      $db->query($query) or die("0.5 CREATE TABLE `glpi_device_sndcard ".$lang["update"][90].$db->error());
1243      compDpd2Device(SND_DEVICE,"sndcard","sndcard","sndcard");
1244  }
1245  
1246  if(!TableExists("glpi_device_power")) {
1247      $query = "CREATE TABLE glpi_device_power (
1248      ID int(11) NOT NULL auto_increment,
1249      designation varchar(255) NOT NULL default '',
1250      power varchar(20) NOT NULL default '',
1251      atx enum('Y','N') NOT NULL default 'Y',
1252      `comment` text NOT NULL,
1253      FK_glpi_enterprise int(11) NOT NULL default '0',
1254      `specif_default` VARCHAR(250) NOT NULL,
1255      PRIMARY KEY (`ID`),
1256      KEY FK_glpi_enterprise (`FK_glpi_enterprise`)
1257      ) TYPE=MyISAM;";
1258      $db->query($query) or die("Error : ".$query." ".$db->error());
1259  }
1260  
1261  if(!TableExists("glpi_device_case")) {
1262      $query = "CREATE TABLE glpi_device_case(
1263      ID int(11) NOT NULL AUTO_INCREMENT ,
1264      designation varchar(255) NOT NULL default '',
1265      format enum('Grand', 'Moyen', 'Micro') NOT NULL default 'Moyen',
1266      `comment` text NOT NULL ,
1267      FK_glpi_enterprise int(11) NOT NULL default '0',
1268      `specif_default` VARCHAR(250) NOT NULL,
1269      PRIMARY KEY (`ID`) ,
1270      KEY FK_glpi_enterprise(`FK_glpi_enterprise`)
1271      )TYPE = MyISAM;";
1272      $db->query($query) or die("Error : ".$query." ".$db->error());
1273  }
1274  
1275  if(!TableExists("glpi_device_drive")) {
1276      $query = "CREATE TABLE `glpi_device_drive` (
1277      `ID` INT NOT NULL AUTO_INCREMENT ,
1278      `designation` VARCHAR(255) NOT NULL ,
1279      `is_writer` ENUM('Y', 'N') DEFAULT 'Y' NOT NULL ,
1280      `speed` VARCHAR(30) NOT NULL ,
1281      `interface` ENUM('IDE', 'SATA', 'SCSI') NOT NULL ,
1282      `comment` TEXT NOT NULL ,
1283      `FK_glpi_enterprise` INT NOT NULL ,
1284      `specif_default` VARCHAR(250) NOT NULL,
1285      KEY FK_glpi_enterprise(`FK_glpi_enterprise`),
1286      PRIMARY KEY (`ID`)
1287      )TYPE=MyISAM;";
1288      $db->query($query) or die("Error : ".$query." ".$db->error());
1289  }
1290  
1291  if(!TableExists("glpi_device_pci")) {
1292      $query = "CREATE TABLE glpi_device_pci (
1293      ID int(11) NOT NULL auto_increment,
1294      designation varchar(255) NOT NULL default '',
1295      `comment` text NOT NULL,
1296      FK_glpi_enterprise int(11) NOT NULL default '0',
1297      `specif_default` VARCHAR(250) NOT NULL,
1298      PRIMARY KEY (ID),
1299      KEY FK_glpi_enterprise (FK_glpi_enterprise)
1300      ) TYPE=MyISAM;";
1301      $db->query($query) or die("Error : ".$query." ".$db->error());
1302  } 
1303  
1304  if(!TableExists("glpi_device_control")) {
1305      $query = "CREATE TABLE glpi_device_control (
1306      ID int(11) NOT NULL auto_increment,
1307      designation varchar(255) NOT NULL default '',
1308      interface enum('IDE','SATA','SCSI','USB') NOT NULL default 'IDE',
1309      raid enum('Y','N') NOT NULL default 'Y',
1310      `comment` text NOT NULL,
1311      FK_glpi_enterprise int(11) NOT NULL default '0',
1312      `specif_default` VARCHAR(250) NOT NULL,
1313      PRIMARY KEY (ID),
1314      KEY FK_glpi_enterprise (FK_glpi_enterprise)
1315      ) TYPE=MyISAM;";
1316      $db->query($query) or die("Error : ".$query." ".$db->error());
1317  }
1318  
1319  
1320  // END new internal devices.
1321  
1322  if(!TableExists("glpi_enterprises")) {
1323      $query = "CREATE TABLE `glpi_enterprises` (
1324    `ID` int(11) NOT NULL auto_increment,
1325    `name` varchar(50) NOT NULL default '',
1326    `type` int(11) NOT NULL default '0',
1327    `address` text NOT NULL default '',
1328    `website` varchar(100) NOT NULL default '',
1329    `phonenumber` varchar(20) NOT NULL default '',
1330    `comments` text NOT NULL,
1331    `deleted` enum('Y','N') NOT NULL default 'N',
1332    PRIMARY KEY  (`ID`),
1333    KEY `deleted` (`deleted`),
1334    KEY `type` (`type`)
1335  ) TYPE=MyISAM;";
1336      $db->query($query) or die("0.5 CREATE TABLE `glpi_enterprise ".$lang["update"][90].$db->error());
1337  }
1338  
1339  /// Base connaissance
1340  if(!TableExists("glpi_dropdown_kbcategories")) {
1341  $query="CREATE TABLE `glpi_dropdown_kbcategories` (
1342    `ID` int(11) NOT NULL auto_increment,
1343    `parentID` int(11) NOT NULL default '0',
1344    `name` varchar(255) NOT NULL,
1345    PRIMARY KEY  (`ID`),
1346    KEY(`parentID`),
1347    UNIQUE KEY(`parentID`,`name`)
1348  )  TYPE=MyISAM;";
1349      $db->query($query) or die("0.5 CREATE TABLE `glpi_dropdown_kbcategories ".$lang["update"][90].$db->error());
1350  
1351  $query="CREATE TABLE `glpi_kbitems` (
1352    `ID` int(11) NOT NULL auto_increment,
1353    `categoryID` int(11) NOT NULL default '0',
1354    `question` text NOT NULL,
1355    `answer` text NOT NULL,
1356    `faq` enum('yes','no') NOT NULL default 'no',
1357    PRIMARY KEY  (`ID`),
1358    KEY(`categoryID`)
1359  ) TYPE=MyISAM;";
1360      $db->query($query) or die("0.5 CREATE TABLE `glpi_kbitems ".$lang["update"][90].$db->error());
1361  
1362  }
1363  
1364  // Comment reservation
1365  if(!FieldExists("glpi_reservation_resa","comment")) {
1366      $query = "ALTER TABLE `glpi_reservation_resa` ADD `comment` VARCHAR(255) NOT NULL ;";
1367      $db->query($query) or die("0.5 alter reservation add comment ".$lang["update"][90].$db->error());
1368  }    
1369  
1370  // Tracking categorie
1371  if(!TableExists("glpi_dropdown_tracking_category")) {
1372  
1373  $query= "CREATE TABLE glpi_dropdown_tracking_category (
1374    ID int(11) NOT NULL auto_increment,
1375    name varchar(255) default NULL,
1376    PRIMARY KEY  (ID)
1377  ) TYPE=MyISAM;";
1378      $db->query($query) or die("0.5 CREATE TABLE `glpi_dropdown_tracking_category ".$lang["update"][90].$db->error());
1379  
1380  }
1381  
1382  if(!FieldExists("glpi_tracking","category")) {
1383      $query= "ALTER TABLE `glpi_tracking` ADD `category` INT(11) ;";
1384      $db->query($query) or die("0.5 alter tracking add categorie ".$lang["update"][90].$db->error());
1385  }
1386  
1387  // Nouvelle gestion des software et licenses
1388  if(!FieldExists("glpi_licenses","oem")) {
1389  $query = "ALTER TABLE `glpi_licenses` ADD `oem` ENUM('N', 'Y') DEFAULT 'N' NOT NULL , ADD `oem_computer` INT(11) NOT NULL, ADD `buy` ENUM('Y', 'N') DEFAULT 'Y' NOT NULL;";
1390      $db->query($query) or die("0.5 alter licenses add oem + buy ".$lang["update"][90].$db->error());
1391  
1392  $query = "ALTER TABLE `glpi_software` ADD `is_update` ENUM('N', 'Y') DEFAULT 'N' NOT NULL , ADD `update_software` INT(11) NOT NULL DEFAULT '-1';";
1393      $db->query($query) or die("0.5 alter software add update ".$lang["update"][90].$db->error());
1394  }
1395  
1396  // Couleur pour les priorit�
1397  if(!FieldExists("glpi_config","priority_1")) {
1398  $query= "ALTER TABLE `glpi_config` ADD `priority_1` VARCHAR(200) DEFAULT '#fff2f2' NOT NULL, ADD `priority_2` VARCHAR(200) DEFAULT '#ffe0e0' NOT NULL, ADD `priority_3` VARCHAR(200) DEFAULT '#ffcece' NOT NULL, ADD `priority_4` VARCHAR(200) DEFAULT '#ffbfbf' NOT NULL, ADD `priority_5` VARCHAR(200) DEFAULT '#ffadad' NOT NULL ;";
1399      $db->query($query) or die("0.5 alter config add priority_X ".$lang["update"][90].$db->error());
1400  
1401  }
1402  
1403  // Gestion des cartouches
1404  if(!TableExists("glpi_cartridges")) {
1405  $query= "CREATE TABLE `glpi_cartridges` (
1406    `ID` int(11) NOT NULL auto_increment,
1407    `FK_glpi_cartridges_type` int(11) NOT NULL default '0',
1408    `FK_glpi_printers` int(11) NOT NULL default '0',
1409    `date_in` date default NULL,
1410    `date_use` date default NULL,
1411    `date_out` date default NULL,
1412    `pages` int(11)  NOT NULL default '0',
1413    PRIMARY KEY  (`ID`),
1414    KEY(`FK_glpi_cartridges_type`),
1415    KEY(`FK_glpi_printers`)
1416  ) TYPE=MyISAM;";
1417      $db->query($query) or die("0.5 CREATE TABLE glpi_cartridges ".$lang["update"][90].$db->error());
1418  
1419  $query= "CREATE TABLE `glpi_cartridges_type` (
1420    `ID` int(11) NOT NULL auto_increment,
1421    `name` varchar(255) NOT NULL default '',
1422    `ref` varchar(255) NOT NULL default '',
1423    `location` int(11) NOT NULL default '0',
1424    `type` tinyint(4) NOT NULL default '0',
1425    `FK_glpi_enterprise` int(11) NOT NULL default '0',
1426    `tech_num` int(11) default '0',
1427    `deleted` enum('Y','N') NOT NULL default 'N',
1428    `comments` text NOT NULL,
1429    PRIMARY KEY  (`ID`),
1430    KEY(`FK_glpi_enterprise`),
1431    KEY(`tech_num`),
1432    KEY(`deleted`)
1433  ) TYPE=MyISAM;";
1434      $db->query($query) or die("0.5 CREATE TABLE glpi_cartridges_type ".$lang["update"][90].$db->error());
1435      
1436  $query= "CREATE TABLE `glpi_cartridges_assoc` (
1437    `ID` int(11) NOT NULL auto_increment,
1438    `FK_glpi_cartridges_type` int(11) NOT NULL default '0',
1439    `FK_glpi_type_printer` int(11) NOT NULL default '0',
1440    PRIMARY KEY  (`ID`),
1441    UNIQUE KEY `FK_glpi_type_printer` (`FK_glpi_type_printer`,`FK_glpi_cartridges_type`),
1442   KEY(`FK_glpi_cartridges_type`),
1443   KEY(`FK_glpi_type_printer`) 
1444  ) TYPE=MyISAM;";
1445      $db->query($query) or die("0.5 CREATE TABLE glpi_cartridges_assoc ".$lang["update"][90].$db->error());
1446  }
1447  
1448  //// DEBUT INSERTION PARTIE GESTION 
1449  if(!TableExists("glpi_contracts")) {
1450  $query= "CREATE TABLE `glpi_contacts` (
1451    `ID` int(11) NOT NULL auto_increment,
1452    `name` varchar(255) NOT NULL default '',
1453    `phone` varchar(30) NOT NULL default '',
1454    `phone2` varchar(30) NOT NULL default '',
1455    `fax` varchar(30) NOT NULL default '',
1456    `email` varchar(255) NOT NULL default '',
1457    `type` tinyint(4) NOT NULL default '1',
1458    `comments` text NOT NULL,
1459    `deleted` enum('Y','N') NOT NULL default 'N',
1460    PRIMARY KEY  (`ID`)
1461  ) TYPE=MyISAM;";
1462      $db->query($query) or die("0.5 CREATE TABLE glpi_contact ".$lang["update"][90].$db->error());
1463  
1464  $query = " CREATE TABLE `glpi_dropdown_enttype` (`ID` INT NOT NULL AUTO_INCREMENT ,`name` VARCHAR(255) NOT NULL ,PRIMARY KEY (`ID`))";
1465  $db->query($query) or die("23 ".$lang["update"][90].$db->error());
1466  
1467      
1468  $query= "CREATE TABLE `glpi_contact_enterprise` (
1469    `ID` int(11) NOT NULL auto_increment,
1470    `FK_enterprise` int(11) NOT NULL default '0',
1471    `FK_contact` int(11) NOT NULL default '0',
1472    PRIMARY KEY  (`ID`),
1473    UNIQUE KEY `FK_enterprise` (`FK_enterprise`,`FK_contact`),
1474    KEY(`FK_enterprise`),
1475    KEY(`FK_contact`) 
1476  ) TYPE=MyISAM;";
1477      $db->query($query) or die("0.5 CREATE TABLE glpi_contact_enterprise ".$lang["update"][90].$db->error());
1478  
1479  $query= "CREATE TABLE `glpi_contracts` (
1480    `ID` int(11) NOT NULL auto_increment,
1481    `name` varchar(255) NOT NULL default '',
1482    `num` varchar(255) NOT NULL default '',
1483    `cost` float NOT NULL default '0',
1484    `contract_type` int(11) NOT NULL default '0',
1485    `begin_date` date default NULL,
1486    `duration` tinyint(4) NOT NULL default '0',
1487    `notice` tinyint(4) NOT NULL default '0',
1488    `periodicity` tinyint(4) NOT NULL default '0',
1489    `facturation` tinyint(4) NOT NULL default '0',
1490    `bill_type` int(11) NOT NULL default '0',
1491    `comments` text NOT NULL,
1492    `compta_num` varchar(255) NOT NULL default '',
1493    `deleted` enum('Y','N') NOT NULL default 'N',
1494    `week_begin_hour` time NOT NULL default '00:00:00',
1495    `week_end_hour` time NOT NULL default '00:00:00',
1496    `saturday_begin_hour` time NOT NULL default '00:00:00',
1497    `saturday_end_hour` time NOT NULL default '00:00:00',
1498    `saturday` enum('Y','N') NOT NULL default 'N',
1499    `monday_begin_hour` time NOT NULL default '00:00:00',
1500    `monday_end_hour` time NOT NULL default '00:00:00',
1501    `monday` enum('Y','N') NOT NULL default 'N',
1502    PRIMARY KEY  (`ID`),
1503    KEY `contract_type` (`contract_type`),
1504    KEY `begin_date` (`begin_date`),
1505    KEY `bill_type` (`bill_type`)
1506  ) TYPE=MyISAM;";
1507      $db->query($query) or die("0.5 CREATE TABLE glpi_contract ".$lang["update"][90].$db->error());
1508  
1509  $query= "CREATE TABLE `glpi_contract_device` (
1510    `ID` int(11) NOT NULL auto_increment,
1511    `FK_contract` int(11) NOT NULL default '0',
1512    `FK_device` int(11) NOT NULL default '0',
1513    `device_type` tinyint(4) NOT NULL default '0',
1514    PRIMARY KEY  (`ID`),
1515    UNIQUE KEY `FK_contract` (`FK_contract`,`FK_device`,`device_type`),
1516    KEY (`FK_contract`),
1517    KEY (`FK_device`,`device_type`)
1518  ) TYPE=MyISAM;";
1519      $db->query($query) or die("0.5 CREATE TABLE glpi_contract_device ".$lang["update"][90].$db->error());
1520  
1521  $query= "CREATE TABLE `glpi_contract_enterprise` (
1522    `ID` int(11) NOT NULL auto_increment,
1523    `FK_enterprise` int(11) NOT NULL default '0',
1524    `FK_contract` int(11) NOT NULL default '0',
1525    PRIMARY KEY  (`ID`),
1526    UNIQUE KEY `FK_enterprise` (`FK_enterprise`,`FK_contract`),
1527    KEY  (`FK_enterprise`),
1528    KEY (`FK_contract`)
1529  ) TYPE=MyISAM;";
1530      $db->query($query) or die("0.5 CREATE TABLE glpi_contrat_enterprise ".$lang["update"][90].$db->error());
1531  
1532  $query= "CREATE TABLE `glpi_infocoms` (
1533    `ID` int(11) NOT NULL auto_increment,
1534    `FK_device` int(11) NOT NULL default '0',
1535    `device_type` tinyint(4) NOT NULL default '0',
1536    `buy_date` date NOT NULL default '0000-00-00',
1537    `use_date` date NOT NULL default '0000-00-00',
1538    `warranty_duration` tinyint(4) NOT NULL default '0',
1539    `warranty_info` varchar(255) NOT NULL default '',
1540    `FK_enterprise` int(11) default NULL,
1541    `num_commande` varchar(50) NOT NULL default '',
1542    `bon_livraison` varchar(50) NOT NULL default '',
1543    `num_immo` varchar(50) NOT NULL default '',
1544    `value` float NOT NULL default '0',
1545    `warranty_value` float default NULL,
1546    `amort_time` tinyint(4) NOT NULL default '0',
1547    `amort_type` varchar(20) NOT NULL default '',
1548    `amort_coeff` float NOT NULL default '0',
1549    `comments` text NOT NULL,
1550    PRIMARY KEY  (`ID`),
1551    UNIQUE KEY `FK_device` (`FK_device`,`device_type`),
1552    KEY `FK_enterprise` (`FK_enterprise`),
1553    KEY `buy_date` (`buy_date`)
1554  ) TYPE=MyISAM;";
1555      $db->query($query) or die("0.5 CREATE TABLE glpi_infocom ".$lang["update"][90].$db->error());
1556  
1557  ///// Move warranty infos from item to infocoms.
1558  
1559  function date_diff($from, $to) {
1560      $from=strtotime($from);
1561      $to=strtotime($to);
1562      if ($from > $to) {
1563          $t = $to;
1564          $to = $from;
1565          $from = $t;
1566      }
1567  
1568      $year1 = date("Y", $from);
1569      $year2 = date("Y", $to);
1570      $month1 = date("n", $from);
1571      $month2 = date("n", $to);
1572  
1573      if ($month2 < $month1) {
1574          $month2 += 12;
1575          $year2 --;
1576      }
1577      $months = $month2 - $month1;
1578      $years = $year2 - $year1;
1579      return (12*$years+$months);
1580  }
1581  
1582  function updateMaintenanceInfos($table,$type,$ID){
1583      global $db;
1584      $elements=array();
1585      $query="SELECT ID from $table WHERE maintenance='1'";
1586      $result=$db->query($query);
1587      while ($data=$db->fetch_array($result)){
1588      $query_insert="INSERT INTO glpi_contract_device (FK_contract,FK_device,device_type) VALUES ('$ID','".$data["ID"]."','$type')";    
1589      $result_insert=$db->query($query_insert) or die("0.5 insert for update maintenance ".$lang["update"][90].$db->error());
1590      }
1591      mysql_free_result($result);
1592      
1593      $query_drop =  "ALTER TABLE `$table` DROP `maintenance`";
1594      $result_drop=$db->query($query_drop) or die("0.5 drop for update maintenance ".$lang["update"][90].$db->error());
1595  
1596  }
1597  
1598  function updateWarrantyInfos($table,$type){
1599      global $db;
1600      $elements=array();
1601      $query="SELECT ID,achat_date,date_fin_garantie from $table ORDER BY achat_date,date_fin_garantie";
1602      $result=$db->query($query) or die("0.5 select for update warranty ".$lang["update"][90].$db->error());
1603      while ($data=$db->fetch_array($result)){
1604          if (($data['achat_date']!="0000-00-00"&&!empty($data['achat_date']))||($data['date_fin_garantie']!="0000-00-00"&&!empty($data['date_fin_garantie']))){
1605              $IDitem=$data['ID'];
1606              if ($data['achat_date']=="0000-00-00"&&!empty($data['achat_date'])) $achat_date=date("Y-m-d");
1607              else $achat_date=$data['achat_date'];
1608              $duration=0;
1609              if ($data['date_fin_garantie']!="0000-00-00"&&!empty($data['date_fin_garantie']))
1610                  $duration=round(date_diff($achat_date,$data['date_fin_garantie']),2);
1611              $query_insert="INSERT INTO glpi_infocoms (device_type,FK_device,buy_date,warranty_duration) VALUES ('$type','$IDitem','".$achat_date."','$duration')";
1612              $result_insert=$db->query($query_insert) or die("0.5 insert for update warranty ".$lang["update"][90].$db->error());
1613          }
1614      }
1615      mysql_free_result($result);
1616      
1617      $query_drop =  "ALTER TABLE `$table` DROP `achat_date`";
1618      $result_drop=$db->query($query_drop) or die("0.5 drop1 for update warranty ".$lang["update"][90].$db->error());
1619      $query_drop =  "ALTER TABLE `$table` DROP `date_fin_garantie`";
1620      $result_drop=$db->query($query_drop) or die("0.5 drop2 for update warranty ".$lang["update"][90].$db->error());
1621  
1622  }
1623  function isMaintenanceUsed(){
1624      global $db;
1625      $tables=array("glpi_computers","glpi_printers","glpi_monitors","glpi_peripherals","glpi_networking");
1626      foreach ($tables as $key => $table){
1627          $query="SELECT ID from $table WHERE maintenance='1';";
1628          $result=$db->query($query) or die("0.5 find for update maintenance ".$lang["update"][90].$db->error());
1629          if ($db->numrows($result)>0) return true;
1630      }
1631      return false;
1632  
1633  }
1634  
1635  function dropMaintenanceField(){
1636      global $db;
1637      $tables=array("glpi_computers","glpi_printers","glpi_monitors","glpi_peripherals","glpi_networking");
1638      foreach ($tables as $key => $table){
1639          $query="ALTER TABLE `$table` DROP `maintenance`";
1640          $result=$db->query($query) or die("0.5 alter for update maintenance ".$lang["update"][90].$db->error());
1641      }
1642  }
1643  
1644  
1645  // Update Warranty Infos
1646  updateWarrantyInfos("glpi_computers",COMPUTER_TYPE);
1647  updateWarrantyInfos("glpi_printers",PRINTER_TYPE);
1648  updateWarrantyInfos("glpi_networking",NETWORKING_TYPE);
1649  updateWarrantyInfos("glpi_monitors",MONITOR_TYPE);
1650  updateWarrantyInfos("glpi_peripherals",PERIPHERAL_TYPE);
1651  
1652  // Update Maintenance Infos
1653  if (isMaintenanceUsed()){
1654  
1655      $query="INSERT INTO `glpi_contracts` VALUES (1, 'Maintenance', '', '0', 5, '2005-01-01', 120, 0, 0, 0, 0, '', '', 'N', '00:00:00', '00:00:00', '00:00:00', '00:00:00', 'N', '00:00:00', '00:00:00', 'N');";
1656      $result=$db->query($query) or die("0.5 insert_init for update maintenace ".$lang["update"][90].$db->error());
1657  
1658      if ($result){
1659          $query="SELECT ID FROM glpi_contracts;";
1660          $result=$db->query($query) or die("0.5 select_init for update maintenace ".$lang["update"][90].$db->error());
1661          if ($result){
1662              $data=$db->fetch_array($result);
1663              $IDcontract=$data["ID"];
1664              updateMaintenanceInfos("glpi_computers",COMPUTER_TYPE,$IDcontract);
1665              updateMaintenanceInfos("glpi_printers",PRINTER_TYPE,$IDcontract);
1666              updateMaintenanceInfos("glpi_networking",NETWORKING_TYPE,$IDcontract);
1667              updateMaintenanceInfos("glpi_monitors",MONITOR_TYPE,$IDcontract);
1668              updateMaintenanceInfos("glpi_peripherals",PERIPHERAL_TYPE,$IDcontract);
1669          }
1670      }
1671  } else dropMaintenanceField();
1672  
1673  }
1674  //// FIN INSERTION PARTIE GESTION 
1675  
1676  // Merge de l'OS et de la version
1677  if(FieldExists("glpi_computers","osver")) {
1678      // R�up�ation des couples existants
1679      $query="SELECT DISTINCT glpi_computers.os AS ID , glpi_computers.osver AS VERS, glpi_dropdown_os.name as NAME FROM glpi_computers 
1680          LEFT JOIN glpi_dropdown_os ON glpi_dropdown_os.ID=glpi_computers.os ORDER BY glpi_computers.os, glpi_computers.osver";
1681      $result=$db->query($query) or die("0.5 select for update OS ".$lang["update"][90].$db->error());
1682      $valeur=array();
1683      $curros=-1;
1684      $currvers="-------------------------";
1685      while ($data=$db->fetch_array($result)){
1686          // Nouvel OS -> update de l'element de dropdown
1687          if ($data["ID"]!=$curros){
1688              $curros=$data["ID"];
1689              
1690              if (!empty($data["VERS"])){
1691                  $query_update="UPDATE glpi_dropdown_os SET name='".$data["NAME"]." - ".$data["VERS"]."' WHERE ID='".$data["ID"]."'";
1692                  $db->query($query_update) or die("0.5 update for update OS ".$lang["update"][90].$db->error());
1693              }
1694          
1695          } else { // OS deja mis a jour -> creation d'un nouvel OS et mise a jour des elements
1696          $newname=$data["NAME"]." - ".$data["VERS"];
1697          $query_insert="INSERT INTO glpi_dropdown_os (name) VALUES ('$newname');";
1698          $db->query($query_insert) or die("0.5 insert for update OS ".$lang["update"][90].$db->error());
1699          $query_select="SELECT ID from  glpi_dropdown_os WHERE name = '$newname';";
1700          $res=$db->query($query_select) or die("0.5 select for update OS ".$lang["update"][90].$db->error());
1701          if ($db->numrows($res)==1){
1702              $query_update="UPDATE glpi_computers SET os='".$db->result($res,0,"ID")."' WHERE os='".$data["ID"]."' AND osver='".$data["VERS"]."'";
1703              $db->query($query_update) or die("0.5 update2 for update OS ".$lang["update"][90].$db->error());
1704          }
1705          
1706          }
1707      }
1708      mysql_free_result($result);
1709      $query_alter= "ALTER TABLE `glpi_computers` DROP `osver` ";
1710      $db->query($query_alter) or die("0.5 alter for update OS ".$lang["update"][90].$db->error());
1711  }
1712  
1713  // Ajout Fabriquant computer
1714  if(!FieldExists("glpi_computers","FK_glpi_enterprise")) {
1715  
1716      $query = "ALTER TABLE `glpi_computers` ADD `FK_glpi_enterprise` INT(11) DEFAULT '0' NOT NULL ;";
1717      $db->query($query) or die("0.5 add field manufacturer ".$lang["update"][90].$db->error());
1718      
1719      
1720      $query="ALTER TABLE `glpi_computers` ADD INDEX (`FK_glpi_enterprise`)" ;
1721      $db->query($query) or die("0.5 alter field manufacturer ".$lang["update"][90].$db->error());
1722  
1723  }
1724  
1725  // Ajout Fabriquant printer
1726  if(!FieldExists("glpi_printers","FK_glpi_enterprise")) {
1727  
1728      $query = "ALTER TABLE `glpi_printers` ADD `FK_glpi_enterprise` INT(11) DEFAULT '0' NOT NULL ;";
1729      $db->query($query) or die("0.5 add field manufacturer ".$lang["update"][90].$db->error());
1730      
1731      $query="ALTER TABLE `glpi_printers` ADD INDEX (`FK_glpi_enterprise`)" ;
1732      $db->query($query) or die("0.5 alter field manufacturer ".$lang["update"][90].$db->error());
1733  
1734  
1735  }
1736  
1737  // Ajout Fabriquant networking
1738  if(!FieldExists("glpi_networking","FK_glpi_enterprise")) {
1739  
1740      $query = "ALTER TABLE `glpi_networking` ADD `FK_glpi_enterprise` INT(11) DEFAULT '0' NOT NULL ;";
1741      $db->query($query) or die("0.5 add field manufacturer ".$lang["update"][90].$db->error());
1742      
1743      $query="ALTER TABLE `glpi_networking` ADD INDEX (`FK_glpi_enterprise`)" ;
1744      $db->query($query) or die("0.5 alter field manufacturer ".$lang["update"][90].$db->error());
1745  
1746  
1747  }
1748  
1749  // Ajout Fabriquant monitor
1750  if(!FieldExists("glpi_monitors","FK_glpi_enterprise")) {
1751  
1752      $query = "ALTER TABLE `glpi_monitors` ADD `FK_glpi_enterprise` INT(11) DEFAULT '0' NOT NULL ;";
1753      $db->query($query) or die("0.5 add field manufacturer ".$lang["update"][90].$db->error());
1754      
1755      $query="ALTER TABLE `glpi_monitors` ADD INDEX (`FK_glpi_enterprise`)" ;
1756      $db->query($query) or die("0.5 alter field manufacturer ".$lang["update"][90].$db->error());
1757  
1758  
1759  }
1760  
1761  // Ajout Fabriquant software
1762  if(!FieldExists("glpi_software","FK_glpi_enterprise")) {
1763  
1764      $query = "ALTER TABLE `glpi_software` ADD `FK_glpi_enterprise` INT(11) DEFAULT '0' NOT NULL ;";
1765      $db->query($query) or die("0.5 add field manufacturer ".$lang["update"][90].$db->error());
1766      
1767      $query="ALTER TABLE `glpi_software` ADD INDEX (`FK_glpi_enterprise`)" ;
1768      $db->query($query) or die("0.5 alter field manufacturer ".$lang["update"][90].$db->error());
1769  
1770  
1771  }
1772  
1773  // Ajout Fabriquant peripheral
1774  if(!FieldExists("glpi_peripherals","FK_glpi_enterprise")) {
1775  
1776      $query = "ALTER TABLE `glpi_peripherals` ADD `FK_glpi_enterprise` INT(11) DEFAULT '0' NOT NULL ;";
1777      $db->query($query) or die("0.5 add field manufacturer ".$lang["update"][90].$db->error());
1778      
1779      $query="ALTER TABLE `glpi_peripherals` ADD INDEX (`FK_glpi_enterprise`)" ;
1780      $db->query($query) or die("0.5 alter field manufacturer ".$lang["update"][90].$db->error());
1781      
1782  
1783  }
1784  
1785  // Ajout deleted peripheral
1786  if(!FieldExists("glpi_peripherals","deleted")) {
1787  
1788      $query = "ALTER TABLE `glpi_peripherals` ADD `deleted` ENUM('Y', 'N') DEFAULT 'N' NOT NULL ;";
1789      $db->query($query) or die("0.5 add field deleted ".$lang["update"][90].$db->error());
1790      
1791      $query="ALTER TABLE `glpi_peripherals` ADD INDEX (`deleted`)" ;
1792      $db->query($query) or die("0.5 alter field deleted ".$lang["update"][90].$db->error());
1793      
1794  
1795  }
1796  
1797  // Ajout deleted software
1798  if(!FieldExists("glpi_software","deleted")) {
1799  
1800      $query = "ALTER TABLE `glpi_software` ADD `deleted` ENUM('Y', 'N') DEFAULT 'N' NOT NULL ;";
1801      $db->query($query) or die("0.5 add field deleted ".$lang["update"][90].$db->error());
1802  
1803      $query="ALTER TABLE `glpi_software` ADD INDEX (`deleted`)" ;
1804      $db->query($query) or die("0.5 alter field deleted ".$lang["update"][90].$db->error());
1805      
1806  
1807  }
1808  
1809  // Ajout deleted monitor
1810  if(!FieldExists("glpi_monitors","deleted")) {
1811  
1812      $query = "ALTER TABLE `glpi_monitors` ADD `deleted` ENUM('Y', 'N') DEFAULT 'N' NOT NULL ;";
1813      $db->query($query) or die("0.5 add field deleted ".$lang["update"][90].$db->error());
1814      
1815      $query="ALTER TABLE `glpi_monitors` ADD INDEX (`deleted`)" ;
1816      $db->query($query) or die("0.5 alter field deleted ".$lang["update"][90].$db->error());
1817      
1818  
1819  }
1820  
1821  // Ajout deleted networking
1822  if(!FieldExists("glpi_networking","deleted")) {
1823  
1824      $query = "ALTER TABLE `glpi_networking` ADD `deleted` ENUM('Y', 'N') DEFAULT 'N' NOT NULL ;";
1825      $db->query($query) or die("0.5 add field deleted ".$lang["update"][90].$db->error());
1826  
1827      $query="ALTER TABLE `glpi_networking` ADD INDEX (`deleted`)" ;
1828      $db->query($query) or die("0.5 alter field deleted ".$lang["update"][90].$db->error());
1829      
1830  
1831  }
1832  // Ajout deleted printer
1833  if(!FieldExists("glpi_printers","deleted")) {
1834  
1835      $query = "ALTER TABLE `glpi_printers` ADD `deleted` ENUM('Y', 'N') DEFAULT 'N' NOT NULL ;";
1836      $db->query($query) or die("0.5 add field deleted ".$lang["update"][90].$db->error());
1837      
1838      $query="ALTER TABLE `glpi_printers` ADD INDEX (`deleted`)" ;
1839      $db->query($query) or die("0.5 alter field deleted ".$lang["update"][90].$db->error());
1840      
1841  
1842  }
1843  // Ajout deleted computer
1844  if(!FieldExists("glpi_computers","deleted")) {
1845  
1846      $query = "ALTER TABLE `glpi_computers` ADD `deleted` ENUM('Y', 'N') DEFAULT 'N' NOT NULL ;";
1847      $db->query($query) or die("0.5 add field deleted ".$lang["update"][90].$db->error());
1848      
1849      $query="ALTER TABLE `glpi_computers` ADD INDEX (`deleted`)" ;
1850      $db->query($query) or die("0.5 alter field deleted ".$lang["update"][90].$db->error());
1851      
1852  
1853  }
1854  
1855  // Ajout template peripheral
1856  if(!FieldExists("glpi_peripherals","is_template")) {
1857  
1858      $query = "ALTER TABLE `glpi_peripherals` ADD `is_template` ENUM('0', '1') DEFAULT '0' NOT NULL , ADD `tplname` VARCHAR(255) ;";
1859      $db->query($query) or die("0.5 add field deleted ".$lang["update"][90].$db->error());
1860  
1861      $query="INSERT INTO glpi_peripherals (is_template,tplname) VALUES ('1','Blank Template')";
1862      $db->query($query) or die("0.5 add blank template ".$lang["update"][90].$db->error());    
1863  
1864      $query="ALTER TABLE `glpi_peripherals` ADD INDEX (`is_template`)" ;
1865      $db->query($query) or die("0.5 alter field is_template ".$lang["update"][90].$db->error());
1866      
1867      
1868  }
1869  
1870  // Ajout template software
1871  if(!FieldExists("glpi_software","is_template")) {
1872  
1873      $query = "ALTER TABLE `glpi_software` ADD `is_template` ENUM('0', '1') DEFAULT '0' NOT NULL , ADD `tplname` VARCHAR(255) ;";
1874      $db->query($query) or die("0.5 add field deleted ".$lang["update"][90].$db->error());
1875  
1876      $query="INSERT INTO glpi_software (is_template,tplname) VALUES ('1','Blank Template')";
1877      $db->query($query) or die("0.5 add blank template ".$lang["update"][90].$db->error());    
1878      
1879      $query="ALTER TABLE `glpi_software` ADD INDEX (`is_template`)" ;
1880      $db->query($query) or die("0.5 alter field is_template ".$lang["update"][90].$db->error());
1881  
1882  }
1883  
1884  // Ajout template monitor
1885  if(!FieldExists("glpi_monitors","is_template")) {
1886  
1887      $query = "ALTER TABLE `glpi_monitors` ADD `is_template` ENUM('0', '1') DEFAULT '0' NOT NULL , ADD `tplname` VARCHAR(255) ;";
1888      $db->query($query) or die("0.5 add field deleted ".$lang["update"][90].$db->error());
1889  
1890      $query="INSERT INTO glpi_monitors (is_template,tplname) VALUES ('1','Blank Template')";
1891      $db->query($query) or die("0.5 add blank template ".$lang["update"][90].$db->error());    
1892      
1893      $query="ALTER TABLE `glpi_monitors` ADD INDEX (`is_template`)" ;
1894      $db->query($query) or die("0.5 alter field is_template ".$lang["update"][90].$db->error());
1895      
1896  
1897  }
1898  
1899  if(!isIndex("glpi_computers", "is_template")) {
1900      $query = "ALTER TABLE `glpi_computers` ADD INDEX (`is_template`) ";
1901      $db->query($query) or die("5 ".$lang["update"][90].$db->error());
1902  }
1903  
1904  // Ajout template networking
1905  if(!FieldExists("glpi_networking","is_template")) {