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

Revision 148, 4.5 KB (checked in by exi, 14 years ago)

Reverted the changes in 1.2.1 tag, tags may not be changed.
Removed the admin menus for the syndication feeds as they don't meet the core-requirements and put them into a separate mod.
However, the modified feed engine itself remains core.

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.