Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

ryxeo-glpi-git / htdocs / install / update_0681_07.php @ 1c14bcc4

Historique | Voir | Annoter | Télécharger (70,6 ko)

1 1c14bcc4 Eric Seigne
<?php
2
3
4
/*
5
 * @version $Id: update_0681_07.php 7763 2009-01-06 18:44:50Z moyo $
6
 -------------------------------------------------------------------------
7
 GLPI - Gestionnaire Libre de Parc Informatique
8
 Copyright (C) 2003-2009 by the INDEPNET Development Team.
9

10
 http://indepnet.net/   http://glpi-project.org
11
 -------------------------------------------------------------------------
12

13
 LICENSE
14

15
 This file is part of GLPI.
16

17
 GLPI is free software; you can redistribute it and/or modify
18
 it under the terms of the GNU General Public License as published by
19
 the Free Software Foundation; either version 2 of the License, or
20
 (at your option) any later version.
21

22
 GLPI is distributed in the hope that it will be useful,
23
 but WITHOUT ANY WARRANTY; without even the implied warranty of
24
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25
 GNU General Public License for more details.
26

27
 You should have received a copy of the GNU General Public License
28
 along with GLPI; if not, write to the Free Software
29
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
30
 --------------------------------------------------------------------------
31
 */
32
33
// ----------------------------------------------------------------------
34
// Original Author of file:
35
// Purpose of file:
36
// ----------------------------------------------------------------------
37
38
/// Update from 0.68.1 to 0.7
39
function update0681to07() {
40
        global $DB, $CFG_GLPI, $LANG, $LINK_ID_TABLE;
41
42
        @mysql_query("SET NAMES 'latin1'",$DB->dbh);
43
44
        // Improve user table :
45
        if (!isIndex("glpi_users", "firstname")) {
46
                $query = "ALTER TABLE `glpi_users` ADD INDEX ( `firstname` )";
47
                $DB->query($query) or die("0.7 alter users add index on firstname " . $LANG["update"][90] . $DB->error());
48
        }
49
        if (!isIndex("glpi_users", "realname")) {
50
                $query = "ALTER TABLE `glpi_users` ADD INDEX ( `realname` )";
51
                $DB->query($query) or die("0.7 alter users add index on realname " . $LANG["update"][90] . $DB->error());
52
        }
53
        // Decimal problem
54
        if (FieldExists("glpi_infocoms", "value")) {
55
                $query = "ALTER TABLE `glpi_infocoms` CHANGE `value` `value` DECIMAL( 20, 4 ) NOT NULL DEFAULT '0';";
56
                $DB->query($query) or die("0.7 alter value in glpi_infocoms " . $LANG["update"][90] . $DB->error());
57
        }
58
        if (FieldExists("glpi_infocoms", "warranty_value")) {
59
                $query = "ALTER TABLE `glpi_infocoms` CHANGE warranty_value warranty_value DECIMAL( 20, 4 ) NOT NULL DEFAULT '0';";
60
                $DB->query($query) or die("0.7 alter warranty_value in glpi_infocoms " . $LANG["update"][90] . $DB->error());
61
        }
62
        if (FieldExists("glpi_tracking", "cost_time")) {
63
                $query = "ALTER TABLE `glpi_tracking` CHANGE cost_time cost_time DECIMAL( 20, 4 ) NOT NULL DEFAULT '0';";
64
                $DB->query($query) or die("0.7 alter cost_time in glpi_tracking " . $LANG["update"][90] . $DB->error());
65
        }
66
        if (FieldExists("glpi_tracking", "cost_fixed")) {
67
                $query = "ALTER TABLE `glpi_tracking` CHANGE cost_fixed cost_fixed DECIMAL( 20, 4 ) NOT NULL DEFAULT '0';";
68
                $DB->query($query) or die("0.7 alter cost_fixed in glpi_tracking " . $LANG["update"][90] . $DB->error());
69
        }
70
        if (FieldExists("glpi_tracking", "cost_material")) {
71
                $query = "ALTER TABLE `glpi_tracking` CHANGE cost_material cost_material DECIMAL( 20, 4 ) NOT NULL DEFAULT '0';";
72
                $DB->query($query) or die("0.7 alter cost_material in glpi_tracking " . $LANG["update"][90] . $DB->error());
73
        }
74
        if (!FieldExists("glpi_config", "decimal_number")) {
75
                $query = "ALTER TABLE `glpi_config` ADD `decimal_number` INT DEFAULT '2';";
76
                $DB->query($query) or die("0.7 add decimal_number in glpi_config " . $LANG["update"][90] . $DB->error());
77
        }
78
        $CFG_GLPI["decimal_number"] = 2;
79
80
        if (!FieldExists("glpi_config", "cas_logout")) {
81
                $query = "ALTER TABLE `glpi_config` ADD `cas_logout` VARCHAR( 255 ) NULL AFTER `cas_uri`;";
82
                $DB->query($query) or die("0.7 add cas_logout in glpi_config " . $LANG["update"][90] . $DB->error());
83
        }
84
85
        if (!isIndex("glpi_computer_device", "specificity")) {
86
                $query = "ALTER TABLE `glpi_computer_device` ADD INDEX ( `specificity` )";
87
                $DB->query($query) or die("0.7 add index specificity in glpi_computer_device " . $LANG["update"][90] . $DB->error());
88
        }
89
90
        if (!FieldExists("glpi_docs", "comments")) {
91
                $query = "ALTER TABLE `glpi_docs` CHANGE `comment` `comments` TEXT DEFAULT NULL ";
92
                $DB->query($query) or die("0.7 alter docs.comment to be comments" . $LANG["update"][90] . $DB->error());
93
94
        }
95
        // Update polish langage file
96
        $query = "UPDATE glpi_users SET language='pl_PL' WHERE language='po_PO'";
97
        $DB->query($query) or die("0.7 update polish lang file " . $LANG["update"][90] . $DB->error());
98
99
        // Add show_group_hardware
100
        if (!FieldExists("glpi_profiles", "show_group_hardware")) {
101
                $query = "ALTER TABLE `glpi_profiles` ADD `show_group_hardware` CHAR( 1 ) NULL DEFAULT '0';";
102
                $DB->query($query) or die("0.7 alter glpi_profiles add show_group_hardware" . $LANG["update"][90] . $DB->error());
103
                $query = "UPDATE glpi_profiles SET `show_group_hardware`=`show_group_ticket`";
104
                $DB->query($query) or die("0.7 alter glpi_profiles add show_group_hardware" . $LANG["update"][90] . $DB->error());
105
        }
106
107
        // Clean doc association
108
        if (FieldExists("glpi_doc_device", "is_template")) {
109
                $query = "ALTER TABLE `glpi_doc_device` DROP `is_template`";
110
                $DB->query($query) or die("0.7 delete is_template from glpi_doc_device" . $LANG["update"][90] . $DB->error());
111
        }
112
113
        // Clean contract association
114
        if (FieldExists("glpi_contract_device", "is_template")) {
115
                $query = "ALTER TABLE `glpi_contract_device` DROP `is_template`";
116
                $DB->query($query) or die("0.7 delete is_template from glpi_contract_device" . $LANG["update"][90] . $DB->error());
117
        }
118
         
119
120
121
        //// ENTITY MANAGEMENT
122
123
        if (!TableExists("glpi_entities")) {
124
                $query = "CREATE TABLE `glpi_entities` (
125
                                        `ID` int(11) NOT NULL auto_increment,
126
                                        `name` varchar(255) NOT NULL,
127
                                        `parentID` int(11) NOT NULL default '0',
128
                                        `completename` text NOT NULL,
129
                                        `comments` text,
130
                                        `level` int(11) default NULL,
131
                                        PRIMARY KEY  (`ID`),
132
                                        UNIQUE KEY `name` (`name`,`parentID`),
133
                                        KEY `parentID` (`parentID`)
134
                        ) ENGINE=MyISAM;";
135
                $DB->query($query) or die("0.7 create glpi_entities " . $LANG["update"][90] . $DB->error());
136
        }
137
138
        if (!TableExists("glpi_entities_data")) {
139
                $query = "CREATE TABLE `glpi_entities_data` (
140
                                                                                `ID` int(11) NOT NULL auto_increment,
141
                                                                                `FK_entities` int(11) NOT NULL default '0',
142
                                                                                `address` text,
143
                                                                                `postcode` varchar(255) default NULL,
144
                                                                                `town` varchar(255) default NULL,
145
                                                                                `state` varchar(255) default NULL,
146
                                                                                `country` varchar(255) default NULL,
147
                                                                                `website` varchar(200) default NULL,
148
                                                                                `phonenumber` varchar(200) default NULL,
149
                                                                                `fax` varchar(255) default NULL,
150
                                                                                `email` varchar(255) default NULL,
151
                                                                                `notes` longtext,
152
                                                                                PRIMARY KEY  (`ID`),
153
                                                                                UNIQUE KEY `FK_entities` (`FK_entities`)
154
                                                                                ) ENGINE=MyISAM ;";
155
156
                $DB->query($query) or die("0.7 create glpi_entities_data " . $LANG["update"][90] . $DB->error());
157
        }
158
159
        // Add default profile to all users without any profile
160
        $query="SELECT ID FROM glpi_profiles WHERE is_default='1'";
161
        if ($result=$DB->query($query)){
162
                if ($DB->numrows($result)>0){
163
                        $IDprof=$DB->result($result,0,0);
164
                        $query="SELECT glpi_users.ID 
165
                                FROM glpi_users LEFT JOIN glpi_users_profiles ON (glpi_users_profiles.FK_users = glpi_users.ID )
166
                                WHERE glpi_users_profiles.ID IS NULL";
167
                        if ($result=$DB->query($query)){
168
                                if ($DB->numrows($result)>0){
169
                                        while ($data=$DB->fetch_assoc($result)){
170
                                                $query="INSERT INTO glpi_users_profiles (`FK_users` ,`FK_profiles`) VALUES ('".$data['ID']."','$IDprof') ";
171
                                                $DB->query($query);
172
                                        }
173
                                }
174
                        }
175
                        
176
                }
177
        }
178
179
180
181
        if (!FieldExists("glpi_users_profiles", "FK_entities")) {
182
                // Clean Datas
183
                $query = "DELETE FROM glpi_users_profiles WHERE FK_users='0'";
184
                $DB->query($query) or die("0.7 clean datas of glpi_users_profiles " . $LANG["update"][90] . $DB->error());
185
186
                $query = " ALTER TABLE `glpi_users_profiles` ADD `FK_entities` INT NOT NULL DEFAULT '0',
187
                                                ADD `recursive` SMALLINT NOT NULL DEFAULT '1',
188
                                                ADD `dynamic` SMALLINT NOT NULL DEFAULT '0' ";
189
                $DB->query($query) or die("0.7 alter glpi_users_profiles " . $LANG["update"][90] . $DB->error());
190
        }
191
        // Correct for clean active field for beta users
192
        if (FieldExists("glpi_users_profiles", "active")) {
193
                $query = "ALTER TABLE `glpi_users_profiles` DROP `active` ";
194
                $DB->query($query) or die("0.7 clean active field for beta of glpi_users_profiles " . $LANG["update"][90] . $DB->error());
195
        }
196
        if (!FieldExists("glpi_users", "active")) {
197
                $query = "ALTER TABLE `glpi_users` ADD `active` INT(2) NOT NULL DEFAULT '1' ";
198
                $DB->query($query) or die("0.7 add active field for beta of glpi_users " . $LANG["update"][90] . $DB->error());
199
                if (!isIndex("glpi_users", "active")) {
200
                        $query = "ALTER TABLE `glpi_users` ADD INDEX (`active`);";
201
                        $DB->query($query) or die("0.7 add index active in glpi_users " . $LANG["update"][90] . $DB->error());
202
                }
203
        }
204
205
        // Add entity tags to tables
