root/dev/common/admin/admin_kill_import.php @ 290

Revision 290, 7.1 KB (checked in by knifee, 15 years ago)

corrected a few kill_import -> admin_kill_import problems. Added a list of malformed files at the end of the import process

Line 
1<?php
2@set_time_limit(0);
3require_once('common/includes/class.parser.php');
4require_once('common/includes/class.kill.php');
5
6$page = new Page();
7$page->setAdmin();
8$page->setTitle('Administration - Killmail Importer');
9
10if (!$_POST['dir'])
11{
12    $dir = getcwd();
13}
14if (!$_POST['ext'])
15{
16    $ext = '.txt';
17}
18else
19{
20    $ext = $_POST['ext'];
21}
22if ($_REQUEST['submit'] == 'Reset')
23{
24    unset($_SESSION['kill_import']);
25    unset($_POST);
26}
27
28$html .= "<form id=\"options\" name=\"options\" method=\"post\" action=\"?a=admin_kill_import\">";
29
30if ($_POST)
31{
32    $dir = $_POST['dir'];
33    if (!$dir && $_SESSION['kill_import'])
34    {
35        $dir = $_SESSION['kill_import']['dir'];
36        $ext = $_SESSION['kill_import']['ext'];
37    }
38    if (!strstr($dir, getcwd()))
39    {
40        $dir = getcwd().$dir;
41    }
42
43    if (substr($dir, -1, 1) != '/')
44    {
45        $dir .= '/';
46    }
47    if (is_dir($dir))
48    {
49        $dirh = opendir($dir);
50        $i = 0;
51        while ($file = readdir($dirh))
52        {
53            if (strstr($file, $ext))
54            {
55                $i++;
56            }
57        }
58        if (!$num)
59        {
60            $num = 200;
61        }
62        if ($_POST['submit'] != 'Import')
63        {
64            $html .= "<div class=block-header2>Import Options</div>";
65            $html .= "<table class=kb-subtable>";
66            $html .= "<tr><td width=120></td><td>'$dir' contains $i files matching '$ext'</td></tr>";
67            $html .= "<tr><td width=120><b>Read # mails at once:</b></td><td><input type=text name=num id=num size=3 maxlength=10 value=\"".$num."\"></td></tr>";
68            $html .= "<tr><td width=120><b>Start with mail #:</b></td><td><input type=text name=startnum id=startnum size=3 maxlength=10 value=\"0\"></td></tr>";
69            $html .= "<tr><td width=120></td><td><input type=submit name=submit value=\"Import\">&nbsp;<input type=submit name=submit value=\"Reset\"></td></tr>";
70            $html .= "</table>";
71            $_SESSION['kill_import'] = array();
72            $_SESSION['kill_import']['dir'] = $dir;
73            $_SESSION['kill_import']['count'] = $i;
74            $_SESSION['kill_import']['ext'] = $ext;
75            $_SESSION['kill_import']['malformed'] = array();
76        }
77        else
78        {
79            $_SESSION['kill_import']['do'] = 1;
80            $_SESSION['kill_import']['num'] = $_POST['num'];
81            $_SESSION['kill_import']['startnum'] = $_POST['startnum'];
82        }
83    }
84    else
85    {
86        $html .= "'$dir' is not a valid directory<br>\n";
87    }
88}
89elseif (!isset($_SESSION['kill_import']['do']))
90{
91    $html .= "<div class=block-header2>Scan for Killmails</div>";
92    $html .= "<table class=kb-subtable>";
93    $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>";
94    $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>";
95    $html .= "<tr><td width=120><b>Attention:</b></td><td>For security reasons only directorys below the main EVE-KB-directory will be read.</td></tr>";
96    $html .= "<tr><td width=120></td><td><input type=submit name=submit value=\"Check\"></td></tr>";
97    $html .= "</table>";
98}
99$html .= "</form>";
100
101if (isset($_SESSION['kill_import']['do']))
102{
103    $i = 0;
104    $p = 0;
105    $p_all = 0;
106    $posted = 0;
107    $posted_all = 0;
108    $invalid = 0;
109    $inv = 0;
110    $num = 0;
111
112    $dirh = opendir($_SESSION['kill_import']['dir']);
113    while ($file = readdir($dirh))
114    {
115        if (strstr($file, $_SESSION['kill_import']['ext']))
116        {
117            $i++;
118            if ($i <= $_SESSION['kill_import']['startnum'])
119            {
120                continue;
121            }
122            if ($i <= $_SESSION['kill_import']['numcount'])
123            {
124                continue;
125            }
126            $num++;
127            $read++;
128            $mail = file_get_contents($_SESSION['kill_import']['dir'].$file);
129            $mail = stripslashes($mail);
130            $parser = new Parser($mail);
131
132            $killid = $parser->parse(false);
133            if ($killid == 0)
134            {
135                $inv++;
136                $invalid++;
137                $html .= "Killmail is malformed: $file.<br>\n";
138                $_SESSION['kill_import']['malformed'][] = $file;
139                //unlink($dir.$file);
140            }
141            elseif ($killid == -1)
142            {
143                $posted++;
144                $posted_all++;
145                #echo "That $file killmail has already been posted <a href=\"?a=kill_detail&kll_id=" . $parser->dupeid_ . "\">here</a>.<br>\n";
146            }
147            else
148            {
149                $p++;
150                $p_all++;
151            }
152
153            if ($i % 10 == 0)
154            {
155                $html .= "$i/".$_SESSION['kill_import']['count']." - $num files read, $p new, $posted old, $inv invalid<br>\n";
156                $inv = 0;
157                $p = 0;
158                $posted = 0;
159            }
160            if ($i >= $_SESSION['kill_import']['count'])
161            {
162                $html .= "$i/".$_SESSION['kill_import']['count']." - $num files read, $p new, $posted old, $inv invalid<br>\n";
163                $_SESSION['kill_import']['numcount'] = $i;
164//                $_SESSION['kill_import']['postall'] = $posted_all;
165//                $_SESSION['kill_import']['p_all'] = $p_all;
166                break;
167            }
168            if ($num >= $_SESSION['kill_import']['num'])
169            {
170                $html .= "$i/".$_SESSION['kill_import']['count']." - $num files read, $p new, $posted old, $inv invalid<br>\n";
171                $_SESSION['kill_import']['numcount'] = $i;
172                break;
173            }
174        }
175    }
176
177    if ($_SESSION['kill_import']['count'] - $_SESSION['kill_import']['numcount'] > 0)
178    {
179        $html .= '<meta http-equiv="refresh" content="5; URL=?a=admin_kill_import" />';
180        $html .= 'Automatic refresh in 5s<br/>';
181        $html .= '<a href="?a=admin_kill_import">Read next '.$_SESSION['kill_import']['num'].'</a>&nbsp;<a href="?a=admin_kill_import&submit=Reset">Reset</a>';
182        $_SESSION['kill_import']['read'] += $read;
183        $_SESSION['kill_import']['p_all'] += $p_all;
184        $_SESSION['kill_import']['posted_all'] += $posted_all;
185        $_SESSION['kill_import']['invalid'] += $invalid;
186    }
187    else
188    {
189        $html .= 'Import complete, '.$_SESSION['kill_import']['read'].' files read, '
190                 .$_SESSION['kill_import']['p_all'].' kills added, '
191                 .$_SESSION['kill_import']['posted_all'].' already posted, '
192                 .$_SESSION['kill_import']['invalid'].' malformed<br>';
193            $html .= '<hr/>The following files contained malformed mails:<br/>';     
194               
195            foreach($_SESSION['kill_import']['malformed'] as $mal_file){
196                        $html .= $mal_file.'<br/>';
197                }
198       
199        $html .= '<a href="?a=admin_kill_import">Ok</a>';
200        unset($_SESSION['kill_import']);
201    }
202}
203$page->addContext($menubox->generate());
204$page->setContent($html);
205$page->generate();
206?>
Note: See TracBrowser for help on using the browser.