Beispiel #1
0
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);
    }
}
Beispiel #2
0
 function dba_delete($key, $handle)
 {
     return dbmdelete($handle, $key);
 }