当前位置: 首页>>代码示例>>PHP>>正文


PHP coursemodule_visible_for_user函数代码示例

本文整理汇总了PHP中coursemodule_visible_for_user函数的典型用法代码示例。如果您正苦于以下问题:PHP coursemodule_visible_for_user函数的具体用法?PHP coursemodule_visible_for_user怎么用?PHP coursemodule_visible_for_user使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了coursemodule_visible_for_user函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: node_visible_for_user

/**
 * Prüfen, ob ein Knoten im Netz für den aktuellen Benutzer sichtbar ist.
 *
 * @param int $nodeid	Die id des zu prüfenden Knotens
 * @return bool 		Gibt wahr oder falsch zurück
 */
function node_visible_for_user($nodeid)
{
    global $DB, $CFG;
    $cm = get_coursemodule_from_id($modname = 0, $nodeid, $courseid = 0, $sectionnum = false, $strictness = IGNORE_MISSING);
    if (coursemodule_visible_for_user($cm, $userid = 0)) {
        return true;
    }
    return false;
}
开发者ID:achsay,项目名称:semantic_web,代码行数:15,代码来源:semantic_web_lib.php

示例2: print_section

/**
 * Prints a section full of activity modules
 */
function print_section($course, $section, $mods, $modnamesused, $absolute = false, $width = "100%", $hidecompletion = false)
{
    global $CFG, $USER, $DB, $PAGE, $OUTPUT;
    static $initialised;
    static $groupbuttons;
    static $groupbuttonslink;
    static $isediting;
    static $ismoving;
    static $strmovehere;
    static $strmovefull;
    static $strunreadpostsone;
    static $groupings;
    static $modulenames;
    if (!isset($initialised)) {
        $groupbuttons = ($course->groupmode or !$course->groupmodeforce);
        $groupbuttonslink = !$course->groupmodeforce;
        $isediting = $PAGE->user_is_editing();
        $ismoving = $isediting && ismoving($course->id);
        if ($ismoving) {
            $strmovehere = get_string("movehere");
            $strmovefull = strip_tags(get_string("movefull", "", "'{$USER->activitycopyname}'"));
        }
        $modulenames = array();
        $initialised = true;
    }
    $modinfo = get_fast_modinfo($course);
    $completioninfo = new completion_info($course);
    //Accessibility: 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;
            }
            /**
             * @var cm_info
             */
            $mod = $mods[$modnumber];
            if ($ismoving and $mod->id == $USER->activitycopy) {
                // do not display moving mod
                continue;
            }
            if (isset($modinfo->cms[$modnumber])) {
                // We can continue (because it will not be displayed at all)
                // if:
                // 1) The activity is not visible to users
                // and
                // 2a) The 'showavailability' option is not set (if that is set,
                //     we need to display the activity so we can show
                //     availability info)
                // or
                // 2b) The 'availableinfo' is empty, i.e. the activity was
                //     hidden in a way that leaves no info, such as using the
                //     eye icon.
                if (!$modinfo->cms[$modnumber]->uservisible && (empty($modinfo->cms[$modnumber]->showavailability) || empty($modinfo->cms[$modnumber]->availableinfo))) {
                    // visibility shortcut
                    continue;
                }
            } else {
                if (!file_exists("{$CFG->dirroot}/mod/{$mod->modname}/lib.php")) {
                    // module not installed
                    continue;
                }
                if (!coursemodule_visible_for_user($mod) && empty($mod->showavailability)) {
                    // full visibility check
                    continue;
                }
            }
            if (!isset($modulenames[$mod->modname])) {
                $modulenames[$mod->modname] = get_string('modulename', $mod->modname);
            }
            $modulename = $modulenames[$mod->modname];
            // In some cases the activity is visible to user, but it is
            // dimmed. This is done if viewhiddenactivities is true and if:
            // 1. the activity is not visible, or
            // 2. the activity has dates set which do not include current, or
            // 3. the activity has any other conditions set (regardless of whether
            //    current user meets them)
            $canviewhidden = has_capability('moodle/course:viewhiddenactivities', get_context_instance(CONTEXT_MODULE, $mod->id));
            $accessiblebutdim = false;
            if ($canviewhidden) {
                $accessiblebutdim = !$mod->visible;
                if (!empty($CFG->enableavailability)) {
                    $accessiblebutdim = $accessiblebutdim || $mod->availablefrom > time() || $mod->availableuntil && $mod->availableuntil < time() || count($mod->conditionsgrade) > 0 || count($mod->conditionscompletion) > 0;
                }
            }
            $liclasses = array();
            $liclasses[] = 'activity';
            $liclasses[] = $mod->modname;
            $liclasses[] = 'modtype_' . $mod->modname;
            $extraclasses = $mod->get_extra_classes();
            if ($extraclasses) {
                $liclasses = array_merge($liclasses, explode(' ', $extraclasses));
            }
            echo html_writer::start_tag('li', array('class' => join(' ', $liclasses), 'id' => 'module-' . $modnumber));
