本文整理汇总了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;
}
示例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));
//.........这里部分代码省略.........
示例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)
//.........这里部分代码省略.........
示例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;
}
示例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());
示例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 . '&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);
//.........这里部分代码省略.........
示例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;
}
示例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;
}
示例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;
}
示例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="" />';
}
//.........这里部分代码省略.........
示例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;
}
//.........这里部分代码省略.........
示例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;
}
示例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 . '&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);
//.........这里部分代码省略.........
示例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 = '&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;
}
示例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;
}