root/dev/common/feed_fetcher.php @ 136

Revision 136, 2.9 KB (checked in by liq, 14 years ago)

added the killboard networking addon ( http://www.eve-dev.net/e107_plugins/forum/forum_viewtopic.php?1896)

Line 
1<?php
2// liq's feed syndication mod v1.0
3
4  require_once( "class.page.php" );
5  require_once( "class.kill.php" );
6  require_once( "class.parser.php" );
7 
8   
9$insideitem = false; 
10$tag = "";
11$title = "";
12$description = "";
13$link = "";
14$x=0;
15
16class Fetcher 
17{
18 
19function generate($url) { 
20                global $x;
21                @set_time_limit(0); 
22        $xml_parser = xml_parser_create();
23                xml_set_object ( $xml_parser, $this );
24                xml_set_element_handler($xml_parser, "startElement", "endElement");       
25                xml_set_character_data_handler ( $xml_parser, 'characterData' ); 
26                $fp = @fopen($url,"r");
27                while ($data = fread($fp, 4096)) {
28                        if (!xml_parse( $xml_parser, $data, feof($fp) ) && !feof($fp) )
29                                return "<i>Error getting XML data from ".$url."</i><br><br>";
30                }
31                fclose($fp);
32                xml_parser_free($xml_parser);
33                if ($x)
34                        $html = "<div class=block-header2>".$x." kills added from feed: ".$url."</div>";
35                else
36                        $html = "<div class=block-header2>No kills added from feed: ".$url."</div>";
37               
38return $html; 
39}
40
41function startElement($parser, $name, $attrs) {
42        global $insideitem, $tag, $title, $description, $link;
43        if ($insideitem) {
44                $tag = $name;
45        } elseif ($name == "ITEM") {
46                $insideitem = true;
47        }
48}
49
50function endElement($parser, $name) {
51        global $insideitem, $tag, $title, $description, $link, $html, $x;
52
53        if ($name == "ITEM") {
54                if ( isset( $description ) ) {
55                        $parser = new Parser( $description );
56                $killid = $parser->parse( true );
57                if ( $killid == 0 || $killid == -1 || $killid == -2 || $killid == -3 ) {
58                        $page = new Page( "Error" );
59                                if ( $killid == 0 )
60                                $html .= "Killmail is malformed.<br>";
61                                if ( $killid == -3 )
62                                $html .= "Killmail does not have a final blow! <p><br>To prevent the corruption of the database please just fake a <i>(laid the final blow)</i> behind one of the involved players on the killmail.<br><br><b>Example:</b><i><br>Name: liquidism (laid the final blow)</i></p>";
63                        if ( $killid == -2 )
64                                        $html .= "Killmail is not related to ".KB_TITLE.".<br>";
65                                if ( $killid == -1 )
66                                        $html .= "Killmail already posted <a href=\"?a=kill_detail&kll_id=".$parser->dupeid_."\">here</a>.<br>";
67                        }               
68                        else {
69                                $qry = new DBQuery();
70                                $qry->execute( "insert into kb3_log     values( ".$killid.", '".KB_SITE."','".$_SERVER['REMOTE_ADDR']."',now() )" );
71                                $html .= "Killmail has succsessfully been posted <a href=\"?a=kill_detail&kll_id=".$killid."\">here</a>.<br>";                 
72                                $x++;
73                        }
74        }
75                $title = "";
76                $description = ""; 
77                $link = "";
78                $insideitem = false;
79        }
80}
81
82function characterData($parser, $data) {
83        global $insideitem, $tag, $title, $description, $link;
84        if ($insideitem) {
85                switch ($tag) {
86                        case "TITLE":
87                        $title .= $data;
88                        break;
89                        case "DESCRIPTION":
90                        $description .= $data;
91                        break;
92                        case "LINK":
93                        $link .= $data;
94                        break;
95                }
96        }
97}
98
99
100
101}
102?>
Note: See TracBrowser for help on using the browser.