root/dev/install/install_step4.php @ 103

Revision 103, 7.0 KB (checked in by exi, 14 years ago)

Fixed kill_export to allow corporation export.
Fixed installer config to not contain several php ending tags.
The sql importer now only executes lines which does not only contain whitespaces and will wait 20s on error for next importstep.

Line 
1<?php
2$stoppage = true;
3
4$struct = $opt = $data = array();
5$dir = opendir('./sql');
6while ($file = readdir($dir))
7{
8    if (strpos($file, 'sql_') !== false)
9    {
10        $table = str_replace(array('sql_tblstrct_', 'sql_tbldata_opt_', 'sql_tbldata_', '.sql'), '', $file);
11        $table = 'kb3_'.preg_replace('/(_p\d{1,4})/', '', $table);
12        if (strpos($file, 'tblstrct'))
13        {
14            $structc++;
15            $struct[$table][] = $file;
16        }
17        elseif (strpos($file, '_opt_'))
18        {
19            $dcnt++;
20            $optcnt++;
21            $opt[$table][] = $file;
22        }
23        else
24        {
25            $dcnt++;
26            $datacnt++;
27            $data[$table][] = $file;
28        }
29    }
30}
31$db = mysql_pconnect($_SESSION['sql']['host'], $_SESSION['sql']['user'], $_SESSION['sql']['pass']);
32mysql_select_db($_SESSION['sql']['db']);
33$result = mysql_query('show tables');
34while ($row = mysql_fetch_row($result))
35{
36    $table = $row[0];
37    unset($struct[$table]);
38}
39
40if ($_REQUEST['sub'] == 'struct')
41{
42    foreach ($struct as $table => $files)
43    {
44        foreach ($files as $file)
45        {
46            echo 'Creating table '.$table.' from file '.$file.'...';
47            $query = file_get_contents('./sql/'.$file);
48            $id = mysql_query($query);
49            if ($id)
50            {
51                echo 'done<br/>';
52            }
53            else
54            {
55                echo 'error: '.mysql_error().'<br/>';
56            }
57        }
58        unset($struct[$table]);
59    }
60}
61if ($_REQUEST['do'] == 'reset')
62{
63    unset($_SESSION['sqlinsert']);
64    unset($_SESSION['doopt']);
65}
66
67if ($_REQUEST['sub'] == 'data')
68{
69    if (!isset($_SESSION['sqlinsert']))
70    {
71        $_SESSION['sqlinsert'] = 1;
72        if (isset($_POST['opt']))
73        {
74            $_SESSION['useopt'] = array();
75            foreach ($_POST['opt'] as $table => $value)
76            {
77                $_SESSION['useopt'][] = $table;
78            }
79        }
80    }
81
82    $i = 0;
83    $did = false;
84    $errors = false;
85    if (!isset($_SESSION['doopt']))
86    {
87        foreach ($data as $table => $files)
88        {
89            foreach ($files as $file)
90            {
91                $i++;
92                if ($_SESSION['sqlinsert'] > $i)
93                {
94                    continue;
95                }
96                echo 'Inserting data ('.$i.'/'.$datacnt.') into '.$table.' from file '.$file.'...';
97                $querys = file('./sql/'.$file);
98                foreach ($querys as $query)
99                {
100                    if (trim($query))
101                    {
102                        $id = mysql_query($query);
103                    }
104                }
105                if ($id)
106                {
107                    echo 'done<br/>';
108                    echo '<meta http-equiv="refresh" content="1; URL=?step=4&sub=data" />';
109                    echo 'Automatic reload in 1s for next chunk. <a href="?step=4&sub=data">Manual Link</a><br/>';
110                }
111                else
112                {
113                    echo 'error: '.mysql_error().'<br/>';
114                    echo '<meta http-equiv="refresh" content="20; URL=?step=4&sub=data" />';
115                    echo 'Automatic reload in 20s for next chunk because of the error occured. <a href="?step=4&sub=data">Manual Link</a><br/>';
116                }
117                $_SESSION['sqlinsert']++;
118
119                $did = true;
120                break 2;
121            }
122        }
123    }
124
125    if (isset($_SESSION['useopt']) && !$did)
126    {
127        $i = 0;
128        if (!isset($_SESSION['doopt']))
129        {
130            $_SESSION['doopt'] = true;
131            $_SESSION['sqlinsert'] = 1;
132        }
133        foreach ($opt as $table => $files)
134        {
135            if (!in_array($table, $_SESSION['useopt']))
136            {
137                continue;
138            }
139            foreach ($files as $file)
140            {
141                $optsel++;
142            }
143        }
144        foreach ($opt as $table => $files)
145        {
146            if (!in_array($table, $_SESSION['useopt']))
147            {
148                continue;
149            }
150            foreach ($files as $file)
151            {
152                $i++;
153                if ($_SESSION['sqlinsert'] > $i)
154                {
155                    continue;
156                }
157                echo 'Inserting optional data ('.$i.'/'.$optsel.') into '.$table.' from file '.$file.'...';
158                $querys = file('./sql/'.$file);
159                foreach ($querys as $query)
160                {
161                    $id = mysql_query($query);
162                }
163                if ($id)
164                {
165                    echo 'done<br/>';
166                }
167                else
168                {
169                    echo 'error: '.mysql_error().'<br/>';
170                }
171                $_SESSION['sqlinsert']++;
172                echo '<meta http-equiv="refresh" content="1; URL=?step=4&sub=data" />';
173                echo 'Automatic reload in 1s for next chunk. <a href="?step=4&sub=data">Manual Reload</a><br/>';
174                $did = true;
175                break 2;
176            }
177        }
178    }
179    if (!$did)
180    {
181        echo 'All tables imported. You can now create or search your corporation/alliance: <a href="?step=5">Continue</a><br/>';
182        $stoppage = false;
183    }
184    echo '<a href="?step=4&sub=datasel&do=reset">Reset</a><br/>';
185}
186?>
187<div class="block-header2">MySQL Data Import</div>
188Found <?php echo $structc; ?> table structures and <?php echo $dcnt; ?> data files for <?php echo count($opt)+count($data); ?> tables.<br/>
189<?php
190
191$structadd = 0;
192foreach ($struct as $table => $file)
193{
194    echo 'Table struct has to be added: '.$table.'<br/>';
195    $structadd++;
196}
197if (!$structadd && $_REQUEST['sub'] != 'datasel' && $_REQUEST['sub'] != 'data')
198{
199    echo 'All table structures seem to be in the database, please continue with <a href="?step=4&sub=datasel">Importing Data</a><br/>';
200    echo '<br/><br/>In case you aborted the install and you got already data in those table you can bypass the import now by with <a href="?step=5">this link</a><br/>';
201}
202elseif ($structadd)
203{
204    echo 'Some table structures have to be added, please continue with <a href="?step=4&sub=struct">Creating Tables</a><br/>';
205}
206
207if ($_REQUEST['sub'] == 'datasel')
208{
209?>
210<p>Please select optional SQL data to be inserted into the database:<br/></p>
211<form id="options" name="options" method="post" action="?step=4">
212<input type="hidden" name="step" value="4">
213<input type="hidden" name="sub" value="data">
214<table class="kb-subtable">
215<?php
216    foreach ($opt as $table => $files)
217    {
218?>
219<tr><td width="120"><b><?php echo $table; ?></b></td><td><input type="checkbox" name="opt[<?php echo $table; ?>]"></td></tr>
220<?php
221    }
222    ?>
223<tr><td width="120"></td><td><input type=submit name=submit value="Ok"></td></tr>
224</table>
225<?php
226}
227?>
228<?php if ($stoppage)
229{
230    return;
231}?>
232<p><a href="?step=<?php echo ($_SESSION['state']+1); ?>">Next Step</a></p>
Note: See TracBrowser for help on using the browser.