<?php

function delete_protection_form_alter($form_id, &$form) {
  if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) {
    if ($form['type']['#value'] == 'wiki' && !user_access('administer nodes')) {
      unset($form['delete']);
    }
  }
}

function delete_protection_menu($may_cache) {
  $items = array();
  if (!$may_cache) {
    if (arg(0) == 'node' && is_numeric(arg(1))) {
      $node = node_load(arg(1));
      $items[] = array('path' => 'node/'. arg(1) .'/delete', 'title' => t('Delete'),
          'callback' => 'delete_protection_delete_confirm',
          'callback arguments' => array($node),
          'access' => node_access('delete', $node),
          'weight' => 1,
          'type' => MENU_CALLBACK);
    }
  }
  return $items;
}

function delete_protection_delete_confirm(&$node) {
  if ($node->type != 'wiki' || user_access('administer nodes')) {
    // call original function
    return drupal_get_form('node_delete_confirm');
  } else {
    return drupal_access_denied();
  }
}