root/1.2.1/common/feed_fetcher.php @ 146

Revision 146, 4.5 KB (checked in by liq, 15 years ago)

put syncmod v1.1 in the v1.2.1 release

Line 
1<?php
2
3// liq's feed syndication mod v1.1
4
5  @set_time_limit(0); 
6  require_once( "class.kill.php" );
7  require_once( "class.parser.php" );
8  if ( file_exists("class.comments.php") ) // for the Eve-Dev Comment Class
9        require_once( "class.comments.php" );
10  if ( file_exists("class.comment.php") ) // for the D2 Killboard Comment Class
11        require_once( "class.comment.php" ); 
12   
13$insideitem = false; 
14$tag = "";
15$title = "";
16$description = "";
17$link = ""; 
18$x=0;
19
20function setConfig($key, $value) {
21    global $config;
22    if (method_exists($config, 'setConfig'))
23        return $config->setConfig($key, $value);
24    $qry = new DBQuery();
25    $qry->execute("select cfg_value from kb3_config
26                   where cfg_key = '".$key."' and cfg_site = '".KB_SITE."'");
27    if ($qry->recordCount())
28        $sql = "update kb3_config set cfg_value = '".$value."'
29                where cfg_site = '".KB_SITE."' and cfg_key = '".$key."'";
30    else
31        $sql = "insert into kb3_config values ( '".KB_SITE."','".$key."','".$value."' )";
32    $qry->execute($sql);
33}
34
35function getConfig($key) {
36    global $config;
37    if (method_exists($config, 'getConfig'))
38        return $config->getConfig($key);
39    $qry = new DBQuery();
40    $qry->query("select ".$key." from kb3_config where cfg_site = '".KB_SITE."'");
41    $row = $qry->getRow();
42    if (isset($row[$key]))
43        return $row[$key];
44    return false;
45}
46
47function delConfig($key) {
48    global $config;
49    $qry = new DBQuery();
50    $qry->execute("delete from kb3_config where cfg_key = '".$key."' and cfg_site = '".KB_SITE."'");
51}
52
53class Fetcher {
54 
55function grab($url) { 
56                global $x, $fetchurl;
57                $fetchurl = $url;
58        $xml_parser = xml_parser_create();
59                xml_set_object ( $xml_parser, $this );
60                xml_set_element_handler($xml_parser, "startElement", "endElement");       
61                xml_set_character_data_handler ( $xml_parser, 'characterData' ); 
62                $fp = @fopen($url,"r");
63                while ($data = fread($fp, 4096)) {
64                        if (!xml_parse( $xml_parser, $data, feof($fp) ) && !feof($fp) )
65                                return "<i>Error getting XML data from ".$url."</i><br><br>";
66                }
67                fclose($fp);
68                xml_parser_free($xml_parser);
69                if ($x)
70                        $html = "<div class=block-header2>".$x." kills added from feed: ".$url."</div>";
71                else
72                        $html = "<div class=block-header2>No kills added from feed: ".$url."</div>";
73return $html; 
74}
75
76function startElement($parser, $name, $attrs) {
77        global $insideitem, $tag, $title, $description, $link;
78        if ($insideitem)
79                $tag = $name;
80        elseif ($name == "ITEM")
81                $insideitem = true;
82}
83
84function endElement($parser, $name) {
85        global $insideitem, $tag, $title, $description, $link, $html, $x, $fetchurl;
86
87        if ($name == "ITEM") {
88                if ( isset( $description ) ) {
89                        $parser = new Parser( $description );
90                $killid = $parser->parse( true );
91                if ( $killid == 0 || $killid == -1 || $killid == -2 ) {
92                                if ( $killid == 0 && getConfig('fetch_verbose') )
93                        $html .= "Killmail is malformed.<br>";
94                        if ( $killid == -2 && getConfig('fetch_verbose') )
95                            $html .= "Killmail is not related to ".KB_TITLE.".<br>";
96                                if ( $killid == -1 && getConfig('fetch_verbose') )
97                                    $html .= "Killmail already posted <a href=\"?a=kill_detail&kll_id=".$parser->dupeid_."\">here</a>.<br>";
98                        }               
99                        else {
100                                $qry = new DBQuery();
101                                $qry->execute( "insert into kb3_log     values( ".$killid.", '".KB_SITE."','".$_SERVER['REMOTE_ADDR']."',now() )" );
102                                $html .= "Killmail succsessfully posted <a href=\"?a=kill_detail&kll_id=".$killid."\">here</a>.<br>";
103
104                                if (class_exists('Comments') && getConfig('fetch_comment')) { // for the Eve-Dev Comment Class
105                                        $comments = new Comments($killid);
106                        $comments->addComment("Automatic Kill Import", getConfig('fetch_comment')." (mail fetched from: ".$fetchurl.")");
107                                }
108                                if (class_exists('Comment') && getConfig('fetch_comment')) { // for the D2 Killboard Comment Class
109                                        $comment = new Comment($killid);
110                        $comment->postComment(getConfig('fetch_comment')." \n\n <i>(mail fetched from:\n ".$fetchurl.")</i>", "liquidism");
111                                }
112                                $x++;
113                        }
114        }
115                $title = "";
116                $description = ""; 
117                $link = "";
118                $insideitem = false;
119        }
120}
121
122function characterData($parser, $data) {
123        global $insideitem, $tag, $title, $description, $link;
124        if ($insideitem) {
125                switch ($tag) {
126                        case "TITLE":
127                        $title .= $data;
128                        break;
129                        case "DESCRIPTION":
130                        $description .= $data;
131                        break;
132                        case "LINK":
133                        $link .= $data;
134                        break;
135                }
136        }
137}
138
139}
140
141?>
Note: See TracBrowser for help on using the browser.