/** * Delete pages and all related data * * @param mixed $context context in which page needs to be deleted. * @param mixed $pageids id's of pages to be deleted * @param int $subwikiid id of the subwiki for which all pages should be deleted */ function wiki_delete_pages($context, $pageids = null, $subwikiid = null) { global $DB; if (!empty($pageids) && is_int($pageids)) { $pageids = array($pageids); } else { if (!empty($subwikiid)) { $pageids = wiki_get_page_list($subwikiid); } } //If there is no pageid then return as we can't delete anything. if (empty($pageids)) { return; } /// Delete page and all it's relevent data foreach ($pageids as $pageid) { if (is_object($pageid)) { $pageid = $pageid->id; } //Delete page comments $comments = wiki_get_comments($context->id, $pageid); foreach ($comments as $commentid => $commentvalue) { wiki_delete_comment($commentid, $context, $pageid); } //Delete page tags $tags = tag_get_tags_array('wiki_pages', $pageid); foreach ($tags as $tagid => $tagvalue) { tag_delete_instance('wiki_pages', $pageid, $tagid); } //Delete Synonym wiki_delete_synonym($subwikiid, $pageid); //Delete all page versions wiki_delete_page_versions(array($pageid => array(0))); //Delete all page locks wiki_delete_locks($pageid); //Delete all page links wiki_delete_links(null, $pageid); //Delete page $params = array('id' => $pageid); $DB->delete_records('wiki_pages', $params); } }
} //delete version if toversion and fromversion are set. if (!empty($toversion) && !empty($fromversion) && confirm_sesskey()) { //make sure all versions should not be deleted... $versioncount = wiki_count_wiki_page_versions($pageid); $versioncount -= 1; //ignore version 0 $totalversionstodelete = $toversion - $fromversion; $totalversionstodelete += 1; //added 1 as toversion should be included if ($totalversionstodelete >= $versioncount || $versioncount <= 1) { print_error('incorrectdeleteversions', 'wiki'); } else { $versions = array(); for ($i = $fromversion; $i <= $toversion; $i++) { //Add all version to deletion list which exist if (wiki_get_wiki_page_version($pageid, $i)) { array_push($versions, $i); } } $purgeversions[$pageid] = $versions; wiki_delete_page_versions($purgeversions, $context); } } //show actual page $wikipage = new page_wiki_admin($wiki, $subwiki, $cm); $wikipage->set_page($page); $wikipage->print_header(); $wikipage->set_view($option, empty($listall) ? true : false); $wikipage->print_content(); $wikipage->print_footer();
/** * Delete pages and all related data * * @param mixed $context context in which page needs to be deleted. * @param mixed $pageids id's of pages to be deleted * @param int $subwikiid id of the subwiki for which all pages should be deleted */ function wiki_delete_pages($context, $pageids = null, $subwikiid = null) { global $DB, $CFG; if (!empty($pageids) && is_int($pageids)) { $pageids = array($pageids); } else { if (!empty($subwikiid)) { $pageids = wiki_get_page_list($subwikiid); } } //If there is no pageid then return as we can't delete anything. if (empty($pageids)) { return; } /// Delete page and all it's relevent data foreach ($pageids as $pageid) { if (is_object($pageid)) { $pageid = $pageid->id; } //Delete page comments $comments = wiki_get_comments($context->id, $pageid); foreach ($comments as $commentid => $commentvalue) { wiki_delete_comment($commentid, $context, $pageid); } //Delete page tags core_tag_tag::remove_all_item_tags('mod_wiki', 'wiki_pages', $pageid); //Delete Synonym wiki_delete_synonym($subwikiid, $pageid); //Delete all page versions wiki_delete_page_versions(array($pageid => array(0)), $context); //Delete all page locks wiki_delete_locks($pageid); //Delete all page links wiki_delete_links(null, $pageid); $params = array('id' => $pageid); // Get page before deleting. $page = $DB->get_record('wiki_pages', $params); //Delete page $DB->delete_records('wiki_pages', $params); // Trigger page_deleted event. $event = \mod_wiki\event\page_deleted::create(array('context' => $context, 'objectid' => $pageid, 'other' => array('subwikiid' => $subwikiid))); $event->add_record_snapshot('wiki_pages', $page); $event->trigger(); } }
} //delete version if toversion and fromversion are set. if (!empty($toversion) && !empty($fromversion) && confirm_sesskey()) { //make sure all versions should not be deleted... $versioncount = wiki_count_wiki_page_versions($pageid); $versioncount -= 1; //ignore version 0 $totalversionstodelete = $toversion - $fromversion; $totalversionstodelete += 1; //added 1 as toversion should be included if ($totalversionstodelete >= $versioncount || $versioncount <= 1) { print_error('incorrectdeleteversions', 'wiki'); } else { $versions = array(); for ($i = $fromversion; $i <= $toversion; $i++) { //Add all version to deletion list which exist if (wiki_get_wiki_page_version($pageid, $i)) { array_push($versions, $i); } } $purgeversions[$pageid] = $versions; wiki_delete_page_versions($purgeversions); } } //show actual page $wikipage = new page_wiki_admin($wiki, $subwiki, $cm); $wikipage->set_page($page); $wikipage->print_header(); $wikipage->set_view($option, empty($listall) ? true : false); $wikipage->print_content(); $wikipage->print_footer();