--- publishcontent.module.org	2009-01-22 03:36:44.000000000 +0100
+++ publishcontent.module	2009-02-05 09:12:04.000000000 +0100
@@ -47,13 +47,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)));
+}                        
 
 /**
  * Implementation of hook_perm().
@@ -72,6 +76,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;