//.........这里部分代码省略.........
开发者ID:numbas,项目名称:moodle,代码行数:101,代码来源:lib.php

示例3: ss_print_section

/**
 * Prints a section full of activity modules
 * @Overrides course/lib.php=>print_section
 */
function ss_print_section($course, $section, $mods, $modnamesused, $absolute=false, $width="100%", $hidecompletion=false) {
	#print_r($mods);
	
	global $CFG, $USER, $DB, $PAGE, $OUTPUT;

    static $initialised;

    static $groupbuttons;
    static $groupbuttonslink;
    static $isediting;
    static $ismoving;
    static $strmovehere;
    static $strmovefull;
    static $strunreadpostsone;
    static $usetracking;
    static $groupings;

    if (!isset($initialised)) {
        $groupbuttons     = ($course->groupmode or (!$course->groupmodeforce));
        $groupbuttonslink = (!$course->groupmodeforce);
        $isediting        = $PAGE->user_is_editing();
        $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');
        }
        $initialised = true;
    }

    $labelformatoptions = new stdClass();
    $labelformatoptions->noclean = true;
    $labelformatoptions->overflowdiv = true;

/// Casting $course->modinfo to string prevents one notice when the field is null
    $modinfo = get_fast_modinfo($course);
    $completioninfo = new completion_info($course);

    //Accessibility: 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 ($ismoving and $mod->id == $USER->activitycopy) {
                // do not display moving mod
                continue;
            }

            if (isset($modinfo->cms[$modnumber])) {
                // We can continue (because it will not be displayed at all)
                // if:
                // 1) The activity is not visible to users
                // and
                // 2a) The 'showavailability' option is not set (if that is set,
                //     we need to display the activity so we can show
                //     availability info)
                // or
                // 2b) The 'availableinfo' is empty, i.e. the activity was
                //     hidden in a way that leaves no info, such as using the
                //     eye icon.
                if (!$modinfo->cms[$modnumber]->uservisible &&
                    (empty($modinfo->cms[$modnumber]->showavailability) ||
                      empty($modinfo->cms[$modnumber]->availableinfo))) {
                    // visibility shortcut
                    continue;
                }
            } else {
                if (!file_exists("$CFG->dirroot/mod/$mod->modname/lib.php")) {
                    // module not installed
                    continue;
                }
                if (!coursemodule_visible_for_user($mod) &&
                    empty($mod->showavailability)) {
                    // full visibility check
                    continue;
                }
            }

            // In some cases the activity is visible to user, but it is
            // dimmed. This is done if viewhiddenactivities is true and if:
            // 1. the activity is not visible, or
            // 2. the activity has dates set which do not include current, or
            // 3. the activity has any other conditions set (regardless of whether
            //    current user meets them)
//.........这里部分代码省略.........
开发者ID:noisyjerm,项目名称:moodle-course_format_slides,代码行数:101,代码来源:lib.php

示例4: forum_user_can_see_post

/**
 * @global object
 * @global object
 * @param object $forum
 * @param object $discussion
 * @param object $post
 * @param object $user
 * @param object $cm
 * @return bool
 */
function forum_user_can_see_post($forum, $discussion, $post, $user = NULL, $cm = NULL)
{
    global $CFG, $USER, $DB;
    // retrieve objects (yuk)
    if (is_numeric($forum)) {
        debugging('missing full forum', DEBUG_DEVELOPER);
        if (!($forum = $DB->get_record('forum', array('id' => $forum)))) {
            return false;
        }
    }
    if (is_numeric($discussion)) {
        debugging('missing full discussion', DEBUG_DEVELOPER);
        if (!($discussion = $DB->get_record('forum_discussions', array('id' => $discussion)))) {
            return false;
        }
    }
    if (is_numeric($post)) {
        debugging('missing full post', DEBUG_DEVELOPER);
        if (!($post = $DB->get_record('forum_posts', array('id' => $post)))) {
            return false;
        }
    }
    if (!isset($post->id) && isset($post->parent)) {
        $post->id = $post->parent;
    }
    if (!$cm) {
        debugging('missing cm', DEBUG_DEVELOPER);
        if (!($cm = get_coursemodule_from_instance('forum', $forum->id, $forum->course))) {
            print_error('invalidcoursemodule');
        }
    }
    if (empty($user) || empty($user->id)) {
        $user = $USER;
    }
    if (isset($cm->cache->caps['mod/forum:viewdiscussion'])) {
        if (!$cm->cache->caps['mod/forum:viewdiscussion']) {
            return false;
        }
    } else {
        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
        if (!has_capability('mod/forum:viewdiscussion', $modcontext, $user->id)) {
            return false;
        }
    }
    if (isset($cm->uservisible)) {
        if (!$cm->uservisible) {
            return false;
        }
    } else {
        if (!coursemodule_visible_for_user($cm, $user->id)) {
            return false;
        }
    }
    if ($forum->type == 'qanda') {
        $firstpost = forum_get_firstpost_from_discussion($discussion->id);
        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
        $userfirstpost = forum_get_user_posted_time($discussion->id, $user->id);
        return $userfirstpost !== false && time() - $userfirstpost >= $CFG->maxeditingtime || $firstpost->id == $post->id || $post->userid == $user->id || $firstpost->userid == $user->id || has_capability('mod/forum:viewqandawithoutposting', $modcontext, $user->id, false);
    }
    return true;
}
开发者ID:richheath,项目名称:moodle,代码行数:71,代码来源:lib.php

