function do_delete()
 {
     $this->oPage->setBreadcrumbDetails(_kt("link"));
     // check security
     $oPermission =& KTPermission::getByName('ktcore.permissions.write');
     if (PEAR::isError($oPermission) || !KTPermissionUtil::userHasPermissionOnItem($this->oUser, $oPermission, $this->oDocument)) {
         $this->errorRedirectToMain(_kt('You do not have sufficient permissions to delete a link'), sprintf("fDocumentId=%d", $this->oDocument->getId()));
         exit(0);
     }
     // check validity of things
     $oDocumentLink = DocumentLink::get(KTUtil::arrayGet($_REQUEST, 'fDocumentLinkId'));
     if (PEAR::isError($oDocumentLink)) {
         $this->errorRedirectToMain(_kt('Invalid document link selected.'));
         exit(0);
     }
     $oParentDocument = Document::get(KTUtil::arrayGet($_REQUEST, 'fDocumentId'));
     if (PEAR::isError($oParentDocument)) {
         $this->errorRedirectToMain(_kt('Invalid document selected.'));
         exit(0);
     }
     // do deletion
     $this->startTransaction();
     // Cannot call delete directly if no link exists.
     if ($oDocumentLink) {
         $res = $oDocumentLink->delete();
         if (PEAR::isError($res)) {
             $this->errorRedirectToMain(_kt('Could not delete document link'), sprintf('fDocumentId=%d', $oParentDocument->getId()));
             exit(0);
         }
     } else {
         $this->successRedirectToMain(_kt('Document link not deleted. Document link does not exists, or previously deleted.'), sprintf('fDocumentId=%d', $oParentDocument->getId()));
     }
     $this->commitTransaction();
     $this->successRedirectToMain(_kt('Document link deleted'), sprintf('fDocumentId=%d', $oParentDocument->getId()));
     exit(0);
 }