Example #1
0
require_once $CFG->libdir . '/adminlib.php';
require_once 'lib.php';
$context = get_context_instance(CONTEXT_SYSTEM);
require_capability('moodle/comment:delete', $context);
$PAGE->requires->yui_lib('yahoo')->in_head();
$PAGE->requires->yui_lib('dom')->in_head();
$PAGE->requires->yui_lib('event')->in_head();
$PAGE->requires->yui_lib('animation')->in_head();
$PAGE->requires->yui_lib('json')->in_head();
$PAGE->requires->yui_lib('connection')->in_head();
$PAGE->requires->js('comment/admin.js')->in_head();
$action = optional_param('action', '', PARAM_ALPHA);
$commentid = optional_param('commentid', 0, PARAM_INT);
$commentids = optional_param('commentids', '', PARAM_ALPHANUMEXT);
$page = optional_param('page', 0, PARAM_INT);
$manager = new comment_manager();
if (!empty($action)) {
    confirm_sesskey();
}
if ($action === 'delete') {
    // delete a single comment
    if (!empty($commentid)) {
        if ($manager->delete_comment($commentid)) {
            redirect($CFG->httpswwwroot . '/comment/', get_string('deleted'));
        } else {
            $err = 'cannotdeletecomment';
        }
    }
    // delete a list of comments
    if (!empty($commentids)) {
        if ($manager->delete_comments($commentids)) {
Example #2
0
/**
 * Check module updates since a given time.
 * This function checks for updates in the module config, file areas, completion, grades, comments and ratings.
 *
 * @param  cm_info $cm        course module data
 * @param  int $from          the time to check
 * @param  array $fileareas   additional file ares to check
 * @param  array $filter      if we need to filter and return only selected updates
 * @return stdClass object with the different updates
 * @since  Moodle 3.2
 */
function course_check_module_updates_since($cm, $from, $fileareas = array(), $filter = array())
{
    global $DB, $CFG, $USER;
    $context = $cm->context;
    $mod = $DB->get_record($cm->modname, array('id' => $cm->instance), '*', MUST_EXIST);
    $updates = new stdClass();
    $course = get_course($cm->course);
    $component = 'mod_' . $cm->modname;
    // Check changes in the module configuration.
    if (isset($mod->timemodified) and (empty($filter) or in_array('configuration', $filter))) {
        $updates->configuration = (object) array('updated' => false);
        if ($updates->configuration->updated = $mod->timemodified > $from) {
            $updates->configuration->timeupdated = $mod->timemodified;
        }
    }
    // Check for updates in files.
    if (plugin_supports('mod', $cm->modname, FEATURE_MOD_INTRO)) {
        $fileareas[] = 'intro';
    }
    if (!empty($fileareas) and (empty($filter) or in_array('fileareas', $filter))) {
        $fs = get_file_storage();
        $files = $fs->get_area_files($context->id, $component, $fileareas, false, "filearea, timemodified DESC", false, $from);
        foreach ($fileareas as $filearea) {
            $updates->{$filearea . 'files'} = (object) array('updated' => false);
        }
        foreach ($files as $file) {
            $updates->{$file->get_filearea() . 'files'}->updated = true;
            $updates->{$file->get_filearea() . 'files'}->itemids[] = $file->get_id();
        }
    }
    // Check completion.
    $supportcompletion = plugin_supports('mod', $cm->modname, FEATURE_COMPLETION_HAS_RULES);
    $supportcompletion = $supportcompletion or plugin_supports('mod', $cm->modname, FEATURE_COMPLETION_TRACKS_VIEWS);
    if ($supportcompletion and (empty($filter) or in_array('completion', $filter))) {
        $updates->completion = (object) array('updated' => false);
        $completion = new completion_info($course);
        // Use wholecourse to cache all the modules the first time.
        $completiondata = $completion->get_data($cm, true);
        if ($updates->completion->updated = !empty($completiondata->timemodified) && $completiondata->timemodified > $from) {
            $updates->completion->timemodified = $completiondata->timemodified;
        }
    }
    // Check grades.
    $supportgrades = plugin_supports('mod', $cm->modname, FEATURE_GRADE_HAS_GRADE);
    $supportgrades = $supportgrades or plugin_supports('mod', $cm->modname, FEATURE_GRADE_OUTCOMES);
    if ($supportgrades and (empty($filter) or (in_array('gradeitems', $filter) or in_array('outcomes', $filter)))) {
        require_once $CFG->libdir . '/gradelib.php';
        $grades = grade_get_grades($course->id, 'mod', $cm->modname, $mod->id, $USER->id);
        if (empty($filter) or in_array('gradeitems', $filter)) {
            $updates->gradeitems = (object) array('updated' => false);
            foreach ($grades->items as $gradeitem) {
                foreach ($gradeitem->grades as $grade) {
                    if ($grade->datesubmitted > $from or $grade->dategraded > $from) {
                        $updates->gradeitems->updated = true;
                        $updates->gradeitems->itemids[] = $gradeitem->id;
                    }
                }
            }
        }
        if (empty($filter) or in_array('outcomes', $filter)) {
            $updates->outcomes = (object) array('updated' => false);
            foreach ($grades->outcomes as $outcome) {
                foreach ($outcome->grades as $grade) {
                    if ($grade->datesubmitted > $from or $grade->dategraded > $from) {
                        $updates->outcomes->updated = true;
                        $updates->outcomes->itemids[] = $outcome->id;
                    }
                }
            }
        }
    }
    // Check comments.
    if (plugin_supports('mod', $cm->modname, FEATURE_COMMENT) and (empty($filter) or in_array('comments', $filter))) {
        $updates->comments = (object) array('updated' => false);
        require_once $CFG->dirroot . '/comment/lib.php';
        require_once $CFG->dirroot . '/comment/locallib.php';
        $manager = new comment_manager();
        $comments = $manager->get_component_comments_since($course, $context, $component, $from, $cm);
        if (!empty($comments)) {
            $updates->comments->updated = true;
            $updates->comments->itemids = array_keys($comments);
        }
    }
    // Check ratings.
    if (plugin_supports('mod', $cm->modname, FEATURE_RATE) and (empty($filter) or in_array('ratings', $filter))) {
        $updates->ratings = (object) array('updated' => false);
        require_once $CFG->dirroot . '/rating/lib.php';
        $manager = new rating_manager();
        $ratings = $manager->get_component_ratings_since($context, $component, $from);
        if (!empty($ratings)) {
            $updates->ratings->updated = true;
            $updates->ratings->itemids = array_keys($ratings);
        }
    }
    return $updates;
}
Example #3
0
    $action = '';
}
if ($action === 'delete') {
    // Delete a single comment.
    if (!empty($commentid)) {
        if (!$confirm) {
            echo $OUTPUT->header();
            $optionsyes = array('course' => $courseid, 'action' => 'delete', 'commentid' => $commentid, 'confirm' => 1, 'sesskey' => sesskey());
            $optionsno = array('course' => $courseid, 'sesskey' => sesskey());
            $buttoncontinue = new single_button(new moodle_url($url, $optionsyes), get_string('delete'));
            $buttoncancel = new single_button(new moodle_url($url, $optionsno), get_string('cancel'));
            echo $OUTPUT->confirm(get_string('confirmdeletecomments', 'admin'), $buttoncontinue, $buttoncancel);
            echo $OUTPUT->footer();
            die;
        } else {
            $manager = new comment_manager();
            if ($manager->delete_comment($commentid)) {
                redirect(new moodle_url($url, $arr));
            } else {
                $err = 'cannotdeletecomment';
            }
        }
    }
}
echo $OUTPUT->header();
$tabl = new flexible_table('admin-comments-compatible');
if ($userid == 0) {
    echo html_writer::tag('h3', $course->fullname);
    $comments = report_comments_getcoursecomments($courseid, $sort);
    $tabl->define_columns(array('date', 'author', 'content', 'action'));
    $tabl->define_headers(array(get_string('date'), get_string('author', 'search'), get_string('content'), get_string('action')));