Beispiel #1
0
 /**
  * Returns a list of forums in a provided list of courses,
  * if no list is provided all forums that the user can view
  * will be returned.
  *
  * @param array $courseids the course ids
  * @return array the forum details
  * @since Moodle 2.5
  */
 public static function get_forums_by_courses($courseids = array())
 {
     global $CFG;
     require_once $CFG->dirroot . "/mod/forum/lib.php";
     $params = self::validate_parameters(self::get_forums_by_courses_parameters(), array('courseids' => $courseids));
     $courses = array();
     if (empty($params['courseids'])) {
         $courses = enrol_get_my_courses();
         $params['courseids'] = array_keys($courses);
     }
     // Array to store the forums to return.
     $arrforums = array();
     $warnings = array();
     // Ensure there are courseids to loop through.
     if (!empty($params['courseids'])) {
         list($courses, $warnings) = external_util::validate_courses($params['courseids'], $courses);
         // Get the forums in this course. This function checks users visibility permissions.
         $forums = get_all_instances_in_courses("forum", $courses);
         foreach ($forums as $forum) {
             $course = $courses[$forum->course];
             $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id);
             $context = context_module::instance($cm->id);
             // Skip forums we are not allowed to see discussions.
             if (!has_capability('mod/forum:viewdiscussion', $context)) {
                 continue;
             }
             $forum->name = external_format_string($forum->name, $context->id);
             // Format the intro before being returning using the format setting.
             list($forum->intro, $forum->introformat) = external_format_text($forum->intro, $forum->introformat, $context->id, 'mod_forum', 'intro', null);
             $forum->introfiles = external_util::get_area_files($context->id, 'mod_forum', 'intro', false, false);
             // Discussions count. This function does static request cache.
             $forum->numdiscussions = forum_count_discussions($forum, $cm, $course);
             $forum->cmid = $forum->coursemodule;
             $forum->cancreatediscussions = forum_user_can_post_discussion($forum, null, -1, $cm, $context);
             // Add the forum to the array to return.
             $arrforums[$forum->id] = $forum;
         }
     }
     return $arrforums;
 }
