Esempio n. 1
0
function deletepost_submit(Pieform $form, $values)
{
    global $SESSION, $USER;
    $postid = $values['post'];
    $objectionable = get_record_sql("SELECT fp.id\n            FROM {interaction_forum_post} fp\n            JOIN {objectionable} o\n            ON (o.objecttype = 'forum' AND o.objectid = fp.id)\n            WHERE fp.id = ?\n            AND o.resolvedby IS NULL\n            AND o.resolvedtime IS NULL", array($postid));
    if ($objectionable !== false) {
        // Trigger activity.
        $data = new StdClass();
        $data->postid = $postid;
        $data->message = '';
        $data->reporter = $USER->get('id');
        $data->ctime = time();
        $data->event = DELETE_OBJECTIONABLE_POST;
        activity_occurred('reportpost', $data, 'interaction', 'forum');
    }
    update_record('interaction_forum_post', array('deleted' => 1), array('id' => $postid));
    // Delete embedded images in the forum post description
    require_once 'embeddedimage.php';
    EmbeddedImage::delete_embedded_images('post', $postid);
    $SESSION->add_ok_msg(get_string('deletepostsuccess', 'interaction.forum'));
    // Figure out which parent record to redirect us to. If the parent record is deleted,
    // keep moving up the chain until you find one that's not deleted.
    $postrec = new stdClass();
    $postrec->parent = $values['parent'];
    do {
        $postrec = get_record('interaction_forum_post', 'id', $postrec->parent, null, null, null, null, 'id, deleted, parent');
    } while ($postrec && $postrec->deleted && $postrec->parent);
    $redirecturl = get_config('wwwroot') . 'interaction/forum/topic.php?id=' . $values['topic'];
    if ($postrec && $postrec->parent) {
        $redirecturl .= '&post=' . $postrec->id;
    }
    redirect($redirecturl);
}
Esempio n. 2
0
function deletegroup_submit(Pieform $form, $values)
{
    require_once 'embeddedimage.php';
    global $SESSION, $USER, $groupid;
    group_delete($groupid);
    EmbeddedImage::delete_embedded_images('group', $groupid);
    $SESSION->add_ok_msg(get_string('deletegroup', 'group'));
    redirect('/group/mygroups.php');
}
Esempio n. 3
0
function delete_blog_submit(Pieform $form, $values)
{
    global $SESSION;
    require_once 'embeddedimage.php';
    $blog = new ArtefactTypeBlog($values['delete']);
    $blog->check_permission();
    if ($blog->get('locked')) {
        $SESSION->add_error_msg(get_string('submittedforassessment', 'view'));
    } else {
        $blog->delete();
        EmbeddedImage::delete_embedded_images('blog', $blog->get('id'));
        $SESSION->add_ok_msg(get_string('blogdeleted', 'artefact.blog'));
    }
    redirect('/artefact/blog/index.php');
}
Esempio n. 4
0
function deletetopic_submit(Pieform $form, $values)
{
    global $SESSION, $USER, $topicid;
    $objectionable = get_record_sql("SELECT fp.id\n            FROM {interaction_forum_post} fp\n            JOIN {objectionable} o\n            ON (o.objecttype = 'forum' AND o.objectid = fp.id)\n            WHERE fp.topic = ?\n            AND fp.parent IS NULL\n            AND o.resolvedby IS NULL\n            AND o.resolvedtime IS NULL", array($topicid));
    if ($objectionable !== false) {
        // Trigger activity.
        $data = new StdClass();
        $data->postid = $objectionable->id;
        $data->message = '';
        $data->reporter = $USER->get('id');
        $data->ctime = time();
        $data->event = DELETE_OBJECTIONABLE_TOPIC;
        activity_occurred('reportpost', $data, 'interaction', 'forum');
    }
    // mark topic as deleted
    update_record('interaction_forum_topic', array('deleted' => 1), array('id' => $topicid));
    EmbeddedImage::delete_embedded_images('topic', $topicid);
    // mark relevant posts as deleted
    update_record('interaction_forum_post', array('deleted' => 1), array('topic' => $topicid));
    $SESSION->add_ok_msg(get_string('deletetopicsuccess', 'interaction.forum'));
    redirect('/interaction/forum/view.php?id=' . $values['forum']);
}
Esempio n. 5
0
 /**
  * This function extends ArtefactType::delete() by deleting embedded images
  */
 public function delete()
 {
     if (empty($this->id)) {
         return;
     }
     db_begin();
     // Delete embedded images in the note
     require_once 'embeddedimage.php';
     EmbeddedImage::delete_embedded_images('textbox', $this->id);
     // Delete the artefact and all children.
     parent::delete();
     db_commit();
 }
