示例#1
0
 /**
  * Test the logic in the test_forum_tp_get_untracked_forums() function.
  */
 public function test_forum_tp_get_untracked_forums()
 {
     global $CFG;
     $this->resetAfterTest();
     $useron = $this->getDataGenerator()->create_user(array('trackforums' => 1));
     $useroff = $this->getDataGenerator()->create_user(array('trackforums' => 0));
     $course = $this->getDataGenerator()->create_course();
     $options = array('course' => $course->id, 'trackingtype' => FORUM_TRACKING_OFF);
     // Off.
     $forumoff = $this->getDataGenerator()->create_module('forum', $options);
     $options = array('course' => $course->id, 'trackingtype' => FORUM_TRACKING_FORCED);
     // On.
     $forumforce = $this->getDataGenerator()->create_module('forum', $options);
     $options = array('course' => $course->id, 'trackingtype' => FORUM_TRACKING_OPTIONAL);
     // Optional.
     $forumoptional = $this->getDataGenerator()->create_module('forum', $options);
     // Allow force.
     $CFG->forum_allowforcedreadtracking = 1;
     // On user with force on.
     $result = forum_tp_get_untracked_forums($useron->id, $course->id);
     $this->assertEquals(1, count($result));
     $this->assertEquals(true, isset($result[$forumoff->id]));
     // Off user with force on.
     $result = forum_tp_get_untracked_forums($useroff->id, $course->id);
     $this->assertEquals(2, count($result));
     $this->assertEquals(true, isset($result[$forumoff->id]));
     $this->assertEquals(true, isset($result[$forumoptional->id]));
     // Don't allow force.
     $CFG->forum_allowforcedreadtracking = 0;
     // On user with force off.
     $result = forum_tp_get_untracked_forums($useron->id, $course->id);
     $this->assertEquals(1, count($result));
     $this->assertEquals(true, isset($result[$forumoff->id]));
     // Off user with force off.
     $result = forum_tp_get_untracked_forums($useroff->id, $course->id);
     $this->assertEquals(3, count($result));
     $this->assertEquals(true, isset($result[$forumoff->id]));
     $this->assertEquals(true, isset($result[$forumoptional->id]));
     $this->assertEquals(true, isset($result[$forumforce->id]));
     // Stop tracking so we can test again.
     forum_tp_stop_tracking($forumforce->id, $useron->id);
     forum_tp_stop_tracking($forumoptional->id, $useron->id);
     forum_tp_stop_tracking($forumforce->id, $useroff->id);
     forum_tp_stop_tracking($forumoptional->id, $useroff->id);
     // Allow force.
     $CFG->forum_allowforcedreadtracking = 1;
     // On user with force on.
     $result = forum_tp_get_untracked_forums($useron->id, $course->id);
     $this->assertEquals(2, count($result));
     $this->assertEquals(true, isset($result[$forumoff->id]));
     $this->assertEquals(true, isset($result[$forumoptional->id]));
     // Off user with force on.
     $result = forum_tp_get_untracked_forums($useroff->id, $course->id);
     $this->assertEquals(2, count($result));
     $this->assertEquals(true, isset($result[$forumoff->id]));
     $this->assertEquals(true, isset($result[$forumoptional->id]));
     // Don't allow force.
     $CFG->forum_allowforcedreadtracking = 0;
     // On user with force off.
     $result = forum_tp_get_untracked_forums($useron->id, $course->id);
     $this->assertEquals(3, count($result));
     $this->assertEquals(true, isset($result[$forumoff->id]));
     $this->assertEquals(true, isset($result[$forumoptional->id]));
     $this->assertEquals(true, isset($result[$forumforce->id]));
     // Off user with force off.
     $result = forum_tp_get_untracked_forums($useroff->id, $course->id);
     $this->assertEquals(3, count($result));
     $this->assertEquals(true, isset($result[$forumoff->id]));
     $this->assertEquals(true, isset($result[$forumoptional->id]));
     $this->assertEquals(true, isset($result[$forumforce->id]));
 }