206
        $tables = array (
207
                "glpi_cartridges_type",
208
                "glpi_computers",
209
                "glpi_consumables_type",
210
                "glpi_contacts",
211
                "glpi_contracts",
212
                "glpi_docs",
213
                "glpi_dropdown_locations",
214
                "glpi_dropdown_netpoint",
215
                "glpi_enterprises",
216
                "glpi_groups",
217
                "glpi_monitors",
218
                "glpi_networking",
219
                "glpi_peripherals",
220
                "glpi_phones",
221
                "glpi_printers",
222
                "glpi_reminder",
223
                "glpi_software",
224
                "glpi_tracking"
225
        );
226
        // "glpi_kbitems","glpi_dropdown_kbcategories", -> easier to manage
227
        // "glpi_followups" -> always link to tracking ?
228
        // "glpi_licenses" -> always link to software ? 
229
        // "glpi_infocoms" -> always link to item ? PB on reports stats ?
230
        // "glpi_links" -> global items easier to manage
231
        // "glpi_reservation_item", "glpi_state_item" -> always link to item ? but info maybe needed
232
        foreach ($tables as $tbl) {
233
                if (!FieldExists($tbl, "FK_entities")) {
234
                        $query = "ALTER TABLE `" . $tbl . "` ADD `FK_entities` INT NOT NULL DEFAULT '0' AFTER `ID`";
235
                        $DB->query($query) or die("0.7 add FK_entities in $tbl " . $LANG["update"][90] . $DB->error());
236
                }
237
238
                if (!isIndex($tbl, "FK_entities")) {
239
                        $query = "ALTER TABLE `" . $tbl . "` ADD INDEX (`FK_entities`)";
240
                        $DB->query($query) or die("0.7 add index FK_entities in $tbl " . $LANG["update"][90] . $DB->error());
241
                }
242
        }
243
244
        // Regenerate Indexes :
245
        $tables = array (
246
                "glpi_dropdown_locations"
247
        );
248
        foreach ($tables as $tbl) {
249
                if (isIndex($tbl, "name")) {
250
                        $query = "ALTER TABLE `$tbl` DROP INDEX `name`;";
251
                        $DB->query($query) or die("0.7 drop index name in $tbl " . $LANG["update"][90] . $DB->error());
252
                }
253
                if (isIndex($tbl, "parentID_2")) {
254
                        $query = "ALTER TABLE `$tbl` DROP INDEX `parentID_2`;";
255
                        $DB->query($query) or die("0.7 drop index name in $tbl " . $LANG["update"][90] . $DB->error());
256
                }
257
                $query = "ALTER TABLE `$tbl` ADD UNIQUE(`name`,`parentID`,`FK_entities`);";
258
                $DB->query($query) or die("0.7 add index name in $tbl " . $LANG["update"][90] . $DB->error());
259
260
        }
261
262
        if (isIndex("glpi_users_profiles", "FK_users_profiles")) {
263
                $query = "ALTER TABLE `glpi_users_profiles` DROP INDEX `FK_users_profiles`;";
264
                $DB->query($query) or die("0.7 drop index FK_users_profiles in glpi_users_profiles " . $LANG["update"][90] . $DB->error());
265
        }
266
267
        if (!isIndex("glpi_users_profiles", "FK_entities")) {
268
                $query = "ALTER TABLE `glpi_users_profiles` ADD INDEX (`FK_entities`);";
269
                $DB->query($query) or die("0.7 add index FK_entities in glpi_users_profiles " . $LANG["update"][90] . $DB->error());
270
        }
271
272
        if (!isIndex("glpi_users_profiles", "recursive")) {
273
                $query = "ALTER TABLE `glpi_users_profiles` ADD INDEX (`recursive`);";
274
                $DB->query($query) or die("0.7 add index recursive in glpi_users_profiles " . $LANG["update"][90] . $DB->error());
275
        }
276
277
        //// MULTIAUTH MANAGEMENT
278
279
        if (!TableExists("glpi_auth_ldap")) {
280
                $query = "CREATE TABLE `glpi_auth_ldap` (
281
                                                                         `ID` int(11) NOT NULL auto_increment,
282
                                                                         `name` varchar(255) NOT NULL,
283
                                                                         `ldap_host` varchar(255) default NULL,
284
                                                                        `ldap_basedn` varchar(255) default NULL,
285
                                                                        `ldap_rootdn` varchar(255) default NULL,
286
                                                                        `ldap_pass` varchar(255) default NULL,
287
                                                                        `ldap_port` varchar(255) NOT NULL default '389',
288
                                                                        `ldap_condition` varchar(255) default NULL,
289
                                                                        `ldap_login` varchar(255) NOT NULL default 'uid',        
290
                                                                        `ldap_use_tls` varchar(255) NOT NULL default '0',
291
                                                                        `ldap_field_group` varchar(255) default NULL,
292
                                                                        `ldap_group_condition` varchar(255) default NULL,
293
                                                                        `ldap_search_for_groups` int NOT NULL default '0',
294
                                                                        `ldap_field_group_member` varchar(255) default NULL,
295
                                                                        `ldap_field_email` varchar(255) default NULL,
296
                                                                        `ldap_field_realname` varchar(255) default NULL,
297
                                                                        `ldap_field_firstname` varchar(255) default NULL,
298
                                                                        `ldap_field_phone` varchar(255) default NULL,
299
                                                                        `ldap_field_phone2` varchar(255) default NULL,
300
                                                                        `ldap_field_mobile` varchar(255) default NULL,
301
                                                                        `ldap_field_comments` TEXT default NULL,                
302
                                                                        PRIMARY KEY  (`ID`)
303
                                                                ) ENGINE=MyISAM;";
304
                $DB->query($query) or die("0.7 create glpi_auth_ldap " . $LANG["update"][90] . $DB->error());
305
306
                $query = "select * from glpi_config WHERE ID=1";
307
                $result = $DB->query($query);
308
                $config = $DB->fetch_array($result);
309
310
                if (!empty ($config["ldap_host"])) {
311
312
                        //Transfer ldap informations into the new table
313
                        
314
                        $query = "INSERT INTO `glpi_auth_ldap` VALUES 
315
                        (NULL, '" . $config["ldap_host"] . "', '" . $config["ldap_host"] . "', '" . $config["ldap_basedn"] . "', '" . $config["ldap_rootdn"] . "', '" . $config["ldap_pass"] . "', " . $config["ldap_port"] . ", '" . $config["ldap_condition"] . "', '" . $config["ldap_login"] . "', '" . $config["ldap_use_tls"] . "', '" . $config["ldap_field_group"] . "',
316
                        '" . $config["ldap_condition"] . "', " . $config["ldap_search_for_groups"] . ", '" . $config["ldap_field_group_member"] . "',
317
                        '" . $config["ldap_field_email"] . "', '" . $config["ldap_field_realname"] . "', '" . $config["ldap_field_firstname"] . "',
318
                        '" . $config["ldap_field_phone"] . "', '" . $config["ldap_field_phone2"] . "', '" . $config["ldap_field_mobile"] . "',NULL);";
319
                        $DB->query($query) or die("0.7 transfert of ldap parameters into glpi_auth_ldap " . $LANG["update"][90] . $DB->error());
320
                }
321
322
                $query = "ALTER TABLE `glpi_config`
323
                                                                        DROP `ldap_field_email`,
324
                                                                        DROP `ldap_port`,
325
                                                                        DROP `ldap_host`,
326
                                                                        DROP `ldap_basedn`,
327
                                                                        DROP `ldap_rootdn`,
328
                                                                        DROP `ldap_pass`,
329
                                                                        DROP `ldap_field_location`,
330
                                                                        DROP `ldap_field_realname`,
331
                                                                        DROP `ldap_field_firstname`,
332
                                                                        DROP `ldap_field_phone`,
333
                                                                        DROP `ldap_field_phone2`,
334
                                                                        DROP `ldap_field_mobile`,
335
                                                                        DROP `ldap_condition`,
336
                                                                        DROP `ldap_login`,
337
                                                                        DROP `ldap_use_tls`,
338
                                                                        DROP `ldap_field_group`,
339
                                                                        DROP `ldap_group_condition`,
340
                                                                        DROP `ldap_search_for_groups`,
341
                                                                        DROP `ldap_field_group_member`;";
342
                $DB->query($query) or die("0.7 drop ldap fields from glpi_config " . $LANG["update"][90] . $DB->error());
343
344
        }
345
        if (!FieldExists("glpi_users", "id_auth")) {
346
                $query = "ALTER TABLE glpi_users ADD `id_auth` INT NOT NULL DEFAULT '-1',
347
                                                                                ADD `auth_method` INT NOT NULL DEFAULT '-1',
348
                                                                                ADD `last_login` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
349
                                                                                ADD `date_mod` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'";
350
                $DB->query($query) or die("0.7 add auth_method & id_method in glpi_users " . $LANG["update"][90] . $DB->error());
351
        }
352
353
        if (!TableExists("glpi_auth_mail")) {
354
                $query = "CREATE TABLE `glpi_auth_mail` (
355
                                                                                `ID` int(11) NOT NULL auto_increment,
356
                                                                                `name` varchar(255) NOT NULL,
357
                                                                                `imap_auth_server` varchar(200) default NULL,
358
                                                                                `imap_host` varchar(200) default NULL,
359
                                                                                PRIMARY KEY  (`ID`)
360
                                                                                ) ENGINE=MyISAM ;";
361
362
                $DB->query($query) or die("0.7 create glpi_auth_mail " . $LANG["update"][90] . $DB->error());
363
364
                $query = "select * from glpi_config WHERE ID=1";
365
                $result = $DB->query($query);
366
                $config = $DB->fetch_array($result);
367
368
                if (!empty ($config["imap_host"])) {
369
370
                        //Transfer ldap informations into the new table
371
                        $query = "INSERT INTO `glpi_auth_mail` VALUES 
372
                                                                                                        (NULL, '" . $config["imap_host"] . "', '" . $config["imap_auth_server"] . "', '" . $config["imap_host"] . "');";
373
                        $DB->query($query) or die("0.7 transfert of mail parameters into glpi_auth_mail " . $LANG["update"][90] . $DB->error());
374
375
                }
376
377
                $query = "ALTER TABLE `glpi_config`
378
                                                                                  DROP `imap_auth_server`,
379
                                                                                  DROP `imap_host`";
380
                $DB->query($query) or die("0.7 drop mail fields from glpi_config " . $LANG["update"][90] . $DB->error());
381
382
        }
383
384
        // Clean state_item -> add a field from tables
385
        if (TableExists("glpi_state_item")) {
386
                $state_type = array (
387
                        SOFTWARE_TYPE,
388
                        COMPUTER_TYPE,
389
                        PRINTER_TYPE,
390
                        MONITOR_TYPE,
391
                        PERIPHERAL_TYPE,
392
                        NETWORKING_TYPE,
393
                        PHONE_TYPE
394
                );
395
                foreach ($state_type as $type) {
396
                        $table = $LINK_ID_TABLE[$type];
397
                        if (!FieldExists($table, "state")) {
398
                                $query = "ALTER TABLE `$table` ADD `state` INT NOT NULL DEFAULT '0';";
399
                                $DB->query($query) or die("0.7 add state field to $table " . $LANG["update"][90] . $DB->error());
400
                                $query2 = "SELECT * FROM glpi_state_item WHERE device_type='$type'";
401
                                $result = $DB->query($query2);
402
                                if ($DB->numrows($result)) {
403
                                        while ($data = $DB->fetch_array($result)) {
404
                                                $query3 = "UPDATE $table SET state='" . $data["state"] . "' WHERE ID ='" . $data["id_device"] . "'";
405
                                                $DB->query($query3) or die("0.7 update state field value to $table " . $LANG["update"][90] . $DB->error());
406
                                        }
407
                                }
408
                        }
409
                }
410
                $query = "DROP TABLE `glpi_state_item` ";
411
                $DB->query($query) or die("0.7 drop table state_item " . $LANG["update"][90] . $DB->error());
412
                $query = "INSERT INTO `glpi_display` (`type`, `num`, `rank`, `FK_users`) VALUES (22, 31, 1, 0);";
413
                $DB->query($query) or die("0.7 add default search for states " . $LANG["update"][90] . $DB->error());
414
                // Add for reservation
415
                $query = "INSERT INTO `glpi_display` (`type`, `num`, `rank`, `FK_users`) VALUES ( 29, 4, 1, 0);";
416
                $DB->query($query) or die("0.7 add defaul search for reservation " . $LANG["update"][90] . $DB->error());
417
                $query = "INSERT INTO `glpi_display` (`type`, `num`, `rank`, `FK_users`) VALUES ( 29, 3, 2, 0);";
418
                $DB->query($query) or die("0.7 add defaul search for reservation " . $LANG["update"][90] . $DB->error());
419
        }
