? db/access.php
Index: lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/journal/lib.php,v
retrieving revision 1.83
diff -c -r1.83 lib.php
*** lib.php	24 Jan 2008 20:33:52 -0000	1.83
--- lib.php	27 Mar 2008 06:59:56 -0000
***************
*** 46,54 ****
  
  
  function journal_user_complete_index($course, $user, $journal, $journalopen, $heading) {
! /// Prints a journal, entry and feedback ... used on the journal index page.
! 
!     if (isteacher($course->id)) {
          $entrycount = journal_count_entries($journal, get_current_group($course->id));
          $entryinfo  = "&nbsp;(<a href=\"report.php?id=$journal->coursemodule\">".get_string("viewallentries","journal", $entrycount)."</a>)";
      } else {
--- 46,56 ----
  
  
  function journal_user_complete_index($course, $user, $journal, $journalopen, $heading) {
!     /// Prints a journal, entry and feedback ... used on the journal index page.
!     $context = get_context_instance(CONTEXT_COURSE, $course->id);
!     $canmanage = has_capability('mod/journal:manage', $context, 0, false);
!     $canview = has_capability('mod/journal:view', $context, 0, false);
!     if ($canmanage) {
          $entrycount = journal_count_entries($journal, get_current_group($course->id));
          $entryinfo  = "&nbsp;(<a href=\"report.php?id=$journal->coursemodule\">".get_string("viewallentries","journal", $entrycount)."</a>)";
      } else {
***************
*** 69,75 ****
      echo "<br clear=\"all\" />";
      echo "<br />";
      
!     if (isstudent($course->id) or isteacher($course->id)) {
  
          print_simple_box_start("right", "90%");
      
--- 71,77 ----
      echo "<br clear=\"all\" />";
      echo "<br />";
      
!     if ($canview or $canmanage) {
  
          print_simple_box_start("right", "90%");
      
***************
*** 107,122 ****
  function journal_cron () {
  // Function to be run periodically according to the moodle cron
  // Finds all journal notifications that have yet to be mailed out, and mails them
- 
      global $CFG, $USER;
  
      $cutofftime = time() - $CFG->maxeditingtime;
  
      if ($entries = journal_get_unmailed_graded($cutofftime)) {
          $timenow = time();
- 
          foreach ($entries as $entry) {
- 
              echo "Processing journal entry $entry->id\n";
  
              if (! $user = get_record("user", "id", "$entry->userid")) {
--- 109,121 ----
***************
*** 126,145 ****
  
              $USER->lang = $user->lang;
  
              if (! $course = get_record("course", "id", "$entry->course")) {
                  echo "Could not find course $entry->course\n";
                  continue;
              }
  
-             if (! isstudent($course->id, $user->id) and !isteacher($course->id, $user->id)) {
-                 continue;  // Not an active participant
-             }
- 
              if (! $teacher = get_record("user", "id", "$entry->teacher")) {
                  echo "Could not find teacher $entry->teacher\n";
                  continue;
              }
  
  
              if (! $mod = get_coursemodule_from_instance("journal", $entry->journal, $course->id)) {
                  echo "Could not find course module for journal id $entry->journal\n";
--- 125,148 ----
  
              $USER->lang = $user->lang;
  
+ 
              if (! $course = get_record("course", "id", "$entry->course")) {
                  echo "Could not find course $entry->course\n";
                  continue;
              }
  
              if (! $teacher = get_record("user", "id", "$entry->teacher")) {
                  echo "Could not find teacher $entry->teacher\n";
                  continue;
              }
  
+             $enrolled = get_users_by_capability(get_context_instance(CONTEXT_COURSE, $entry->course), 'moodle/course:view');
+ 
+             if(!$enrolled[$user->id]){
+                 echo "Could not find user in this course $entry->userid\n";
+                 continue;
+             }
+ 
  
              if (! $mod = get_coursemodule_from_instance("journal", $entry->journal, $course->id)) {
                  echo "Could not find course module for journal id $entry->journal\n";
***************
*** 324,330 ****
  
  function journal_get_users_done($journal) {
      global $CFG;
- 
      $journals = get_records_sql ("SELECT u.*
                                    FROM {$CFG->prefix}journal_entries j,
                                         {$CFG->prefix}user u 
--- 327,332 ----
***************
*** 336,346 ****
          return NULL;
      }
  
      // remove unenrolled participants
      foreach ($journals as $key=>$user) {
!         if (!isteacher($journal->course, $user->id) and !isstudent($journal->course, $user->id)) {
!             unset($journals[$key]);
!         } 
      }
      return $journals;
  }
--- 338,349 ----
          return NULL;
      }
  
+     $enrolled = get_users_by_capability(get_context_instance(CONTEXT_COURSE, $journal->course), 'moodle/course:view');
      // remove unenrolled participants
      foreach ($journals as $key=>$user) {
!         if(!$enrolled[$user->id]){
!             unset($journals[$key]); 
!         }
      }
      return $journals;
  }
***************
*** 372,381 ****
          }
  
          // remove unenrolled participants
          foreach ($journals as $key=>$user) {
!             if (!isteacher($journal->course, $user->id) and !isstudent($journal->course, $user->id)) {
!                 unset($journals[$key]);
!             } 
          }
          return count($journals);
      }
--- 375,386 ----
          }
  
          // remove unenrolled participants
+         $enrolled = get_users_by_capability(get_context_instance(CONTEXT_COURSE, $journal->course), 'moodle/course:view');
+ 
          foreach ($journals as $key=>$user) {
!             if(!$enrolled[$user->id]){
!                 unset($journals[$key]); 
!             }
          }
          return count($journals);
      }
Index: report.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/journal/report.php,v
retrieving revision 1.43
diff -c -r1.43 report.php
*** report.php	12 Oct 2007 15:55:54 -0000	1.43
--- report.php	27 Mar 2008 06:59:56 -0000
***************
*** 15,21 ****
  
      require_login($course->id, false, $cm);
  
!     if (!isteacher($course->id)) {
          error("Only teachers can look at this page");
      }
  
--- 15,23 ----
  
      require_login($course->id, false, $cm);
  
!     $context = get_context_instance(CONTEXT_COURSE, $course->id);
!     $canmanage = has_capability('mod/journal:manage', $context);
!     if (!$canmanage) {
          error("Only teachers can look at this page");
      }
  
***************
*** 105,111 ****
          $grades = make_grades_menu($journal->assessed);
          $teachers = get_course_teachers($course->id);
  
!         $allowedtograde = ($groupmode != VISIBLEGROUPS or isteacheredit($course->id) or groups_is_member($currentgroup));
  
          if ($allowedtograde) {
              echo '<form action="report.php" method="post">';
--- 107,113 ----
          $grades = make_grades_menu($journal->assessed);
          $teachers = get_course_teachers($course->id);
  
!         $allowedtograde = ($groupmode != VISIBLEGROUPS or $canmanage or groups_is_member($currentgroup));
  
          if ($allowedtograde) {
              echo '<form action="report.php" method="post">';
Index: view.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/journal/view.php,v
retrieving revision 1.55
diff -c -r1.55 view.php
*** view.php	12 Oct 2007 15:55:54 -0000	1.55
--- view.php	27 Mar 2008 06:59:56 -0000
***************
*** 36,42 ****
      $groupmode = groupmode($course, $cm);
      $currentgroup = setup_and_print_groups($course, $groupmode, "view.php?id=$cm->id");
  
!     if (isteacher($course->id)) {
          $entrycount = journal_count_entries($journal, $currentgroup);
  
          echo '<div class="reportlink"><a href="report.php?id='.$cm->id.'">'.
--- 36,44 ----
      $groupmode = groupmode($course, $cm);
      $currentgroup = setup_and_print_groups($course, $groupmode, "view.php?id=$cm->id");
  
!     $context = get_context_instance(CONTEXT_COURSE, $course->id);
!     
!     if (has_capability('mod/journal:manage', $context, 0, false)) {
          $entrycount = journal_count_entries($journal, $currentgroup);
  
          echo '<div class="reportlink"><a href="report.php?id='.$cm->id.'">'.
