### Eclipse Workspace Patch 1.0 #P moodle Index: mod/forum/lib.php =================================================================== RCS file: /cvsroot/moodle/moodle/mod/forum/lib.php,v retrieving revision 1.609.2.72 diff -u -r1.609.2.72 lib.php --- mod/forum/lib.php 1 Nov 2008 00:28:40 -0000 1.609.2.72 +++ mod/forum/lib.php 5 Nov 2008 09:59:25 -0000 @@ -4502,6 +4502,7 @@ */ function forum_user_can_see_post($forum, $discussion, $post, $user=NULL, $cm=NULL) { global $USER; + global $CFG; // retrieve objects (yuk) if (is_numeric($forum)) { @@ -4562,9 +4563,11 @@ if ($forum->type == 'qanda') { $firstpost = forum_get_firstpost_from_discussion($discussion->id); $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id); + $userfirstpost = forum_get_user_first_post($discussion->id, $user->id); - return (forum_user_has_posted($forum->id,$discussion->id,$user->id) || - $firstpost->id == $post->id || + return ((forum_user_has_posted($forum->id,$discussion->id,$user->id) && + ($userfirstpost === false || (time() - $userfirstpost >= $CFG->maxeditingtime))) || + $firstpost->id == $post->id || $post->userid == $user->id || has_capability('mod/forum:viewqandawithoutposting', $modcontext, $user->id, false)); } return true; @@ -6788,4 +6791,21 @@ return array('moodle/site:accessallgroups', 'moodle/site:viewfullnames', 'moodle/site:trustcontent'); } +/** + * Returns creation time of the first user's post in given discussion + */ +function forum_get_user_first_post($did, $userid) { + global $CFG; + + $sql = "SELECT p.created + FROM {$CFG->prefix}forum_posts p + WHERE p.userid = $userid AND p.discussion = $did + ORDER BY p.created"; + $posts = get_record_sql($sql, true); + if ($posts===false) { + return false; + } + return $posts->created; +} + ?>