]> git.mjollnir.org Git - moodle.git/commitdiff
Applied the same checks than to the forum to generate
authorstronk7 <stronk7>
Thu, 5 Aug 2004 20:10:07 +0000 (20:10 +0000)
committerstronk7 <stronk7>
Thu, 5 Aug 2004 20:10:07 +0000 (20:10 +0000)
glossary rss feeds only when necessary.
My only dude is if we should use the modification time instead
of the creation time (here and in forums...).

mod/glossary/rsslib.php

index 8855eca757a211bf7e0e7240ab5f7c4df5cba78a..9170786410a354fb491740dd291a1fbea95f42b9 100644 (file)
             if ($glossaries = get_records("glossary")) {
                 foreach ($glossaries as $glossary) {
                     if (!empty($glossary->rsstype) && !empty($glossary->rssarticles) && $status) {
+
+                        $filename = rss_file_name('glossary', $glossary);  // RSS file
+
+                        //First let's make sure there is work to do by checking existing files
+                        if (file_exists($filename)) {
+                            if ($lastmodified = filemtime($filename)) {
+                                if (!glossary_rss_newstuff($glossary, $lastmodified)) {
+                                    continue;
+                                }
+                            }
+                        }
+
+                        //Ignore hidden forums
+                        if (!instance_is_visible('glossary',$glossary)) {
+                            if (file_exists($filename)) {
+                                @unlink($filename);
+                            }
+                            continue;
+                        }
+
+                        mtrace("Updating RSS feed for $glossary->name, ID: $glossary->id");
+
                         //Some debug...
                         if ($CFG->debug > 7) {
                             echo "ID: $glossary->id->";
         return $status;
     }
 
+    function glossary_rss_newstuff($glossary, $time) {
+    // If there is new stuff in the glossary since $time then this returns
+    // true.  Otherwise it returns false.
+        if ($glossary->rsstype == 1) {
+            $items = glossary_rss_feed_withauthor($glossary, $time);
+        } else {
+            $items = glossary_rss_feed_withoutauthor($glossary, $time);
+        }
+        return (!empty($items));
+    }
+
     //This function return the XML rss contents about the glossary record passed as parameter
     //It returns false if something is wrong
     function glossary_rss_feed($glossary) {
 
     //This function returns "items" record array to be used to build the rss feed
     //for a Type=with author glossary
-    function glossary_rss_feed_withauthor($glossary) {
+    function glossary_rss_feed_withauthor($glossary, $newsince=0) {
 
         global $CFG;
 
         $items = array();
 
+        if ($newsince) {
+            $newsince = " AND e.timecreated > '$newsince'";
+        } else {        
+            $newsince = "";
+        }       
+
         if ($recs = get_records_sql ("SELECT e.id entryid, 
                                              e.concept entryconcept, 
                                              e.definition entrydefinition, 
                                            {$CFG->prefix}user u
                                       WHERE e.glossaryid = '$glossary->id' AND
                                             u.id = e.userid AND
-                                            e.approved = 1
+                                            e.approved = 1 $newsince
                                       ORDER BY e.timecreated desc")) {
+
+            //Are we just looking for new ones?  If so, then return now.
+            if ($newsince) {
+                return true;
+            }
             //Iterate over each entry to get glossary->rssarticles records
             $articlesleft = $glossary->rssarticles;
             $item = NULL;
 
     //This function returns "items" record array to be used to build the rss feed
     //for a Type=without author glossary
-    function glossary_rss_feed_withoutauthor($glossary) {
+    function glossary_rss_feed_withoutauthor($glossary, $newsince=0) {
 
         global $CFG;
 
         $items = array();
 
+        if ($newsince) {
+            $newsince = " AND e.timecreated > '$newsince'";
+        } else {
+            $newsince = "";
+        }
+
         if ($recs = get_records_sql ("SELECT e.id entryid,
                                              e.concept entryconcept,
                                              e.definition entrydefinition,
                                            {$CFG->prefix}user u
                                       WHERE e.glossaryid = '$glossary->id' AND
                                             u.id = e.userid AND
-                                            e.approved = 1
+                                            e.approved = 1 $newsince
                                       ORDER BY e.timecreated desc")) {
+
+            //Are we just looking for new ones?  If so, then return now.
+            if ($newsince) {
+                return true;
+            }
+
             //Iterate over each entry to get glossary->rssarticles records
             $articlesleft = $glossary->rssarticles;
             $item = NULL;