root/devel-backup/units/magpie/function_update.php

Revision 257, 4.4 kB (checked in by ben, 3 years ago)

Elgg weblog and profile RSS feeds now republish when external content is imported.

  • Property svn:eol-style set to native
Line 
1 <?php
2
3     // $parameter = the ID number of the feed
4     
5     // Convert $parameter to an integer, see if it exists
6         $parameter = (int) $parameter;
7         
8     // Check database, get feed items
9         $feed = db_query("select * from feeds where ident = $parameter");
10         $subscribers = db_query("select count(*) as num from feed_subscriptions where feed_id = $parameter");
11         $subscribers = $subscribers[0]->num;
12                         
13         if (sizeof($feed) > 0 && $subscribers > 0) {
14             
15             if ($subscribers > 10) {
16                 $update_time = 3600;
17             } else if ($subscribers > 5) {
18                 $update_time = 4800;
19             } else if ($subscribers > 1) {
20                 $update_time = 7200;
21             } else {
22                 $update_time = 14400;
23             }
24
25             $feed = $feed[0];
26             if ($feed->last_updated < (time() - $update_time)) {
27                 
28                 db_query("update feeds set last_updated = " . time() . " where ident = $parameter");
29                 if ($rss = run("rss:get", $feed->url)) {
30                     
31                     $feedtitle = stripslashes($rss->channel['title']);
32                     $feedtagline = stripslashes($rss->channel['tagline']);
33                     if (strlen($feedtagline) > 120) {
34                         $feedtagline = "";
35                     }
36                     $feedurl = stripslashes($rss->channel['link']);
37                     
38                     db_query("update feeds set siteurl = '$feedurl', name = '". addslashes($feedtitle) . "', tagline = '" . addslashes($feedtagline) . "' where ident = $parameter");
39                     
40                     $feeditemstemp = db_query("select url from feed_posts where feed = $parameter");
41                     $feeditems = array();
42                     if (sizeof($feeditemstemp) > 0) {
43                         foreach($feeditemstemp as $feeditem) {
44                             $feeditems[] = stripslashes($feeditem->url);
45                         }
46                     }
47                     unset($feeditemstemp);
48                                         
49                     if (sizeof($rss->items > 0)) {
50                         foreach($rss->items as $item) {
51                             $title = stripslashes($item['title']);
52                             $description = stripslashes($item['description']);
53                             if (isset($item['atom_content'])) {
54                                 $description = stripslashes($item['atom_content']);
55                             }
56                             $posted = stripslashes($item['pubdate']);
57                             if (isset($item['dc']['date'])) {
58                                 $posted = stripslashes($item['dc']['date']);
59                             }
60                             if (isset($item['issued'])) {
61                                 $posted = stripslashes($item['issued']);
62                             }
63                             $posted = str_replace("T"," ",$posted);
64                             $posted = str_replace("Z"," ",$posted);
65                             $posted = str_replace("GM"," ",$posted);
66                             $posted = str_replace("ES"," ",$posted);
67                             $posted = str_replace("PS"," ",$posted);
68                             $posted = str_replace("ue","Tue",$posted);
69                             $posted = str_replace("hu","Thu",$posted);
70                             $posted = preg_replace('/(\d\d\d\d)\-(\d\d)\-(\d\d)/','$1/$2/$3',$posted);
71                             $posted = preg_replace('/(\-.*)/','',$posted);
72                             
73                             $url = stripslashes($item['link']);
74                             if (!($added = @strtotime($posted)) || $posted == "") {
75                                 $added = time();
76                             }
77                             if ($added > time() || $added == -1) {
78                                 $added = time();
79                             }
80                             
81                             if (in_array($url,$feeditems)) {
82                                 db_query("update feed_posts set title = '".addslashes($title)."', body = '".addslashes($description)."', posted = '".addslashes($posted)."' where url = '".addslashes($url)."' and feed = $parameter");
83                             } else {
84                                 db_query("insert into feed_posts set title = '".addslashes($title)."', body = '".addslashes($description)."', posted = '".addslashes($posted)."', url = '".addslashes($url)."', feed = $parameter, added = $added");
85                                 $weblogs = db_query("select user_id, autopost_tag from feed_subscriptions where feed_id = $parameter and autopost = 'yes'");
86                                 if (is_array($weblogs) && sizeof($weblogs) > 0) {
87                                     $body = "<p><a href=\"$url\">$url</a></p>" . addslashes($description);
88                                     foreach($weblogs as $weblog) {
89                                         db_query("insert into weblog_posts set title = '".addslashes($title)."', body = '$body', access = 'PUBLIC', owner = " . $weblog->user_id . ", weblog = " . $weblog->user_id . ", posted = $added");
90                                         $id = db_id();
91                                         $tags = trim($weblog->autopost_tag);
92                                         if ($tags != "") {
93                                             $tags = explode(",",$tags);
94                                             foreach($tags as $tag) {
95                                                 $tag = trim($tag);
96                                                 if ($tag != "") {
97                                                     $tag = addslashes($tag);
98                                                     db_query("insert into tags set tag = '$tag', tagtype = 'weblog', ref = $id, access = 'PUBLIC', owner = " . $weblog->user_id);
99                                                 }
100                                             }
101                                         }
102                                         $rssresult = run("weblogs:rss:publish", array($weblog->user_id, false));
103                                         $rssresult = run("profile:rss:publish", array($weblog->user_id, false));
104                                     }
105                                 }
106                             }
107                         }
108                     }
109                 }
110             }
111         }
112
113 ?>
Note: See TracBrowser for help on using the browser.