Esempio n. 6
0
 public function delete()
 {
     safe_require('artefact', 'comment');
     db_begin();
     ArtefactTypeComment::delete_view_comments($this->id);
     delete_records('view_access', 'view', $this->id);
     delete_records('view_autocreate_grouptype', 'view', $this->id);
     delete_records('view_tag', 'view', $this->id);
     delete_records('view_visit', 'view', $this->id);
     delete_records('collection_view', 'view', $this->id);
     delete_records('usr_watchlist_view', 'view', $this->id);
     if ($blockinstanceids = get_column('block_instance', 'id', 'view', $this->id)) {
         require_once get_config('docroot') . 'blocktype/lib.php';
         foreach ($blockinstanceids as $id) {
             $bi = new BlockInstance($id);
             $bi->delete();
         }
     }
     handle_event('deleteview', $this->id);
     delete_records('view_rows_columns', 'view', $this->id);
     delete_records('view', 'id', $this->id);
     if (!empty($this->owner) && $this->is_submitted()) {
         // There should be no way to delete a submitted view,
         // but unlock its artefacts just in case.
         ArtefactType::update_locked($this->owner);
     }
     require_once 'embeddedimage.php';
     EmbeddedImage::delete_embedded_images('description', $this->id);
     $this->deleted = true;
     db_commit();
 }
Esempio n. 7
0
 public static function delete_instance($instance)
 {
     require_once 'embeddedimage.php';
     $configdata = $instance->get('configdata');
     if (!empty($configdata)) {
         $artefactid = $configdata['artefactid'];
         if (!empty($artefactid)) {
             EmbeddedImage::delete_embedded_images($instance->get('blocktype'), $artefactid);
         }
     }
 }
Esempio n. 8
0
File: lib.php Progetto: kienv/mahara
function delete_comment_submit(Pieform $form, $values)
{
    global $SESSION, $USER, $view;
    require_once 'embeddedimage.php';
    $comment = new ArtefactTypeComment((int) $values['comment']);
    if ($USER->get('id') == $comment->get('author')) {
        $deletedby = 'author';
    } else {
        if ($USER->can_edit_view($view)) {
            $deletedby = 'owner';
        } else {
            if ($USER->get('admin')) {
                $deletedby = 'admin';
            }
        }
    }
    $viewid = $view->get('id');
    if ($artefact = $comment->get('onartefact')) {
        $url = 'artefact/artefact.php?view=' . $viewid . '&artefact=' . $artefact;
    } else {
        $url = $view->get_url(false);
    }
    db_begin();
    $comment->set('deletedby', $deletedby);
    $comment->commit();
    if ($deletedby != 'author') {
        // Notify author
        if ($artefact) {
            $title = get_field('artefact', 'title', 'id', $artefact);
        } else {
            $title = get_field('view', 'title', 'id', $comment->get('onview'));
        }
        $title = hsc($title);
        $data = (object) array('subject' => false, 'message' => false, 'strings' => (object) array('subject' => (object) array('key' => 'commentdeletednotificationsubject', 'section' => 'artefact.comment', 'args' => array($title)), 'message' => (object) array('key' => 'commentdeletedauthornotification', 'section' => 'artefact.comment', 'args' => array($title, html2text($comment->get('description')))), 'urltext' => (object) array('key' => $artefact ? 'artefact' : 'view')), 'users' => array($comment->get('author')), 'url' => $url);
        activity_occurred('maharamessage', $data);
    }
    if ($deletedby != 'owner' && $comment->get('owner') != $USER->get('id')) {
        // Notify owner
        $data = (object) array('commentid' => $comment->get('id'), 'viewid' => $view->get('id'));
        activity_occurred('feedback', $data, 'artefact', 'comment');
    }
    EmbeddedImage::delete_embedded_images('comment', $comment->get('id'));
    db_commit();
    $SESSION->add_ok_msg(get_string('commentremoved', 'artefact.comment'));
    redirect(get_config('wwwroot') . $url);
}
Esempio n. 9
0
 public static function delete_instance($instance)
 {
     require_once 'embeddedimage.php';
     EmbeddedImage::delete_embedded_images('text', $instance->get('id'));
 }
