root/dev/common/admin/admin_feedsyndication.php @ 390

Revision 390, 10.1 KB (checked in by kovell, 13 years ago)

Fixes: sig mod works, apikill setting saved on admin panel, page cache does not attempt to double gzip, banner and award images have size set.

Line 
1<?php
2/*
3 * EDK Feed Syndication v1.7
4 * based on liq's feed syndication mod v1.5
5 *
6 */
7
8// set this to 1 if you are running a master killboard and want
9// to even fetch mails not related to your corp / alliance
10define('MASTER', 0);
11
12@set_time_limit(0);
13require_once('feed_fetcher.php');
14require_once('common/admin/admin_menu.php');
15require_once('common/includes/class.corp.php');
16require_once('common/includes/class.alliance.php');
17
18$page = new Page("Administration - Feed Syndication " . $feedversion);
19$page->setCachable(false);
20$page->setAdmin();
21
22$validurl = "/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}((:[0-9]{1,5})?\/.*)?$/i";
23$html .= "<script language=\"JavaScript\">function checkAll(checkname, exby) {for (i = 0; i < checkname.length; i++)checkname[i].checked = exby.checked? true:false}</script>";
24$html .= "<table class=kb-subtable>";
25
26if (config::get('fetch_feed_count'))
27    $feedcount = config::get('fetch_feed_count');
28else
29    $feedcount = 3;
30// saving urls and options
31if ($_POST['submit'] || $_POST['fetch'])
32{
33    if (ctype_digit($_POST['fetch_feed_count']) && $_POST['fetch_feed_count'] > 0)
34    {
35        $feedcount = $_POST['fetch_feed_count'];
36        for ($i = config::get('fetch_feed_count'); $i > $feedcount; $i--)
37        {
38            config::del('fetch_url_' . $i);
39        }
40        config::set('fetch_feed_count', $feedcount);
41    }
42    if ($_POST['fetch_verbose'])
43        config::set('fetch_verbose', '1');
44    else
45        config::set('fetch_verbose', '0');
46
47    if ($_POST['fetch_compress'])
48        config::set('fetch_compress', '0');
49    else
50        config::set('fetch_compress', '1');
51
52    if ($_POST['fetch_comment'])
53        config::set('fetch_comment', $_POST['fetch_comment']);
54    else
55        config::set('fetch_comment', '');
56
57    for ($i = 1; $i <= $feedcount; $i++)
58    {
59        $url = "fetch_url_" . $i;
60        if (preg_match($validurl , $_POST[$url]))
61        {
62            if ($_POST['friend'] && in_array ($i, $_POST['friend']))
63                $friends = "on";
64            else $friends = "";
65            if ($_POST['apikills'] && in_array ($i, $_POST['apikills']))
66                $apikills = "on";
67            else $apikills = "";
68            $fstr = config::get('fetch_url_' . $i);
69            $ftmp = explode(':::', $fstr);
70            // reset the feed lastkill details if the URL, friends or api status has changed
71            if($_POST[$url] != $ftmp[0] || $friends != $ftmp[2] || $apikills != $ftmp[3] ||
72                                        ($_POST['newkills'] && !in_array ($i, $_POST['newkills'])) )
73                config::set($url, $_POST[$url] . ':::' . 0 . ':::' . $friends . ':::' . $apikills);
74        }
75        else
76            config::set($url, '');
77        $feed[$i] = '';
78    }
79}
80$feed = array();
81$feedlast = array();
82for ($i = 1; $i <= $feedcount; $i++)
83{
84    $str = config::get('fetch_url_' . $i);
85    $tmp = explode(':::', $str);
86    $feed[$i] = $tmp[0];
87    $feedlast[$i] = $tmp[1];
88    if ($tmp[2] == "on")
89        $friend[$i] = $tmp[2];
90        if ($tmp[3] == "on")
91        $apikills[$i] = $tmp[3];
92}
93// building the request query and fetching of the feeds
94if ($_POST['fetch'])
95{
96    if (CORP_ID && !MASTER)
97    {
98        $corp = new Corporation(CORP_ID);
99        $myid = '&corp=' . urlencode($corp->getName());
100    }
101    if (ALLIANCE_ID && !MASTER)
102    {
103        $alli = new Alliance(ALLIANCE_ID);
104        $myid = '&alli=' . urlencode($alli->getName());
105    }
106    for ($i = 1; $i <= $feedcount; $i++)
107    {
108        $feedfetch = new Fetcher();
109        $cfg = "fetch_url_" . $i;
110        if (preg_match($validurl , $feed[$i]) && $_POST['fetch_feed'] && in_array ($i, $_POST['fetch_feed']))
111        {
112            $str = '';
113             if ($feedlast[$i])
114             $str .= '&lastkllid='.$feedlast[$i];
115            if ($friend[$i])
116                $str .= '&friend=1';
117            if ($apikills[$i])
118                $str .= '&apikills=1';
119            if ($_POST['fetch_losses'])
120                $str .= "&losses=1";
121            if (!config::get('fetch_compress'))
122                $str .= "&gz=1";
123            if ($_POST['range1'] && $_POST['range2'])
124            {
125                if ($_POST['range1'] > $_POST['range2'])
126                {
127                    $range1 = $_POST['range2'];
128                    $range2 = $_POST['range1'];
129                }
130                else
131                {
132                    $range1 = $_POST['range1'];
133                    $range2 = $_POST['range2'];
134                }
135                for ($l = $range1; $l <= $range2; $l++)
136                {
137                    $html .= "<b>Week: " . $l . "</b><br>";
138                    $html .= $feedfetch->grab($feed[$i] . "&year=" . $_POST['year'] . "&week=" . $l, $myid . $str, $friend[$i], $cfg);
139                }
140            }
141            else
142                $html .= $feedfetch->grab($feed[$i], $myid . $str);
143        }
144        // If kills are fetched then change the last kill id for the feed
145        if(intval($feedfetch->lastkllid_))
146        {
147                config::set($cfg, $feed[$i] . ':::' . intval($feedfetch->lastkllid_) . ':::' . $friend[$i]);
148                $feedlast[$i] = intval($feedfetch->lastkllid);
149        }
150    }
151}
152// generating the html
153$html .= '<form id="options" name="options" method="post" action="?a=admin_feedsyndication">';
154$html .= "</table>";
155
156$html .= "<div class=block-header2>Feeds</div><table>";
157for ($i = 1; $i <= $feedcount; $i++)
158{
159    $html .= "<tr><td width=85px><b>Feed url #" . $i . "</b></td><td><input type=text name=fetch_url_" . $i . " size=50 class=password value=\"";
160    if ($feed[$i])
161        $html .= $feed[$i];
162    $html .= "\"></td>";
163
164    $html .= "<td><input type=checkbox name=friend[] id=friend value=" . $i;
165    if ($friend[$i])
166        $html .= " checked=\"checked\"";
167    $html .= "><b>Friend?</b></td>";
168
169    $html .= "<td><input type=checkbox name=newkills[] id=newkills value=" . $i;
170    if ($feed[$i])
171        $html .= " checked=\"checked\"";
172    $html .= "><b>New kills only?</b><br>";
173
174    $html .= "<td><input type=checkbox name=apikills[] id=apikills value=" . $i;
175    if ($apikills[$i])
176        $html .= " checked=\"checked\"";
177    $html .= "><b>API verified only?</b><br>";
178
179    $html .= "<td><input type=checkbox name=fetch_feed[] id=fetch value=" . $i;
180    if ($feed[$i])
181        $html .= " checked=\"checked\"";
182    $html .= "><b>Fetch?</b><br>";
183
184    $html .= "<input type=hidden name=fetch_time_" . $i . " value=\"";
185    if($feedlast[$i]) $html .= $feedlast[$i];
186    $html .= "\"></td>";
187    $html .= "</td></tr>";
188}
189$html .= '<tr><td colspan=2><i>Example: http://killboard.eve-d2.com/?a=feed</i></td><td>';
190$html .= '<input type="checkbox" name="all" onclick="checkAll(this.form.friend,this)"><i>all/none</i></td><td>';
191$html .= '<input type="checkbox" name="all" onclick="checkAll(this.form.fetch,this)"><i>all/none</i>';
192$html .= "</td></tr><br></table><br><br><br>";
193
194$html .= "<table><tr><td height=20px width=150px><b>First week:</b></td>";
195$html .= '<td><select name="range1">';
196$now = gmdate("W");
197for ($i = 1; $i <= 52; $i++)
198{
199    if ($now == $i)
200        $html .= '<option selected="selected "value="' . $i . '">' . $i . '</option>';
201    else
202        $html .= '<option value="' . $i . '">' . $i . '</option>';
203}
204$html .= '</select>';
205$html .= "<i></i></td></tr>";
206$html .= "<tr><td height=20px width=150px><b>Last week:</b></td>";
207$html .= '<td><select name="range2">';
208for ($i = 1; $i <= 53; $i++)
209{
210    if ($now == $i)
211        $html .= '<option selected="selected "value="' . $i . '">' . $i . '</option>';
212    else
213        $html .= '<option value="' . $i . '">' . $i . '</option>';
214}
215$html .= '</select>';
216$html .= "<i></i></td></tr>";
217
218$html .= "<tr><td height=20px width=150px><b>Year:</b></td>";
219$html .= '<td><select name="year">';
220for($dateit = 2005; $dateit <= gmdate('Y'); $dateit++)
221{
222        $html .='<option ';
223        if($dateit == gmdate('Y')) $html .= 'selected="selected"';
224        $html .=' value="'.$dateit.'">'.$dateit.'</option> ';
225}
226$html .= '</select>';
227$html .= "</td></tr>";
228$html .= "<tr><td height=40px width=150px><b>Get kills instead of losses?</b></td>";
229$html .= "<td><input type=checkbox name=fetch_losses id=fetch_losses>";
230$html .= "<i> (by default only their kills, your losses, get fetched, when ticked this is inversed)</i></td></tr>";
231$html .= "</table><br><br>";
232$html .= "<input type=submit id=submit name=fetch value=\"Fetch!\"><br><br>";
233
234$html .= "<div class=block-header2>Options</div><table>";
235$html .= "<tr><td height=30px width=150px><b>Number of feeds:</b></td>";
236$html .= "<td><input type=text name=fetch_feed_count size=2 maxlength=2 class=password value=\"" . $feedcount . "\"></td></tr>";
237$html .= "<tr><td height=50px width=150px><b>Comment for automatically parsed killmails?</b></td>";
238$html .= "<td><input type=text size=50 class=password name=fetch_comment id=fetch_comment value=\"";
239if (config::get('fetch_comment'))
240    $html .= config::get('fetch_comment');
241$html .= "\"><br><i> (leave blank for none)</i><br></td></tr>";
242$html .= "<tr><td height=30px width=150px><b>Enable compression?</b></td>";
243$html .= "<td><input type=checkbox name=fetch_compress id=fetch_compress";
244if (!config::get('fetch_compress'))
245    $html .= " checked=\"checked\"";
246$html .= "><i> (enables GZip compression for feeds that support this feature, for streams that do not support GZip compression regular html mode will be used automatically)</i></td>";
247$html .= "</tr>";
248$html .= "<tr><td height=30px width=150px><b>Verbose mode?</b></td>";
249$html .= "<td><input type=checkbox name=fetch_verbose id=fetch_verbose";
250if (config::get('fetch_verbose'))
251    $html .= " checked=\"checked\"";
252$html .= "><i> (displays advanced feed request information and errormessages when the imported mail is rejected for being malformed, already exists or is not related to your corp or alliance)</i></td>";
253$html .= "</tr></table><br><br>";
254$html .= "<input type=submit id=submit name=submit value=\"Save\">";
255$html .= "</form>";
256
257$page->addContext($menubox->generate());
258$page->setContent($html);
259$page->generate();
260
261?>
Note: See TracBrowser for help on using the browser.