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

Revision 361, 10.4 KB (checked in by beans, 13 years ago)

* Updated the admin panel. Should now be more "easy" to use.

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