root/dev/mods/feed_syndication/feed_fetcher.php @ 150

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

dev version: small fix to feed_fetcher.php to prevent
1.2.1 version: exi reverted my changes because of 'tag not allowed to change stuff' but with that made the old v1.0 code available again with is partly INCOMPATIBLE with the current mod_v1.2 release (and buggy). updated back to mod ver 1.2 to prevent incompatible code to be spreaded.

cheers
//liq

Line 
1<?php
2
3// liq's feed syndication mod v1.2
4
5  @set_time_limit(0);
6  require_once( "class.kill.php" );
7  require_once( "class.parser.php" );
8  if ( file_exists("../../common/class.comments.php") ) // for the Eve-Dev Comment Class
9        require_once( "class.comments.php" );
10  if ( file_exists("../../common/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                $x=0;
58                $fetchurl = $url;
59        $xml_parser = xml_parser_create();
60                xml_set_object ( $xml_parser, $this );
61                xml_set_element_handler($xml_parser, "startElement", "endElement");
62                xml_set_character_data_handler ( $xml_parser, 'characterData' );
63                $fp = @fopen($url,"r");
64                while ($data = @fread($fp, 4096)) {
65                        if (!xml_parse( $xml_parser, $data, feof($fp) ) && !feof($fp) )
66                                return "<i>Error getting XML data from ".$url."</i><br><br>";
67                }
68                @fclose($fp);
69                xml_parser_free($xml_parser);
70                if ($x)
71                        $html = "<div class=block-header2>".$x." kills added from feed: ".$url."</div>";
72                else
73                        $html = "<div class=block-header2>No kills added from feed: ".$url."</div>";
74return $html;
75}
76
77function startElement($parser, $name, $attrs) {
78        global $insideitem, $tag, $title, $description, $link;
79        if ($insideitem)
80                $tag = $name;
81        elseif ($name == "ITEM")
82                $insideitem = true;
83}
84
85function endElement($parser, $name) {
86        global $insideitem, $tag, $title, $description, $link, $html, $x, $fetchurl;
87
88        if ($name == "ITEM") {
89                if ( isset( $description ) ) {
90                        $parser = new Parser( $description );
91                $killid = $parser->parse( true );
92                if ( $killid == 0 || $killid == -1 || $killid == -2 ) {
93                                if ( $killid == 0 && getConfig('fetch_verbose') )
94                        $html .= "Killmail is malformed.<br>";
95                        if ( $killid == -2 && getConfig('fetch_verbose') )
96                            $html .= "Killmail is not related to ".KB_TITLE.".<br>";
97                                if ( $killid == -1 && getConfig('fetch_verbose') )
98                                    $html .= "Killmail already posted <a href=\"?a=kill_detail&kll_id=".$parser->dupeid_."\">here</a>.<br>";
99                        }
100                        else {
101                                $qry = new DBQuery();
102                                $qry->execute( "insert into kb3_log     values( ".$killid.", '".KB_SITE."','".$_SERVER['REMOTE_ADDR']."',now() )" );
103                                $html .= "Killmail succsessfully posted <a href=\"?a=kill_detail&kll_id=".$killid."\">here</a>.<br>";
104
105                                if (class_exists('Comments') && getConfig('fetch_comment')) { // for the Eve-Dev Comment Class
106                                        $comments = new Comments($killid);
107                        $comments->addComment("liq's feed syndication", getConfig('fetch_comment')." (mail fetched from: ".$fetchurl.")");
108                                }
109                                if (class_exists('Comment') && getConfig('fetch_comment')) { // for the D2 Killboard Comment Class
110                                        $comment = new Comment($killid);
111                        $comment->postComment(getConfig('fetch_comment')." \n\n <i>(mail fetched from:\n ".$fetchurl.")</i>", "liquidism");
112                                }
113                                $x++;
114                        }
115        }
116                $title = "";
117                $description = "";
118                $link = "";
119                $insideitem = false;
120        }
121}
122
123function characterData($parser, $data) {
124        global $insideitem, $tag, $title, $description, $link;
125        if ($insideitem) {
126                switch ($tag) {
127                        case "TITLE":
128                        $title .= $data;
129                        break;
130                        case "DESCRIPTION":
131                        $description .= $data;
132                        break;
133                        case "LINK":
134                        $link .= $data;
135                        break;
136                }
137        }
138}
139
140}
141
142?>
Note: See TracBrowser for help on using the browser.