root/dev/common/admin/admin_kill_export.php @ 401

Revision 401, 10.4 KB (checked in by kovell, 13 years ago)

Fixes: missing kill_export include included, troubleshooting shell_exec replaced, db.php allows >=4.1 instead of >4.1, apiuser mod comments update kill_details cache, ships names updated.

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