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

Revision 231, 4.6 KB (checked in by ralle030583, 14 years ago)

Feed Syndication v1.5 Fixes:
-  http://www.eve-dev.net/e107_plugins/forum/forum_viewtopic.php?5366

Admin - DB Maintaince
- make the cache size a bit nice (KB/MB/GB)

Line 
1<?php
2        //////
3//////  //////
4//////  liq's feed syndication mod v1.5
5////////////
6////////////
7////////////
8////////////
9
10
11@set_time_limit(0);
12@ini_set('memory_limit',999999999);
13
14require_once( "common/includes/class.kill.php" );
15require_once( "common/includes/class.parser.php" );
16if ( file_exists("common/includes/class.comments.php") ) // for the Eve-Dev Comment Class
17        require_once( "common/includes/class.comments.php" );
18if ( file_exists("../../common/class.comment.php") ) // for the D2 Killboard Comment Class
19        require_once( "common/class.comment.php" );
20
21$insideitem = false;
22$tag = "";
23$title = "";
24$description = "";
25$link = "";
26$x=0;
27
28class Fetcher {
29
30function grab($url, $str) {
31                global $x, $uurl;
32                $x=0;
33                $fetchurl = $url.$str;
34                $uurl = $url;
35        $xml_parser = xml_parser_create();
36                xml_set_object ( $xml_parser, $this );
37                xml_set_element_handler($xml_parser, "startElement", "endElement");
38                xml_set_character_data_handler ( $xml_parser, 'characterData' );
39
40                include_once('common/includes/class.http.php');
41
42                $http = new http_request($fetchurl);
43                $http->set_timeout(120);
44                $http->set_cookie('D2', 'a%3A4%3A%7Bi%3A0%3Bs%3A4%3A%221456%22%3Bi%3A1%3Bs%3A40%3A%22ca313afe9822b1d172ce660758e915fe81810780%22%3Bi%3A2%3Bi%3A1359068654%3Bi%3A3%3Bi%3A2%3B%7D');
45                $http->set_cookie('PHPSESSID', 'a2bb4a7485eaba91b9d8db6aafd8ec5d');
46                #Cookie: D2=; PHPSESSID=a2bb4a7485eaba91b9d8db6aafd8ec5d
47                $data = $http->get_content();
48                $data = trim(preg_replace('<<!--.*?-->>', '', $data)); // remove <!-- Cached --> message, else it will break gzinflate
49
50                if (!@gzinflate($data)) {
51                        $cprs = "raw HTML stream";
52                } else {
53                        $data = gzinflate($data);
54                        $cprs = "GZip compressed stream";
55                }
56
57                if (!xml_parse($xml_parser, $data, true))
58                        return "<i>Error getting XML data from ".$fetchurl."</i><br><br>";
59
60                xml_parser_free($xml_parser);
61
62                if (config::get('fetch_verbose') ) {
63                        if ($x)
64                                $html .= "<div class=block-header2>".$x." kills added from feed: ".$url."<br>".$str." <i><br>(".$cprs.")</i><br><br></div>";
65                        else
66                                $html .= "<div class=block-header2>No kills added from feed: ".$url."<br>".$str." <i><br>(".$cprs.")</i><br><br></div>";
67                } else {
68                        if ($x)
69                                $html .= "<div class=block-header2>".$x." kills added from feed: ".$url." <i>(".$cprs.")</i><br><br></div>";
70                        else
71                                $html .= "<div class=block-header2>No kills added from feed: ".$url." <i>(".$cprs.")</i><br><br></div>";
72                }
73
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, $uurl;
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 && config::get('fetch_verbose') )
94                        $html .= "Killmail is malformed.<br>";
95                        if ( $killid == -2 && config::get('fetch_verbose') )
96                            $html .= "Killmail is not related to ".KB_TITLE.".<br>";
97                                if ( $killid == -1 && config::get('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') && config::get('fetch_comment')) { // for the Eve-Dev Comment Class
106                                        $comments = new Comments($killid);
107                        $comments->addComment("liq's feed syndication", config::get('fetch_comment')." mail fetched from: ".$uurl.")");
108                                }
109                                if (class_exists('Comment') && config::get('fetch_comment')) { // for the D2 Killboard Comment Class
110                                        $comment = new Comment($killid);
111                        $comment->postComment(config::get('fetch_comment')." \n\n\n <i>mail fetched from:\n ".$uurl."</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?>
Note: See TracBrowser for help on using the browser.