? drupal-5-publishown.patch
Index: publishcontent.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/publishcontent/publishcontent.module,v
retrieving revision 1.5
diff -u -p -r1.5 publishcontent.module
--- publishcontent.module	22 Jan 2009 01:20:10 -0000	1.5
+++ publishcontent.module	23 Feb 2009 14:35:30 -0000
@@ -60,13 +60,17 @@ function _publishcontent_view_access($no
 }
 
 function _publishcontent_publish_access($node) {
+  global $user;
   return !$node->status && (user_access('  publish *all* content') ||
-                            user_access('  publish '. check_plain($node->type) .' content'));
+                            user_access('  publish '. check_plain($node->type) .' content') ||
+                            (user_access('  publish own '. check_plain($node->type) .' content', $user) && ($user->uid == $node->uid)));
 }
 
 function _publishcontent_unpublish_access($node) {
+  global $user;
   return $node->status && (user_access('unpublish *all* content') ||
-                           user_access('unpublish '. check_plain($node->type) .' content'));
+                           user_access('unpublish '. check_plain($node->type) .' content') ||
+                           (user_access('unpublish own '. check_plain($node->type) .' content', $user) && ($user->uid == $node->uid)));
 }
 
 /**
@@ -86,6 +90,8 @@ function publishcontent_perm() {
     if ($type->module == 'node') {
       $perms[] = '  publish '. check_plain($type->type) .' content';
       $perms[] = 'unpublish '. check_plain($type->type) .' content';
+      $perms[] = '  publish own '. check_plain($type->type) .' content';
+      $perms[] = 'unpublish own '. check_plain($type->type) .' content';
     }
   }
   return $perms;