420
421
        // Add ticket_tco for hardwares
422
        $tco_tbl = array (
423
                COMPUTER_TYPE,
424
                NETWORKING_TYPE,
425
                PRINTER_TYPE,
426
                MONITOR_TYPE,
427
                PERIPHERAL_TYPE,
428
                SOFTWARE_TYPE,
429
                PHONE_TYPE
430
        );
431
        include (GLPI_ROOT . "/inc/tracking.function.php");
432
433
        foreach ($tco_tbl as $type) {
434
                $table = $LINK_ID_TABLE[$type];
435
                if (!FieldExists($table, "ticket_tco")) {
436
                        $query = "ALTER TABLE `$table` ADD `ticket_tco` DECIMAL( 20, 4 ) DEFAULT '0.0000';";
437
                        $DB->query($query) or die("0.7 alter $table add ticket_tco" . $LANG["update"][90] . $DB->error());
438
                        // Update values
439
                        $query = "SELECT DISTINCT device_type, computer 
440
                                                                                                        FROM glpi_tracking 
441
                                                                                                        WHERE device_type = '$type' AND (cost_time>0 
442
                                                                                                                OR cost_fixed>0
443
                                                                                                                OR cost_material>0)";
444
                        $result = $DB->query($query) or die("0.7 update ticket_tco" . $LANG["update"][90] . $DB->error());
445
                        if ($DB->numrows($result)) {
446
                                while ($data = $DB->fetch_array($result)) {
447
                                        $query2 = "UPDATE $table SET ticket_tco='" . computeTicketTco($type, $data["computer"]) . "' 
448
                                                                                                                                                                        WHERE ID='" . $data["computer"] . "';";
449
                                        $DB->query($query2) or die("0.7 update ticket_tco" . $LANG["update"][90] . $DB->error());
450
                                }
451
                        }
452
                }
453
        }
454
        if (!FieldExists("glpi_software", "helpdesk_visible")) {
455
                $query = "ALTER TABLE glpi_software ADD `helpdesk_visible` INT NOT NULL default '1'";
456
                $DB->query($query) or die("0.7 add helpdesk_visible in glpi_software " . $LANG["update"][90] . $DB->error());
457
        }
458
459
        if (!TableExists("glpi_dropdown_manufacturer")) {
460
461
                $query = "CREATE TABLE `glpi_dropdown_manufacturer` (
462
                                                                `ID` int(11) NOT NULL auto_increment,
463
                                                                `name` varchar(255) NOT NULL,
464
                                                                `comments` text,
465
                                                                PRIMARY KEY  (`ID`),
466
                                                                KEY `name` (`name`)
467
                                                                ) ENGINE=MyISAM ;";
468
                $DB->query($query) or die("0.7 add dropdown_manufacturer table " . $LANG["update"][90] . $DB->error());
469
        }
470
        if (countElementsInTable("glpi_dropdown_manufacturer")==0){
471
472
                // Fill table
473
                $query = "SELECT * FROM glpi_enterprises ORDER BY ID";
474
                if ($result = $DB->query($query)) {
475
                        if ($DB->numrows($result)) {
476
                                while ($data = $DB->fetch_assoc($result)) {
477
                                        $data = addslashes_deep($data);
478
                                        
479
                                        $comments = "";
480
                                        if (!empty ($data['address'])) {
481
                                                if (!empty ($comments))
482
                                                        $comments .= "\n";
483
                                                $comments .= $LANG["financial"][44] . ":\n";
484
                                                $comments .= $data['address'];
485
                                        }
486
                                        if (!empty ($data['postcode']) || !empty ($data['town'])) {
487
                                                if (!empty ($comments))
488
                                                        $comments .= $LANG["financial"][44] . ":\n";
489
                                                $comments .= $data['postcode'] . " " . $data['town'];
490
                                        }
491
                                        if (!empty ($data['state']) || !empty ($data['country'])) {
492
                                                if (!empty ($comments))
493
                                                        $comments .= $LANG["financial"][44] . ":\n";
494
                                                $comments .= $data['country'] . " " . $data['state'];
495
                                        }
496
                                        if (!empty ($data['website'])) {
497
                                                if (!empty ($comments))
498
                                                        $comments .= "\n";
499
                                                $comments .= $LANG["financial"][45] . ": ";
500
                                                $comments .= $data['website'];
501
                                        }
502
                                        if (!empty ($data['phonenumber'])) {
503
                                                if (!empty ($comments))
504
                                                        $comments .= "\n";
505
                                                $comments .= $LANG["help"][35] . ": ";
506
                                                $comments .= $data['phonenumber'];
507
                                        }
508
                                        if (!empty ($data['fax'])) {
509
                                                if (!empty ($comments))
510
                                                        $comments .= "\n";
511
                                                $comments .= $LANG["financial"][30] . ": ";
512
                                                $comments .= $data['fax'];
513
                                        }
514
                                        if (!empty ($data['email'])) {
515
                                                if (!empty ($comments))
516
                                                        $comments .= "\n";
517
                                                $comments .= $LANG["setup"][14] . ": ";
518
                                                $comments .= $data['email'];
519
                                        }
520
                                        if (!empty ($data['comments'])) {
521
                                                if (!empty ($comments))
522
                                                        $comments .= "\n";
523
                                                $comments .= $data['comments'];
524
                                        }
525
                                        if (!empty ($data['notes'])) {
526
                                                if (!empty ($comments))
527
                                                        $comments .= "\n";
528
                                                $comments .= $data['notes'];
529
                                        }
530
531
                                        $query2 = "INSERT INTO `glpi_dropdown_manufacturer` (ID,name,comments) VALUES ('" . $data['ID'] . "','" . $data['name'] . "','".$comments."')";
532
                                        $DB->query($query2) or die("0.7 add manufacturer item " . $LANG["update"][90] . $DB->error());
533
                                }
534
                        }
535
                }
536
        }
537
538
        if (isIndex("glpi_ocs_link", "ocs_id_2")) {
539
                $query = "ALTER TABLE `glpi_ocs_link` DROP INDEX `ocs_id_2` ";
540
                $DB->query($query) or die("0.7 alter ocs_link clean index ocs_id  " . $LANG["update"][90] . $DB->error());
541
        }
542
543
        if (isIndex("glpi_ocs_link", "ocs_id")) {
544
                $query = "ALTER TABLE `glpi_ocs_link` DROP INDEX `ocs_id` ";
545
                $DB->query($query) or die("0.7 alter ocs_link clean index ocs_id  " . $LANG["update"][90] . $DB->error());
546
        }
547
548
         
549
        if (!FieldExists("glpi_ocs_link", "ocs_server_id")) {
550
                $query = "ALTER TABLE glpi_ocs_link ADD `ocs_server_id` int(11) NOT NULL";
551
                $DB->query($query) or die("0.7 add ocs_server_id in glpi_ocs_link " . $LANG["update"][90] . $DB->error());
552
                $query = "update glpi_ocs_link set ocs_server_id=1";
553
                $DB->query($query) or die("0.7 update ocs_server_id=1 in glpi_ocs_link " . $LANG["update"][90] . $DB->error());
554
        }
555
556
        if (!isIndex("glpi_ocs_link", "ocs_server_id")) {
557
        // Clean duplicates
558
                $query="SELECT COUNT(*) as CPT, ocs_id FROM glpi_ocs_link GROUP BY ocs_id HAVING CPT >1"; 
559
                if ($result=$DB->query($query)){ 
560
                        if ($DB->numrows($result)>0){
561
                                while ($data=$DB->fetch_array($result)){ 
562
                                        // Skip first
563
                                        $query="SELECT ID FROM glpi_ocs_link WHERE ocs_id = '".$data['ocs_id']."' ORDER BY last_update DESC LIMIT 1,99999";
564
                                        if ($result2=$DB->query($query)){ 
565
                                                if ($DB->numrows($result2)){
566
                                                        while ($data2=$DB->fetch_array($result2)){ 
567
                                                                $query="DELETE FROM glpi_ocs_link WHERE ID ='".$data2['ID']."'"; 
568
                                                                $DB->query($query) or die("0.7 clean to update ocs_server_id=1 in glpi_ocs_link " . $LANG["update"][90] . $DB->error());
569
                                                        }
570
                                                }
571
                                        }
572
                                }
573
                        }
574
                }
575
                
576
                
577
                
578
                $query = "ALTER TABLE `glpi_ocs_link` ADD UNIQUE `ocs_server_id` (`ocs_server_id` ,`ocs_id`);";
579
                $DB->query($query) or die("0.7 alter ocs_link add index ocs_server_id " . $LANG["update"][90] . $DB->error());
580
        }
581
582
        if (!isIndex("glpi_ocs_link", "`ocs_deviceid`")) {        
583
                $query = "ALTER TABLE `glpi_ocs_link` ADD INDEX ( `ocs_deviceid` )";
584
                $DB->query($query) or die("0.7 alter ocs_link add index ocs_deviceid " . $LANG["update"][90] . $DB->error());
585
        }
586
587
        if (!FieldExists("glpi_ocs_config", "tplname")) {
588
                $query = "ALTER TABLE glpi_ocs_config ADD `name` varchar(200) default NULL AFTER `ID`, ADD `is_template` enum('0','1') NOT NULL default '0', ADD `tplname` varchar(200) default NULL, ADD `date_mod` datetime default NULL";
589
                $DB->query($query) or die("0.7 add name, is_template, tplname, date_mod in glpi_ocs_link " . $LANG["update"][90] . $DB->error());
590
                $query = "update glpi_ocs_config set name=ocs_db_host";
591
                $DB->query($query) or die("0.7 add name in glpi_ocs_config " . $LANG["update"][90] . $DB->error());
592
        }
593
594
        if (!FieldExists("glpi_ocs_config", "import_registry")) {
595
                $query = "ALTER TABLE glpi_ocs_config ADD `import_registry` INT NOT NULL default '0' AFTER `import_device_modems`";
596
                $DB->query($query) or die("0.7 add import_registry in glpi_ocs_config " . $LANG["update"][90] . $DB->error());
597
        }
598
        if (FieldExists("glpi_ocs_config", "import_tag_field")) {
599
                $query = "ALTER TABLE glpi_ocs_config DROP `import_tag_field`;";
600
                $DB->query($query) or die("0.7 drop import_tag_field in glpi_ocs_config " . $LANG["update"][90] . $DB->error());
601
        }
602
603
        if (!FieldExists("glpi_ocs_config", "import_software_licensetype")) {
604
                $query = "ALTER TABLE glpi_ocs_config ADD `import_software_licensetype` VARCHAR(255) DEFAULT 'global' AFTER `import_software`";
605
                $DB->query($query) or die("0.7 add import_software_licensetype in glpi_ocs_config " . $LANG["update"][90] . $DB->error());
606
        }
607
608
        if (!FieldExists("glpi_ocs_config", "import_software_buy")) {
609
                $query = "ALTER TABLE glpi_ocs_config ADD `import_software_buy` INT NOT NULL DEFAULT '1' AFTER `import_software`";
610
                $DB->query($query) or die("0.7 add import_software_buy in glpi_ocs_config " . $LANG["update"][90] . $DB->error());
611
        }
612
613
        if (!TableExists("glpi_registry")) {
614
                $query = "CREATE TABLE  `glpi_registry` (
615
                                                                                 `ID` int(10) NOT NULL auto_increment,
616
                                                                                 `computer_id` int(10) NOT NULL DEFAULT '0',
617
                                                                                 `registry_hive` varchar(45) NOT NULL,
618
                                                                                 `registry_path` varchar(255) NOT NULL,
619
                                                                                 `registry_value` varchar(255) NOT NULL,
620
                                                                                 PRIMARY KEY  (`ID`),
621
                                                                                KEY `computer_id` (`computer_id`)
622
                                                                                ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;";
623
                $DB->query($query) or die("0.7 add glpi_registry table " . $LANG["update"][90] . $DB->error());
624
625
        }
