root/dev/cron/cron_fetcher.php @ 461

Revision 461, 4.6 KB (checked in by kovell, 11 years ago)

Fixes: eve-dev changed to eve-id, recursive clearup scripts recurse more than one level, defunct admin sync removed.

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