Index: CHANGELOG.txt
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/profile_permission/CHANGELOG.txt,v
retrieving revision 1.4
diff -u -r1.4 CHANGELOG.txt
--- CHANGELOG.txt	22 Jan 2009 04:40:37 -0000	1.4
+++ CHANGELOG.txt	8 Feb 2009 05:15:05 -0000
@@ -1,6 +1,9 @@
 // $Id: CHANGELOG.txt,v 1.4 2009/01/22 04:40:37 boombatower Exp $
 
 Profile permission 6.x-1.2, xxxx-xx-xx (development version)
+--------------------------------------
+- Changes:
+   * #368161: Add edit|view own profile_field_name field permission.
 
 Profile permission 6.x-1.1, 2009-01-21
 --------------------------------------
Index: profile_permission.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/profile_permission/profile_permission.module,v
retrieving revision 1.2
diff -u -r1.2 profile_permission.module
--- profile_permission.module	20 Jan 2009 05:52:04 -0000	1.2
+++ profile_permission.module	8 Feb 2009 05:15:05 -0000
@@ -15,7 +15,9 @@
   $permissions = array();
   foreach ($fields as $field) {
     $permissions[] = profile_permission_generate_perm_view($field);
+    $permissions[] = profile_permission_generate_perm_view_own($field);
     $permissions[] = profile_permission_generate_perm_edit($field);
+    $permissions[] = profile_permission_generate_perm_edit_own($field);
   }
   return $permissions;
 }
@@ -103,7 +105,8 @@
   foreach (element_children($element) as $key) {
     if (in_array($key, $fields)) {
       // Found restricted field.
-      if (!user_access(profile_permission_generate_perm_view($key))) {
+      if (!user_access(profile_permission_generate_perm_view($key)) &&
+           !user_access(profile_permission_generate_perm_view_own($key))) {
         unset($element[$key]);
       }
     }
@@ -136,7 +139,9 @@
       $permissions = variable_get('profile_permission_fields', array());
       foreach (element_children($form[$category]) as $key) {
         // If field is restricted and current user does not have privilege to edit field then remove.
-        if (in_array($key, $permissions) && !user_access(profile_permission_generate_perm_edit($key))) {
+        if (in_array($key, $permissions) &&
+            !user_access(profile_permission_generate_perm_edit($key)) &&
+            !user_access(profile_permission_generate_perm_edit_own($key))) {
           unset($form[$category][$key]);
         }
       }
@@ -156,6 +161,16 @@
 }
 
 /**
+ * Generate a view own permission string for the given field name.
+ *
+ * @param string $name Field name.
+ * @return string Permission string.
+ */
+function profile_permission_generate_perm_view_own($name) {
+  return 'view own ' . $name . ' field';
+}
+
+/**
  * Generate an edit permission string for the given field name.
  *
  * @param string $name Field name.
@@ -164,3 +179,13 @@
 function profile_permission_generate_perm_edit($name) {
   return 'edit ' . $name . ' field';
 }
+
+/**
+ * Generate an edit own permission string for the given field name.
+ *
+ * @param string $name Field name.
+ * @return string Permission string.
+ */
+function profile_permission_generate_perm_edit_own($name) {
+  return 'edit own ' . $name . ' field';
+}