626
627
        if (!FieldExists("glpi_ocs_link", "import_ip")) {
628
                $query = "ALTER TABLE `glpi_ocs_link` ADD COLUMN `import_ip` LONGTEXT";
629
                $DB->query($query) or die("0.7 add import_ip in glpi_ocs_link" . $LANG["update"][90] . $DB->error());
630
        }
631
632
633
        //// Enum clean
634
        // Enum 0-1
635
        $enum01 = array ();
636
        $template_tables = array (
637
                "glpi_computers",
638
                "glpi_networking",
639
                "glpi_printers",
640
                "glpi_monitors",
641
                "glpi_peripherals",
642
                "glpi_software",
643
                "glpi_phones",
644
                "glpi_ocs_config"
645
        );
646
647
        foreach ($template_tables as $table) {
648
                if (!isset ($enum01[$table])) {
649
                        $enum01[$table] = array ();
650
                }
651
                $enum01[$table][] = "is_template";
652
        }
653
        $enum01["glpi_config"][] = "auto_assign";
654
        $enum01["glpi_config"][] = "public_faq";
655
        $enum01["glpi_config"][] = "url_in_mail";
656
        $enum01["glpi_profiles"][] = "is_default";
657
658
        $enum01["glpi_monitors"][] = "is_global";
659
        $enum01["glpi_peripherals"][] = "is_global";
660
        $enum01["glpi_phones"][] = "is_global";
661
        $enum01["glpi_printers"][] = "is_global";
662
        $enum01["glpi_reminder"][] = "rv";
663
        $enum01["glpi_contract_device"][] = "is_template";
664
        $enum01["glpi_doc_device"][] = "is_template";
665
666
        foreach ($enum01 as $table => $fields) {
667
                foreach ($fields as $key => $field) {
668
                        if (FieldExists($table, $field)) {
669
670
                                $query = "ALTER TABLE `$table` ADD `tmp_convert_enum` SMALLINT NOT NULL DEFAULT '0' AFTER `$field` ";
671
                                $DB->query($query) or die("0.7 alter $table add new field tmp_convert_enum " . $LANG["update"][90] . $DB->error());
672
673
                                $query = "UPDATE `$table` SET tmp_convert_enum='1' WHERE $field='1';";
674
                                $DB->query($query) or die("0.7 update $table to set correct values to alod enum01 $field " . $LANG["update"][90] . $DB->error());
675
                                $query = "UPDATE `$table` SET tmp_convert_enum='0' WHERE $field='0';";
676
                                $DB->query($query) or die("0.7 update $table to set correct values to alod enum01 $field " . $LANG["update"][90] . $DB->error());
677
678
                                $query = "ALTER TABLE `$table` DROP `$field` ";
679
                                $DB->query($query) or die("0.7 alter $table drop tmp enum field " . $LANG["update"][90] . $DB->error());
680
681
                                $query = "ALTER TABLE `$table` CHANGE `tmp_convert_enum` `$field` SMALLINT NOT NULL DEFAULT '0'";
682
                                $DB->query($query) or die("0.7 alter $table move enum $field to tmp field " . $LANG["update"][90] . $DB->error());
683
684
                                if ($table != "glpi_config" && $table != "glpi_profiles") {
685
                                        $query = "ALTER TABLE `$table` ADD KEY (`$field`)";
686
                                        $DB->query($query) or die("0.7 alter $table add deleted key " . $LANG["update"][90] . $DB->error());
687
                                }
688
                        }
689
                }
690
        }
691
692
        $enumYN["N"]["glpi_contracts"][] = "monday"; // N
693
        $enumYN["N"]["glpi_contracts"][] = "saturday"; // N
694
        $enumYN["Y"]["glpi_device_drive"][] = "is_writer"; // Y 
695
        $enumYN["N"]["glpi_device_control"][] = "raid"; // Y -> N
696
        $enumYN["Y"]["glpi_device_power"][] = "atx"; // Y
697
        $enumYN["N"]["glpi_licenses"][] = "oem"; // N
698
        $enumYN["Y"]["glpi_licenses"][] = "buy"; // Y
699
        $enumYN["N"]["glpi_software"][] = "is_update"; // N
700
        $enumYN["Y"]["glpi_type_docs"][] = "upload"; // Y
701
702
        $deleted_tables = array (
703
                "glpi_computers",
704
                "glpi_networking",
705
                "glpi_printers",
706
                "glpi_monitors",
707
                "glpi_peripherals",
708
                "glpi_software",
709
                "glpi_cartridges_type",
710
                "glpi_contracts",
711
                "glpi_contacts",
712
                "glpi_enterprises",
713
                "glpi_docs",
714
                "glpi_phones",
715
                "glpi_consumables_type"
716
        );
717
718
        foreach ($deleted_tables as $table) {
719
                if (!isset ($enum01[$table])) {
720
                        $enum01[$table] = array ();
721
                }
722
                $enumYN["N"][$table][] = "deleted";
723
        }
724
725
        foreach ($enumYN as $default => $tmptbl)
726
                foreach ($tmptbl as $table => $fields) {
727
                        foreach ($fields as $key => $field) {
728
                                if (FieldExists($table, $field)) {
729
730
                                        $newdef = 0;
731
                                        if ($default == "Y") {
732
                                                $newdef = 1;
733
                                        }
734
735
                                        $query = "ALTER TABLE `$table` ADD `tmp_convert_enum` SMALLINT NOT NULL DEFAULT '$newdef' AFTER `$field` ";
736
                                        $DB->query($query) or die("0.7 alter $table add new field tmp_convert_enum " . $LANG["update"][90] . $DB->error());
737
738
                                        $query = "UPDATE `$table` SET tmp_convert_enum='1' WHERE $field='Y';";
739
                                        $DB->query($query) or die("0.7 update $table to set correct values to alod enum01 $field " . $LANG["update"][90] . $DB->error());
740
                                        $query = "UPDATE `$table` SET tmp_convert_enum='0' WHERE $field='N';";
741
                                        $DB->query($query) or die("0.7 update $table to set correct values to alod enum01 $field " . $LANG["update"][90] . $DB->error());
742
743
                                        $query = "ALTER TABLE `$table` DROP `$field` ";
744
                                        $DB->query($query) or die("0.7 alter $table drop tmp enum field " . $LANG["update"][90] . $DB->error());
745
746
                                        $query = "ALTER TABLE `$table` CHANGE `tmp_convert_enum` `$field` SMALLINT NOT NULL DEFAULT '$newdef'";
747
                                        $DB->query($query) or die("0.7 alter $table move enum $field to tmp field " . $LANG["update"][90] . $DB->error());
748
749
                                        if ($field == "deleted" || $table == "glpi_licenses" || $table == "glpi_software" || $table == "glpi_type_docs") {
750
                                                $query = "ALTER TABLE `$table` ADD KEY (`$field`)";
751
                                                $DB->query($query) or die("0.7 alter $table add deleted key " . $LANG["update"][90] . $DB->error());
752
                                        }
753
                                }
754
                        }
755
                }
756
757
        if (FieldExists("glpi_tracking", "is_group")) {
758
                $query = "ALTER TABLE glpi_tracking DROP `is_group`";
759
                $DB->query($query) or die("0.7 drop is_group from tracking " . $LANG["update"][90] . $DB->error());
760
        }
761
762
        $enumYesNo["glpi_kbitems"][] = "faq";
763
        $enumYesNo["glpi_tracking"][] = "emailupdates";
764
        $enumYesNo["glpi_users"][] = "tracking_order";
765
766
        foreach ($enumYesNo as $table => $fields) {
767
                foreach ($fields as $key => $field) {
768
                        if (FieldExists($table, $field)) {
769
770
                                $query = "ALTER TABLE `$table` ADD `tmp_convert_enum` SMALLINT NOT NULL DEFAULT '0' AFTER `$field` ";
771
                                $DB->query($query) or die("0.7 alter $table add new field tmp_convert_enum " . $LANG["update"][90] . $DB->error());
772
773
                                $query = "UPDATE `$table` SET tmp_convert_enum='1' WHERE $field='yes';";
774
                                $DB->query($query) or die("0.7 update $table to set correct values to alod enum01 $field " . $LANG["update"][90] . $DB->error());
775
                                $query = "UPDATE `$table` SET tmp_convert_enum='0' WHERE $field='no';";
776
                                $DB->query($query) or die("0.7 update $table to set correct values to alod enum01 $field " . $LANG["update"][90] . $DB->error());
777
778
                                $query = "ALTER TABLE `$table` DROP `$field` ";
779
                                $DB->query($query) or die("0.7 alter $table drop tmp enum field " . $LANG["update"][90] . $DB->error());
780
781
                                $query = "ALTER TABLE `$table` CHANGE `tmp_convert_enum` `$field` SMALLINT NOT NULL DEFAULT '0'";
782
                                $DB->query($query) or die("0.7 alter $table move enum $field to tmp field " . $LANG["update"][90] . $DB->error());
783
784
                                if ($table == "glpi_kbitems") {
785
                                        $query = "ALTER TABLE `$table` ADD KEY (`$field`)";
786
                                        $DB->query($query) or die("0.7 alter $table add deleted key " . $LANG["update"][90] . $DB->error());
787
                                }
788
                        }
789
                }
790
        }
791
        // Reste enum : glpi_tracking.status et glpi_device_gfxcard.interface
792
        if (FieldExists("glpi_tracking", "status")) {
793
                $query = "ALTER TABLE `glpi_tracking` CHANGE `status` `status` VARCHAR( 255 ) DEFAULT 'new'";
794
                $DB->query($query) or die("0.7 alter status from tracking " . $LANG["update"][90] . $DB->error());
795
        }
796
797
        if (FieldExists("glpi_device_gfxcard", "interface")) {
798
                $query = "ALTER TABLE `glpi_device_gfxcard` CHANGE `interface` `interface` VARCHAR( 255 ) NULL DEFAULT 'PCI-X'";
799
                $DB->query($query) or die("0.7 alter interface from glpi_device_gfxcard " . $LANG["update"][90] . $DB->error());
800
        }
801
802
        if (!TableExists("glpi_rules_actions")) {
803
                $query = "CREATE TABLE `glpi_rules_actions` (
804
                                                  `ID` int(11) NOT NULL auto_increment,
805
                                                  `FK_rules` int(11) NOT NULL DEFAULT '0',
806
                                                  `action_type` varchar(255) NOT NULL,
807
                                                  `field` varchar(255) NOT NULL,
808
                                                  `value` varchar(255) NOT NULL,
809
                                                  PRIMARY KEY  (`ID`),
810
                                                  KEY `FK_rules` (`FK_rules`)
811
                                                ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
812
                                                ";
813
                $DB->query($query) or die("0.7 add table glpi_rules_descriptions" . $LANG["update"][90] . $DB->error());
814
815
        }
816
817
        if (!TableExists("glpi_rules_criterias")) {
818
                $query = "CREATE TABLE `glpi_rules_criterias` (
819
                                  `ID` int(11) NOT NULL auto_increment,
820
                                  `FK_rules` int(11) NOT NULL DEFAULT '0',
821
                                  `criteria` varchar(255) NOT NULL,
822
                                  `condition` smallint(4) NOT NULL DEFAULT '0',
823
                                  `pattern` varchar(255) NOT NULL,
824
                                  PRIMARY KEY  (`ID`),
825
                                KEY `FK_rules` (`FK_rules`)
826
                                ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;";
827
                $DB->query($query) or die("0.7 add table glpi_rules_criterias" . $LANG["update"][90] . $DB->error());
828
829
        }
