public function should_display($discussion) { // Check they are allowed to move discussions, discussion not deleted if (!has_capability('mod/forumng:movediscussions', $discussion->get_forum()->get_context()) || $discussion->is_deleted() || !$discussion->can_write_to_group()) { return false; } // Prevent this option on shared activities course as it will be a // performance issue global $CFG; if (class_exists('ouflags')) { require_once $CFG->dirroot . '/course/format/sharedactv/sharedactv.php'; if (sharedactv_is_magic_course($discussion->get_forum()->get_course())) { return false; } } // Otherwise always 'display' it (may display blank if there aren't // any target forums, though) return true; }
/** * Translate a visibility number into a language string * * @param int $vislevel * @param bool $personal True if this is a personal blog * @return string */ function oublog_get_visibility_string($vislevel, $personal) { // Modify visibility string for optional shared activity blog global $CFG, $COURSE; $visibleusers = 'visiblecourseusers'; $sharedactvfile = $CFG->dirroot . '/course/format/sharedactv/sharedactv.php'; if (file_exists($sharedactvfile)) { include_once $sharedactvfile; if (function_exists('sharedactv_is_magic_course') && sharedactv_is_magic_course($COURSE)) { $visibleusers = 'visibleblogusers'; } } switch ($vislevel) { case OUBLOG_VISIBILITY_COURSEUSER: return get_string($personal ? 'visibleyou' : $visibleusers, 'oublog'); case OUBLOG_VISIBILITY_LOGGEDINUSER: return get_string('visibleloggedinusers', 'oublog'); case OUBLOG_VISIBILITY_PUBLIC: return get_string('visiblepublic', 'oublog'); default: print_error('invalidvisibility', 'oublog'); } }
/** * Created to accomodate forumng on shared activities * where the shared activites course does not hold cm information * in the course table's modinfo field * @param $course * @param $cmid * @return $modinfo */ private function get_fast_modinfo($course, $cmid) { global $CFG; if (class_exists('ouflags')) { require_once $CFG->dirroot . '/course/format/sharedactv/sharedactv.php'; if (sharedactv_is_magic_course($course)) { // get_fast_modinfo will only ever return a minimal object, so build own $modinfo = new object(); $modinfo->courseid = $course->id; $modinfo->userid = 0; $modinfo->sections = array(); $modinfo->instances = array(); $modinfo->groups = null; if (!($cm = get_coursemodule_from_id('forumng', $cmid, $course->id))) { throw new forum_exception('Could not find the forum course module.'); } if (!empty($CFG->enableavailability)) { $cm->conditionscompletion = array(); $cm->conditionsgrade = array(); // Unfortunately the next call really wants to call // get_fast_modinfo, but that would be recursive, so we fake up a // modinfo for it already if (empty($minimalmodinfo)) { $minimalmodinfo = new stdClass(); $minimalmodinfo->cms = array(); $minimalcm = new stdClass(); $minimalcm->id = $cmid; $minimalcm->name = 'forumng'; $minimalmodinfo->cms[$cmid] = $minimalcm; } // Get availability information $ci = new condition_info($cm); $cm->available = $ci->is_available($cm->availableinfo, true, 0, $minimalmodinfo); } else { $cm->available = true; } $cm->uservisible = true; $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id); if ((!$cm->visible or !$cm->available) and !has_capability('moodle/course:viewhiddenactivities', $modcontext, 0)) { $cm->uservisible = false; } else { if (!empty($CFG->enablegroupings) and !empty($cm->groupmembersonly) and !has_capability('moodle/site:accessallgroups', $modcontext, 0)) { if (is_null($modinfo->groups)) { $modinfo->groups = groups_get_user_groups($course->id, 0); } if (empty($modinfo->groups[$cm->groupingid])) { $cm->uservisible = false; } } } $modinfo->cms = array($cmid => $cm); } else { $modinfo = get_fast_modinfo($course); } } else { $modinfo = get_fast_modinfo($course); } return $modinfo; }