示例5: require_capability

if ($move > 0 and confirm_sesskey()) {
    $return = $CFG->wwwroot . '/mod/forum/discuss.php?d=' . $discussion->id;
    require_capability('mod/forum:movediscussions', $modcontext);
    if ($forum->type == 'single') {
        print_error('cannotmovefromsingleforum', 'forum', $return);
    }
    if (!($forumto = $DB->get_record('forum', array('id' => $move)))) {
        print_error('cannotmovetonotexist', 'forum', $return);
    }
    if ($forumto->type == 'single') {
        print_error('cannotmovetosingleforum', 'forum', $return);
    }
    if (!($cmto = get_coursemodule_from_instance('forum', $forumto->id, $course->id))) {
        print_error('cannotmovetonotfound', 'forum', $return);
    }
    if (!coursemodule_visible_for_user($cmto)) {
        print_error('cannotmovenotvisible', 'forum', $return);
    }
    require_capability('mod/forum:startdiscussion', get_context_instance(CONTEXT_MODULE, $cmto->id));
    if (!forum_move_attachments($discussion, $forum->id, $forumto->id)) {
        echo $OUTPUT->notification("Errors occurred while moving attachment directories - check your file permissions");
    }
    $DB->set_field('forum_discussions', 'forum', $forumto->id, array('id' => $discussion->id));
    $DB->set_field('forum_read', 'forumid', $forumto->id, array('discussionid' => $discussion->id));
    add_to_log($course->id, 'forum', 'move discussion', "discuss.php?d={$discussion->id}", $discussion->id, $cmto->id);
    require_once $CFG->libdir . '/rsslib.php';
    require_once $CFG->dirroot . '/mod/forum/rsslib.php';
    // Delete the RSS files for the 2 forums to force regeneration of the feeds
    forum_rss_delete_file($forum);
    forum_rss_delete_file($forumto);
    redirect($return . '&moved=-1&sesskey=' . sesskey());
开发者ID:njorth,项目名称:marginalia,代码行数:31,代码来源:discuss.php

示例6: print_section_newsroom

function print_section_newsroom($course, $section, $mods, $modnamesused, $absolute = false, $width = "100%")
{
    /// Prints a section full of activity modules
    global $CFG, $USER;
    static $initialised;
    static $groupbuttons;
    static $groupbuttonslink;
    static $isediting;
    static $ismoving;
    static $strmovehere;
    static $strmovefull;
    static $strunreadpostsone;
    static $usetracking;
    static $groupings;
    if (!isset($initialised)) {
        $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');
        }
        $initialised = true;
    }
    $labelformatoptions = new object();
    $labelformatoptions->noclean = true;
    /// Casting $course->modinfo to string prevents one notice when the field is null
    $modinfo = get_fast_modinfo($course);
    //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 ($ismoving and $mod->id == $USER->activitycopy) {
                // do not display moving mod
                continue;
            }
            if (isset($modinfo->cms[$modnumber])) {
                if (!$modinfo->cms[$modnumber]->uservisible) {
                    // visibility shortcut
                    continue;
                }
            } else {
                if (!file_exists("{$CFG->dirroot}/mod/{$mod->modname}/lib.php")) {
                    // module not installed
                    continue;
                }
                if (!coursemodule_visible_for_user($mod)) {
                    // full visibility check
                    continue;
                }
            }
            // The magic! ... if indent == 1 then ... hide module
            if ($mod->indent == 1) {
                $hiddemodule = 'hidden';
            } else {
                $hiddemodule = '';
            }
            echo '<li class="activity ' . $mod->modname . ' ' . $hiddemodule . '" 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 />
                     ';
            }
            if ($mod->indent) {
                print_spacer(12, 20 * $mod->indent, false);
            }
            $extra = '';
            if (!empty($modinfo->cms[$modnumber]->extra)) {
                $extra = $modinfo->cms[$modnumber]->extra;
            }
            if ($mod->modname == "label") {
                echo "<span class=\"";
                if (!$mod->visible) {
                    echo 'dimmed_text';
                } else {
                    echo 'label';
                }
                echo '">';
                echo format_text($extra, FORMAT_HTML, $labelformatoptions);
                echo "</span>";
                if (!empty($CFG->enablegroupings) && !empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) {
                    if (!isset($groupings)) {
                        $groupings = groups_get_all_groupings($course->id);
                    }
                    echo " <span class=\"groupinglabel\">(" . format_string($groupings[$mod->groupingid]->name) . ')</span>';
                }
            } else {
                // Normal activity
                $instancename = format_string($modinfo->cms[$modnumber]->name, true, $course->id);
//.........这里部分代码省略.........
开发者ID:hmatulis,项目名称:RTL-BIDI-Hebrew-Moodle-Plugins,代码行数:101,代码来源:format.php

示例7: forum_user_can_see_post

/**
 *
 */
function forum_user_can_see_post($forum, $discussion, $post, $user = NULL, $cm = NULL)
{
    global $USER;
    // retrieve objects (yuk)
    if (is_numeric($forum)) {
        debugging('missinf full forum', DEBUG_DEVELOPER);
        if (!($forum = get_record('forum', 'id', $forum))) {
            return false;
        }
    }
    if (is_numeric($discussion)) {
        debugging('missinf full discussion', DEBUG_DEVELOPER);
        if (!($discussion = get_record('forum_discussions', 'id', $discussion))) {
            return false;
        }
    }
    if (is_numeric($post)) {
        debugging('missinf full post', DEBUG_DEVELOPER);
        if (!($post = get_record('forum_posts', 'id', $post))) {
            return false;
        }
    }
    if (!isset($post->id) && isset($post->parent)) {
        $post->id = $post->parent;
    }
    if (!$cm) {
        debugging('missing cm', DEBUG_DEVELOPER);
        if (!($cm = get_coursemodule_from_instance('forum', $forum->id, $forum->course))) {
            error('Course Module ID was incorrect');
        }
    }
    if (empty($user) || empty($user->id)) {
        $user = $USER;
    }
    if (isset($cm->cache->caps['mod/forum:viewdiscussion'])) {
        if (!$cm->cache->caps['mod/forum:viewdiscussion']) {
            return false;
        }
    } else {
        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
        if (!has_capability('mod/forum:viewdiscussion', $modcontext, $user->id)) {
            return false;
        }
    }
    if (isset($cm->uservisible)) {
        if (!$cm->uservisible) {
            return false;
        }
    } else {
        if (!coursemodule_visible_for_user($cm, $user->id)) {
            return false;
        }
    }
    if ($forum->type == 'qanda') {
        $firstpost = forum_get_firstpost_from_discussion($discussion->id);
        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
        return forum_user_has_posted($forum->id, $discussion->id, $user->id) || $firstpost->id == $post->id || has_capability('mod/forum:viewqandawithoutposting', $modcontext, $user->id, false);
    }
    return true;
}
开发者ID:r007,项目名称:PMoodle,代码行数:63,代码来源:lib.php

示例8: fix_condition_targetid


//.........这里部分代码省略.........
        // restrict results to current section, if we can
        if ($sectionnum >= 0) {
            $from .= ' LEFT JOIN {course_sections} cs ON cs.id = cm.section';
            $where .= ' AND cs.section = ?';
            $params[] = $sectionnum;
        }
        $gradedcms = $DB->get_records_sql("SELECT {$select} FROM {$from} WHERE {$where}", $params);
    }
    // are we searching for a PREVIOUS activity (usually we are)
    $previous = $targetid == PREVIOUS_ANY_COURSE || $targetid == PREVIOUS_ANY_SECTION || $targetid == PREVIOUS_SAME_COURSE || $targetid == PREVIOUS_SAME_SECTION;
    // get cm ids (reverse order if necessary)
    $coursemoduleids = array_keys($modinfo->cms);
    if ($previous) {
        $coursemoduleids = array_reverse($coursemoduleids);
    }
    // search for next, previous or specific course module
    $found = false;
    foreach ($coursemoduleids as $coursemoduleid) {
        if (method_exists($modinfo, 'get_cm')) {
            $coursemodule = $modinfo->get_cm($coursemoduleid);
        } else {
            $coursemodule = $modinfo->cms[$coursemoduleid];
        }
        if ($id && $coursemoduleid != $id) {
            continue;
            // wrong activity
        }
        if ($sectionnum >= 0) {
            if ($previous) {
                if ($coursemodule->sectionnum > $sectionnum) {
                    continue;
                    // later section
                }
                if ($coursemodule->sectionnum < $sectionnum) {
                    return 0;
                    // previous section
                }
            } else {
                if ($coursemodule->sectionnum < $sectionnum) {
                    continue;
                    // earlier section
                }
                if ($coursemodule->sectionnum > $sectionnum) {
                    return 0;
                    // later section
                }
            }
        }
        if ($requirecompletion && empty($coursemodule->completion)) {
            continue;
            // cm does not have completion conditions
        }
        if ($requiregraded && empty($gradedcms[$coursemoduleid])) {
            continue;
            // skip ungraded activity
        }
        if ($modname && $coursemodule->modname != $modname) {
            continue;
            // wrong module
        }
        if ($includelabels == false && in_array($coursemodule->modname, $labelmods)) {
            continue;
            // skip labels
        }
        if ($includeresources == false && in_array($coursemodule->modname, $resourcemods)) {
            continue;
            // skip resources
        }
        if ($found || $coursemoduleid == $id) {
            if (class_exists('\\core_availability\\info_module')) {
                // Moodle >= 2.7
                $is_visible = \core_availability\info_module::is_user_visible($coursemodule);
            } else {
                // Moodle <= 2.6
                // Indirect modification of overloaded property
                // cm_info::$availableinfo has no effect
                // lib/datalib.php on line 1588
                $is_visible = coursemodule_visible_for_user($coursemodule);
            }
            if ($is_visible) {
                if ($requirecompletion) {
                    // return cm id
                    return intval($coursemoduleid);
                } else {
                    // return grade item id
                    return intval($gradedcms[$coursemoduleid]->gradeitemid);
                }
            }
            if ($coursemoduleid == $id) {
                // required cm is not visible to this user
                return 0;
            }
        }
        if ($coursemoduleid == $cm->id) {
            $found = true;
        }
    }
    // next/prev cm not found
    return 0;
}
开发者ID:gbateson,项目名称:moodle-block_taskchain_navigation,代码行数:101,代码来源:accesscontrol.php

