Index: per-content-type-perms.patch =================================================================== Index: clone.module =================================================================== --- clone.module (revision 689) +++ clone.module (working copy) @@ -23,7 +23,12 @@ * Implementation of hook_perm(). */ function clone_perm() { - return array('clone node', 'clone own nodes'); + $perms = array('clone node', 'clone own nodes'); + foreach (node_get_types() as $type) { + $name = check_plain($type->type); + $perms[] = "clone {$name} nodes"; + } + return $perms; } /** @@ -54,7 +59,11 @@ function clone_access($node) { global $user; // Check basic permissions first. - $access = (user_access('clone node') || ($user->uid && ($node->uid == $user->uid) && user_access('clone own nodes'))); + $type = check_plain($node->type); + $access = ( + user_access('clone node') || + ($user->uid && ($node->uid == $user->uid) && user_access('clone own nodes')) || + user_access("clone {$type} nodes")); // Make sure the user can view the original node content. $access = $access && node_access('view', $node); // Check additional conditions