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); }
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'); }
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'); }
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']); }
/** * 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(); }
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(); }
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); } } }
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); }
public static function delete_instance($instance) { require_once 'embeddedimage.php'; EmbeddedImage::delete_embedded_images('text', $instance->get('id')); }
/** * 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(); }
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); }
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(); }
/** * 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(); }