示例9: RWSGUVQList

function RWSGUVQList($r_cid)
{
    global $RWSUID;
    $r_vqms = array();
    $r_qzms = get_coursemodules_in_course("quiz", $r_cid);
    if ($r_qzms === false || count($r_qzms) == 0) {
        return $r_vqms;
    }
    foreach ($r_qzms as $r_qzm) {
        if (coursemodule_visible_for_user($r_qzm, $RWSUID)) {
            $r_vqms[] = $r_qzm;
        }
    }
    return $r_vqms;
}
开发者ID:MoodleMetaData,项目名称:MoodleMetaData,代码行数:15,代码来源:servicelib.php

示例10: preprocessmods4topicstree

/**
 * This function will preprocess all the mods in section, adding the required stuff to be able to
 * output them later in a nested lists behaviour
 */
function preprocessmods4topicstree($sectionmods, &$mods, &$modinfo)
{
    global $CFG;
    $prev = null;
    $next = null;
    $tree = array();
    /// To create the tree structure while
    $parents = array();
    /// iterating. Needed to detect last items
    array_push($parents, 0);
    /// Initial parent
    foreach ($sectionmods as $key => $modnumber) {
        $treeized = false;
        /// To know if we have inserted one module
        /// in the $tree/$parents structures
        if (empty($mods[$modnumber])) {
            continue;
        }
        /// Calculate current
        $mod = $mods[$modnumber];
        /// Calculate next
        if (isset($sectionmods[$key + 1])) {
            $next = $mods[$sectionmods[$key + 1]];
        } else {
            $next = null;
        }
        /// Code goes here
        /// First item cannot have indent, reset it
        if (empty($prev) && $mod->indent > 0) {
            $mod->indent = 0;
        }
        /// Any difference > 1 isn't accepted, reduce it to 1
        if (!empty($next) && $next->indent - $mod->indent > 1) {
            $next->indent = $mod->indent + 1;
        }
        /// If prev is more indented than current, annotate it
        if (!empty($prev) && $prev->indent > $mod->indent) {
            $mod->closelevel = $prev->indent - $mod->indent;
            /// Delete from list of parent
            for ($n = 0; $n < $mod->closelevel; $n++) {
                $last = array_pop($parents);
            }
            /// Assign current mod to current parent
            if (!$treeized) {
                $tree[end($parents)][$modnumber] = $modnumber;
                $treeized = true;
            }
        }
        /// If next is more indented than current, annotate it
        if (!empty($next) && $next->indent > $mod->indent) {
            $mod->openlevel = $next->indent;
            /// Assign current mod to current parent
            if (!$treeized) {
                $tree[end($parents)][$modnumber] = $modnumber;
                $treeized = true;
            }
            /// Now add mod to list of parents and start new list in tree for it
            array_push($parents, $modnumber);
            $tree[end($parents)] = array();
        }
        /// Assign current mod to current parent if not done before (in opening/closing)
        if (!$treeized) {
            $tree[end($parents)][$modnumber] = $modnumber;
            $treeized = true;
        }
        /// Just to be sure changes apply
        if ($mod) {
            $mods[$modnumber] = $mod;
        }
        if ($next) {
            $mods[$sectionmods[$key + 1]] = $next;
        }
        /// Calculate new previous
        $prev = $mods[$modnumber];
    }
    /// Now iterate over all the arrays in tree, getting last elements and
    /// marking them as last in $mods
    foreach ($tree as $list) {
        $mods[end($list)]->islast = true;
    }
    /// Finally, iterate over all the arrays in tree, looking for hidden parents
    /// and replacing that module by a custom label to respect the tree format
    foreach ($tree as $key => $list) {
        /// Skip 0 (virtual) tree
        if ($key == 0) {
            continue;
        }
        /// Check user visibility, and replace module by hand-made label if it isn't visible
        if (!coursemodule_visible_for_user($mods[$key])) {
            $mods[$key]->modname = 'label';
            $mods[$key]->visible = 1;
            $modinfo->cms[$key]->uservisible = 1;
            $modinfo->cms[$key]->modname = 'label';
            $modinfo->cms[$key]->name = '';
            $modinfo->cms[$key]->extra = '<img src="' . $CFG->pixpath . '/f/folder.gif" alt="" />';
        }
//.........这里部分代码省略.........
开发者ID:hmatulis,项目名称:RTL-BIDI-Hebrew-Moodle-Plugins,代码行数:101,代码来源:format.php

示例11: get_cm

 /**
  * get_cm
  *
  * @param xxx $type
  * @return xxx
  */
 public function get_cm($type)
 {
     // gets the next, previous or specific Moodle activity
     // get entry/exit cm id
     $cm_field = $type . 'cm';
     $cmid = $this->{$cm_field};
     if ($cmid == self::ACTIVITY_NONE) {
         return false;
     }
     if (!($modinfo = get_fast_modinfo($this->course))) {
         return false;
         // no modinfo - shouldn't happen !!
     }
     if (method_exists($modinfo, 'get_cm')) {
         if (!$modinfo->get_cm($this->cm->id)) {
             return false;
             // target cm not found - shouldn't happen !!
         }
     } else {
         if (!isset($modinfo->cms[$this->cm->id])) {
             return false;
             // target cm not found - shouldn't happen !!
         }
     }
     // set default search values
     $id = 0;
     $modname = '';
     $sectionnum = -1;
     // restrict search values
     if ($cmid > 0) {
         $id = $cmid;
     } else {
         if ($cmid == self::ACTIVITY_COURSE_HOTPOT || $cmid == self::ACTIVITY_SECTION_HOTPOT) {
             $modname = 'hotpot';
         }
         if ($cmid == self::ACTIVITY_SECTION_ANY || $cmid == self::ACTIVITY_SECTION_HOTPOT) {
             $sectionnum = $modinfo->get_cm($this->cm->id)->sectionnum;
         }
     }
     // get cm ids (reverse order if necessary)
     $cmids = array_keys($modinfo->cms);
     if ($type == 'entry') {
         $cmids = array_reverse($cmids);
     }
     // search for next, previous or specific course module
     $found = false;
     foreach ($cmids as $cmid) {
         if (method_exists($modinfo, 'get_cm')) {
             $cm = $modinfo->get_cm($cmid);
         } else {
             $cm = $modinfo->cms[$cmid];
         }
         if ($id && $cm->id != $id) {
             continue;
             // wrong activity
         }
         if ($sectionnum >= 0) {
             if ($type == 'entry') {
                 if ($cm->sectionnum > $sectionnum) {
                     continue;
                     // later section
                 }
                 if ($cm->sectionnum < $sectionnum) {
                     return false;
                     // previous section
                 }
             } else {
                 // exit (=next)
                 if ($cm->sectionnum < $sectionnum) {
                     continue;
                     // earlier section
                 }
                 if ($cm->sectionnum > $sectionnum) {
                     return false;
                     // later section
                 }
             }
         }
         if ($modname && $cm->modname != $modname) {
             continue;
             // wrong module
         }
         if ($cm->modname == 'label') {
             continue;
             // skip labels
         }
         if ($found || $cm->id == $id) {
             if (coursemodule_visible_for_user($cm)) {
                 return $cm;
             }
             if ($cm->id == $id) {
                 // required cm is not visible to this user
                 return false;
             }
//.........这里部分代码省略.........
开发者ID:hapaxapah,项目名称:moodle-mod_hotpot,代码行数:101,代码来源:locallib.php

示例12: get_course_mods

 function get_course_mods($id, $username = '')
 {
     global $CFG, $DB;
     $username = utf8_decode($username);
     $username = strtolower($username);
     if ($username) {
         $user = get_complete_user_data('username', $username);
     }
     $sections = get_all_sections($id);
     $forum = forum_get_course_forum($id, 'news');
     $news_forum_id = $forum->id;
     get_all_mods($id, $mods, $modnames, $modnamesplural, $modnamesused);
     $context = get_context_instance(CONTEXT_COURSE, $id);
     $e = array();
     foreach ($sections as $section) {
         if (!$section->visible) {
             continue;
         }
         $sectionmods = explode(",", $section->sequence);
         foreach ($sectionmods as $modnumber) {
             if (empty($mods[$modnumber])) {
                 continue;
             }
             $mod = $mods[$modnumber];
             $resource['completion_info'] = '';
             if ($username) {
                 $cm = get_coursemodule_from_id(false, $mod->id);
                 if (!coursemodule_visible_for_user($cm, $user->id)) {
                     if (!$mod->showavailability) {
                         // Mod not visible, and no completion info to show
                         continue;
                     }
                     $resource['available'] = 0;
                     $ci = new condition_info($mod);
                     $resource['completion_info'] = $ci->get_full_information();
                 } else {
                     $resource['available'] = 1;
                 }
             } else {
                 $resource['available'] = 1;
             }
             $e[$section->section]['section'] = $section->section;
             $e[$section->section]['name'] = $section->name;
             $e[$section->section]['summary'] = file_rewrite_pluginfile_urls($section->summary, 'pluginfile.php', $context->id, 'course', 'section', $section->id);
             $e[$section->section]['summary'] = str_replace('pluginfile.php', '/auth/joomdle/pluginfile_joomdle.php', $e[$section->section]['summary']);
             $resource['id'] = $mod->id;
             $resource['name'] = $mod->name;
             $resource['mod'] = $mod->modname;
             // Format for mod->icon is: f/type-24
             $type = substr($mod->icon, 2);
             $parts = explode('-', $type);
             $type = $parts[0];
             $resource['type'] = $type;
             //In forum, type is unused, so we use it for forum type: news/general
             if ($mod->modname == 'forum') {
                 $cm = get_coursemodule_from_id('forum', $mod->id);
                 if ($cm->instance == $news_forum_id) {
                     $resource['type'] = 'news';
                 }
             }
             $e[$section->section]['mods'][] = $resource;
         }
     }
     return $e;
 }
开发者ID:esyacelga,项目名称:sisadmaca,代码行数:65,代码来源:auth.php

示例13: print_section_dblistview

function print_section_dblistview($course, $section, $mods, $modnamesused, $absolute = false, $width = "100%")
{
    /// Prints a section full of activity modules
    global $CFG, $USER;
    static $initialised;
    static $groupbuttons;
    static $groupbuttonslink;
    static $isediting;
    static $ismoving;
    static $strmovehere;
    static $strmovefull;
    static $strunreadpostsone;
    static $usetracking;
    static $groupings;
    if (!isset($initialised)) {
        $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');
        }
        $initialised = true;
    }
    $labelformatoptions = new object();
    $labelformatoptions->noclean = true;
    /// Casting $course->modinfo to string prevents one notice when the field is null
    $modinfo = get_fast_modinfo($course);
    //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 ($ismoving and $mod->id == $USER->activitycopy) {
                // do not display moving mod
                continue;
            }
            if (isset($modinfo->cms[$modnumber])) {
                if (!$modinfo->cms[$modnumber]->uservisible) {
                    // visibility shortcut
                    continue;
                }
            } else {
                if (!file_exists("{$CFG->dirroot}/mod/{$mod->modname}/lib.php")) {
                    // module not installed
                    continue;
                }
                if (!coursemodule_visible_for_user($mod)) {
                    // full visibility check
                    continue;
                }
            }
            // The magic! ... if indent == 1 then ... hide module
            //            if ($mod->indent == 1) {
            //                $hiddemodule = 'hidden';
            //            } else {
            //                $hiddemodule = '';
            //            }
            echo '<li class="activity ' . $mod->modname . ' ' . $hiddemodule . '" 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 />
                     ';
            }
            if ($mod->indent) {
                print_spacer(12, 20 * $mod->indent, false);
            }
            $extra = '';
            if (!empty($modinfo->cms[$modnumber]->extra)) {
                $extra = $modinfo->cms[$modnumber]->extra;
            }
            if ($mod->modname == "label") {
                echo "<span class=\"";
                if (!$mod->visible) {
                    echo 'dimmed_text';
                } else {
                    echo 'label';
                }
                echo '">';
                echo format_text($extra, FORMAT_HTML, $labelformatoptions);
                echo "</span>";
                if (!empty($CFG->enablegroupings) && !empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) {
                    if (!isset($groupings)) {
                        $groupings = groups_get_all_groupings($course->id);
                    }
                    echo " <span class=\"groupinglabel\">(" . format_string($groupings[$mod->groupingid]->name) . ')</span>';
                }
            } else {
                // Normal activity
                $instancename = format_string($modinfo->cms[$modnumber]->name, true, $course->id);
//.........这里部分代码省略.........
开发者ID:hmatulis,项目名称:RTL-BIDI-Hebrew-Moodle-Plugins,代码行数:101,代码来源:format.php

示例14: calendar_get_upcoming

function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxevents, $fromtime = 0)
{
    global $CFG, $COURSE;
    $display = new stdClass();
    $display->range = $daysinfuture;
    // How many days in the future we 'll look
    $display->maxevents = $maxevents;
    $output = array();
    // Prepare "course caching", since it may save us a lot of queries
    $coursecache = array();
    $processed = 0;
    $now = time();
    // We 'll need this later
    $usermidnighttoday = usergetmidnight($now);
    if ($fromtime) {
        $display->tstart = $fromtime;
    } else {
        $display->tstart = $usermidnighttoday;
    }
    // This works correctly with respect to the user's DST, but it is accurate
    // only because $fromtime is always the exact midnight of some day!
    $display->tend = usergetmidnight($display->tstart + DAYSECS * $display->range + 3 * HOURSECS) - 1;
    // Get the events matching our criteria
    $events = calendar_get_events($display->tstart, $display->tend, $users, $groups, $courses);
    // This is either a genius idea or an idiot idea: in order to not complicate things, we use this rule: if, after
    // possibly removing SITEID from $courses, there is only one course left, then clicking on a day in the month
    // will also set the $SESSION->cal_courses_shown variable to that one course. Otherwise, we 'd need to add extra
    // arguments to this function.
    $morehref = '';
    if (!empty($courses)) {
        $courses = array_diff($courses, array(SITEID));
        if (count($courses) == 1) {
            $morehref = '&amp;course=' . reset($courses);
        }
    }
    if ($events !== false) {
        $modinfo =& get_fast_modinfo($COURSE);
        foreach ($events as $event) {
            if (!empty($event->modulename)) {
                if ($event->courseid == $COURSE->id) {
                    if (isset($modinfo->instances[$event->modulename][$event->instance])) {
                        $cm = $modinfo->instances[$event->modulename][$event->instance];
                        if (!$cm->uservisible) {
                            continue;
                        }
                    }
                } else {
                    if (!($cm = get_coursemodule_from_instance($event->modulename, $event->instance))) {
                        continue;
                    }
                    if (!coursemodule_visible_for_user($cm)) {
                        continue;
                    }
                }
                if ($event->modulename == 'assignment') {
                    // TODO: rewrite this hack somehow
                    if (!calendar_edit_event_allowed($event)) {
                        // cannot manage entries, eg. student
                        if (!($assignment = get_record('assignment', 'id', $event->instance))) {
                            // error("assignment ID was incorrect");
                            continue;
                        }
                        // assign assignment to assignment object to use hidden_is_hidden method
                        require_once $CFG->dirroot . '/mod/assignment/lib.php';
                        if (!file_exists($CFG->dirroot . '/mod/assignment/type/' . $assignment->assignmenttype . '/assignment.class.php')) {
                            continue;
                        }
                        require_once $CFG->dirroot . '/mod/assignment/type/' . $assignment->assignmenttype . '/assignment.class.php';
                        $assignmentclass = 'assignment_' . $assignment->assignmenttype;
                        $assignmentinstance = new $assignmentclass($cm->id, $assignment, $cm);
                        if ($assignmentinstance->description_is_hidden()) {
                            //force not to show description before availability
                            $event->description = get_string('notavailableyet', 'assignment');
                        }
                    }
                }
            }
            if ($processed >= $display->maxevents) {
                break;
            }
            $event->time = calendar_format_event_time($event, $now, $morehref);
            $output[] = $event;
            ++$processed;
        }
    }
    return $output;
}
开发者ID:kai707,项目名称:ITSA-backup,代码行数:87,代码来源:lib.php

示例15: fetchcourseitems

 function fetchcourseitems($courseid)
 {
     global $CFG, $DB;
     $xml_output = "";
     if (!($course = $DB->get_record('course', array('id' => $courseid)))) {
         print_error('invalidcourseid');
     }
     require_course_login($course);
     //$modinfo =& get_fast_modinfo($course);
     $modinfo = get_fast_modinfo($course);
     get_all_mods($courseid, $mods, $modnames, $modnamesplural, $modnamesused);
     if (!($sections = get_all_sections($courseid))) {
         $xml_output .= 'Error finding or creating section structures for this course';
     }
     //loop through the sections
     foreach ($sections as $thissection) {
         //display a section seperator for each secton
         if (!$thissection->visible) {
             $xml_output .= "\t<item label='---------(hidden)" . "' url='' />\n";
             continue;
         } else {
             $xml_output .= "\t<item label='-----------------" . "' url='' />\n";
         }
         //loop through all the mods for each section
         $sectionmods = explode(",", $thissection->sequence);
         foreach ($sectionmods as $modnumber) {
             if (empty($mods[$modnumber])) {
                 continue;
             }
             $mod = $mods[$modnumber];
             if (isset($modinfo->cms[$modnumber])) {
                 if (!$modinfo->cms[$modnumber]->uservisible) {
                     // visibility shortcut
                     continue;
                 }
                 //here we get the name of the mod. We need to encode it
                 //because the xml breaks otherwise when there arequotes etc.
                 $instancename = htmlspecialchars($modinfo->cms[$modnumber]->name, ENT_QUOTES);
             } else {
                 if (!file_exists("{$CFG->dirroot}/mod/{$mod->modname}/lib.php")) {
                     // module not installed
                     continue;
                 }
                 if (!coursemodule_visible_for_user($mod)) {
                     // full visibility check
                     continue;
                 }
                 //we have a mod, but for some reasonwe could not establish its name.
                 $instancename = "mod with no name";
             }
             //end of if isset
             //this works for now, but ultimately we will need to ad the "extra" paramaters from $modinfo
             $xml_output .= "\t<item label='" . $instancename . "' url='" . urlencode($CFG->wwwroot . "/mod/" . $mod->modname . "/view.php?id=" . $modnumber) . "' />\n";
         }
         //end of for each mod
     }
     //end of for each section
     return $xml_output;
 }
开发者ID:gabrielrosset,项目名称:moodle-filter_poodll,代码行数:59,代码来源:dataset_manager.php


注:本文中的coursemodule_visible_for_user函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。