root/dev/common/kill_export.php @ 134

Revision 134, 10.1 KB (checked in by exi, 14 years ago)

Added standings-management.
Changed installer step 3 to only use POST data now.
Character portraits should now look a bit better.
Changed all smarty template requests to use a wrapper function.
Modified standard page for IGB.
Added php compat file to reduce minimal needed version to 4.0.9.

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(get_tpl('admin_export'));
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.