root/dev/upgrade.php @ 412

Revision 412, 36.3 KB (checked in by kovell, 13 years ago)

Fixes: Upgrade correctly calculates ship loss value

Line 
1<?php
2
3if(function_exists("set_time_limit"))
4        set_time_limit(0);
5
6define('DB_HALTONERROR', true);
7
8require_once('kbconfig.php');
9require_once('common/includes/db.php');
10require_once('common/includes/class.config.php');
11require_once('common/includes/class.session.php');
12
13$config = new Config(KB_SITE);
14session::init();
15$url=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
16if($_SERVER['QUERY_STRING'] != "") $url .= '?'.$_SERVER['QUERY_STRING'];
17
18
19if (!session::isAdmin())
20{
21    if (crypt($_POST['usrpass'],ADMIN_PASSWORD) == ADMIN_PASSWORD || $_POST['usrpass'] == ADMIN_PASSWORD)
22    {
23        session::create(true);
24
25        header('Location: http://'.$url);
26                die;
27    }
28        else
29        { ?>
30<html><head><title>Upgrade admin login</title></head><body>
31<form method="post" action="http://<?php echo $url; ?>">
32<table class="kb-subtable">
33<tr>
34  <td width="160"><b>Admin Password:</b></td>
35  <td><input type="password" name="usrpass" maxlength="32"></td>
36</tr>
37<tr>
38  <td width="160">&nbsp;</td>
39  <td><input type="submit" name="submit" value="Login"></td>
40</tr>
41</table></form></body>
42
43<?php
44        die;
45        }
46}
47$qry=new DBQuery(true);
48define(CURRENT_DB_UPDATE,config::get("DBUpdate"));
49//Update version of this autoupgrade.php
50// Moved to index.php
51define(LASTEST_DB_UPDATE,"010");
52if (CURRENT_DB_UPDATE >= LASTEST_DB_UPDATE )
53{
54        echo "<html><head>";
55        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
56        echo"</head><body>Board is up to date.<br><a href='".config::get('cfg_kbhost')."'>Return to your board</a></body>";
57        die();
58}
59updateDB();
60touch ('install/install.lock');
61echo "<html><head>";
62echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
63echo"</head><body>Upgrade complete.<br><a href='".config::get('cfg_kbhost')."'>Return to your board</a></body>";
64die();
65
66function updateDB(){
67        // if update nesseary run updates
68        if (CURRENT_DB_UPDATE < LASTEST_DB_UPDATE ){
69                update001();
70                update002();
71                update003();
72                update004();
73                update005();
74
75//Start visual updates
76                update007();
77                update008();
78                update009();
79                update010();
80        }
81}
82
83/*
84 * Too much has changed between update005 and current status for a clean
85 * update006. Restarting from update007 in the hope that the differences
86 * between 5 and 7 are worked out and an update006 implemented
87 */
88
89 function update001(){
90        //Checking if this Update already done
91        if (CURRENT_DB_UPDATE < "001" )
92        {
93                require_once("common/includes/class.item.php");
94                // Changing ShieldBooster Slot from None to Mid Slot
95                $ShieldBoosterGroup = item::get_group_id("Small Shield Booster I");
96                update_slot_of_group($ShieldBoosterGroup,0,2);
97
98                // Changing Tracking Scripts Slot from None to Mid Slot
99                $ScriptGroupID1 = item::get_group_id("Optimal Range");
100                update_slot_of_group($ScriptGroupID1,0,2);
101
102                // Changing Warp Disruption Scripts Slot from None to Mid Slot
103                $ScriptGroupID2 = item::get_group_id("Focused Warp Disruption");
104                update_slot_of_group($ScriptGroupID2,0,2);
105
106                // Changing Tracking Disruption Scripts Slot from None to Mid Slot
107                $ScriptGroupID3 = item::get_group_id("Optimal Range Disruption");
108                update_slot_of_group($ScriptGroupID3,0,2);
109
110                // Changing Sensor Booster Scripts Slot from None to Mid Slot
111                $ScriptGroupID4 = item::get_group_id("Targeting Range");
112                update_slot_of_group($ScriptGroupID4,0,2);
113
114                // Changing Sensor Dampener Scripts Slot from None to Mid Slot
115                $ScriptGroupID5 = item::get_group_id("Scan Resolution Dampening");
116                update_slot_of_group($ScriptGroupID5,0,2);
117
118                // Changing Energy Weapon Slot from None to High Slot
119                $EnergyWeaponGroup = item::get_group_id("Gatling Pulse Laser I");
120                update_slot_of_group($EnergyWeaponGroup,0,1);
121
122                // Changing Group of Salvager I to same as Small Tractor Beam I
123                $item = new Item();
124                $item->lookup("Salvager I");
125                $SalvagerTypeId =  $item->getId();
126                $SalvagerGroup  =  item::get_group_id("Salvager I");
127                $TractorBeam    =  item::get_group_id("Small Tractor Beam I");
128                move_item_to_group($SalvagerTypeId,$SalvagerGroup ,$TractorBeam);
129
130                //writing Update Status into ConfigDB
131                config::set("DBUpdate","001");
132        }
133}
134
135function update002(){
136        // to correct the already existing Salvager in med slots.
137        // missed it in update001
138        if (CURRENT_DB_UPDATE < "002" )
139        {
140                require_once("common/includes/class.item.php");
141                $SalvagerGroup  =  item::get_group_id("Salvager I");
142                update_slot_of_group($SalvagerGroup,2,1);
143                config::set("DBUpdate","002");
144        }
145}
146
147function update003(){
148        // Warefare Links and Command Prozessor were midslot items in install file, should be high slot
149        if (CURRENT_DB_UPDATE < "003" )
150        {
151                require_once("common/includes/class.item.php");
152                $WarfareLinkGroup  =  item::get_group_id("Skirmish Warfare Link - Rapid Deployment");
153                update_slot_of_group($WarfareLinkGroup,2,1);
154                config::set("DBUpdate","003");
155        }
156}
157
158function update004(){
159        // new trinity ships are wrong saved as T1 shipes
160        if (CURRENT_DB_UPDATE < "004" )
161        {
162                $qry = new DBQuery();
163
164                $query = "UPDATE kb3_ships
165                                        INNER JOIN kb3_ship_classes ON scl_id = shp_class
166                                        SET shp_techlevel = 2
167                                        WHERE scl_class IN ('Electronic Attack Ship','Heavy Interdictor','Black Ops','Marauder','Heavy Interdictor','Jump Freighter')
168                                        AND shp_techlevel = 1;";
169                $qry->execute($query);
170                config::set("DBUpdate","004");
171        }
172}
173
174function update005(){
175        // Blueprints and small fixes
176        if (CURRENT_DB_UPDATE < "005" )
177        {
178                $qry = new DBQuery();
179$query = <<<EOF
180INSERT 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);
181
182INSERT 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);
183
184INSERT 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);
185
186INSERT 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);
187
188INSERT 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);
189
190INSERT 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);
191
192INSERT INTO `kb3_dgmtypeattributes` (`typeID`, `attributeID`, `value`) VALUES ('29249', '422', '1');
193
194UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='180';
195UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='181';
196
197UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='182';
198UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='183';
199UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='184';
200
201UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='228';
202UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='229';
203UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='230';
204UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='231';
205UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='232';
206
207UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='277';
208UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='278';
209UPDATE `kb3_dgmattributetypes` SET `icon` = '50_11' WHERE `attributeID`='279';
210
211UPDATE `kb3_dgmattributetypes` SET `icon` = '04_12' WHERE `attributeID`='193';
212UPDATE `kb3_dgmattributetypes` SET `icon` = '04_12' WHERE `attributeID`='235';
213
214UPDATE `kb3_dgmattributetypes` SET `icon` = '22_14' WHERE `attributeID`='108';
215UPDATE `kb3_dgmattributetypes` SET `icon` = '22_14' WHERE `attributeID`='197';
216
217UPDATE `kb3_dgmattributetypes` SET `icon` = '07_15' WHERE `attributeID`='137';
218
219UPDATE `kb3_dgmattributetypes` SET `icon` = '24_01' WHERE `attributeID`='77';
220
221UPDATE `kb3_dgmattributetypes` SET `icon` = '22_08' WHERE `attributeID`='153';
222
223UPDATE `kb3_dgmattributetypes` SET `icon` = '07_15' WHERE `attributeID`='484';
224EOF;
225
226        $qry->execute($query);
227        config::set("DBUpdate","005");
228
229        }
230}
231
232function update007()
233{
234        global $url;
235        //Checking if this Update already done
236        if (CURRENT_DB_UPDATE < "007" )
237        {
238                $qry = new DBQuery(true);
239                if(!config::get('007updatestatus'))
240                {
241                        config::set('007updatestatus',0);
242                        // Add columns for external ids.
243                        $qry->execute("SHOW COLUMNS FROM kb3_alliances LIKE 'all_external_id'");
244                        if(!$qry->recordCount())
245                        {
246                                $sql = "ALTER TABLE `kb3_alliances` ".
247                                        "ADD `all_external_id` INT( 11 ) UNSIGNED NULL ".
248                                        "DEFAULT NULL , ADD UNIQUE ( all_external_id )";
249                                $qry->execute($sql);
250                        }
251
252                        $qry->execute("SHOW COLUMNS FROM kb3_corps LIKE 'crp_external_id'");
253                        if(!$qry->recordCount())
254                        {
255                                $sql = "ALTER TABLE `kb3_corps` ".
256                                        "ADD `crp_external_id` INT( 11 ) UNSIGNED NULL ".
257                                        "DEFAULT NULL , ADD UNIQUE ( crp_external_id )";
258                                $qry->execute($sql);
259                        }
260
261                        $qry->execute("SHOW COLUMNS FROM kb3_kills LIKE 'kll_external_id'");
262                        if(!$qry->recordCount())
263                        {
264                                $sql = "ALTER TABLE `kb3_kills` ".
265                                        "ADD `kll_external_id` INT( 11 ) UNSIGNED NULL ".
266                                        "DEFAULT NULL , ADD UNIQUE ( kll_external_id )";
267                                $qry->execute($sql);
268                        }
269                        config::set('007updatestatus',1);
270                        echo "<html><head>";
271                        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
272                        echo"</head><body>7. External ID columns added</body>";
273                        die();
274                }
275                // Add isk loss column to kb3_kills
276                if(config::get('007updatestatus') <8)
277                {
278                        // Update price with items destroyed and ship value, excluding
279                        // blueprints since default cost is for BPO and BPC looks identical
280                        $sql = "CREATE TABLE IF NOT EXISTS `tmp_price_ship` (
281                          `kll_id` int(11) NOT NULL DEFAULT '0',
282                          `value` float NOT NULL DEFAULT '0',
283                          PRIMARY KEY (`kll_id`)
284                        ) ENGINE=MyISAM";
285                        $qry->execute($sql);
286                        $sql = "CREATE TABLE IF NOT EXISTS `tmp_price_destroyed` (
287                          `kll_id` int(11) NOT NULL DEFAULT '0',
288                          `value` float NOT NULL DEFAULT '0',
289                          PRIMARY KEY (`kll_id`)
290                        ) ENGINE=MyISAM";
291                        $qry->execute($sql);
292                        $sql = "CREATE TABLE IF NOT EXISTS `tmp_price_dropped` (
293                          `kll_id` int(11) NOT NULL DEFAULT '0',
294                          `value` float NOT NULL DEFAULT '0',
295                          PRIMARY KEY (`kll_id`)
296                        ) ENGINE=MyISAM";
297                        $qry->execute($sql);
298                        $qry->execute("LOCK TABLES tmp_price_ship WRITE, tmp_price_destroyed WRITE,
299                                tmp_price_dropped WRITE, kb3_kills WRITE, kb3_ships WRITE,
300                                kb3_ships_values WRITE, kb3_items_destroyed WRITE, kb3_items_dropped WRITE,
301                                kb3_invtypes WRITE, kb3_item_price WRITE, kb3_config WRITE");
302                        if(config::get('007updatestatus') <3)
303                        {
304                                $qry->execute("INSERT IGNORE INTO tmp_price_ship select
305                                        kll_id,if(isnull(shp_value),shp_baseprice,shp_value) FROM kb3_kills
306                                        INNER JOIN kb3_ships ON kb3_ships.shp_id = kll_ship_id
307                                        LEFT JOIN kb3_ships_values ON kb3_ships_values.shp_id = kll_ship_id");
308                                $qry->execute($sql);
309                                config::set('007updatestatus',3);
310                                echo "<html><head>";
311                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
312                                echo"</head><body>7. Kill values: Ship prices calculated</body>";
313                                die();
314                        }
315                        if(config::get('007updatestatus') <4)
316                        {
317                                $sql = "INSERT IGNORE INTO tmp_price_destroyed
318                                        SELECT itd_kll_id,
319                                        sum(if(typeName LIKE '%Blueprint%',0,if(isnull(itd_quantity),
320                                        0,itd_quantity * if(price = 0 OR isnull(price),basePrice,price))))
321                                        FROM kb3_items_destroyed
322                                        LEFT JOIN kb3_item_price ON kb3_item_price.typeID = itd_itm_id
323                                        LEFT JOIN kb3_invtypes ON itd_itm_id = kb3_invtypes.typeID
324                                        GROUP BY itd_kll_id";
325                                $qry->execute($sql);
326                                config::set('007updatestatus',4);
327                                echo "<html><head>";
328                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
329                                echo"</head><body>7. Kill values: Destroyed item prices calculated</body>";
330                                die();
331                        }
332                        if(config::get('007updatestatus') <5)
333                        {
334                                if(config::get(kd_droptototal))
335                                {
336                                        $action = "calculated";
337                                        $sql = "INSERT INTO tmp_price_dropped
338                                                SELECT itd_kll_id,
339                                                sum(if(typeName LIKE '%Blueprint%',0,if(isnull(itd_quantity),
340                                                0,itd_quantity * if(price = 0 OR isnull(price),basePrice,price))))
341                                                FROM kb3_items_dropped
342                                                LEFT JOIN kb3_item_price ON kb3_item_price.typeID = itd_itm_id
343                                                LEFT JOIN kb3_invtypes ON itd_itm_id = kb3_invtypes.typeID
344                                                GROUP BY itd_kll_id";
345                                        $qry->execute($sql);
346                                }
347                                else $action = "ignored";
348                                config::set('007updatestatus',5);
349                                echo "<html><head>";
350                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
351                                echo"</head><body>7. Kill values: Dropped item prices $action</body>";
352                                die();
353                        }
354                        if(config::get('007updatestatus') <7)
355                        {
356                                $qry->execute("SHOW COLUMNS FROM kb3_kills LIKE 'kll_isk_loss'");
357                                if(!$qry->recordCount())
358                                {
359                                        $qry->execute("ALTER TABLE `kb3_kills` ADD `kll_isk_loss` FLOAT NOT NULL DEFAULT '0'");
360                                        config::set('007updatestatus',7);
361                                        echo "<html><head>";
362                                        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
363                                        echo"</head><body>7. Kill values: ISK column created</body>";
364                                        die();
365                                }
366                                config::set('007updatestatus',7);
367                                echo "<html><head>";
368                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
369                                echo"</head><body>7. Kill values: ISK column already exists.</body>";
370                                die();
371                        }
372                        if(config::get('007updatestatus') <8)
373                        {
374                                // default step size
375                                $step = 8192;
376                                if(!config::get('007.8status'))
377                                {
378                                        config::set('007.8status', 0);
379                                        config::set('007.8step', $step);
380                                }
381                                // If we had to restart then halve the step size up to 4 times.
382                                if(config::get('007.8status') > 0 && config::get('007.8step') >= $step / 2^4)
383                                        config::set('007.8step', config::get('007.8step') / 2);
384                                $qry->execute("SELECT max(kll_id) as max FROM kb3_kills");
385                                $row=$qry->getRow();
386                                $count=$row['max'];
387                                while(config::get('007.8status') < $count)
388                                {
389                                        $sql = 'UPDATE kb3_kills
390                                                natural join tmp_price_ship
391                                                left join tmp_price_destroyed on kb3_kills.kll_id = tmp_price_destroyed.kll_id ';
392                                        if(config::get(kd_droptototal)) $sql .= ' left join tmp_price_dropped on kb3_kills.kll_id = tmp_price_dropped.kll_id ';
393                                        $sql .= 'SET kb3_kills.kll_isk_loss = tmp_price_ship.value + ifnull(tmp_price_destroyed.value,0) ';
394                                        if(config::get(kd_droptototal)) $sql .= ' + ifnull(tmp_price_dropped.value,0) ';
395                                        $sql .= ' WHERE kll_id >= '.config::get('007.8status').' AND kll_id < '.
396                                                (intval(config::get('007.8status')) + intval(config::get('007.8step')));
397                                        $qry->execute ($sql);
398                                        config::set('007.8status',(intval(config::get('007.8status')) + intval(config::get('007.8step'))) );
399                                }
400                                config::del('007.8status');
401                                config::del('007.8step');
402                                $qry->execute("UNLOCK TABLES");
403                                $qry->execute('DROP TABLE tmp_price_ship');
404                                $qry->execute('DROP TABLE tmp_price_destroyed');
405                                $qry->execute('DROP TABLE tmp_price_dropped');
406                                config::set('007updatestatus',8);
407                                echo "<html><head>";
408                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
409                                echo"</head><body>7. Kill values: Totals updated</body>";
410                                die();
411                        }
412                }
413                if(config::get('007updatestatus') <9)
414                {
415                        $qry->execute("SHOW COLUMNS FROM kb3_kills LIKE 'kll_fb_crp_id'");
416                        if($qry->recordCount()) $qry->execute("ALTER TABLE `kb3_kills` DROP `kll_fb_crp_id`");
417                        config::set('007updatestatus',9);
418                        echo "<html><head>";
419                        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
420                        echo"</head><body>7. kll_fb_crp_id column dropped</body>";
421                        die();
422                }
423                if(config::get('007updatestatus') <10)
424                {
425                        $qry->execute("SHOW COLUMNS FROM kb3_kills LIKE 'kll_fb_all_id'");
426                        if($qry->recordCount()) $qry->execute("ALTER TABLE `kb3_kills` DROP `kll_fb_all_id`");
427                        config::set('007updatestatus',10);
428                        echo "<html><head>";
429                        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
430                        echo"</head><body>7. kll_fb_all_id column dropped</body>";
431                        die();
432                }
433                if(config::get('007updatestatus') <11)
434                {
435                        // Drop unused columns
436                        $qry->execute("SHOW COLUMNS FROM kb3_corps LIKE 'crp_trial'");
437                        if($qry->recordCount()) $qry->execute("ALTER TABLE kb3_corps DROP crp_trial");
438                        $qry->execute("SHOW COLUMNS FROM kb3_pilots LIKE 'plt_killpoints'");
439                        if($qry->recordCount()) $qry->execute("ALTER TABLE kb3_pilots DROP plt_killpoints");
440                        $qry->execute("SHOW COLUMNS FROM kb3_pilots LIKE 'plt_losspoints'");
441                        if($qry->recordCount()) $qry->execute("ALTER TABLE kb3_pilots DROP plt_losspoints");
442                        config::set('007updatestatus',11);
443                        echo "<html><head>";
444                        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
445                        echo"</head><body>7. Unused crp and plt columns dropped</body>";
446                        die();
447                }
448
449                // Add corp and alliance index to kb3_inv_detail
450                $qry->execute("SHOW INDEX FROM kb3_inv_detail");
451
452                $indexcexists = false;
453                $indexaexists = false;
454                while($testresult = $qry->getRow())
455                        if($testresult['Column_name'] == 'ind_crp_id')
456                                $indexcexists = true;
457                        if($testresult['Column_name'] == 'ind_all_id')
458                                $indexaexists = true;
459                if(config::get('007updatestatus') <12)
460                {
461                        if(!indexcexists)
462                                $qry->execute("ALTER  TABLE `kb3_inv_detail` ADD INDEX ( `ind_crp_id` ) ");
463                        config::set('007updatestatus',12);
464                        echo "<html><head>";
465                        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
466                        echo"</head><body>7. kb3_inv_detail ind_crp_id index added</body>";
467                        die();
468                }
469                if(config::get('007updatestatus') <13)
470                {
471                        if(!indexaexists)
472                                $qry->execute("ALTER  TABLE `kb3_inv_detail` ADD INDEX ( `ind_all_id` ) ");
473                        config::set('007updatestatus',13);
474                        echo "<html><head>";
475                        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
476                        echo"</head><body>7. kb3_inv_detail ind_all_id index added</body>";
477                        die();
478                }
479                if(config::get('007updatestatus') <14)
480                {
481                        // Add table for api cache
482                        $sql = "CREATE TABLE IF NOT EXISTS `kb3_apicache` (
483                                 `cfg_site` varchar(16) NOT NULL default '',
484                                 `cfg_key` varchar(32) NOT NULL default '',
485                                 `cfg_value` text NOT NULL,
486                                 PRIMARY KEY  (`cfg_site`,`cfg_key`)
487                                 )";
488                        $qry->execute($sql);
489                        $qry->execute("CREATE TABLE IF NOT EXISTS `kb3_apilog` (
490                                `log_site` VARCHAR( 20 ) NOT NULL ,
491                                `log_keyname` VARCHAR( 20 ) NOT NULL ,
492                                `log_posted` INT NOT NULL ,
493                                `log_errors` INT NOT NULL ,
494                                `log_ignored` INT NOT NULL ,
495                                `log_verified` INT NOT NULL ,
496                                `log_totalmails` INT NOT NULL ,
497                                `log_source` VARCHAR( 20 ) NOT NULL ,
498                                `log_type` VARCHAR( 20 ) NOT NULL ,
499                                `log_timestamp` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
500                                ) ENGINE = MYISAM ");
501
502                        // set API update complete
503                        config::set('API_DBUpdate', '1');
504                        config::set('007updatestatus',14);
505                        echo "<html><head>";
506                        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
507                        echo"</head><body>7. API tables added</body>";
508                        die();
509                }
510                if(config::get('007updatestatus') <15)
511                {
512
513                        // Add subsystem slot
514                        $qry->execute("SELECT 1 FROM kb3_item_locations WHERE itl_id = 7");
515                        if(!$qry->recordCount())
516                        {
517                                $qry->execute("INSERT INTO `kb3_item_locations` (`itl_id`, `itl_location`) VALUES(7, 'Subsystem Slot')");
518                                $qry->execute("UPDATE `kb3_item_types` SET `itt_slot` = '7' WHERE `kb3_item_types`.`itt_id` = 954 LIMIT 1");
519                                $qry->execute("UPDATE `kb3_item_types` SET `itt_slot` = '7' WHERE `kb3_item_types`.`itt_id` = 955 LIMIT 1");
520                                $qry->execute("UPDATE `kb3_item_types` SET `itt_slot` = '7' WHERE `kb3_item_types`.`itt_id` = 956 LIMIT 1");
521                                $qry->execute("UPDATE `kb3_item_types` SET `itt_slot` = '7' WHERE `kb3_item_types`.`itt_id` = 957 LIMIT 1");
522                                $qry->execute("UPDATE `kb3_item_types` SET `itt_slot` = '7' WHERE `kb3_item_types`.`itt_id` = 958 LIMIT 1");
523                        }
524                        config::set('007updatestatus',15);
525                        echo "<html><head>";
526                        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
527                        echo"</head><body>7. Subsystem slots added</body>";
528                        die();
529                }
530                if(config::get('007updatestatus') <16)
531                {
532                        $qry->execute('SHOW TABLES');
533                        $qry2 = new DBQuery(true);
534                        while($row = $qry->getRow())
535                        {
536                                $tablename = implode($row);
537                                if($tablename == 'kb3_inv_all') $qry2->execute("TRUNCATE kb3_inv_all");
538                                if($tablename == 'kb3_inv_crp') $qry2->execute("TRUNCATE kb3_inv_crp");
539                                if($tablename == 'kb3_inv_plt') $qry2->execute("TRUNCATE kb3_inv_plt");
540                        }
541                        killCache();
542                        config::set("DBUpdate","007");
543                        $qry->execute("UPDATE kb3_config SET cfg_value = '007' WHERE cfg_key = 'DBUpdate'");
544                        config::del('007updatestatus');
545                        echo "<html><head>";
546                        echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
547                        echo"</head><body>7. Empty tables truncated.<br>Update 007 completed.</body>";
548                        die();
549                }
550        }
551}
552// Add unique name indices to alliance, corp and pilot
553// Check kb3_inv_detail has correct indices
554function update008()
555{
556        global $url;
557        //Checking if this Update already done
558        if (CURRENT_DB_UPDATE < "008" )
559        {
560
561                if(!config::get('008updatestatus')) config::set('008updatestatus',0);
562                $qry = new DBQuery(true);
563
564                if(config::get('008updatestatus') <1)
565                {
566                        // Add pilot, corp and alliance index to kb3_inv_detail
567                        // Incomplete in update007
568                        $qry->execute("SHOW INDEXES FROM kb3_inv_detail");
569                        $indexcexists = false;
570                        $indexaexists = false;
571                        $indexpexists = false;
572                        $indexkexists = false;
573                        while($testresult = $qry->getRow())
574                        {
575                                if($testresult['Column_name'] == 'ind_kll_id' && $testresult['Seq_in_index'] == 1)
576                                        $indexkexists = true;
577                                if($testresult['Column_name'] == 'ind_crp_id' && $testresult['Seq_in_index'] == 1)
578                                        $indexcexists = true;
579                                if($testresult['Column_name'] == 'ind_all_id' && $testresult['Seq_in_index'] == 1)
580                                        $indexaexists = true;
581                                if($testresult['Column_name'] == 'ind_plt_id' && $testresult['Seq_in_index'] == 1)
582                                        $indexpexists = true;
583                        }
584                        //
585                        if(!indexkexists)
586                        {
587                                $qry->execute("ALTER TABLE `kb3_inv_detail` ADD INDEX ( `ind_kll_id`, `ind_order` ) ");
588                                echo "<html><head>";
589                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
590                                echo"</head><body>8. kb3_inv_detail index id_order added</body>";
591                                die();
592                        }
593                        if(!indexcexists)
594                        {
595                                $qry->execute("ALTER TABLE `kb3_inv_detail` ADD INDEX ( `ind_crp_id` ) ");
596                                echo "<html><head>";
597                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
598                                echo"</head><body>8. kb3_inv_detail index id_order added</body>";
599                                die();
600                        }
601                        if(!indexaexists)
602                        {
603                                $qry->execute("ALTER TABLE `kb3_inv_detail` ADD INDEX ( `ind_all_id` ) ");
604                                echo "<html><head>";
605                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
606                                echo"</head><body>8. kb3_inv_detail index id_order added</body>";
607                                die();
608                        }
609                        if(!indexpexists)
610                        {
611                                $qry->execute("ALTER TABLE `kb3_inv_detail` ADD INDEX ( `ind_plt_id` ) ");
612                                echo "<html><head>";
613                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
614                                echo"</head><body>8. kb3_inv_detail index id_order added</body>";
615                                die();
616                        }
617                        config::set('008updatestatus', 1);
618                }
619
620                $qry->execute("SHOW INDEXES FROM kb3_corps");
621                $indexaexists = false;
622                while($testresult = $qry->getRow())
623                {
624                        if($testresult['Column_name'] == 'crp_name' && $testresult['Non_unique'] == 0)
625                                $indexcexists = true;
626                }
627                if(!$indexcexists)
628                {
629                        $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';
630
631                        if(config::get('008updatestatus') <2)
632                        {
633                                $qry->execute('update kb3_inv_detail join ('.$sqlcrp.') c on c.oldid = ind_crp_id set ind_crp_id = c.newid');
634                                config::set('008updatestatus', 2);
635                                echo "<html><head>";
636                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
637                                echo"</head><body>8. Unique corp names: updated kb3_inv_detail</body>";
638                                die();
639                        }
640                        if(config::get('008updatestatus') <3)
641                        {
642                                $qry->execute('update kb3_pilots join ('.$sqlcrp.') c on (c.oldid = plt_crp_id) set plt_crp_id = c.newid');
643                                config::set('008updatestatus', 3);
644                                echo "<html><head>";
645                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
646                                echo"</head><body>8. Unique corp names: updated kb3_pilots</body>";
647                                die();
648                        }
649                        if(config::get('008updatestatus') <4)
650                        {
651                                $qry->execute('update kb3_kills join ('.$sqlcrp.') c on (c.oldid = kll_crp_id) set kll_crp_id = c.newid');
652                                config::set('008updatestatus', 4);
653                                echo "<html><head>";
654                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
655                                echo"</head><body>8. Unique corp names: updated kb3_kills</body>";
656                                die();
657                        }
658                        if(config::get('008updatestatus') <6)
659                        {
660                                $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');
661                                config::set('008updatestatus', 6);
662                                echo "<html><head>";
663                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
664                                echo"</head><body>8. Unique corp names: updated kb3_corps</body>";
665                                die();
666                        }
667                        if(config::get('008updatestatus') <7)
668                        {
669                                $qry->execute("SHOW INDEXES FROM kb3_corps");
670                                $indexcexists = false;
671                                while($testresult = $qry->getRow())
672                                {
673                                        if($testresult['Column_name'] == 'crp_name' && $testresult['Seq_in_index'] == 1)
674                                        {
675                                                $indexcname = $testresult['Key_name'];
676                                                $indexcexists = true;
677                                        }
678                                        // Don't replace a custom multi-column index.
679                                        elseif($testresult['Key_name'] == $indexcname && $testresult['Seq_in_index'] == 2)
680                                                $indexcexists = false;
681                                }
682                                if($indexcexists) $qry->execute("ALTER TABLE `kb3_corps` DROP INDEX `".$indexcname."`");
683                                $qry->execute("ALTER TABLE `kb3_corps` ADD UNIQUE INDEX ( `crp_name` ) ");
684
685
686                                config::set('008updatestatus', 7);
687                                echo "<html><head>";
688                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
689                                echo"</head><body>8. Unique corp names: unique index added to kb3_corps</body>";
690                                die();
691                        }
692                }
693                // Make kb3_alliances.all_name unique without losing kills
694                $qry->execute("SHOW INDEXES FROM kb3_alliances");
695                $indexaexists = false;
696                while($testresult = $qry->getRow())
697                {
698                        if($testresult['Column_name'] == 'all_name' && $testresult['Non_unique'] == 0)
699                                $indexaexists = true;
700                }
701                if(!$indexaexists)
702                {
703                        $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';
704                        if(config::get('008updatestatus') <8)
705                        {
706                                $qry->execute('update kb3_inv_detail join ('.$sqlall.') c on c.oldid = ind_all_id set ind_all_id = c.newid');
707                                config::set('008updatestatus', 8);
708                                echo "<html><head>";
709                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
710                                echo"</head><body>8. Unique all names: updated kb3_inv_detail</body>";
711                                die();
712                        }
713                        if(config::get('008updatestatus') <9)
714                        {
715                                $qry->execute('update kb3_corps join ('.$sqlall.') c on (c.oldid = crp_all_id) set crp_all_id = c.newid');
716                                config::set('008updatestatus', 9);
717                                echo "<html><head>";
718                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
719                                echo"</head><body>8. Unique all names: updated kb3_corps</body>";
720                                die();
721                        }
722                        if(config::get('008updatestatus') <10)
723                        {
724                                $qry->execute('update kb3_kills join ('.$sqlall.') c on (c.oldid = kll_all_id) set kll_all_id = c.newid');
725                                config::set('008updatestatus', 10);
726                                echo "<html><head>";
727                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
728                                echo"</head><body>8. Unique all names: updated kb3_kills</body>";
729                                die();
730                        }
731
732                        if(config::get('008updatestatus') <12)
733                        {
734                                $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');
735                                config::set('008updatestatus', 12);
736                                echo "<html><head>";
737                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
738                                echo"</head><body>8. Unique all names: updated kb3_alliances</body>";
739                                die();
740                        }
741                        if(config::get('008updatestatus') <13)
742                        {
743                                $qry->execute("SHOW INDEXES FROM kb3_alliances");
744                                $indexaexists = false;
745                                while($testresult = $qry->getRow())
746                                {
747                                        if($testresult['Column_name'] == 'all_name' && $testresult['Seq_in_index'] == 1)
748                                        {
749                                                $indexaname = $testresult['Key_name'];
750                                                $indexaexists = true;
751                                        }
752                                        // Don't replace a custom multi-column index.
753                                        elseif($testresult['Key_name'] == $indexaname && $testresult['Seq_in_index'] == 2)
754                                                $indexaexists = false;
755                                }
756                                if($indexaexists) $qry->execute("ALTER TABLE `kb3_alliances` DROP INDEX `".$indexaname."`");
757                                $qry->execute("ALTER TABLE `kb3_alliances` ADD UNIQUE INDEX ( `all_name` ) ");
758                                config::set('008updatestatus', 13);
759                                echo "<html><head>";
760                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
761                                echo"</head><body>8. Unique all names: unique index applied to kb3_alliances</body>";
762                                die();
763                        }
764                }
765
766                // Make kb3_pilots.plt_name unique without losing kills
767                $qry->execute("SHOW INDEXES FROM kb3_pilots");
768                $indexaexists = false;
769                while($testresult = $qry->getRow())
770                {
771                        if($testresult['Column_name'] == 'plt_name' && $testresult['Non_unique'] == 0)
772                                $indexaexists = true;
773                }
774                if(!$indexaexists)
775                {
776                        $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';
777                        if(config::get('008updatestatus') <14)
778                        {
779                                $qry->execute('update kb3_inv_detail join ('.$sqlplt.') c on c.oldid = ind_plt_id set ind_plt_id = c.newid');
780                                config::set('008updatestatus', 14);
781                                echo "<html><head>";
782                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
783                                echo"</head><body>8. Unique plt names: updated kb3_inv_detail</body>";
784                                die();
785                        }
786                        if(config::get('008updatestatus') <15)
787                        {
788                                $qry->execute('update kb3_kills join ('.$sqlplt.') c on (c.oldid = kll_victim_id) set kll_victim_id = c.newid');
789                                config::set('008updatestatus', 15);
790                                echo "<html><head>";
791                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
792                                echo"</head><body>8. Unique plt names: updated kb3_kills victim</body>";
793                                die();
794                        }
795                        if(config::get('008updatestatus') <16)
796                        {
797                                $qry->execute('update kb3_kills join ('.$sqlplt.') c on (c.oldid = kll_fb_plt_id) set kll_fb_plt_id = c.newid');
798                                config::set('008updatestatus', 16);
799                                echo "<html><head>";
800                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
801                                echo"</head><body>8. Unique plt names: updated kb3_kills killer</body>";
802                                die();
803                        }
804                        if(config::get('008updatestatus') <17)
805                        {
806                                $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');
807                                config::set('008updatestatus', 17);
808                                echo "<html><head>";
809                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
810                                echo"</head><body>8. Unique plt names: updated kb3_pilots</body>";
811                                die();
812                        }
813                        if(config::get('008updatestatus') <18)
814                        {
815                                $qry->execute("SHOW INDEXES FROM kb3_pilots");
816                                $indexpexists = false;
817                                while($testresult = $qry->getRow())
818                                {
819                                        if($testresult['Column_name'] == 'plt_name' && $testresult['Seq_in_index'] == 1)
820                                        {
821                                                $indexpname = $testresult['Key_name'];
822                                                $indexpexists = true;
823                                        }
824                                        // Don't replace a custom multi-column index.
825                                        elseif($testresult['Key_name'] == $indexpname && $testresult['Seq_in_index'] == 2)
826                                                $indexpexists = false;
827                                }
828                                if($indexpexists)  $qry->execute("ALTER TABLE `kb3_pilots` DROP INDEX `".$indexpname."`");
829                                $qry->execute("ALTER TABLE `kb3_pilots` ADD UNIQUE INDEX ( `plt_name` ) ");
830                                config::set('008updatestatus', 18);
831                                echo "<html><head>";
832                                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
833                                echo"</head><body>8. Unique plt names: unique index applied to kb3_pilots.</body>";
834                                die();
835                        }
836                }
837                config::set('cache_update', '*');
838                config::set('cache_time', '10');
839
840                killCache();
841                config::set("DBUpdate", "008");
842                $qry->execute("UPDATE kb3_config SET cfg_value = '008' WHERE cfg_key = 'DBUpdate'");
843                config::del("008updatestatus");
844                echo "<html><head>";
845                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
846                echo"</head><body>Update 008 completed.</body>";
847                die();
848        }
849}
850
851// Add alliance and corp summary tables.
852function update009()
853{
854        global $url;
855        //Checking if this Update already done
856        if (CURRENT_DB_UPDATE < "009" )
857        {
858                $qry = new DBQuery();
859                $sql = "CREATE TABLE IF NOT EXISTS `kb3_sum_alliance` (
860                  `asm_all_id` int(11) NOT NULL DEFAULT '0',
861                  `asm_shp_id` int(3) NOT NULL DEFAULT '0',
862                  `asm_kill_count` int(11) NOT NULL DEFAULT '0',
863                  `asm_kill_isk` float NOT NULL DEFAULT '0',
864                  `asm_loss_count` int(11) NOT NULL DEFAULT '0',
865                  `asm_loss_isk` float NOT NULL DEFAULT '0',
866                  PRIMARY KEY (`asm_all_id`,`asm_shp_id`)
867                ) ENGINE=InnoDB";
868                $qry->execute($sql);
869                $sql = "CREATE TABLE IF NOT EXISTS `kb3_sum_corp` (
870                  `csm_crp_id` int(11) NOT NULL DEFAULT '0',
871                  `csm_shp_id` int(3) NOT NULL DEFAULT '0',
872                  `csm_kill_count` int(11) NOT NULL DEFAULT '0',
873                  `csm_kill_isk` float NOT NULL DEFAULT '0',
874                  `csm_loss_count` int(11) NOT NULL DEFAULT '0',
875                  `csm_loss_isk` float NOT NULL DEFAULT '0',
876                  PRIMARY KEY (`csm_crp_id`,`csm_shp_id`)
877                ) ENGINE=InnoDB";
878                $qry->execute($sql);
879                config::set("DBUpdate", "009");
880                $qry->execute("UPDATE kb3_config SET cfg_value = '009' WHERE cfg_key = 'DBUpdate'");
881                echo "<html><head>";
882                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
883                echo"</head><body>Update 009 completed.</body>";
884                die();
885        }
886}
887
888// Add alliance and corp summary tables.
889function update010()
890{
891        global $url;
892        //Checking if this Update already done
893        if (CURRENT_DB_UPDATE < "010" )
894        {
895                $qry = new DBQuery();
896                $sql = "CREATE TABLE IF NOT EXISTS `kb3_sum_pilot` (
897                  `psm_plt_id` int(11) NOT NULL DEFAULT '0',
898                  `psm_shp_id` int(3) NOT NULL DEFAULT '0',
899                  `psm_kill_count` int(11) NOT NULL DEFAULT '0',
900                  `psm_kill_isk` float NOT NULL DEFAULT '0',
901                  `psm_loss_count` int(11) NOT NULL DEFAULT '0',
902                  `psm_loss_isk` float NOT NULL DEFAULT '0',
903                  PRIMARY KEY (`psm_plt_id`,`psm_shp_id`)
904                ) ENGINE=InnoDB";
905                $qry->execute($sql);
906
907                config::set("DBUpdate", "010");
908                echo "<html><head>";
909                echo "<meta http-equiv='refresh' content='5;url=http://".$url."' >";
910                echo"</head><body>Update 010 completed.</body>";
911                die();
912        }
913}
914
915function update_slot_of_group($id,$oldSlot = 0 ,$newSlot){
916        $qry  = new DBQuery();
917        $query = "UPDATE kb3_item_types
918                                SET itt_slot = $newSlot WHERE itt_id = $id and itt_slot = $oldSlot;";
919        $qry->execute($query);
920        $query = "UPDATE kb3_items_destroyed
921                                INNER JOIN kb3_invtypes ON groupID = $id AND itd_itm_id = typeID
922                                SET itd_itl_id = $newSlot
923                                WHERE itd_itl_id = $oldSlot;";
924        $qry->execute($query);
925
926        $query = "UPDATE kb3_items_dropped
927                                INNER JOIN kb3_invtypes ON groupID = $id AND itd_itm_id = typeID
928                                SET itd_itl_id = $newSlot
929                                WHERE itd_itl_id = $oldSlot;";
930        $qry->execute($query);
931}
932
933function move_item_to_group($id,$oldGroup ,$newGroup){
934        $qry  = new DBQuery();
935        $query = "UPDATE kb3_invtypes
936                                SET groupID = $newGroup
937                                WHERE typeID = $id AND groupID = $oldGroup;";
938        $qry->execute($query);
939}
940
941function killCache()
942{
943        if(!is_dir(KB_CACHEDIR)) return;
944        $dir = opendir(KB_CACHEDIR);
945        while ($line = readdir($dir))
946        {
947                if (strstr($line, 'qcache_qry') !== false)
948                {
949                        @unlink(KB_CACHEDIR.'/'.$line);
950                }
951                elseif (strstr($line, 'qcache_tbl') !== false)
952                {
953                        @unlink(KB_CACHEDIR.'/'.$line);
954                }
955        }
956}
957
958?>
Note: See TracBrowser for help on using the browser.