root/dev/upgrade.php @ 419

Revision 417, 35.5 KB (checked in by kovell, 13 years ago)

Fixes: ship value column now bigint, rss feed html matches doctype. install db updated to 1.2:v1.4, faction correctly shown on raw mails, factions stored as alliance

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