830
831
        if (!TableExists("glpi_rules_descriptions")) {
832
                $query = "CREATE TABLE `glpi_rules_descriptions` (
833
                  `ID` int(11) NOT NULL auto_increment,
834
                  `FK_entities` int(11) NOT NULL default '-1',
835
                  `rule_type` smallint(4) NOT NULL DEFAULT '0',
836
                  `ranking` int(11) NOT NULL DEFAULT '0',
837
                  `name` varchar(255) NOT NULL,
838
                  `description` text NOT NULL,
839
                  `match` varchar(255) NOT NULL,
840
                  PRIMARY KEY  (`ID`)
841
                ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;";
842
                $DB->query($query) or die("0.7 add table glpi_rules_actions" . $LANG["update"][90] . $DB->error());
843
844
        }
845
846
        if (!FieldExists("glpi_config", "use_cache")) {
847
                $query = "ALTER TABLE `glpi_config` ADD `use_cache` SMALLINT NOT NULL DEFAULT '1' AFTER `debug` ;";
848
                $DB->query($query) or die("0.7 alter config add use_cache " . $LANG["update"][90] . $DB->error());
849
        }
850
851
        if (TableExists("glpi_rules_descriptions")) {
852
                //If no rule exists, then create a default one
853
                $query = "SELECT ID from glpi_rules_descriptions";
854
                $result = $DB->query($query);
855
                if ($DB->numrows($result) ==0)
856
                {
857
                        //Insert rule to affect machines in the Root entity
858
                        $query ="INSERT INTO `glpi_rules_descriptions` (`FK_entities`, `rule_type`, `ranking`, `name`, `description`, `match`) VALUES (-1, 0, 0, 'Root', '', 'AND');";
859
                        $DB->query($query) or die("0.7 add default ocs affectation rule" . $LANG["update"][90] . $DB->error());
860
                
861
                        $query = "SELECT ID from glpi_rules_descriptions WHERE name='Root' AND rule_type=".RULE_OCS_AFFECT_COMPUTER;
862
                        $result = $DB->query($query);
863
                        //Get the defaut rule's ID
864
                        $datas = $DB->fetch_array($result);
865
        
866
                        $query="INSERT INTO `glpi_rules_criterias` (`FK_rules`, `criteria`, `condition`, `pattern`) VALUES (".$datas["ID"].", 'TAG', 0, '*');";
867
                        $DB->query($query) or die("0.7 add default ocs criterias" . $LANG["update"][90] . $DB->error());
868
        
869
                        $query="INSERT INTO `glpi_rules_actions` (`FK_rules`, `action_type`, `field`, `value`) VALUES (".$datas["ID"].", 'assign', 'FK_entities', '0');";
870
                        $DB->query($query) or die("0.7 add default ocs actions" . $LANG["update"][90] . $DB->error());
871
872
                        //Insert rule to affect users from LDAP to the root entity
873
                        $query ="INSERT INTO `glpi_rules_descriptions` (`FK_entities`, `rule_type`, `ranking`, `name`, `description`, `match`) VALUES (-1, ".RULE_AFFECT_RIGHTS.", 1, 'Root', '', 'OR');";
874
                        $DB->query($query) or die("0.7 add default right affectation rule" . $LANG["update"][90] . $DB->error());
875
876
                        $query = "SELECT ID from glpi_rules_descriptions WHERE name='Root' AND rule_type=".RULE_AFFECT_RIGHTS;
877
                        $result = $DB->query($query);
878
                        //Get the defaut rule's ID
879
                        $datas = $DB->fetch_array($result);
880
        
881
                        //Criterias
882
                        $query="INSERT INTO `glpi_rules_criterias` (`FK_rules`, `criteria`, `condition`, `pattern`) VALUES (".$datas["ID"].", 'uid', 0, '*');";
883
                        $DB->query($query) or die("0.7 add default right criterias" . $LANG["update"][90] . $DB->error());
884
885
                        $query="INSERT INTO `glpi_rules_criterias` (`FK_rules`, `criteria`, `condition`, `pattern`) VALUES (".$datas["ID"].", 'samaccountname', 0, '*');";
886
                        $DB->query($query) or die("0.7 add default right criterias" . $LANG["update"][90] . $DB->error());
887
888
                        $query="INSERT INTO `glpi_rules_criterias` (`FK_rules`, `criteria`, `condition`, `pattern`) VALUES (".$datas["ID"].", 'MAIL_EMAIL', 0, '*');";
889
                        $DB->query($query) or die("0.7 add default right criterias" . $LANG["update"][90] . $DB->error());
890
        
891
                        //Action
892
                        $query="INSERT INTO `glpi_rules_actions` (`FK_rules`, `action_type`, `field`, `value`) VALUES (".$datas["ID"].", 'assign', 'FK_entities', '0');";
893
                        $DB->query($query) or die("0.7 add default right actions" . $LANG["update"][90] . $DB->error());
894
895
                }
896
        }
897
        
898
        if (!TableExists("glpi_ocs_admin_link")){
899
                        $query = "CREATE TABLE `glpi_ocs_admin_link` (
900
                          `ID` int(10) unsigned NOT NULL auto_increment,
901
                          `glpi_column` varchar(255) NULL,
902
                          `ocs_column` varchar(255) NULL,
903
                          `ocs_server_id` int(11) NOT NULL,
904
                          PRIMARY KEY  (`ID`)
905
                        ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;";
906
                        $DB->query($query) or die("0.7 add table glpi_ocs_admin_link" . $LANG["update"][90] . $DB->error());
907
        }
908
909
        // Add title to tracking
910
        if (!FieldExists("glpi_tracking", "name")) {
911
                $query = "ALTER TABLE `glpi_tracking` ADD `name` varchar(255) NULL AFTER `FK_entities`";
912
                $DB->query($query) or die("0.7 alter tracking add name" . $LANG["update"][90] . $DB->error());
913
                $query="UPDATE glpi_tracking SET name=SUBSTRING(REPLACE(contents,'\n',' '),1,50);";
914
                $DB->query($query) or die("0.7 update title of glpi_tracking" . $LANG["update"][90] . $DB->error());
915
        }
916
        if (FieldExists("glpi_reminder", "title")) {
917
                $query = "ALTER TABLE `glpi_reminder` CHANGE `title` `title` VARCHAR( 255 ) NULL DEFAULT NULL ";
918
                $DB->query($query) or die("0.7 alter title in glpi_reminder" . $LANG["update"][90] . $DB->error());
919
        }
920
921
        if (!TableExists("glpi_rules_ldap_parameters")){
922
                        $query = "CREATE TABLE `glpi_rules_ldap_parameters` (
923
                          `ID` int(11) NOT NULL auto_increment,
924
                            `name` varchar(255) NOT NULL,
925
                            `value` varchar(255) NOT NULL,
926
                            `rule_type` smallint(6) NOT NULL default '1',
927
                             PRIMARY KEY  (`ID`)
928
                          ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;";
929
                        $DB->query($query) or die("0.7 add table glpi_rules_ldap_parameters" . $LANG["update"][90] . $DB->error());
930
        
931
                $query = "INSERT INTO `glpi_rules_ldap_parameters` (`ID`, `name`, `value`, `rule_type`) VALUES 
932
                                        (1, '(LDAP)Organization', 'o', 1),
933
                                        (2, '(LDAP)Common Name', 'cn', 1),
934
                                        (3, '(LDAP)Department Number', 'departmentnumber', 1),
935
                                        (4, '(LDAP)Email', 'mail', 1),
936
                                        (5, 'Object Class', 'objectclass', 1),                
937
                                        (6, '(LDAP)User ID', 'uid', 1),
938
                                        (7, '(LDAP)Telephone Number', 'phone', 1),
939
                                        (8, '(LDAP)Employee Number', 'employeenumber', 1),
940
                                        (9, '(LDAP)Manager', 'manager', 1),
941
                                        (10, '(LDAP)DistinguishedName', 'dn', 1),
942
                                        (11, '(AD)DistinguishedName', 'distinguishedname', 1),
943
                                        (12, '(AD)User ID', 'samaccountname', 1);";
944
                                        
945
                $DB->query($query) or die("0.7 add standard values to glpi_rules_ldap_parameters " . $LANG["update"][90] . $DB->error());
946
        
947
        }
948
949
        if (!FieldExists("glpi_config", "helpdeskhelp_url")) {
950
                $query = "ALTER TABLE `glpi_config` ADD `helpdeskhelp_url` VARCHAR( 255 ) NULL DEFAULT NULL ";
951
                $DB->query($query) or die("0.7 add helpdeskhelp_url in glpi_config" . $LANG["update"][90] . $DB->error());
952
        }        
953
        if (!FieldExists("glpi_config", "centralhelp_url")) {
954
                $query = "ALTER TABLE `glpi_config` ADD `centralhelp_url` VARCHAR( 255 ) NULL DEFAULT NULL ";
955
                $DB->query($query) or die("0.7 add centralhelp_url in glpi_config" . $LANG["update"][90] . $DB->error());
956
        }        
957
958
        if (!FieldExists("glpi_config", "default_rubdoc_tracking")) {
959
                $query = "ALTER TABLE `glpi_config` ADD `default_rubdoc_tracking` int(11) default '0' ";
960
                $DB->query($query) or die("0.7 add default_rubdoc_tracking in glpi_config" . $LANG["update"][90] . $DB->error());
961
        }        
962
963
        if (!FieldExists("glpi_users", "deleted")) {
964
                $query = "ALTER TABLE `glpi_users` ADD `deleted` SMALLINT NOT NULL DEFAULT 0 ";
965
                $DB->query($query) or die("0.7 add deleted in glpi_users" . $LANG["update"][90] . $DB->error());
966
                $query = "ALTER TABLE `glpi_users` ADD KEY (`deleted`)";
967
                $DB->query($query) or die("0.7 add key deleted in glpi_users" . $LANG["update"][90] . $DB->error());
968
        }        
969
970
        if (!FieldExists("glpi_reservation_item", "active")) {
971
                $query = "ALTER TABLE `glpi_reservation_item` ADD `active` smallint(6) NOT NULL default '1' ";
972
                $DB->query($query) or die("0.7 add active in glpi_reservation_item" . $LANG["update"][90] . $DB->error());
973
        }
974
975
        if (!FieldExists("glpi_tracking_planning", "state")) {
976
                $query = "ALTER TABLE `glpi_tracking_planning` ADD `state` smallint(6) NOT NULL default '1' ";
977
                $DB->query($query) or die("0.7 add state in glpi_tracking_planning" . $LANG["update"][90] . $DB->error());
978
                $query="UPDATE `glpi_tracking_planning` SET state='2' WHERE end < NOW()";
979
                $DB->query($query) or die("0.7 update values of state in glpi_tracking_planning" . $LANG["update"][90] . $DB->error());
980
        }
981
982
        if (!FieldExists("glpi_reminder", "state")) {
983
                $query = "ALTER TABLE `glpi_reminder` ADD `state` smallint(6) NOT NULL default '0' ";
984
                $DB->query($query) or die("0.7 add state in glpi_reminder" . $LANG["update"][90] . $DB->error());
985
        }
986
987
988
        if (!FieldExists("glpi_tracking", "recipient")) {
989
                $query = "ALTER TABLE `glpi_tracking` ADD `recipient` INT NOT NULL DEFAULT '0' AFTER `author` ";
990
                $DB->query($query) or die("0.7 add recipient in glpi_tracking" . $LANG["update"][90] . $DB->error());
991
                $query = "UPDATE `glpi_tracking` SET recipient = author";
992
                $DB->query($query) or die("0.7 update recipient in glpi_tracking" . $LANG["update"][90] . $DB->error());
993
                
994
        }
995
        if (!isIndex("glpi_tracking","recipient")){
996
                $query="ALTER TABLE `glpi_tracking` ADD INDEX ( `recipient` ) ";
997
                $DB->query($query) or die("0.7 add recipient index in glpi_tracking" . $LANG["update"][90] . $DB->error());
998
        }
999
        
1000
        if (!FieldExists("glpi_ocs_config", "deconnection_behavior")) {
1001
                $query = "ALTER TABLE `glpi_ocs_config` ADD COLUMN `deconnection_behavior` VARCHAR(45)";
1002
                $DB->query($query) or die("0.7 add state in glpi_reminder" . $LANG["update"][90] . $DB->error());
1003
        }
