root/dev/upgrade.php @ 432

Revision 428, 36.6 KB (checked in by kovell, 13 years ago)

Kill deletion and price updates wrapped in a transaction. eve_central_sync can fall back to fopen from cURL. Upgrade for suitable indexes

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