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

Revision 400, 27.8 KB (checked in by kovell, 13 years ago)

Fixes: install is locked after first run, private cache files made inaccesible, initial summary caching removed from kill posting, board will not attempt to run on MySQL < 4.1, PILOT_ID cannot be set, legacy option removed from admin panel, pos values added to installation defaults

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