1004
1005
        // Rights
1006
        if (!FieldExists("glpi_profiles", "search_config_global")) {
1007
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `search_config_global` char(1) default NULL AFTER `search_config`";
1008
                $DB->query($query) or die("0.7 add search_config_global in glpi_profiles" . $LANG["update"][90] . $DB->error());
1009
                $query = "UPDATE `glpi_profiles` SET `search_config_global` = search_config";
1010
                $DB->query($query) or die("0.7 update search_config_global values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1011
                $query = "UPDATE `glpi_profiles` SET `search_config` = 'w' WHERE interface='central'";
1012
                $DB->query($query) or die("0.7 update search_confi values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1013
        }        
1014
        if (!FieldExists("glpi_profiles", "entity")) {
1015
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `entity` char(1) default NULL AFTER `group`";
1016
                $DB->query($query) or die("0.7 add entity in glpi_profiles" . $LANG["update"][90] . $DB->error());
1017
                $query = "UPDATE `glpi_profiles` SET `entity` = config";
1018
                $DB->query($query) or die("0.7 update entity values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1019
        }
1020
        if (!FieldExists("glpi_profiles", "entity_dropdown")) {
1021
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `entity_dropdown` char(1) default NULL AFTER `dropdown`";
1022
                $DB->query($query) or die("0.7 add entity_dropdown in glpi_profiles" . $LANG["update"][90] . $DB->error());
1023
                $query = "UPDATE `glpi_profiles` SET `entity_dropdown` = dropdown";
1024
                $DB->query($query) or die("0.7 update entity_dropdown values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1025
        }
1026
        if (!FieldExists("glpi_profiles", "sync_ocsng")) {
1027
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `sync_ocsng` char(1) default NULL AFTER `ocsng`";
1028
                $DB->query($query) or die("0.7 add sync_ocsng in glpi_profiles" . $LANG["update"][90] . $DB->error());
1029
                $query = "UPDATE `glpi_profiles` SET `sync_ocsng` = ocsng";
1030
                $DB->query($query) or die("0.7 update sync_ocsng values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1031
        }
1032
        if (!FieldExists("glpi_profiles", "view_ocsng")) {
1033
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `view_ocsng` char(1) default NULL AFTER `ocsng`";
1034
                $DB->query($query) or die("0.7 add view_ocsng in glpi_profiles" . $LANG["update"][90] . $DB->error());
1035
                $query = "UPDATE `glpi_profiles` SET `view_ocsng` = 'r' WHERE interface='central'";
1036
                $DB->query($query) or die("0.7 update view_ocsng values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1037
        }
1038
        if (!FieldExists("glpi_profiles", "rule_ldap")) {
1039
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `rule_ldap` char(1) default NULL AFTER `config`";
1040
                $DB->query($query) or die("0.7 add rule_ldap in glpi_profiles" . $LANG["update"][90] . $DB->error());
1041
                $query = "UPDATE `glpi_profiles` SET `rule_ldap` = config";
1042
                $DB->query($query) or die("0.7 update rule_ldap values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1043
        }
1044
        if (!FieldExists("glpi_profiles", "rule_ocs")) {
1045
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `rule_ocs` char(1) default NULL AFTER `config`";
1046
                $DB->query($query) or die("0.7 add rule_ocs in glpi_profiles" . $LANG["update"][90] . $DB->error());
1047
                $query = "UPDATE `glpi_profiles` SET `rule_ocs` = config";
1048
                $DB->query($query) or die("0.7 update rule_ocs values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1049
        }
1050
        if (!FieldExists("glpi_profiles", "rule_tracking")) {
1051
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `rule_tracking` char(1) default NULL AFTER `config`";
1052
                $DB->query($query) or die("0.7 add rule_tracking in glpi_profiles" . $LANG["update"][90] . $DB->error());
1053
                $query = "UPDATE `glpi_profiles` SET `rule_tracking` = config";
1054
                $DB->query($query) or die("0.7 update rule_tracking values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1055
        }
1056
        if (!FieldExists("glpi_profiles", "update_followups")) {
1057
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `update_followups` char(1) default NULL AFTER `observe_ticket`";
1058
                $DB->query($query) or die("0.7 add update_followups in glpi_profiles" . $LANG["update"][90] . $DB->error());
1059
                $query = "UPDATE `glpi_profiles` SET `update_followups` = show_full_ticket";
1060
                $DB->query($query) or die("0.7 update update_followups values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1061
        }
1062
1063
        //Software version's modifications
1064
        //First add the version field to the licenses table        
1065
        if (!FieldExists("glpi_licenses", "version")) {
1066
                $query = "ALTER TABLE `glpi_licenses` ADD COLUMN `version` varchar(255) default NULL AFTER `sID`";
1067
                $DB->query($query) or die("0.7 add version in glpi_licenses" . $LANG["update"][90] . $DB->error());
1068
1069
                $sql = "SELECT ID, version FROM glpi_software";
1070
                $result = $DB->query($sql);
1071
                if ($DB->numrows($result)>0)
1072
                {
1073
                        while ($soft = $DB->fetch_array($result))
1074
                        {
1075
                                $sql = "UPDATE glpi_licenses SET version='".$soft["version"]."' WHERE sID=".$soft["ID"]; 
1076
                                $DB->query($sql);
1077
                        }
1078
                }
1079
1080
        }
1081
        
1082
        
1083
        if (FieldExists("glpi_software", "version")) {
1084
                $query = "ALTER TABLE `glpi_software` DROP `version`";
1085
                $DB->query($query) or die("0.7 delete version in glpi_software" . $LANG["update"][90] . $DB->error());
1086
        }
1087
1088
        // CLean multiple free / global licenses 
1089
        
1090
        $query=        "SELECT count(*) as CPT, glpi_licenses.*
1091
        FROM `glpi_licenses`
1092
        WHERE `serial` = 'global' OR `serial` = 'free'
1093
        GROUP BY sID, serial, expire, buy
1094
        HAVING CPT > 1";
1095
        $result=$DB->query($query) or die("0.7 check multiple free global licenses " . $LANG["update"][90] . $DB->error());
1096
        if ($DB->numrows($result)){
1097
                while ($data=$DB->fetch_array($result)){
1098
                        // Get licenses AND installations
1099
                        $expire_search="";
1100
                        if ($data['expire']=="")
1101
                                $expire_search=" AND glpi_licenses.expire IS NULL";
1102
                        else $expire_search=" AND glpi_licenses.expire = '".$data['expire']."'";
1103
1104
                        $query="SELECT glpi_licenses.ID FROM glpi_licenses 
1105
                                WHERE serial ='".$data['serial']."' AND sID ='".$data['sID']."' $expire_search AND buy ='".$data['buy']."'";
1106
                        $result2=$DB->query($query);
1107
                        if ($DB->numrows($result2)){
1108
                                $licIDs=array();
1109
                                while ($data2=$DB->fetch_array($result2)){
1110
                                        $licIDs[]=$data2['ID'];
1111
                                }
1112
                                if (count($licIDs)>1){
1113
                                        $refID=array_pop($licIDs);
1114
                                        $query="UPDATE glpi_inst_software SET license = '$refID' WHERE license IN (";
1115
                                        $first=true;
1116
                                        foreach ($licIDs as $id){
1117
                                                if ($first) $first=false;
1118
                                                else $query.=",";
1119
                                                $query.=$id;
1120
                                                $query_del="DELETE FROM glpi_licenses WHERE ID = $id";
1121
                                                $DB->query($query_del);
1122
                                        }
1123
                                        $query.=")";
1124
                                        $DB->query($query);
1125
                                }
1126
                        }
1127
                }
1128
        }
1129
        
1130
        // Clean multiple reservation item
1131
        $query=        "SELECT count(*) as CPT, glpi_reservation_item.*
1132
        FROM `glpi_reservation_item`
1133
        GROUP BY device_type, id_device
1134
        HAVING CPT > 1";
1135
        $result=$DB->query($query) or die("0.7 check multiple free global licenses " . $LANG["update"][90] . $DB->error());
1136
        if ($DB->numrows($result)){
1137
                while ($data=$DB->fetch_array($result)){
1138
                        $refID=$data['ID'];
1139
                        // Get duplicates
1140
                        $query2="SELECT * FROM `glpi_reservation_item` WHERE device_type='".$data['device_type']."' AND id_device='".$data['id_device']."' AND ID <> '$refID'";
1141
                        $result2=$DB->query($query2);
1142
                        if ($DB->numrows($result2)){
1143
                                while ($data2=$DB->fetch_array($result2)){
1144
                                        // Update réservations
1145
                                        $query="UPDATE glpi_reservation_resa SET id_item='$refID' WHERE id_item='".$data2['ID']."'";
1146
                                        $DB->query($query);
1147
                                        // Delete Reservation Item 
1148
                                        $query="DELETE FROM `glpi_reservation_item` WHERE ID = '".$data2['ID']."'";
1149
                                        $DB->query($query);
1150
                                }
1151
                        }
1152
                        
1153
                }
1154
        }
1155
1156
        if (!FieldExists("glpi_networking_ports", "netmask")) {
1157
                $query = "ALTER TABLE `glpi_networking_ports` ADD COLUMN `netmask` VARCHAR( 255 ) NULL DEFAULT NULL";
1158
                $DB->query($query) or die("0.7 add netmask in glpi_networking_ports" . $LANG["update"][90] . $DB->error());
1159
        }
1160
1161
        if (!FieldExists("glpi_networking_ports", "gateway")) {
1162
                $query = "ALTER TABLE `glpi_networking_ports` ADD COLUMN `gateway` VARCHAR( 255 ) NULL DEFAULT NULL";
1163
                $DB->query($query) or die("0.7 add gateway in glpi_networking_ports" . $LANG["update"][90] . $DB->error());
1164
        }
1165
        if (!FieldExists("glpi_networking_ports", "subnet")) {
1166
                $query = "ALTER TABLE `glpi_networking_ports` ADD COLUMN subnet VARCHAR( 255 ) NULL DEFAULT NULL";
1167
                $DB->query($query) or die("0.7 add subnet in glpi_networking_ports" . $LANG["update"][90] . $DB->error());
1168
        }
1169
        if (FieldExists("glpi_networking_ports", "name")) {
1170
                $query = "ALTER TABLE `glpi_networking_ports` CHANGE `name` `name` VARCHAR( 255 ) NULL DEFAULT NULL ,
1171
                                CHANGE `ifaddr` `ifaddr` VARCHAR( 255 ) NULL DEFAULT NULL ,
1172
                                CHANGE `ifmac` `ifmac` VARCHAR( 255 ) NULL DEFAULT NULL ";
1173
                $DB->query($query) or die("0.7 alter networking_ports fields" . $LANG["update"][90] . $DB->error());
1174
        }
1175
        // mailgate
1176
        if (!TableExists("glpi_mailgate")) {
1177
                $query = "CREATE TABLE `glpi_mailgate` (
1178
                `ID` int(11) NOT NULL auto_increment,
1179
                `name` varchar(255) collate utf8_unicode_ci default NULL,
1180
                `FK_entities` int(11) NOT NULL default '0',
1181
                `host` varchar(255) collate utf8_unicode_ci NOT NULL,
1182
                `login` varchar(255) collate utf8_unicode_ci NOT NULL,
1183
                `password` varchar(255) collate utf8_unicode_ci NOT NULL,
1184
                PRIMARY KEY  (`ID`)
1185
                ) ENGINE=MyISAM ;";
1186
                $DB->query($query) or die("0.7 add glpi_mailgate" . $LANG["update"][90] . $DB->error());
1187
                $query = "INSERT INTO `glpi_display` ( `type`, `num`, `rank`, `FK_users`) VALUES (35, 80, 1, 0);";
1188
                $DB->query($query) or die("0.7 add glpi_mailgate display values" . $LANG["update"][90] . $DB->error());
1189
        }
1190
1191
        if (!FieldExists("glpi_computers", "os_license_number")) {
1192
                $query = "ALTER TABLE `glpi_computers` ADD COLUMN `os_license_number` VARCHAR( 255 ) NULL DEFAULT NULL AFTER os_sp;";
1193
                $DB->query($query) or die("0.7 alter glpi_computers field" . $LANG["computers"][10] . $DB->error());
1194
        }
1195
1196
        if (!FieldExists("glpi_computers", "os_license_id")) {
1197
                $query = "ALTER TABLE `glpi_computers` ADD COLUMN `os_license_id` VARCHAR( 255 ) NULL DEFAULT NULL AFTER os_license_number;";
1198
                $DB->query($query) or die("0.7 alter glpi_computers field" . $LANG["computers"][10] . $DB->error());
1199
        }
1200
1201
        if (!FieldExists("glpi_ocs_config", "import_os_serial")) {
1202
                $query = "ALTER TABLE `glpi_ocs_config` ADD `import_os_serial` INT( 2 ) NULL AFTER `import_registry` ;";
1203
                $DB->query($query) or die("0.7 alter glpi_computers field import_ocs_serial " . $DB->error());
1204
        }
1205
1206
        if (!FieldExists("glpi_auth_ldap", "use_dn")) {
1207
                $query = "ALTER TABLE `glpi_auth_ldap` ADD `use_dn` INT( 1 ) NOT NULL DEFAULT '1';";
1208
                $DB->query($query) or die("0.7 alter glpi_computers field use_dn " . $DB->error());
1209
        }
1210
1211
        if (!FieldExists("glpi_config", "monitors_management_restrict")) {
1212
                $query = "ALTER TABLE `glpi_config` ADD `monitors_management_restrict` INT( 1 ) NOT NULL DEFAULT '2';";
1213
                $DB->query($query) or die("0.7 alter glpi_computers field monitors_management_restrict " . $DB->error());
1214
        }
1215
1216
        if (!FieldExists("glpi_config", "phones_management_restrict")) {
1217
                $query = "ALTER TABLE `glpi_config` ADD `phones_management_restrict` INT( 1 ) NOT NULL DEFAULT '2';";
1218
                $DB->query($query) or die("0.7 alter glpi_computers field phones_management_restrict " . $DB->error());
1219
        }
1220
1221
        if (!FieldExists("glpi_config", "peripherals_management_restrict")) {
1222
                $query = "ALTER TABLE `glpi_config` ADD `peripherals_management_restrict` INT( 1 ) NOT NULL DEFAULT '2';";
1223
                $DB->query($query) or die("0.7 alter glpi_computers field peripherals_management_restrict " . $DB->error());
1224
        }
1225
        
1226
        if (!FieldExists("glpi_config", "printers_management_restrict")) {
1227
                $query = "ALTER TABLE `glpi_config` ADD `printers_management_restrict` INT( 1 ) NOT NULL DEFAULT '2';";
1228
                $DB->query($query) or die("0.7 alter glpi_computers field printers_management_restrict " . $DB->error());
1229
        }
1230
1231
        if (!FieldExists("glpi_config", "licenses_management_restrict")) {
1232
                $query = "ALTER TABLE `glpi_config` ADD `licenses_management_restrict` INT( 1 ) NOT NULL DEFAULT '2';";
1233
                $DB->query($query) or die("0.7 alter glpi_computers field licenses_management_restrict " . $DB->error());
1234
        }
1235
1236
        if (!FieldExists("glpi_config", "license_deglobalisation")) {
1237
                $query = "ALTER TABLE `glpi_config` ADD `license_deglobalisation` INT( 1 ) NOT NULL DEFAULT '1';";
1238
                $DB->query($query) or die("0.7 alter glpi_computers field license_deglobalisation " . $DB->error());
1239
        }
1240
1241
        if (!FieldExists("glpi_registry", "registry_ocs_name")) {
1242
                $query = "ALTER TABLE `glpi_registry` ADD COLUMN `registry_ocs_name` char(255) NOT NULL default ''";
1243
                $DB->query($query) or die("0.7 add registry_ocs_name in glpi_registry" . $LANG["update"][90] . $DB->error());
1244
        }
1245
1246
        if (!FieldExists("glpi_config", "use_errorlog")) {
1247
                $query = "ALTER TABLE `glpi_config` ADD COLUMN `use_errorlog` INT( 1 ) NOT NULL default 0";
1248
                $DB->query($query) or die("0.7 add use_errorlog in glpi_config" . $LANG["update"][90] . $DB->error());
1249
        }
1250
1251
        if (!FieldExists("glpi_config", "glpi_timezone")) {
1252
                $query = "ALTER TABLE `glpi_config` ADD COLUMN `glpi_timezone` VARCHAR( 4 ) NOT NULL default 0";
1253
                $DB->query($query) or die("0.7 add glpi_timezone in glpi_config" . $LANG["update"][90] . $DB->error());
1254
        }
1255
1256
        if (!FieldExists("glpi_auth_ldap", "timezone")) {
1257
                $query = "ALTER TABLE `glpi_auth_ldap` ADD COLUMN `timezone` VARCHAR( 4 ) NOT NULL default 0";
1258
                $DB->query($query) or die("0.7 add timezone in glpi_auth_ldap" . $LANG["update"][90] . $DB->error());
1259
        }
1260
1261
        if (!FieldExists("glpi_ocs_config","glpi_link_enabled"))
1262
        {
1263
                $query="ALTER TABLE `glpi_ocs_config` ADD COLUMN `glpi_link_enabled` int(1) NOT NULL,
1264
                ADD COLUMN `link_ip` int(1) NOT NULL,
1265
                ADD COLUMN `link_name` int(1) NOT NULL,
1266
                ADD COLUMN `link_mac_address` int(1) NOT NULL,
1267
                  ADD COLUMN `link_serial` int(1) NOT NULL,
1268
                  ADD COLUMN `link_if_status` int(11) NOT NULL default '0'";
1269
                  $DB->query($query) or die("0.7 add glpi_link fields in glpi_ocs_config" . $LANG["update"][90] . $DB->error());
1270
        }
1271
        $intnull=array("glpi_alerts" => array("device_type","FK_device","type"),
1272
                "glpi_cartridges_type"=>array("tech_num"),
1273
                "glpi_computers"=>array("FK_users","FK_groups"),
1274
                "glpi_consumables_type"=>array("tech_num"),
1275
                "glpi_contacts"=>array("type"),
1276
                "glpi_device_case"=>array("type"),
1277
                "glpi_device_control"=>array("interface"),
1278
                "glpi_device_drive"=>array("interface"),
1279
                "glpi_dropdown_kbcategories"=>array("level"),
1280
                "glpi_dropdown_locations"=>array("level"),
1281
                "glpi_dropdown_tracking_category"=>array("level"),
1282
                "glpi_entities"=>array("level"),
1283
                "glpi_infocoms"=>array("FK_enterprise","budget"),
1284
                "glpi_monitors"=>array("type","model","FK_users","FK_groups"),
1285
                "glpi_networking"=>array("type","model","firmware","FK_users","FK_groups"),
1286
                "glpi_networking_ports"=>array("iface","netpoint"),
1287
                "glpi_ocs_link"=>array("ocs_server_id"),
1288
                "glpi_peripherals"=>array("model","FK_users","FK_groups"),
1289
                "glpi_phones"=>array("model","FK_users","FK_groups"),
1290
                "glpi_printers"=>array("type","model","FK_users","FK_groups"),
1291
                "glpi_software"=>array("location","platform","FK_users","FK_groups"),
1292
                "glpi_tracking"=>array("computer"),
1293
                "glpi_users_groups"=>array("FK_users","FK_groups"),
1294
                );
1295
1296
        foreach ($intnull as $table => $fields){
1297
                foreach ($fields as $field){
1298
                        if (FieldExists($table, $field)) {
1299
                                $query = "UPDATE `$table` SET `$field`=0 WHERE $field IS NULL;";
1300
                                $DB->query($query) or die("0.7 update datas in $table for NULL values " . $DB->error());
1301
                                $query = "ALTER TABLE `$table` CHANGE `$field` `$field` INT NOT NULL DEFAULT '0'";
1302
                                $DB->query($query) or die("0.7 alter $field in $table" . $DB->error());
1303
                        } else {
1304
                                // Error field does not exists : correct it
1305
                                $query = "ALTER TABLE `$table` ADD COLUMN `$field` INT NOT NULL DEFAULT '0'";
1306
                                $DB->query($query) or die("0.7 add $field in $table" . $DB->error());
1307
                        }
1308
                }
1309
        }
1310
        // Clean history
1311
        $query = "DELETE FROM `glpi_history` WHERE `linked_action`=0 AND `device_internal_type`=0 AND `old_value`=`new_value` AND `old_value` IS NOT NULL AND `old_value`!='';";
1312
        $DB->query($query) or die("0.7 clean glpi_history " . $DB->error());
1313
1314
        $query = "DELETE FROM `glpi_display` WHERE `type`=".USER_TYPE." AND (`num`=4 );";
1315
        $DB->query($query) or die("0.7 clean glpi_display for glpi_users " . $DB->error());
1316
1317
        // Add fields to block auto updates on linked items
1318
        if (!FieldExists("glpi_config", "autoupdate_link_contact")) {
1319
                $query = "ALTER TABLE `glpi_config` ADD COLUMN `autoupdate_link_contact` smallint(6) NOT NULL default '1'";
1320
                $DB->query($query) or die("0.7 add autoupdate_link_contact in glpi_config" . $LANG["update"][90] . $DB->error());
1321
        }
1322
        if (!FieldExists("glpi_config", "autoupdate_link_user")) {
1323
                $query = "ALTER TABLE `glpi_config` ADD COLUMN `autoupdate_link_user` smallint(6) NOT NULL default '1'";
1324
                $DB->query($query) or die("0.7 add autoupdate_link_user in glpi_config" . $LANG["update"][90] . $DB->error());
1325
        }
1326
        if (!FieldExists("glpi_config", "autoupdate_link_group")) {
1327
                $query = "ALTER TABLE `glpi_config` ADD COLUMN `autoupdate_link_group` smallint(6) NOT NULL default '1'";
1328
                $DB->query($query) or die("0.7 add autoupdate_link_group in glpi_config" . $LANG["update"][90] . $DB->error());
1329
        }
1330
        if (!FieldExists("glpi_config", "autoupdate_link_location")) {
1331
                $query = "ALTER TABLE `glpi_config` ADD COLUMN `autoupdate_link_location` smallint(6) NOT NULL default '1'";
1332
                $DB->query($query) or die("0.7 add autoupdate_link_location in glpi_config" . $LANG["update"][90] . $DB->error());
1333
        }
1334
1335
        // Flat dropdowntree
1336
        if (!FieldExists("glpi_config", "flat_dropdowntree")) {
1337
                $query = "ALTER TABLE `glpi_config` ADD COLUMN `flat_dropdowntree` smallint(6) NOT NULL default '0'";
1338
                $DB->query($query) or die("0.7 add flat_dropdowntree in glpi_config" . $LANG["update"][90] . $DB->error());
1339
        }
1340
        if (FieldExists("glpi_config", "mailing_signature")) {
1341
                $query = "ALTER TABLE `glpi_config` CHANGE `mailing_signature` `mailing_signature` TEXT NULL ";
1342
                $DB->query($query) or die("0.7 alter mailing signature in glpi_config" . $LANG["update"][90] . $DB->error());
1343
        }
1344
1345
//Software categories
1346
        if (!TableExists("glpi_dropdown_software_category"))
1347
        {
1348
                $query="CREATE TABLE `glpi_dropdown_software_category` (
1349
                          `ID` int(11) NOT NULL auto_increment,
1350
                        `name` varchar(255) default NULL,
1351
                          `comments` text,
1352
                          PRIMARY KEY  (`ID`)
1353
                        ) ENGINE=MyISAM ";
1354
                $DB->query($query) or die("0.7 add table glpi_dropdown_software_category" . $LANG["update"][90] . $DB->error());        
1355
        }
1356
        if (!FieldExists("glpi_profiles", "rule_softwarecategories")) {
1357
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `rule_softwarecategories` char(1) default NULL AFTER `rule_ldap`";
1358
                $DB->query($query) or die("0.7 add rule_softwarecategories in glpi_profiles" . $LANG["update"][90] . $DB->error());
1359
                $query = "UPDATE `glpi_profiles` SET `rule_softwarecategories` = config";
1360
                $DB->query($query) or die("0.7 update rule_softwarecategories values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1361
        }
1362
        if (!FieldExists("glpi_software", "category")) {
1363
                $query = "ALTER TABLE `glpi_software` ADD `category` INT( 11 ) NOT NULL DEFAULT '0';";
1364
                $DB->query($query) or die("0.7 alter category in glpi_software" . $LANG["update"][90] . $DB->error());
1365
        }
1366
1367
        if (!FieldExists("glpi_ocs_config", "import_monitor_comments")) {
1368
                $query = "ALTER TABLE `glpi_ocs_config` ADD `import_monitor_comments` INT( 2 ) NOT NULL DEFAULT '0' AFTER `import_ip`";
1369
                $DB->query($query) or die("0.7 alter import_monitor_comments in glpi_ocs_config" . $LANG["update"][90] . $DB->error());
1370
        }
1371
        
1372
        if (!FieldExists("glpi_ocs_config", "import_software_comments")) {
1373
                $query = "ALTER TABLE `glpi_ocs_config` ADD `import_software_comments` INT NOT NULL DEFAULT '0' AFTER `import_monitor_comments`";
1374
                $DB->query($query) or die("0.7 alter import_software_comments in glpi_ocs_config" . $LANG["update"][90] . $DB->error());
1375
        }
1376
1377
        if (FieldExists("glpi_device_gfxcard", "ram")) {
1378
                //Update gfxcard memory management
1379
                $query = "UPDATE glpi_device_gfxcard SET specif_default=ram";
1380
                $DB->query($query) or die("0.7 glpi_device_gfxcard" . $LANG["update"][90] . $DB->error());
1381
                
1382
                $query="ALTER TABLE `glpi_device_gfxcard` DROP `ram`";
1383
                $DB->query($query) or die("0.7 delete 'ram' field from glpi_device_gfxcard" . $LANG["update"][90] . $DB->error());
1384
        }
1385
1386
        if (FieldExists("glpi_config", "list_limit")) {
1387
                //Update gfxcard memory management
1388
                $query = "ALTER TABLE `glpi_config` CHANGE `list_limit` `list_limit` INT NULL DEFAULT '20'";
1389
                $DB->query($query) or die("0.7 alter list_limit in config" . $LANG["update"][90] . $DB->error());
1390
        }
1391
        if (!FieldExists("glpi_config", "list_limit_max")) {
1392
                //Update gfxcard memory management
1393
                $query = "ALTER TABLE `glpi_config` ADD `list_limit_max` INT NOT NULL DEFAULT '50' AFTER `list_limit` ;";
1394
                $DB->query($query) or die("0.7 add list_limit_max in config" . $LANG["update"][90] . $DB->error());
1395
        }
1396
1397
        if (!FieldExists("glpi_users", "list_limit")) {
1398
                //Update gfxcard memory management
1399
                $query = "ALTER TABLE `glpi_users` ADD `list_limit` INT NOT NULL DEFAULT '20' AFTER `language` ;";
1400
                $DB->query($query) or die("0.7 add list_limit_max in users" . $LANG["update"][90] . $DB->error());
1401
        }
1402
1403
        if (!FieldExists("glpi_config", "autoname_entity")) {
1404
                $query = "ALTER TABLE `glpi_config` ADD `autoname_entity` smallint(6) NOT NULL default '1' ";
1405
                $DB->query($query) or die("0.7 add autoname_entity in glpi_config" . $LANG["update"][90] . $DB->error());
1406
        }
1407
1408
        if (!FieldExists("glpi_profiles", "rule_tracking")) {
1409
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `rule_tracking` char(1) default NULL AFTER `config`";
1410
                $DB->query($query) or die("0.7 add rule_tracking in glpi_profiles" . $LANG["update"][90] . $DB->error());
1411
                $query = "UPDATE `glpi_profiles` SET `rule_tracking` = config";
1412
                $DB->query($query) or die("0.7 update rule_tracking values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1413
        }
1414
1415
        if (FieldExists("glpi_profiles", "show_ticket")) {
1416
                $query = "ALTER TABLE `glpi_profiles` CHANGE `show_ticket` `show_all_ticket` CHAR( 1 ) DEFAULT NULL ";
1417
                $DB->query($query) or die("0.7 rename show_ticket to show_all_ticket in glpi_profiles" . $LANG["update"][90] . $DB->error());
1418
        }
1419
1420
        if (!FieldExists("glpi_profiles", "show_assign_ticket")) {
1421
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `show_assign_ticket` char(1) default NULL AFTER `show_all_ticket`";
1422
                $DB->query($query) or die("0.7 add show_assign_ticket in glpi_profiles" . $LANG["update"][90] . $DB->error());
1423
                $query = "UPDATE `glpi_profiles` SET `show_assign_ticket` = show_all_ticket";
1424
                $DB->query($query) or die("0.7 update show_assign_ticket values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1425
        }
1426
1427
1428
        if (!FieldExists("glpi_tracking", "assign_group")) {
1429
                $query = "ALTER TABLE `glpi_tracking` ADD `assign_group` INT NOT NULL DEFAULT '0' AFTER `assign_ent` ;";
1430
                $DB->query($query) or die("0.7 add assign_group in tracking" . $LANG["update"][90] . $DB->error());
1431
                $query = "ALTER TABLE `glpi_tracking` ADD INDEX ( `assign_group` ) ;";
1432
                $DB->query($query) or die("0.7 add index on assign_group in tracking" . $LANG["update"][90] . $DB->error());
1433
        }
1434
1435
        if (!FieldExists("glpi_config", "expand_soft_categorized")) {
1436
                $query = "ALTER TABLE `glpi_config` ADD `expand_soft_categorized` int(1) NOT NULL DEFAULT '1';";
1437
                $DB->query($query) or die("0.7 add expand_soft_categorized in glpi_config" . $LANG["update"][90] . $DB->error());
1438
        }
1439
        if (!FieldExists("glpi_config", "expand_soft_not_categorized")) {
1440
                $query = "ALTER TABLE `glpi_config` ADD `expand_soft_not_categorized` int(1) NOT NULL DEFAULT '1';";
1441
                $DB->query($query) or die("0.7 add expand_soft_not_categorized in glpi_config" . $LANG["update"][90] . $DB->error());
1442
        }
1443
1444
        // Clean history
1445
        $query = "SELECT DISTINCT device_type FROM glpi_history";
1446
        if ($result = $DB->query($query)){
1447
                if ($DB->numrows($result)>0){
1448
                        while ($data = $DB->fetch_array($result)){
1449
                                $query2=" DELETE FROM glpi_history WHERE glpi_history.device_type='".$data['device_type']."' AND
1450
                                        glpi_history.FK_glpi_device NOT IN (SELECT ID FROM ".$LINK_ID_TABLE[$data['device_type']].")";
1451
                                $DB->query($query2);
1452
                        }
1453
                }
1454
        }
1455
1456
        if (!TableExists("glpi_transfers")) {
1457
                $query="CREATE TABLE `glpi_transfers` (
1458
                `ID` int(11) NOT NULL auto_increment,
1459
                `name` varchar(255) NOT NULL,
1460
                `keep_tickets` tinyint(4) NOT NULL default '0',
1461
                `keep_networklinks` tinyint(4) NOT NULL default '0',
1462
                `keep_reservations` tinyint(4) NOT NULL default '0',
1463
                `keep_history` tinyint(4) NOT NULL default '0',
1464
                `keep_devices` tinyint(4) NOT NULL default '0',
1465
                `keep_infocoms` tinyint(4) NOT NULL default '0',
1466
                `keep_dc_monitor` tinyint(4) NOT NULL default '0',
1467
                `clean_dc_monitor` tinyint(4) NOT NULL default '0',
1468
                `keep_dc_phone` tinyint(4) NOT NULL default '0',
1469
                `clean_dc_phone` tinyint(4) NOT NULL default '0',
1470
                `keep_dc_peripheral` tinyint(4) NOT NULL default '0',
1471
                `clean_dc_peripheral` tinyint(4) NOT NULL default '0',
1472
                `keep_dc_printer` tinyint(4) NOT NULL default '0',
1473
                `clean_dc_printer` tinyint(4) NOT NULL default '0',
1474
                `keep_enterprises` tinyint(4) NOT NULL default '0',
1475
                `clean_enterprises` tinyint(4) NOT NULL default '0',
1476
                `keep_contacts` tinyint(4) NOT NULL default '0',
1477
                `clean_contacts` tinyint(4) NOT NULL default '0',
1478
                `keep_contracts` tinyint(4) NOT NULL default '0',
1479
                `clean_contracts` tinyint(4) NOT NULL default '0',
1480
                `keep_softwares` tinyint(4) NOT NULL default '0',
1481
                `clean_softwares` tinyint(4) NOT NULL default '0',
1482
                `keep_documents` tinyint(4) NOT NULL default '0',
1483
                `clean_documents` tinyint(4) NOT NULL default '0',
1484
                `keep_cartridges_type` tinyint(4) NOT NULL default '0',
1485
                `clean_cartridges_type` tinyint(4) NOT NULL default '0',
1486
                `keep_cartridges` tinyint(4) NOT NULL default '0',
1487
                `keep_consumables` tinyint(4) NOT NULL default '0',
1488
                PRIMARY KEY  (`ID`)
1489
                ) ENGINE=MyISAM ;";
1490
                $DB->query($query) or die("0.7 add glpi_transfers " . $LANG["update"][90] . $DB->error());
1491
                $query="INSERT INTO glpi_transfers VALUES ('1','complete','2','2','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1');
1492
";
1493
                $DB->query($query) or die("0.7 insert transfer default values" . $LANG["update"][90] . $DB->error());
1494
        }
1495
1496
        if (!FieldExists("glpi_profiles", "transfer")) {
1497
                $query = "ALTER TABLE `glpi_profiles` ADD COLUMN `transfer` char(1) default NULL AFTER `entity`";
1498
                $DB->query($query) or die("0.7 add transfer in glpi_profiles" . $LANG["update"][90] . $DB->error());
1499
                $query = "UPDATE `glpi_profiles` SET `transfer` = entity";
1500
                $DB->query($query) or die("0.7 update transfer values in glpi_profiles" . $LANG["update"][90] . $DB->error());
1501
        }
1502
1503
        // Need for update from SVN version
1504
        if (!FieldExists("glpi_users", "location")) {
1505
                $query = "ALTER TABLE `glpi_users` ADD `location` int(11) NOT NULL DEFAULT 0;";
1506
                $DB->query($query) or die("0.7 add location in users if not present for compatibility " . $LANG["update"][90] . $DB->error());
1507
        }
1508
1509
        if (!FieldExists("glpi_ocs_config", "ocs_url")) {
1510
                $query = "ALTER TABLE `glpi_ocs_config` ADD `ocs_url` VARCHAR( 255 ) NOT NULL ;";
1511
                $DB->query($query) or die("0.7 add ocs_url in glpi_ocs_config if not present for compatibility " . $LANG["update"][90] . $DB->error());
1512
        }
1513
1514
        if (!FieldExists("glpi_ocs_link", "ocs_agent_version")) {
1515
                $query = "ALTER TABLE `glpi_ocs_link` ADD `ocs_agent_version` VARCHAR( 255 ) default NULL ;";
1516
                $DB->query($query) or die("0.7 add ocs_agent_version in glpi_ocs_link if not present for compatibility " . $LANG["update"][90] . $DB->error());
1517
        }
1518
        if (!isIndex("glpi_history", "date_mod")) {
1519
                $query = "ALTER TABLE `glpi_history` ADD INDEX ( `date_mod` )";
1520
                $DB->query($query) or die("0.7 alter history add index on date_mod " . $LANG["update"][90] . $DB->error());
1521
        }
1522
1523
} // fin 0.7 #####################################################################################
1524
?>
Redmine Appliance - Powered by TurnKey Linux