Esempio n. 10
0
 /**
  * This function extends ArtefactType::delete() by also deleting anything
  * that's in blogpost.
  */
 public function delete()
 {
     if (empty($this->id)) {
         return;
     }
     require_once 'embeddedimage.php';
     db_begin();
     $this->detach();
     // Detach all file attachments
     delete_records('artefact_blog_blogpost', 'blogpost', $this->id);
     EmbeddedImage::delete_embedded_images('blogpost', $this->id);
     parent::delete();
     db_commit();
 }
Esempio n. 11
0
function deletenote_submit(Pieform $form, array $values)
{
    global $SESSION, $data, $baseurl;
    require_once 'embeddedimage.php';
    $id = $data[$values['delete']]->id;
    $note = new ArtefactTypeHtml($id);
    $note->delete();
    EmbeddedImage::delete_embedded_images('editnote', $id);
    $SESSION->add_ok_msg(get_string('notedeleted', 'artefact.internal'));
    redirect($baseurl);
}
Esempio n. 12
0
 public function delete()
 {
     if (empty($this->id)) {
         $this->dirty = false;
         return;
     }
     db_begin();
     // Delete embedded images in the forum description
     require_once 'embeddedimage.php';
     EmbeddedImage::delete_embedded_images('forum', $this->id);
     // Delete the interaction instance
     parent::delete();
     db_commit();
 }
Esempio n. 13
0
/**
 * Deletes a group.
 *
 * All group deleting should be done through this function, even though it is
 * simple. What is required to perform group deletion may change over time.
 *
 * @param int $groupid The group to delete
 * @param string $shortname   shortname of the group
 * @param string $institution institution of the group
 *
 * {{@internal Maybe later we can have a group_can_be_deleted function if
 * necessary}}
 */
function group_delete($groupid, $shortname = null, $institution = null, $notifymembers = true)
{
    if (empty($groupid) && !empty($institution) && !is_null($shortname) && strlen($shortname)) {
        // External call to delete a group, check permission of $USER.
        global $USER;
        if (!$USER->can_edit_institution($institution)) {
            throw new AccessDeniedException("group_delete: cannot delete a group in this institution");
        }
        $group = get_record('group', 'shortname', $shortname, 'institution', $institution);
    } else {
        $groupid = group_param_groupid($groupid);
        $group = get_record('group', 'id', $groupid);
    }
    db_begin();
    // Leave the group_member table alone, it's needed for the deleted
    // group notification that's about to happen on cron.
    delete_records('group_member_invite', 'group', $group->id);
    delete_records('group_member_request', 'group', $group->id);
    delete_records('view_access', 'group', $group->id);
    // Delete embedded images in the group description
    require_once 'embeddedimage.php';
    EmbeddedImage::delete_embedded_images('group', $group->id);
    // Delete views owned by the group
    require_once get_config('libroot') . 'view.php';
    foreach (get_column('view', 'id', 'group', $group->id) as $viewid) {
        $view = new View($viewid);
        $view->delete();
    }
    // Release views submitted to the group
    foreach (get_column('view', 'id', 'submittedgroup', $group->id) as $viewid) {
        $view = new View($viewid);
        $view->release();
    }
    // Delete artefacts
    require_once get_config('docroot') . 'artefact/lib.php';
    ArtefactType::delete_by_artefacttype(get_column('artefact', 'id', 'group', $group->id));
    // Delete forums
    require_once get_config('docroot') . 'interaction/lib.php';
    foreach (get_column('interaction_instance', 'id', 'group', $group->id) as $forumid) {
        $forum = interaction_instance_from_id($forumid);
        $forum->delete();
    }
    if ($notifymembers) {
        require_once 'activity.php';
        activity_occurred('groupmessage', array('group' => $group->id, 'deletedgroup' => true, 'strings' => (object) array('subject' => (object) array('key' => 'deletegroupnotificationsubject', 'section' => 'group', 'args' => array(hsc($group->name))), 'message' => (object) array('key' => 'deletegroupnotificationmessage', 'section' => 'group', 'args' => array(hsc($group->name), get_config('sitename'))))));
    }
    // make sure the group name + deleted suffix will fit within 128 chars
    $delete_name = $group->name;
    if (strlen($delete_name) > 100) {
        $delete_name = substr($delete_name, 0, 100) . '(...)';
    }
    update_record('group', array('deleted' => 1, 'name' => $delete_name . '.deleted.' . time(), 'shortname' => null, 'institution' => null, 'category' => null, 'urlid' => null), array('id' => $group->id));
    db_commit();
}