]> git.mjollnir.org Git - moodle.git/commitdiff
Fixed insert_record call in forum_tp_add_read_record. Added read post
authormchurch <mchurch>
Mon, 31 Jan 2005 19:24:14 +0000 (19:24 +0000)
committermchurch <mchurch>
Mon, 31 Jan 2005 19:24:14 +0000 (19:24 +0000)
marking for posts over a day old to the upgrade procedure.

mod/forum/db/mysql.php
mod/forum/lib.php

index e538c753f16555e7748a53083275af48ab908391..fd708721915498d468928709f5d56761297b1684 100644 (file)
@@ -173,6 +173,42 @@ function forum_upgrade($oldversion) {
                           KEY `prefix_forum_user_discussion_idx` (`userid`,`discussionid`),
                           KEY `prefix_forum_user_post_idx` (`userid`,`postid`)
                         ) COMMENT=\'Tracks each users read posts\';');
+
+    /// Enter initial read records for all posts older than 1 day.
+
+    require $CFG->dirroot.'/mod/forum/lib.php';
+    /// Timestamp for old posts (and therefore considered read).
+    $dateafter = time() - ($CFG->forum_oldpostdays*24*60*60);
+    /// Timestamp for one day ago.
+    $onedayago = time() - (24*60*60);
+
+    /// Get all discussions that have had posts since the old post date.
+    if ($discrecords = get_records_select('forum_discussions', 'timemodified > '.$dateafter,
+                                          'course', 'id,course,forum,groupid')) {
+        $currcourse = 0;
+        $users = 0;
+        foreach ($discrecords as $discrecord) {
+            if ($discrecord->course != $currcourse) {
+            /// Discussions are ordered by course, so we only need to get any course's users once.
+                $currcourse = $discrecord->course;
+                $users = get_course_users($currcourse);
+            }
+            /// If this course has users, and posts more than a day old, mark them for each user.
+            if (is_array($users) &&
+                ($posts = get_records_select('forum_posts', 'discussion = '.$discrecord->id.
+                                             ' AND modified < '.$onedayago, '', 'id,discussion,modified'))) {
+                foreach($posts as $post) {
+                    foreach ($users as $user) {
+                        /// If its a group discussion, make sure the user is in the group.
+                        if (!$discrecord->groupid || ismember($discrecord->groupid, $user->id)) {
+                            forum_tp_mark_post_read($user->id, $post, $discrecord->forum);
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
   }
 
   return true;
@@ -181,4 +217,4 @@ function forum_upgrade($oldversion) {
 
 
 
-?>
+?>
\ No newline at end of file
index 1570d51ed96dafa156cc0fc7083080ea914f541c..8ea31ab0a2e04b4bb7795088cd0818bd041a6e24 100644 (file)
@@ -3082,7 +3082,7 @@ function forum_tp_add_read_record($userid, $postid, $discussionid=-1, $forumid=-
         $readrecord->forumid = $forumid;
         $readrecord->firstread = time();
         $readrecord->lastread = $readrecord->firstread;
-        return insert_record('forum_read', $readrecord, true, 'userid');
+        return insert_record('forum_read', $readrecord, true);
     }
     else {
         /// Update read record