root/dev/upgrade.php @ 413

Revision 413, 36.2 KB (checked in by kovell, 13 years ago)

Fixes: Upgrade upgrades. Install style added to upgrade.

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