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

Revision 399, 27.1 KB (checked in by kovell, 13 years ago)

Fixes: autoupgrade smoother, Rare errors in db classes reduced, api login problems reduced, page cache notifications check if cache is active. admin mod list sorted. alliance and corp details pages load faster. all-time summary tables cached. killlist performance on large databases improved

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