Show
Ignore:
Timestamp:
12/12/06 20:06:30 (15 years ago)
Author:
liq
Message:

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

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • 1.2.1/common/feed_fetcher.php

    r148 r150  
    11<?php 
    2 @set_time_limit(0); 
    3 // liq's feed syndication mod v1.0 
    4 require_once("class.page.php"); 
    5 require_once("class.kill.php"); 
    6 require_once("class.parser.php"); 
    72 
    8 $insideitem = false; 
     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("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;  
    914$tag = ""; 
    1015$title = ""; 
    1116$description = ""; 
    12 $link = ""; 
    13 $x = 0; 
     17$link = "";   
     18$x=0; 
    1419 
    15 class Fetcher 
    16 { 
    17     function generate($url, $lastkllid = 0) 
    18     { 
    19         global $x; 
     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} 
    2034 
    21         $xml_parser = xml_parser_create(); 
    22         xml_set_object($xml_parser, $this); 
    23         xml_set_element_handler($xml_parser, "startElement", "endElement"); 
    24         xml_set_character_data_handler ($xml_parser, 'characterData'); 
     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} 
    2546 
    26         $fp = @fopen($url, "r"); 
    27         $file = ''; 
    28         while ($data = fread($fp, 4096)) 
    29         { 
    30             $file .= $data; 
    31         } 
    32         fclose($fp); 
     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} 
    3352 
    34         if (!$file && file_exists('class.http.php')) 
    35         { 
    36             include_once('class.http.php'); 
    37             $file = new http($url); 
    38             $file = $file->get_content(); 
    39         } 
    40         if (!xml_parse($xml_parser, $file)) 
    41             return "<i>Error getting XML data from ".$url."</i><br><br>"; 
    42         xml_parser_free($xml_parser); 
     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} 
    4376 
    44         if ($x) 
    45         { 
    46             $html = "<div class=block-header2>".$x." kills added from feed: ".$url."</div>"; 
    47         } 
    48         else 
    49         { 
    50             $html = "<div class=block-header2>No kills added from feed: ".$url."</div>"; 
    51         } 
     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} 
    5284 
    53         return $html; 
    54     } 
     85function endElement($parser, $name) { 
     86        global $insideitem, $tag, $title, $description, $link, $html, $x, $fetchurl; 
    5587 
    56     function startElement($parser, $name, $attrs) 
    57     { 
    58         global $insideitem, $tag, $title, $description, $link; 
    59         if ($insideitem) 
    60         { 
    61             $tag = $name; 
    62         } 
    63         elseif ($name == "ITEM") 
    64         { 
    65             $insideitem = true; 
    66         } 
    67     } 
     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>"; 
    68104 
    69     function endElement($parser, $name) 
    70     { 
    71         global $insideitem, $tag, $title, $description, $link, $html, $x, $lastkllid; 
     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} 
    72122 
    73         if ($name == "ITEM") 
    74         { 
    75             if (isset($description)) 
    76             { 
    77                 $parser = new Parser($description); 
    78                 $killid = $parser->parse(true); 
    79                 if ($killid == 0 || $killid == -1 || $killid == -2 || $killid == -3) 
    80                 { 
    81                     $page = new Page("Error"); 
    82                     if ($killid == 0) 
    83                         $html .= "Killmail is malformed.<br>"; 
    84                     if ($killid == -3) 
    85                         $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>"; 
    86                     if ($killid == -2) 
    87                         $html .= "Killmail is not related to ".KB_TITLE.".<br>"; 
    88                     if ($killid == -1) 
    89                         $html .= "Killmail already posted <a href=\"?a=kill_detail&kll_id=".$parser->dupeid_."\">here</a>.<br>"; 
    90                 } 
    91                 else 
    92                 { 
    93                     $qry = new DBQuery(); 
    94                     $qry->execute("insert into kb3_log  values( ".$killid.", '".KB_SITE."','".$_SERVER['REMOTE_ADDR']."',now() )"); 
    95                     $html .= "Killmail has succsessfully been posted <a href=\"?a=kill_detail&kll_id=".$killid."\">here</a>.<br>"; 
    96                     $x++; 
    97                 } 
    98             } 
    99             if (trim($title) > $lastkllid || $lastkllid == 0) 
    100             { 
    101                 $lastkllid = trim($title); 
    102             } 
    103             $title = ""; 
    104             $description = ""; 
    105             $link = ""; 
    106             $insideitem = false; 
    107         } 
    108     } 
     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} 
    109139 
    110     function characterData($parser, $data) 
    111     { 
    112         global $insideitem, $tag, $title, $description, $link; 
    113         if ($insideitem) 
    114         { 
    115             switch ($tag) 
    116             { 
    117                 case "TITLE": 
    118                     $title .= $data; 
    119                     break; 
    120                 case "DESCRIPTION": 
    121                     $description .= $data; 
    122                     break; 
    123                 case "LINK": 
    124                     $link .= $data; 
    125                     break; 
    126             } 
    127         } 
    128     } 
    129140} 
     141 
    130142?>