root/dev/common/includes/autoupgrade.php @ 397

Revision 397, 23.5 KB (checked in by kovell, 13 years ago)

Fixes: autoupgrade works, problem with db.php includes removed. Admin cache menu now has option to clear caches. Install hides passwords

Line 
1<?php
2// for easier patching
3
4// Note: DO UPDATES ALWAYS OVER THE ITEM NAMES, SO NO KB's
5//       DATABASES GET SCREWED UP.
6//
7//
8if (!config::get("DBUpdate"))
9        config::set("DBUpdate","000");
10       
11// Current update version of Database
12define(CURRENT_DB_UPDATE,config::get("DBUpdate"));
13//Update version of this autoupgrade.php
14define(LASTEST_DB_UPDATE,"008");
15
16function updateDB(){
17        // if update nesseary run updates
18        if (CURRENT_DB_UPDATE < LASTEST_DB_UPDATE ){
19
20                update001();
21                update002();
22                update003();
23                update004();
24                update005();
25
26                update007();
27                update008();
28        }
29}
30
31/*
32 * Too much has changed between update005 and current status for a clean
33 * update006. Restarting from update007 in the hope that the differences
34 * between 5 and 7 are worked out and an update006 implemented
35 */
36
37 function update001(){
38        //Checking if this Update already done
39        if (CURRENT_DB_UPDATE < "001" )
40        {
41                require_once("common/includes/class.item.php");
42                // Changing ShieldBooster Slot from None to Mid Slot
43                $ShieldBoosterGroup = item::get_group_id("Small Shield Booster I");
44                update_slot_of_group($ShieldBoosterGroup,0,2);
45               
46                // Changing Tracking Scripts Slot from None to Mid Slot
47                $ScriptGroupID1 = item::get_group_id("Optimal Range");
48                update_slot_of_group($ScriptGroupID1,0,2);
49
50                // Changing Warp Disruption Scripts Slot from None to Mid Slot
51                $ScriptGroupID2 = item::get_group_id("Focused Warp Disruption");
52                update_slot_of_group($ScriptGroupID2,0,2);
53               
54                // Changing Tracking Disruption Scripts Slot from None to Mid Slot
55                $ScriptGroupID3 = item::get_group_id("Optimal Range Disruption");
56                update_slot_of_group($ScriptGroupID3,0,2);
57               
58                // Changing Sensor Booster Scripts Slot from None to Mid Slot
59                $ScriptGroupID4 = item::get_group_id("Targeting Range");
60                update_slot_of_group($ScriptGroupID4,0,2);
61               
62                // Changing Sensor Dampener Scripts Slot from None to Mid Slot
63                $ScriptGroupID5 = item::get_group_id("Scan Resolution Dampening");
64                update_slot_of_group($ScriptGroupID5,0,2);
65               
66                // Changing Energy Weapon Slot from None to High Slot
67                $EnergyWeaponGroup = item::get_group_id("Gatling Pulse Laser I");
68                update_slot_of_group($EnergyWeaponGroup,0,1);
69               
70                // Changing Group of Salvager I to same as Small Tractor Beam I         
71                $item = new Item();
72                $item->lookup("Salvager I");
73                $SalvagerTypeId =  $item->getId();
74                $SalvagerGroup  =  item::get_group_id("Salvager I");
75                $TractorBeam    =  item::get_group_id("Small Tractor Beam I"); 
76                move_item_to_group($SalvagerTypeId,$SalvagerGroup ,$TractorBeam);
77       
78                //writing Update Status into ConfigDB
79                config::set("DBUpdate","001"); 
80        }
81}
82
83function update002(){
84        // to correct the already existing Salvager in med slots.
85        // missed it in update001
86        if (CURRENT_DB_UPDATE < "002" )
87        {
88                require_once("common/includes/class.item.php");
89                $SalvagerGroup  =  item::get_group_id("Salvager I");
90                update_slot_of_group($SalvagerGroup,2,1);
91                config::set("DBUpdate","002"); 
92        }
93}
94
95function update003(){
96        // Warefare Links and Command Prozessor were midslot items in install file, should be high slot
97        if (CURRENT_DB_UPDATE < "003" )
98        {
99                require_once("common/includes/class.item.php");
100                $WarfareLinkGroup  =  item::get_group_id("Skirmish Warfare Link - Rapid Deployment");
101                update_slot_of_group($WarfareLinkGroup,2,1);
102                config::set("DBUpdate","003"); 
103        }
104}
105
106function update004(){
107        // new trinity ships are wrong saved as T1 shipes
108        if (CURRENT_DB_UPDATE < "004" )
109        {
110                $qry = new DBQuery();
111               
112                $query = "UPDATE kb3_ships
113                                        INNER JOIN kb3_ship_classes ON scl_id = shp_class
114                                        SET shp_techlevel = 2
115                                        WHERE scl_class IN ('Electronic Attack Ship','Heavy Interdictor','Black Ops','Marauder','Heavy Interdictor','Jump Freighter')
116                                        AND shp_techlevel = 1;";
117                $qry->execute($query);         
118                config::set("DBUpdate","004"); 
119        }
120}
121
122function update005(){
123        // Blueprints and small fixes
124        if (CURRENT_DB_UPDATE < "005" )
125        {
126                $qry = new DBQuery();
127$query = <<<EOF
128INSERT INTO `kb3_invtypes` (`typeID`, `groupID`, `typeName`, `description`, `icon`, `radius`, `mass`, `volume`, `capacity`, `portionSize`, `raceID`, `basePrice`, `marketGroupID`) VALUES (29249, 105, 'Magnate Blueprint', '', '0', 0, 0, 0.01, 0, 1, 0, 0, 0);
129
130INSERT INTO `kb3_invtypes` (`typeID`, `groupID`, `typeName`, `description`, `icon`, `radius`, `mass`, `volume`, `capacity`, `portionSize`, `raceID`, `basePrice`, `marketGroupID`) VALUES (29267, 111, 'Apotheosis Blueprint', '', '0', 0, 0, 0.01, 0, 1, 0, 0, 0);
131
132INSERT INTO `kb3_invtypes` (`typeID`, `groupID`, `typeName`, `description`, `icon`, `radius`, `mass`, `volume`, `capacity`, `portionSize`, `raceID`, `basePrice`, `marketGroupID`) VALUES (29338, 106, 'Omen Navy Issue Blueprint', '', '0', 0, 0, 0.01, 0, 1, 0, 0, 0);
133
134INSERT INTO `kb3_invtypes` (`typeID`, `groupID`, `typeName`, `description`, `icon`, `radius`, `mass`, `volume`, `capacity`, `portionSize`, `raceID`, `basePrice`, `marketGroupID`) VALUES (29339, 106, 'Scythe Fleet Issue Blueprint', '', '0', 0, 0, 0.01, 0, 1, 0, 0, 0);
135
136INSERT INTO `kb3_invtypes` (`typeID`, `groupID`, `typeName`, `description`, `icon`, `radius`, `mass`, `volume`, `capacity`, `portionSize`, `raceID`, `basePrice`, `marketGroupID`) VALUES (29341, 106, 'Osprey Navy Issue Blueprint', '', '0', 0, 0, 0.01, 0, 1, 0, 0, 0);
137
138INSERT INTO `kb3_invtypes` (`typeID`, `groupID`, `typeName`, `description`, `icon`, `radius`, `mass`, `volume`, `capacity`, `portionSize`, `raceID`, `basePrice`, `marketGroupID`) VALUES (29345, 106, 'Exequror Navy Issue Blueprint', '', '0', 0, 0, 0.01, 0, 1, 0, 0, 0);
139
140INSERT INTO `kb3_dgmtypeattributes` (`typeID`, `attributeID`, `value`) VALUES ('29249', '422', '1');
141
142UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='180';
143UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='181';
144
145UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='182';
146UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='183';
147UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='184';
148
149UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='228';
150UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='229';
151UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='230';
152UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='231';
153UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='232';
154
155UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='277';
156UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='278';
157UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='279';
158
159UPDATE `kb3_dgmattributetypes` SET `icon` = '04_12' WHERE `attributeID`='193';
160UPDATE `kb3_dgmattributetypes` SET `icon` = '04_12' WHERE `attributeID`='235';
161
162UPDATE `kb3_dgmattributetypes` SET `icon` = '22_14' WHERE `attributeID`='108';
163UPDATE `kb3_dgmattributetypes` SET `icon` = '22_14' WHERE `attributeID`='197';
164
165UPDATE `kb3_dgmattributetypes` SET `icon` = '07_15' WHERE `attributeID`='137';
166
167UPDATE `kb3_dgmattributetypes` SET `icon` = '24_01' WHERE `attributeID`='77';
168
169UPDATE `kb3_dgmattributetypes` SET `icon` = '22_08' WHERE `attributeID`='153';
170
171UPDATE `kb3_dgmattributetypes` SET `icon` = '07_15' WHERE `attributeID`='484';
172EOF;
173
174        $qry->execute($query);
175        config::set("DBUpdate","005");
176
177        }
178}
179
180function update007()
181{
182        //Checking if this Update already done
183        if (CURRENT_DB_UPDATE < "007" )
184        {
185                $qry = new DBQuery(true);
186                // Add columns for external ids.
187                $qry->execute("SHOW COLUMNS FROM kb3_alliances LIKE 'all_external_id'");
188                $testresult = $qry->recordCount();
189                if(!$testresult)
190                {
191                        $sql = "ALTER TABLE `kb3_alliances` ".
192                                "ADD `all_external_id` INT( 11 ) UNSIGNED NULL ".
193                                "DEFAULT NULL , ADD UNIQUE ( all_external_id )";
194                        $qry->execute($sql);
195                }
196
197                $qry->execute("SHOW COLUMNS FROM kb3_corps LIKE 'crp_external_id'");
198                $testresult = $qry->recordCount();
199                if(!$testresult)
200                {
201                        $sql = "ALTER TABLE `kb3_corps` ".
202                                "ADD `crp_external_id` INT( 11 ) UNSIGNED NULL ".
203                                "DEFAULT NULL , ADD UNIQUE ( crp_external_id )";
204                        $qry->execute($sql);
205                }
206
207/*
208 * Needs more code changes first to change
209 * plt_externalid == 0 checks to plt_externalid IS NULL
210 *
211                $sql = " ALTER TABLE `kb3_pilots` CHANGE `plt_externalid` `plt_externalid` INT( 11 ) UNSIGNED NULL DEFAULT NULL  ";
212                $qry->execute($sql);
213
214                // Remove bugged non-unique external ids.
215                $sql = "UPDATE kb3_pilots old JOIN ".
216                        "(SELECT DISTINCT a.plt_id ".
217                        "FROM kb3_pilots a, kb3_pilots b ".
218                        "WHERE a.plt_externalid = b.plt_externalid ".
219                        "AND a.plt_id <> b.plt_id AND a.plt_externalid > 0) new ".
220                        "ON old.plt_id = new.plt_id SET old.plt_externalid = 0 ";
221                $qry->execute($sql);
222
223                $sql = "UPDATE kb3_pilots set plt_externalid = NULL WHERE plt_externalid = 0";
224                if( $qry->execute($sql))
225                {
226                        $qry->execute(" ALTER TABLE `kb3_pilots` ".
227                                "DROP INDEX `plt_externalid` , ".
228                                "ADD UNIQUE `plt_externalid` ( `plt_externalid` ) ");
229                }
230*/
231                $qry->execute("SHOW COLUMNS FROM kb3_kills LIKE 'kll_external_id'");
232                $testresult = $qry->recordCount();
233                if(!$testresult)
234                {
235                        $sql = "ALTER TABLE `kb3_kills` ".
236                                "ADD `kll_external_id` INT( 11 ) UNSIGNED NULL ".
237                                "DEFAULT NULL , ADD UNIQUE ( kll_external_id )";
238                        $qry->execute($sql);
239                }
240                // Add isk loss column to kb3_kills
241                $qry->execute("SHOW COLUMNS FROM kb3_kills LIKE 'kll_isk_loss'");
242                $sql = "ALTER TABLE `kb3_kills` ADD `kll_isk_loss` FLOAT NOT NULL DEFAULT '0'";
243                if(!$qry->recordCount()) $qry->execute($sql);
244                // Update price with items destroyed and ship value, excluding
245                // blueprints since default cost is for BPO and BPC looks identical
246                $sql = "CREATE TABLE IF NOT EXISTS `tmp_pricing` (
247                  `kll_id` int(11) NOT NULL DEFAULT '0',
248                  `ship` float NOT NULL DEFAULT '0',
249                  `destroyed` float NOT NULL DEFAULT '0',
250                  `dropped` float NOT NULL DEFAULT '0',
251                  PRIMARY KEY (`kll_id`),
252                  KEY `ship` (`ship`),
253                  KEY `destroyed` (`destroyed`),
254                  KEY `dropped` (`dropped`)
255                ) ENGINE=MyISAM";
256                $qry->execute($sql);
257                $qry->execute('SELECT * FROM tmp_pricing limit 1');
258                if(!$qry->recordCount()) $qry->execute("INSERT INTO tmp_pricing select kll_id,0,0,0 FROM kb3_kills");
259                $sql = "update tmp_pricing inner join kb3_kills on kb3_kills.kll_id = tmp_pricing.kll_id
260                        INNER JOIN kb3_ships ON kb3_ships.shp_id = kll_ship_id
261                        LEFT JOIN kb3_ships_values ON kb3_ships_values.shp_id = kll_ship_id
262                                set ship = if(isnull(shp_value),shp_baseprice,shp_value)
263                        where ship = 0";
264                $qry->execute($sql);
265                $sql = "UPDATE tmp_pricing
266                        INNER JOIN (SELECT itd_kll_id,
267                        sum(if(typeName LIKE '%Blueprint%',0,if(isnull(itd_quantity),
268                        0,itd_quantity * if(price = 0 OR isnull(price),basePrice,price))))
269                        AS killcost
270                        FROM kb3_items_destroyed
271                        LEFT JOIN kb3_item_price ON kb3_item_price.typeID = itd_itm_id
272                        LEFT JOIN kb3_invtypes ON itd_itm_id = kb3_invtypes.typeID
273                        GROUP BY itd_kll_id) cost on kll_id = itd_kll_id
274                        SET destroyed =  killcost
275                        WHERE destroyed = 0";
276                $qry->execute($sql);
277                if(config::get(kd_droptototal))
278                        $sql = "UPDATE tmp_pricing
279                        INNER JOIN (SELECT itd_kll_id,
280                        sum(if(typeName LIKE '%Blueprint%',0,if(isnull(itd_quantity),
281                        0,itd_quantity * if(price = 0 OR isnull(price),basePrice,price))))
282                        AS killcost
283                        FROM kb3_items_dropped
284                        LEFT JOIN kb3_item_price ON kb3_item_price.typeID = itd_itm_id
285                        LEFT JOIN kb3_invtypes ON itd_itm_id = kb3_invtypes.typeID
286                        GROUP BY itd_kll_id) cost on kll_id = itd_kll_id
287                        SET dropped =  killcost
288                        WHERE dropped = 0";
289                $qry->execute($sql);
290                $qry->execute('UPDATE kb3_kills inner join tmp_pricing
291                        ON kb3_kills.kll_id = tmp_pricing.kll_id SET kll_isk_loss = ship + destroyed + dropped');
292                $qry->execute('DROP TABLE tmp_pricing');
293                $qry->execute("SHOW COLUMNS FROM kb3_kills LIKE 'kll_fb_crp_id'");
294                if($qry->recordCount()) $qry->execute("ALTER TABLE `kb3_kills` DROP `kll_fb_crp_id`");
295                $qry->execute("SHOW COLUMNS FROM kb3_kills LIKE 'kll_fb_all_id'");
296                if($qry->recordCount()) $qry->execute("ALTER TABLE `kb3_kills` DROP `kll_fb_all_id`");
297                // Drop unused columns
298                $qry->execute("SHOW COLUMNS FROM kb3_corps LIKE 'crp_trial'");
299                if($qry->recordCount()) $qry->execute("ALTER TABLE kb3_corps DROP crp_trial");
300                $qry->execute("SHOW COLUMNS FROM kb3_pilots LIKE 'plt_killpoints'");
301                if($qry->recordCount()) $qry->execute("ALTER TABLE kb3_pilots DROP plt_killpoints");
302                $qry->execute("SHOW COLUMNS FROM kb3_pilots LIKE 'plt_losspoints'");
303                if($qry->recordCount()) $qry->execute("ALTER TABLE kb3_pilots DROP plt_losspoints");
304
305                // Add corp and alliance index to kb3_inv_detail
306                $qry->execute("SHOW INDEX FROM kb3_inv_detail");
307
308                $indexcexists = false;
309                $indexaexists = false;
310                while($testresult = $qry->getRow())
311                        if($testresult['Column_name'] == 'ind_crp_id')
312                                $indexcexists = true;
313                        if($testresult['Column_name'] == 'ind_all_id')
314                                $indexaexists = true;
315                if(!indexcexists)
316                        $qry->execute("ALTER  TABLE `kb3_inv_detail` ADD INDEX ( `ind_crp_id` ) ");
317                if(!indexaexists)
318                        $qry->execute("ALTER  TABLE `kb3_inv_detail` ADD INDEX ( `ind_all_id` ) ");
319                // Add table for api cache
320                $sql = "CREATE TABLE IF NOT EXISTS `kb3_apicache` (
321                 `cfg_site` varchar(16) NOT NULL default '',
322                         `cfg_key` varchar(32) NOT NULL default '',
323                         `cfg_value` text NOT NULL,
324                         PRIMARY KEY  (`cfg_site`,`cfg_key`)
325                         )";
326                $qry->execute($sql);
327                $qry->execute("CREATE TABLE IF NOT EXISTS `kb3_apilog` (
328                        `log_site` VARCHAR( 20 ) NOT NULL ,
329                        `log_keyname` VARCHAR( 20 ) NOT NULL ,
330                        `log_posted` INT NOT NULL ,
331                        `log_errors` INT NOT NULL ,
332                        `log_ignored` INT NOT NULL ,
333                        `log_verified` INT NOT NULL ,
334                        `log_totalmails` INT NOT NULL ,
335                        `log_source` VARCHAR( 20 ) NOT NULL ,
336                        `log_type` VARCHAR( 20 ) NOT NULL ,
337                        `log_timestamp` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
338                        ) ENGINE = MYISAM ");
339
340                // set update complete
341                config::set('API_DBUpdate', '1');
342
343                // Add subsystem slot
344                $qry->execute("SELECT 1 FROM kb3_item_locations WHERE itl_id = 7");
345                if(!$qry->recordCount())
346                {
347                        $qry->execute("INSERT INTO `kb3_item_locations` (`itl_id`, `itl_location`) VALUES(7, 'Subsystem Slot')");
348                        $qry->execute("UPDATE `kb3_item_types` SET `itt_slot` = '7' WHERE `kb3_item_types`.`itt_id` = 954 LIMIT 1");
349                        $qry->execute("UPDATE `kb3_item_types` SET `itt_slot` = '7' WHERE `kb3_item_types`.`itt_id` = 955 LIMIT 1");
350                        $qry->execute("UPDATE `kb3_item_types` SET `itt_slot` = '7' WHERE `kb3_item_types`.`itt_id` = 956 LIMIT 1");
351                        $qry->execute("UPDATE `kb3_item_types` SET `itt_slot` = '7' WHERE `kb3_item_types`.`itt_id` = 957 LIMIT 1");
352                        $qry->execute("UPDATE `kb3_item_types` SET `itt_slot` = '7' WHERE `kb3_item_types`.`itt_id` = 958 LIMIT 1");
353                }
354                $qry->execute("TRUNCATE kb3_inv_all");
355                $qry->execute("TRUNCATE kb3_inv_crp");
356                $qry->execute("TRUNCATE kb3_inv_plt");
357               
358                config::set("DBUpdate","007");
359        }
360}
361// Add unique name indices to alliance, corp and pilot
362// Check kb3_inv_detail has correct indices
363function update008()
364{
365        //Checking if this Update already done
366        if (CURRENT_DB_UPDATE < "008" )
367        {
368                if(!config::get('008updatestatus')) config::set('008updatestatus',0);
369                $qry = new DBQuery(true);
370
371                if(config::get('008updatestatus') <1)
372                {
373                        // Add pilot, corp and alliance index to kb3_inv_detail
374                        // Incomplete in update007
375                        $qry->execute("SHOW INDEXES FROM kb3_inv_detail");
376                        $indexcexists = false;
377                        $indexaexists = false;
378                        $indexpexists = false;
379                        $indexkexists = false;
380                        while($testresult = $qry->getRow())
381                        {
382                                if($testresult['Column_name'] == 'ind_kll_id' && $testresult['Seq_in_index'] == 1)
383                                        $indexkexists = true;
384                                if($testresult['Column_name'] == 'ind_crp_id' && $testresult['Seq_in_index'] == 1)
385                                        $indexcexists = true;
386                                if($testresult['Column_name'] == 'ind_all_id' && $testresult['Seq_in_index'] == 1)
387                                        $indexaexists = true;
388                                if($testresult['Column_name'] == 'ind_plt_id' && $testresult['Seq_in_index'] == 1)
389                                        $indexpexists = true;
390                        }
391                        //
392                        if(!indexkexists)
393                                $qry->execute("ALTER TABLE `kb3_inv_detail` ADD INDEX ( `ind_kll_id`, `ind_order` ) ");
394                        if(!indexcexists)
395                                $qry->execute("ALTER TABLE `kb3_inv_detail` ADD INDEX ( `ind_crp_id` ) ");
396                        if(!indexaexists)
397                                $qry->execute("ALTER TABLE `kb3_inv_detail` ADD INDEX ( `ind_all_id` ) ");
398                        if(!indexpexists)
399                                $qry->execute("ALTER TABLE `kb3_inv_detail` ADD INDEX ( `ind_plt_id` ) ");
400                        config::set('008updatestatus', 1);
401                }
402
403                $qry->execute("SHOW INDEXES FROM kb3_corps");
404                $indexaexists = false;
405                while($testresult = $qry->getRow())
406                {
407                        if($testresult['Column_name'] == 'crp_name' && $testresult['Non_unique'] == 0)
408                                $indexcexists = true;
409                }
410                if(!$indexcexists)
411                {
412                        $sqlcrp = 'select a.crp_id as newid, b.crp_id as oldid from kb3_corps a, kb3_corps b where a.crp_name = b.crp_name and a.crp_id < b.crp_id';
413
414                        if(config::get('008updatestatus') <2)
415                        {
416                                $qry->execute('update kb3_inv_detail join ('.$sqlcrp.') c on c.oldid = ind_crp_id set ind_crp_id = c.newid');
417                                config::set('008updatestatus', 2);
418                        }
419                        if(config::get('008updatestatus') <3)
420                        {
421                                $qry->execute('update kb3_pilots join ('.$sqlcrp.') c on (c.oldid = plt_crp_id) set plt_crp_id = c.newid');
422                                config::set('008updatestatus', 3);
423                        }
424                        if(config::get('008updatestatus') <4)
425                        {
426                                $qry->execute('update kb3_kills join ('.$sqlcrp.') c on (c.oldid = kll_crp_id) set kll_crp_id = c.newid');
427                                config::set('008updatestatus', 4);
428                        }
429
430                        if(config::get('008updatestatus') <6)
431                        {
432                                $qry->execute('delete b from kb3_corps a, kb3_corps b where a.crp_name = b.crp_name and a.crp_id < b.crp_id');
433                                config::set('008updatestatus', 6);
434                        }
435                        if(config::get('008updatestatus') <7)
436                        {
437                                $qry->execute("SHOW INDEXES FROM kb3_corps");
438                                $indexcexists = false;
439                                while($testresult = $qry->getRow())
440                                {
441                                        if($testresult['Column_name'] == 'crp_name' && $testresult['Seq_in_index'] == 1)
442                                        {
443                                                $indexcname = $testresult['Key_name'];
444                                                $indexcexists = true;
445                                        }
446                                        // Don't replace a custom multi-column index.
447                                        elseif($testresult['Key_name'] == $indexcname && $testresult['Seq_in_index'] == 2)
448                                                $indexcexists = false;
449                                }
450                                if(!$indexcexists) $qry->execute("ALTER TABLE `kb3_corps` DROP INDEX `".$indexcname."`");
451                                $qry->execute("ALTER TABLE `kb3_corps` ADD UNIQUE INDEX ( `crp_name` ) ");
452                                config::set('008updatestatus', 7);
453                        }
454                }
455                // Make kb3_alliances.all_name unique without losing kills
456                $qry->execute("SHOW INDEXES FROM kb3_alliances");
457                $indexaexists = false;
458                while($testresult = $qry->getRow())
459                {
460                        if($testresult['Column_name'] == 'all_name' && $testresult['Non_unique'] == 0)
461                                $indexaexists = true;
462                }
463                if(!$indexaexists)
464                {
465                        $sqlall = 'select a.all_id as newid, b.all_id as oldid from kb3_alliances a, kb3_alliances b where a.all_name = b.all_name and a.all_id < b.all_id';
466                        if(config::get('008updatestatus') <8)
467                        {
468                                $qry->execute('update kb3_inv_detail join ('.$sqlall.') c on c.oldid = ind_all_id set ind_all_id = c.newid');
469                                config::set('008updatestatus', 8);
470                        }
471                        if(config::get('008updatestatus') <9)
472                        {
473                                $qry->execute('update kb3_corps join ('.$sqlall.') c on (c.oldid = crp_all_id) set crp_all_id = c.newid');
474                                config::set('008updatestatus', 9);
475                        }
476                        if(config::get('008updatestatus') <10)
477                        {
478                                $qry->execute('update kb3_kills join ('.$sqlall.') c on (c.oldid = kll_all_id) set kll_all_id = c.newid');
479                                config::set('008updatestatus', 10);
480                        }
481
482                        if(config::get('008updatestatus') <12)
483                        {
484                                $qry->execute('delete b from kb3_alliances a, kb3_alliances b where a.all_name = b.all_name and a.all_id < b.all_id');
485                                config::set('008updatestatus', 12);
486                        }
487                        if(config::get('008updatestatus') <13)
488                        {
489                                $qry->execute("SHOW INDEXES FROM kb3_alliances");
490                                $indexaexists = false;
491                                while($testresult = $qry->getRow())
492                                {
493                                        if($testresult['Column_name'] == 'all_name' && $testresult['Seq_in_index'] == 1)
494                                        {
495                                                $indexaname = $testresult['Key_name'];
496                                                $indexaexists = true;
497                                        }
498                                        // Don't replace a custom multi-column index.
499                                        elseif($testresult['Key_name'] == $indexaname && $testresult['Seq_in_index'] == 2)
500                                                $indexaexists = false;
501                                }
502                                if($indexaexists) $qry->execute("ALTER TABLE `kb3_alliances` DROP INDEX `".$indexaname."`");
503                                $qry->execute("ALTER TABLE `kb3_alliances` ADD UNIQUE INDEX ( `all_name` ) ");
504                                config::set('008updatestatus', 13);
505                        }
506                }
507
508                // Make kb3_pilots.plt_name unique without losing kills
509                $qry->execute("SHOW INDEXES FROM kb3_pilots");
510                $indexaexists = false;
511                while($testresult = $qry->getRow())
512                {
513                        if($testresult['Column_name'] == 'plt_name' && $testresult['Non_unique'] == 0)
514                                $indexaexists = true;
515                }
516                if(!$indexaexists)
517                {
518                        $sqlplt = 'select a.plt_id as newid, b.plt_id as oldid from kb3_pilots a, kb3_pilots b where a.plt_name = b.plt_name and a.plt_id < b.plt_id';
519                        if(config::get('008updatestatus') <14)
520                        {
521                                $qry->execute('update kb3_inv_detail join ('.$sqlplt.') c on c.oldid = ind_plt_id set ind_plt_id = c.newid');
522                                config::set('008updatestatus', 14);
523                        }
524                        if(config::get('008updatestatus') <15)
525                        {
526                                $qry->execute('update kb3_kills join ('.$sqlplt.') c on (c.oldid = kll_victim_id) set kll_victim_id = c.newid');
527                                config::set('008updatestatus', 15);
528                        }
529                        if(config::get('008updatestatus') <16)
530                        {
531                                $qry->execute('update kb3_kills join ('.$sqlplt.') c on (c.oldid = kll_fb_plt_id) set kll_fb_plt_id = c.newid');
532                                config::set('008updatestatus', 16);
533                        }
534                        if(config::get('008updatestatus') <17)
535                        {
536                                $qry->execute('delete b from kb3_pilots a, kb3_pilots b where a.plt_name = b.plt_name and a.plt_id < b.plt_id');
537                                config::set('008updatestatus', 17);
538                        }
539                        if(config::get('008updatestatus') <18)
540                        {
541                                $qry->execute("SHOW INDEXES FROM kb3_pilots");
542                                $indexpexists = false;
543                                while($testresult = $qry->getRow())
544                                {
545                                        if($testresult['Column_name'] == 'plt_name' && $testresult['Seq_in_index'] == 1)
546                                        {
547                                                $indexpname = $testresult['Key_name'];
548                                                $indexpexists = true;
549                                        }
550                                        // Don't replace a custom multi-column index.
551                                        elseif($testresult['Key_name'] == $indexpname && $testresult['Seq_in_index'] == 2)
552                                                $indexpexists = false;
553                                }
554                                if($indexpexists)  $qry->execute("ALTER TABLE `kb3_pilots` DROP INDEX `".$indexpname."`");
555                                $qry->execute("ALTER TABLE `kb3_pilots` ADD UNIQUE INDEX ( `plt_name` ) ");
556                                config::set('008updatestatus', 18);
557                        }
558                }
559                config::del("008updatestatus");
560                config::set('cache_update', '*');
561                config::set('cache_time', '10');
562                config::set("DBUpdate", "008");
563        }
564}
565
566function update_slot_of_group($id,$oldSlot = 0 ,$newSlot){
567        $qry  = new DBQuery();
568        $query = "UPDATE kb3_item_types
569                                SET itt_slot = $newSlot WHERE itt_id = $id and itt_slot = $oldSlot;";
570        $qry->execute($query);
571        $query = "UPDATE kb3_items_destroyed
572                                INNER JOIN kb3_invtypes ON groupID = $id AND itd_itm_id = typeID
573                                SET itd_itl_id = $newSlot
574                                WHERE itd_itl_id = $oldSlot;";
575        $qry->execute($query);
576       
577        $query = "UPDATE kb3_items_dropped
578                                INNER JOIN kb3_invtypes ON groupID = $id AND itd_itm_id = typeID
579                                SET itd_itl_id = $newSlot
580                                WHERE itd_itl_id = $oldSlot;";
581        $qry->execute($query);
582}
583
584function move_item_to_group($id,$oldGroup ,$newGroup){
585        $qry  = new DBQuery();
586        $query = "UPDATE kb3_invtypes
587                                SET groupID = $newGroup 
588                                WHERE typeID = $id AND groupID = $oldGroup;";
589        $qry->execute($query);
590}
591
592?>
Note: See TracBrowser for help on using the browser.