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;
 }