Beispiel #2
0
    $learningtable->align[] = 'center';
}
/// Now let's process the learning forums
if ($course->id != SITEID) {
    // Only real courses have learning forums
    // 'format_.'$course->format only applicable when not SITEID (format_site is not a format)
    $strsectionname = get_string('sectionname', 'format_' . $course->format);
    // Add extra field for section number, at the front
    array_unshift($learningtable->head, $strsectionname);
    array_unshift($learningtable->align, 'center');
    if ($learningforums) {
        $currentsection = '';
        foreach ($learningforums as $forum) {
            $cm = $modinfo->instances['forum'][$forum->id];
            $context = context_module::instance($cm->id);
            $count = forum_count_discussions($forum, $cm, $course);
            if ($usetracking) {
                if ($forum->trackingtype == FORUM_TRACKING_OFF) {
                    $unreadlink = '-';
                    $trackedlink = '-';
                } else {
                    if (isset($untracked[$forum->id])) {
                        $unreadlink = '-';
                    } else {
                        if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
                            $unreadlink = '<span class="unread"><a href="view.php?f=' . $forum->id . '">' . $unread . '</a>';
                            $unreadlink .= '<a title="' . $strmarkallread . '" href="markposts.php?f=' . $forum->id . '&amp;mark=read"><img src="' . $OUTPUT->pix_url('t/markasread') . '" alt="' . $strmarkallread . '" class="iconsmall" /></a></span>';
                        } else {
                            $unreadlink = '<span class="read">0</span>';
                        }
                    }
Beispiel #3
0
 /**
  * Returns a list of forums in a provided list of courses,
  * if no list is provided all forums that the user can view
  * will be returned.
  *
  * @param array $courseids the course ids
  * @return array the forum details
  * @since Moodle 2.5
  */
 public static function get_forums_by_courses($courseids = array())
 {
     global $CFG;
     require_once $CFG->dirroot . "/mod/forum/lib.php";
     $params = self::validate_parameters(self::get_forums_by_courses_parameters(), array('courseids' => $courseids));
     if (empty($params['courseids'])) {
         // Get all the courses the user can view.
         $courseids = array_keys(enrol_get_my_courses());
     } else {
         $courseids = $params['courseids'];
     }
     // Array to store the forums to return.
     $arrforums = array();
     // Ensure there are courseids to loop through.
     if (!empty($courseids)) {
         // Array of the courses we are going to retrieve the forums from.
         $dbcourses = array();
         // Mod info for courses.
         $modinfocourses = array();
         // Go through the courseids and return the forums.
         foreach ($courseids as $courseid) {
             // Check the user can function in this context.
             try {
                 $context = context_course::instance($courseid);
                 self::validate_context($context);
                 // Get the modinfo for the course.
                 $modinfocourses[$courseid] = get_fast_modinfo($courseid);
                 $dbcourses[$courseid] = $modinfocourses[$courseid]->get_course();
             } catch (Exception $e) {
                 continue;
             }
         }
         // Get the forums in this course. This function checks users visibility permissions.
         if ($forums = get_all_instances_in_courses("forum", $dbcourses)) {
             foreach ($forums as $forum) {
                 $course = $dbcourses[$forum->course];
                 $cm = $modinfocourses[$course->id]->get_cm($forum->coursemodule);
                 $context = context_module::instance($cm->id);
                 // Skip forums we are not allowed to see discussions.
                 if (!has_capability('mod/forum:viewdiscussion', $context)) {
                     continue;
                 }
                 // Format the intro before being returning using the format setting.
                 list($forum->intro, $forum->introformat) = external_format_text($forum->intro, $forum->introformat, $context->id, 'mod_forum', 'intro', 0);
                 // Discussions count. This function does static request cache.
                 $forum->numdiscussions = forum_count_discussions($forum, $cm, $course);
                 $forum->cmid = $forum->coursemodule;
                 // Add the forum to the array to return.
                 $arrforums[$forum->id] = $forum;
             }
         }
     }
     return $arrforums;
 }
 /**
  * Returns a list of forums in a provided list of courses,
  * if no list is provided all forums that the user can view
  * will be returned.
  *
  * @param array $courseids the course ids
  * @return array the forum details
  * @since Moodle 2.5
  */
 public static function get_forums_by_courses($courseids = array())
 {
     global $CFG, $DB, $USER;
     require_once $CFG->dirroot . "/mod/forum/lib.php";
     $params = self::validate_parameters(self::get_forums_by_courses_parameters(), array('courseids' => $courseids));
     if (empty($params['courseids'])) {
         // Get all the courses the user can view.
         $courseids = array_keys(enrol_get_my_courses());
     } else {
         $courseids = $params['courseids'];
     }
     // Array to store the forums to return.
     $arrforums = array();
     // Ensure there are courseids to loop through.
     if (!empty($courseids)) {
         // Go through the courseids and return the forums.
         foreach ($courseids as $cid) {
             // Get the course context.
             $context = context_course::instance($cid);
             // Check the user can function in this context.
             self::validate_context($context);
             // Get the forums in this course.
             if ($forums = $DB->get_records('forum', array('course' => $cid))) {
                 // Get the modinfo for the course.
                 $modinfo = get_fast_modinfo($cid);
                 // Get the course object.
                 $course = $modinfo->get_course();
                 // Get the forum instances.
                 $foruminstances = $modinfo->get_instances_of('forum');
                 // Loop through the forums returned by modinfo.
                 foreach ($foruminstances as $forumid => $cm) {
                     // If it is not visible or present in the forums get_records call, continue.
                     if (!$cm->uservisible || !isset($forums[$forumid])) {
                         continue;
                     }
                     // Set the forum object.
                     $forum = $forums[$forumid];
                     // Get the module context.
                     $context = context_module::instance($cm->id);
                     // Check they have the view forum capability.
                     require_capability('mod/forum:viewdiscussion', $context);
                     // Format the intro before being returning using the format setting.
                     list($forum->intro, $forum->introformat) = external_format_text($forum->intro, $forum->introformat, $context->id, 'mod_forum', 'intro', 0);
                     // Add the course module id to the object, this information is useful.
                     $forum->cmid = $cm->id;
                     // Discussions count. This function does static request cache.
                     $forum->numdiscussions = forum_count_discussions($forum, $cm, $course);
                     // Add the forum to the array to return.
                     $arrforums[$forum->id] = (array) $forum;
                 }
             }
         }
     }
     return $arrforums;
 }