root/dev/common/kill_export.php @ 103

Revision 103, 10.1 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@set_time_limit(0);
3require_once('class.page.php');
4require_once('class.killboard.php');
5require_once('class.parser.php');
6require_once('class.kill.php');
7require_once('admin_menu.php');
8
9$page = new Page();
10$page->setAdmin();
11$page->setTitle("Administration - Killmail Exporter");
12
13if (!$_POST['dir'])
14{
15    $dir = getcwd().'/cache/kill_export';
16}
17if (!$_POST['ext'])
18{
19    $ext = '.txt';
20}
21else
22{
23    $ext = $_POST['ext'];
24}
25if ($_REQUEST['submit'] == 'Reset')
26{
27    unset($_SESSION['kill_export']);
28    unset($_POST);
29}
30elseif ($_REQUEST['sub'] == 'do')
31{
32    unset($_SESSION['kill_export']['select']);
33    $_SESSION['kill_export']['do'] = 1;
34}
35
36$html .= "<form id=\"options\" name=\"options\" method=\"post\" action=\"?a=kill_export\">";
37$html .= '<input type="hidden" value="" name=""/>';
38
39if ($_POST)
40{
41    $dir = $_POST['dir'];
42    if (!$dir && $_SESSION['kill_export']['dir'])
43    {
44        $dir = $_SESSION['kill_export']['dir'];
45        $ext = $_SESSION['kill_export']['ext'];
46    }
47    if (!strstr(stripslashes($dir), stripslashes(getcwd())))
48    {
49        $dir = getcwd().$dir;
50    }
51
52    if (substr($dir, -1, 1) != '/')
53    {
54        $dir .= '/';
55    }
56    if (is_dir($dir))
57    {
58        if (is_writeable($dir))
59        {
60            $html .= "'$dir' is valid and writeable<br/>";
61            $_SESSION['kill_export']['select'] = 1;
62            $_SESSION['kill_export']['dir'] = $dir;
63            $_SESSION['kill_export']['ext'] = $ext;
64        }
65    }
66    else
67    {
68        $html .= "'$dir' does not exists, trying to create it...";
69        if (mkdir($dir))
70        {
71            $html .= 'successful<br/>';
72            $_SESSION['kill_export']['select'] = 1;
73            $_SESSION['kill_export']['dir'] = $dir;
74            $_SESSION['kill_export']['ext'] = $ext;
75            chmod($dir, 0777);
76        }
77        else
78        {
79            $html .= 'failed<br/>';
80        }
81    }
82    if (!isset($_SESSION['kill_export']['to_export']))
83    {
84        if (ALLIANCE_ID)
85        {
86            $_SESSION['kill_export']['to_export'] = 'a'.ALLIANCE_ID;
87        }
88        else
89        {
90            $_SESSION['kill_export']['to_export'] = 'c'.CORP_ID;
91        }
92    }
93}
94elseif (!isset($_SESSION['kill_export']['do']) || !isset($_SESSION['kill_export']['select']))
95{
96    $html .= "<div class=block-header2>Select a folder to export the Killmails to</div>";
97    $html .= "<table class=kb-subtable>";
98    $html .= "<tr><td width=120><b>Directory:</b></td><td><input type=text name=dir id=dir size=60 maxlength=80 value=\"".$dir."\"></td></tr>";
99    $html .= "<tr><td width=120><b>Extension:</b></td><td><input type=text name=ext id=ext size=3 maxlength=10 value=\"".$ext."\"></td></tr>";
100    $html .= "<tr><td width=120><b>Attention:</b></td><td>For security reasons only directorys below the main EDK-directory will be used.</td></tr>";
101    $html .= "<tr><td width=120></td><td><input type=submit name=submit value=\"Check\"></td></tr>";
102    $html .= "</table>";
103}
104$html .= "</form>";
105
106if (isset($_SESSION['kill_export']['select']))
107{
108    if ($_REQUEST['searchphrase'] != "" && strlen($_REQUEST['searchphrase']) >= 3)
109    {
110        switch ($_REQUEST['searchtype'])
111        {
112            case "pilot":
113                $sql = "select plt.plt_id, plt.plt_name, crp.crp_name
114                        from kb3_pilots plt, kb3_corps crp
115                        where lower( plt.plt_name ) like lower( '%".slashfix($_REQUEST['searchphrase'])."%' )
116                        and plt.plt_crp_id = crp.crp_id
117                        order by plt.plt_name";
118                break;
119            case "corp":
120                $sql = "select crp.crp_id, crp.crp_name, ali.all_name
121                        from kb3_corps crp, kb3_alliances ali
122                        where lower( crp.crp_name ) like lower( '%".slashfix($_REQUEST['searchphrase'])."%' )
123                        and crp.crp_all_id = ali.all_id
124                        order by crp.crp_name";
125                break;
126            case "alliance":
127                $sql = "select ali.all_id, ali.all_name
128                        from kb3_alliances ali
129                        where lower( ali.all_name ) like lower( '%".slashfix($_REQUEST['searchphrase'])."%' )
130                        order by ali.all_name";
131                break;
132        }
133
134        $qry = new DBQuery();
135        $qry->execute($sql);
136
137        while ($row = $qry->getRow())
138        {
139            switch ($_REQUEST['searchtype'])
140            {
141                case 'pilot':
142                    $link = '?a=kill_export&add=p'.$row['plt_id'];
143                    $descr = 'Pilot '.$row['plt_name'].' from '.$row['crp_name'];
144                    break;
145                case 'corp':
146                    $link = "?a=kill_export&add=c".$row['crp_id'];
147                    $descr = 'Corp '.$row['crp_name'].', member of '.$row['all_name'];
148                    break;
149                case 'alliance':
150                    $link = '?a=kill_export&add=a'.$row['all_id'];
151                    $descr = 'Alliance '.$row['all_name'];
152                    break;
153            }
154            $results[] = array('descr' => $descr, 'link' => $link);
155        }
156        $smarty->assign_by_ref('results', $results);
157        $smarty->assign('search', true);
158    }
159
160    if (!$string = $_SESSION['kill_export']['to_export'])
161    {
162        $string = '';
163    }
164    $tmp = explode(',', $string);
165    $permissions = array('a' => array(), 'c' => array(), 'p' => array());
166    foreach ($tmp as $item)
167    {
168        if (!$item)
169        {
170            continue;
171        }
172        $typ = substr($item, 0, 1);
173        $id = substr($item, 1);
174        $permissions[$typ][$id] = $id;
175    }
176
177    if ($_REQUEST['add'])
178    {
179        $typ = substr($_REQUEST['add'], 0, 1);
180        $id = intval(substr($_REQUEST['add'], 1));
181        $permissions[$typ][$id] = $id;
182        $configstr = '';
183        foreach ($permissions as $typ => $id_array)
184        {
185            foreach ($id_array as $id)
186            {
187                $conf[] = $typ.$id;
188            }
189        }
190        $_SESSION['kill_export']['to_export'] = implode(',', $conf);
191    }
192
193    if ($_REQUEST['del'])
194    {
195        $typ = substr($_REQUEST['del'], 0, 1);
196        $id = intval(substr($_REQUEST['del'], 1));
197        unset($permissions[$typ][$id]);
198        $conf = array();
199        foreach ($permissions as $typ => $id_array)
200        {
201            foreach ($id_array as $id)
202            {
203                $conf[] = $typ.$id;
204            }
205        }
206        $_SESSION['kill_export']['to_export'] = implode(',', $conf);
207    }
208
209    asort($permissions['a']);
210    asort($permissions['c']);
211    asort($permissions['p']);
212
213    $permt = array();
214    foreach ($permissions as $typ => $ids)
215    {
216        foreach ($ids as $id)
217        {
218            if ($typ == 'a')
219            {
220                $alliance = new Alliance($id);
221                $text = $alliance->getName();
222                $link = '?a=kill_export&del='.$typ.$id;
223                $permt[$typ][] = array('text' => $text, 'link' => $link);
224            }
225            if ($typ == 'p')
226            {
227                $pilot = new Pilot($id);
228                $text = $pilot->getName();
229                $link = '?a=kill_export&del='.$typ.$id;
230                $permt[$typ][] = array('text' => $text, 'link' => $link);
231            }
232            if ($typ == 'c')
233            {
234                $corp = new Corporation($id);
235                $text = $corp->getName();
236                $link = '?a=kill_export&del='.$typ.$id;
237                $permt[$typ][] = array('text' => $text, 'link' => $link);
238            }
239        }
240    }
241    $perm = array();
242    if ($permt['a'])
243    {
244        $perm[] = array('name' => 'Alliances', 'list' => $permt['a']);
245    }
246    if ($permt['p'])
247    {
248        $perm[] = array('name' => 'Pilots', 'list' => $permt['p']);
249    }
250    if ($permt['c'])
251    {
252        $perm[] = array('name' => 'Corporations', 'list' => $permt['c']);
253    }
254
255    $smarty->assign_by_ref('permissions', $perm);
256    $html = $smarty->fetch('admin_export.tpl');
257}
258
259if (isset($_SESSION['kill_export']['do']))
260{
261    if ($string = $_SESSION['kill_export']['to_export'])
262    {
263        $klist = new KillList();
264        $llist = new KillList();
265
266        $tmp = explode(',', $string);
267        foreach ($tmp as $item)
268        {
269            if (!$item)
270            {
271                continue;
272            }
273            $typ = substr($item, 0, 1);
274            $id = substr($item, 1);
275            if ($typ == 'a')
276            {
277                $klist->addInvolvedAlliance(new Alliance($id));
278                $llist->addVictimAlliance(new Alliance($id));
279            }
280            elseif ($typ == 'c')
281            {
282                $klist->addInvolvedCorp(new Corporation($id));
283                $llist->addVictimCorp(new Corporation($id));
284            }
285            elseif ($typ == 'p')
286            {
287                $klist->addInvolvedPilot(new Pilot($id));
288                $llist->addVictimPilot(new Pilot($id));
289            }
290        }
291
292        $kills = array();
293        while ($kill = $klist->getKill())
294        {
295            $kills[$kill->getID()] = $kill->getTimestamp();
296        }
297        while ($kill = $llist->getKill())
298        {
299            $kills[$kill->getID()] = $kill->getTimestamp();
300        }
301
302        asort($kills);
303
304        $cnt = 0;
305        foreach ($kills as $id => $timestamp)
306        {
307                $kill = new Kill($id);
308            $cnt++;
309            $file = $_SESSION['kill_export']['dir'].$cnt.$_SESSION['kill_export']['ext'];
310                $fp = fopen($file, 'w');
311                fwrite($fp, $kill->getRawMail());
312                fclose($fp);
313        }
314        $html .= $cnt.' mails exported<br/>';
315        $html .= '<a href="?a=kill_export">Ok</a>';
316        unset($_SESSION['kill_export']);
317    }
318    else
319    {
320        // nothing to export, retry
321        unset($_SESSION['kill_export']['do']);
322        $_SESSION['kill_export']['select'] = 1;
323        header('Location: ?a=kill_export');
324    }
325}
326$page->addContext($menubox->generate());
327$page->setContent($html);
328$page->generate();
329?>
Note: See TracBrowser for help on using the browser.