function RemovePage($dbi, $pagename) { dbmdelete($dbi['wiki'], $pagename); // report error if this fails? dbmdelete($dbi['archive'], $pagename); // no error if this fails dbmdelete($dbi['hitcount'], $pagename); // no error if this fails $linkinfo = RetrievePage($dbi, $pagename, 'wikilinks'); // remove page from fromlinks of pages it had links to if (is_array($linkinfo)) { // page exists? $tolinks = $linkinfo['tolinks']; reset($tolinks); while (list($tolink, $dummy) = each($tolinks)) { $tolinkinfo = RetrievePage($dbi, $tolink, 'wikilinks'); if (is_array($tolinkinfo)) { // page found? $oldFromlinks = $tolinkinfo['fromlinks']; $tolinkinfo['fromlinks'] = array(); // erase fromlinks reset($oldFromlinks); while (list($fromlink, $dummy) = each($oldFromlinks)) { if ($fromlink != $pagename) { // not to be erased? $tolinkinfo['fromlinks'][$fromlink] = 1; } // put link back } // put link info back in DBM file InsertPage($dbi, $tolink, $tolinkinfo, 'wikilinks'); } } // remove page itself dbmdelete($dbi['wikilinks'], $pagename); } }
function dba_delete($key, $handle) { return dbmdelete($handle, $key); }