root/dev/cron/cron_fetcher.php @ 370

Revision 370, 4.8 KB (checked in by kovell, 13 years ago)

- SQL queries optimised for speed and error protection.
- feed syndication optimised
- front page includes optional clock and optional kill/loss display
- mysqli support added
- transaction protection of kills added where supported (mysqli and InnoDB)
- summary tables and contracts show total destroyed value instead of ship value
- html errors reduced
- related kill calculation improved
- query caching errors reduced
- minor bugfixes
- Smarty 2.6.25 added
- apoc fitting mod added and modded
- code optimisations
- code comments added (doxygen format)
- conflicting mods are now identified

Line 
1#!/usr/bin/php
2<?php
3// ////
4// ////  //////
5// ////  liq's feed syndication mod v1.6
6// //////////
7// //////////
8// //////////
9// //////////
10// set this to 1 if you are running a master killboard and want
11// to even fetch mails not related to your corp / alliance
12define(MASTER, 0);
13
14$version = "v1.6";
15@set_time_limit(0);
16
17// Has to be run from the KB main directory for nested includes to work
18//echo "Edit the \$KB_HOME and remove this line and the next\n";
19//die();
20$KB_HOME = ereg_replace('[/\\]cron$', '', getcwd());
21chdir($KB_HOME); 
22
23require_once('kbconfig.php');
24require_once('common/includes/globals.php');
25require_once('common/includes/class.config.php');
26require_once('common/includes/class.corp.php');
27require_once('common/includes/class.alliance.php');
28require_once('common/includes/class.event.php');
29require_once('common/admin/feed_fetcher.php');
30require_once('common/includes/db.php');
31
32$config = new Config(KB_SITE);
33
34$validurl = "/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}((:[0-9]{1,5})?\/.*)?$/i";
35
36// load the config from the database
37if (config::get('fetch_feed_count'))
38    $feedcount = config::get('fetch_feed_count');
39else
40    $feedcount = 3;
41
42// corporation OR alliance id
43if (config::get('cfg_corpid'))
44{
45    define('CORP_ID', config::get('cfg_corpid'));
46    define('ALLIANCE_ID', 0);
47}
48else
49{
50    define('CORP_ID', 0);
51    define('ALLIANCE_ID', config::get('cfg_allianceid'));
52}
53
54if (CORP_ID && !MASTER)
55{
56    $corp = new Corporation(CORP_ID);
57    $myid = '&corp=' . urlencode($corp->getName());
58}
59
60if (ALLIANCE_ID && !MASTER)
61{
62    $alli = new Alliance(ALLIANCE_ID);
63    $myid = '&alli=' . urlencode($alli->getName());
64}
65
66$year = gmdate("Y");
67$week = gmdate("W");
68
69$outhead = "Running on " . gmdate(DATE_RFC822) . "\n";
70$out = '';
71
72$feed = array();
73for ($i = 1; $i <= $feedcount; $i++)
74{
75    $str = config::get('fetch_url_' . $i);
76    $tmp = explode(':::', $str);
77    $feed[$i] = $tmp[0];
78    $feedlast[$i] = intval($tmp[1]);
79    if ($tmp[2] == "on")
80        $friend[$i] = $tmp[2];
81    $feedfetch = new Fetcher();
82    if (preg_match($validurl , $feed[$i]))
83    {
84        $str = '';
85        if ($feedlast[$i])
86        {
87            $str .= '&combined=1';
88            $str .= '&lastkllid='.$feedlast[$i];
89        }
90        if ($friend[$i])
91            $str .= '&friend=1';
92        if (!config::get('fetch_compress'))
93            $str .= "&gz=1";
94        // If a last kill id is specified fetch all kills since then
95        if($feedlast[$i] > 0)
96        {
97            $out .= preg_replace('/<div.+No kills added from feed.+<\/div>/','',$feedfetch->grab($feed[$i], $myid . $str, $friend[$i], "fetch_url_" . $i)). "\n";
98            if(intval($feedfetch->lastkllid_)) $feedlast[$i] = intval($feedfetch->lastkllid_);
99            // Check if feed used combined list. get losses if not
100            if(!$feedfetch->combined_)
101            {
102                    $out .= preg_replace('/<div.+No kills added from feed.+<\/div>/','',$feedfetch->grab($feed[$i], $myid . $str . "&losses=1", $friend[$i], "fetch_url_" . $i)) . "\n";
103                    if(intval($feedfetch->lastkllid_)) $feedlast[$i] = intval($feedfetch->lastkllid_);
104            }
105            // Store most recent kill id fetched
106            if($feedfetch->lastkllid_)
107            {
108                //Fetch final kill id of board from feed if possible and set as new last kill.
109                if(intval($feedfetch->finalkllid_)> $feedlast[$i]) 
110                    config::set("fetch_url_" . $i, $feed[$i] . ':::' . intval($feedfetch->finalkllid_) . ':::' . $friend[$i]);
111                else config::set("fetch_url_" . $i, $feed[$i] . ':::' . $feedlast[$i] . ':::' . $friend[$i]);
112            }
113        }
114        // If no last kill is specified then fetch by week
115        else
116        {
117                // Fetch for current and previous weeks, both kills and losses
118                for ($l = $week - 1; $l <= $week; $l++)
119                {
120                    $out .= preg_replace('/<div.+No kills added from feed.+<\/div>/','',$feedfetch->grab($feed[$i] . "&year=" . $year . "&week=" . $l, $myid . $str)). "\n";
121                        if(intval($feedfetch->lastkllid_)) $feedlast[$i] = intval($feedfetch->lastkllid_);
122                    $out .= preg_replace('/<div.+No kills added from feed.+<\/div>/','',$feedfetch->grab($feed[$i] . "&year=" . $year . "&week=" . $l, $myid . $str . "&losses=1")) . "\n";
123                        if(intval($feedfetch->lastkllid_ )) $feedlast[$i] = intval($feedfetch->lastkllid_);
124                }
125                // Store most recent kill id fetched
126                if($feedfetch->lastkllid_) config::set("fetch_url_" . $i, $feed[$i] . ':::' . $feedlast[$i] . ':::' . $friend[$i]);
127        }
128    }
129}
130
131if ($out)
132{
133//    print $outhead . strip_tags(str_replace("</div>","\n",$out), '<a>');
134    print $outhead . strip_tags($out);
135}
136
137?>
Note: See TracBrowser for help on using the browser.