示例#2
0
$strunsubscribe = get_string('unsubscribe', 'forum');
$stryes = get_string('yes');
$strno = get_string('no');
$strrss = get_string('rss');
$stremaildigest = get_string('emaildigest');
$searchform = forum_search_form($course);
// Retrieve the list of forum digest options for later.
$digestoptions = forum_get_user_digest_options();
$digestoptions_selector = new single_select(new moodle_url('/mod/forum/maildigest.php', array('backtoindex' => 1)), 'maildigest', $digestoptions, null, '');
$digestoptions_selector->method = 'post';
// Start of the table for General Forums
$generaltable = new html_table();
$generaltable->head = array($strforum, $strdescription, $strdiscussions);
$generaltable->align = array('left', 'left', 'center');
if ($usetracking = forum_tp_can_track_forums()) {
    $untracked = forum_tp_get_untracked_forums($USER->id, $course->id);
    $generaltable->head[] = $strunreadposts;
    $generaltable->align[] = 'center';
    $generaltable->head[] = $strtracking;
    $generaltable->align[] = 'center';
}
$subscribed_forums = forum_get_subscribed_forums($course);
$can_subscribe = is_enrolled($coursecontext);
if ($can_subscribe) {
    $generaltable->head[] = $strsubscribed;
    $generaltable->align[] = 'center';
    $generaltable->head[] = $stremaildigest . ' ' . $OUTPUT->help_icon('emaildigesttype', 'mod_forum');
    $generaltable->align[] = 'center';
}
if ($show_rss = ($can_subscribe || $course->id == SITEID) && isset($CFG->enablerssfeeds) && isset($CFG->forum_enablerssfeeds) && $CFG->enablerssfeeds && $CFG->forum_enablerssfeeds) {
    $generaltable->head[] = $strrss;
示例#3
0
function print_section($course, $section, $mods, $modnamesused, $absolute = false, $width = "100%")
{
    /// Prints a section full of activity modules
    global $CFG, $USER;
    static $groupbuttons;
    static $groupbuttonslink;
    static $isteacher;
    static $isediting;
    static $ismoving;
    static $strmovehere;
    static $strmovefull;
    static $strunreadpostsone;
    static $untracked;
    static $usetracking;
    $labelformatoptions = new stdClass();
    if (!isset($isteacher)) {
        $groupbuttons = ($course->groupmode or !$course->groupmodeforce);
        $groupbuttonslink = !$course->groupmodeforce;
        $isediting = isediting($course->id);
        $ismoving = $isediting && ismoving($course->id);
        if ($ismoving) {
            $strmovehere = get_string("movehere");
            $strmovefull = strip_tags(get_string("movefull", "", "'{$USER->activitycopyname}'"));
        }
        include_once $CFG->dirroot . '/mod/forum/lib.php';
        if ($usetracking = forum_tp_can_track_forums()) {
            $strunreadpostsone = get_string('unreadpostsone', 'forum');
            $untracked = forum_tp_get_untracked_forums($USER->id, $course->id);
        }
    }
    $labelformatoptions->noclean = true;
    /// Casting $course->modinfo to string prevents one notice when the field is null
    $modinfo = unserialize((string) $course->modinfo);
    $groupings = groups_get_all_groupings($course->id);
    //Acccessibility: replace table with list <ul>, but don't output empty list.
    if (!empty($section->sequence)) {
        // Fix bug #5027, don't want style=\"width:$width\".
        echo "<ul class=\"section img-text\">\n";
        $sectionmods = explode(",", $section->sequence);
        foreach ($sectionmods as $modnumber) {
            if (empty($mods[$modnumber])) {
                continue;
            }
            $mod = $mods[$modnumber];
            if (($mod->visible or has_capability('moodle/course:viewhiddenactivities', get_context_instance(CONTEXT_COURSE, $course->id))) && (!$ismoving || $mod->id != $USER->activitycopy) && groups_course_module_visible($mod)) {
                echo '<li class="activity ' . $mod->modname . '" id="module-' . $modnumber . '">';
                // Unique ID
                if ($ismoving) {
                    echo '<a title="' . $strmovefull . '"' . ' href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&amp;sesskey=' . $USER->sesskey . '">' . '<img class="movetarget" src="' . $CFG->pixpath . '/movehere.gif" ' . ' alt="' . $strmovehere . '" /></a><br />
                         ';
                }
                $instancename = urldecode($modinfo[$modnumber]->name);
                $instancename = format_string($instancename, true, $course->id);
                if (!empty($modinfo[$modnumber]->extra)) {
                    $extra = urldecode($modinfo[$modnumber]->extra);
                } else {
                    $extra = "";
                }
                if (!empty($modinfo[$modnumber]->icon)) {
                    $icon = "{$CFG->pixpath}/" . urldecode($modinfo[$modnumber]->icon);
                } else {
                    $icon = "{$CFG->modpixpath}/{$mod->modname}/icon.gif";
                }
                if ($mod->indent) {
                    print_spacer(12, 20 * $mod->indent, false);
                }
                if ($mod->modname == "label") {
                    if (!$mod->visible) {
                        echo "<span class=\"dimmed_text\">";
                    }
                    echo format_text($extra, FORMAT_HTML, $labelformatoptions);
                    if (!$mod->visible) {
                        echo "</span>";
                    }
                } else {
                    // Normal activity
                    //Accessibility: for files get description via icon.
                    $altname = '';
                    if ('resource' == $mod->modname) {
                        if (!empty($modinfo[$modnumber]->icon)) {
                            $possaltname = $modinfo[$modnumber]->icon;
                            $mimetype = mimeinfo_from_icon('type', $possaltname);
                            $altname = get_mimetype_description($mimetype);
                        } else {
                            $altname = $mod->modfullname;
                        }
                    } else {
                        $altname = $mod->modfullname;
                    }
                    // Avoid unnecessary duplication.
                    if (false !== stripos($instancename, $altname)) {
                        $altname = '';
                    }
                    // File type after name, for alphabetic lists (screen reader).
                    if ($altname) {
                        $altname = get_accesshide(' ' . $altname);
                    }
                    $linkcss = $mod->visible ? "" : " class=\"dimmed\" ";
                    echo '<a ' . $linkcss . ' ' . $extra . ' href="' . $CFG->wwwroot . '/mod/' . $mod->modname . '/view.php?id=' . $mod->id . '">' . '<img src="' . $icon . '" class="activityicon" alt="" /> <span>' . $instancename . $altname . '</span></a>';
                    if (!empty($CFG->enablegroupings) && !empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) {
                        echo " <span class=\"groupinglabel\"> - " . format_string($groupings[$mod->groupingid]->name) . '</span>';
                    }
                }
                if ($usetracking && $mod->modname == 'forum') {
                    $groupmode = groups_get_course_groupmode($course, $mod);
                    $groupid = $groupmode == SEPARATEGROUPS && !has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id)) ? groups_get_course_group($course, true) : false;
                    if (forum_tp_can_track_forums() && !isset($untracked[$mod->instance])) {
                        $unread = forum_tp_count_forum_unread_posts($USER->id, $mod->instance, $groupid);
                        if ($unread) {
                            echo '<span class="unread"> <a href="' . $CFG->wwwroot . '/mod/forum/view.php?id=' . $mod->id . '">';
                            if ($unread == 1) {
                                echo $strunreadpostsone;
                            } else {
                                print_string('unreadpostsnumber', 'forum', $unread);
                            }
                            echo '</a> </span>';
                        }
                    }
                }
                if ($isediting) {
                    // TODO: we must define this as mod property!
                    if ($groupbuttons and $mod->modname != 'label' and $mod->modname != 'resource' and $mod->modname != 'glossary') {
                        if (!($mod->groupmodelink = $groupbuttonslink)) {
                            $mod->groupmode = $course->groupmode;
                        }
                    } else {
                        $mod->groupmode = false;
                    }
                    echo '&nbsp;&nbsp;';
                    echo make_editing_buttons($mod, $absolute, true, $mod->indent, $section->section);
                }
                echo "</li>\n";
            }
        }
    } elseif ($ismoving) {
        echo "<ul class=\"section\">\n";
    }
    if ($ismoving) {
        echo '<li><a title="' . $strmovefull . '"' . ' href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&amp;sesskey=' . $USER->sesskey . '">' . '<img class="movetarget" src="' . $CFG->pixpath . '/movehere.gif" ' . ' alt="' . $strmovehere . '" /></a></li>
             ';
    }
    if (!empty($section->sequence) || $ismoving) {
        echo "</ul><!--class='section'-->\n\n";
    }
}