Example #1
0
/**
 * Given an ID of an instance of this module,
 * this function will permanently delete the instance
 * and any data that depends on it.
 *
 * @global object
 * @param int $id quora instance id
 * @return bool success
 */
function quora_delete_instance($id)
{
    global $DB;
    if (!($quora = $DB->get_record('quora', array('id' => $id)))) {
        return false;
    }
    if (!($cm = get_coursemodule_from_instance('quora', $quora->id))) {
        return false;
    }
    if (!($course = $DB->get_record('course', array('id' => $cm->course)))) {
        return false;
    }
    $context = context_module::instance($cm->id);
    // now get rid of all files
    $fs = get_file_storage();
    $fs->delete_area_files($context->id);
    $result = true;
    // Delete digest and subscription preferences.
    $DB->delete_records('quora_digests', array('quora' => $quora->id));
    $DB->delete_records('quora_subscriptions', array('quora' => $quora->id));
    $DB->delete_records('quora_discussion_subs', array('quora' => $quora->id));
    if ($discussions = $DB->get_records('quora_discussions', array('quora' => $quora->id))) {
        foreach ($discussions as $discussion) {
            if (!quora_delete_discussion($discussion, true, $course, $cm, $quora)) {
                $result = false;
            }
        }
    }
    quora_tp_delete_read_records(-1, -1, -1, $quora->id);
    if (!$DB->delete_records('quora', array('id' => $quora->id))) {
        $result = false;
    }
    quora_grade_item_delete($quora);
    return $result;
}
Example #2
0
 $timepassed = time() - $post->created;
 if ($timepassed > $CFG->maxeditingtime && !has_capability('mod/quora:deleteanypost', $modcontext)) {
     print_error("cannotdeletepost", "quora", quora_go_back_to("discuss.php?d={$post->discussion}"));
 }
 if ($post->totalscore) {
     notice(get_string('couldnotdeleteratings', 'rating'), quora_go_back_to("discuss.php?d={$post->discussion}"));
 } else {
     if ($replycount && !has_capability('mod/quora:deleteanypost', $modcontext)) {
         print_error("couldnotdeletereplies", "quora", quora_go_back_to("discuss.php?d={$post->discussion}"));
     } else {
         if (!$post->parent) {
             // post is a discussion topic as well, so delete discussion
             if ($quora->type == 'single') {
                 notice("Sorry, but you are not allowed to delete that discussion!", quora_go_back_to("discuss.php?d={$post->discussion}"));
             }
             quora_delete_discussion($discussion, false, $course, $cm, $quora);
             $params = array('objectid' => $discussion->id, 'context' => $modcontext, 'other' => array('quoraid' => $quora->id));
             $event = \mod_quora\event\discussion_deleted::create($params);
             $event->add_record_snapshot('quora_discussions', $discussion);
             $event->trigger();
             redirect("view.php?f={$discussion->quora}");
         } else {
             if (quora_delete_post($post, has_capability('mod/quora:deleteanypost', $modcontext), $course, $cm, $quora)) {
                 if ($quora->type == 'single') {
                     // Single discussion quoras are an exception. We show
                     // the quora itself since it only has one discussion
                     // thread.
                     $discussionurl = "view.php?f={$quora->id}";
                 } else {
                     $discussionurl = "discuss.php?d={$post->discussion}";
                 }