/[drupal]/contributions/modules/view_own/view_own.module
ViewVC logotype

Diff of /contributions/modules/view_own/view_own.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1.2.4, Wed May 27 14:58:38 2009 UTC revision 1.1.2.5, Wed May 27 15:28:17 2009 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // vim: set filetype=php expandtab tabstop=2 shiftwidth=2 autoindent smartindent:  // vim: set filetype=php expandtab tabstop=2 shiftwidth=2 autoindent smartindent:
3  // $Id: view_own.module,v 1.1.2.3 2009/05/27 14:55:36 kenorb Exp $  // $Id: view_own.module,v 1.1.2.4 2009/05/27 14:58:38 kenorb Exp $
4    
5  /**  /**
6   * @file   * @file
# Line 33  function view_own_perm() { Line 33  function view_own_perm() {
33      $perms[] = 'view own '. $type->type .' content';      $perms[] = 'view own '. $type->type .' content';
34      $perms[] = 'view any '. $type->type .' content';      $perms[] = 'view any '. $type->type .' content';
35    }    }
36      if (module_exists('content')) {
37        $fields = content_fields();
38        foreach ($fields as $field) {
39              $field_name = $field['field_name'];
40              $type = $field['type_name'];
41                if ($field['module'] == 'nodereference' || $field['module'] == 'userreference') {
42                  $perms[] = "view $type content via $field_name";
43                  $perms[] = "edit $type content via $field_name";
44                  $perms[] = "delete $type content via $field_name";
45                }
46        }
47      }
48    return $perms;    return $perms;
49  }  }
50    
# Line 92  function view_own_node_access_records($n Line 104  function view_own_node_access_records($n
104          'grant_delete' => $delete_perm,          'grant_delete' => $delete_perm,
105          'priority' => 0,          'priority' => 0,
106        );        );
107          // -- access via selected field reference
108                if (module_exists('content')) {
109                  $fields = content_fields();
110                  foreach ($fields as $field) {
111                    $field_name = $field['field_name'];
112                    if ($field['type_name'] == $node->type) {
113                            $view_via_ref_content = "view $node->type content via $field_name";
114                            $edit_via_ref_content = "edit $node->type content via $field_name";
115                            $delete_via_ref_content = "delete $node->type content via $field_name";
116    
117                            if ($field['module'] == 'nodereference') {
118                                $nid = $node->{$field_name}[0]['nid'];
119                                $uid = $node->uid;
120                                $type = $field['type_name'];
121                                $permission = $edit_via_ref_content;
122                                $edit_perm = in_array($permission, $default_permissions[$rid])  ? 1 : 0;
123                                $permission = $delete_via_ref_content;
124                                $delete_perm = in_array($permission, $default_permissions[$rid])  ? 1 : 0;
125                                $view_any_content = $view_via_ref_content;
126                                $view_perm = (($edit_perm || $delete_perm) ? 1 : in_array($view_any_content, $default_permissions[$rid]));
127                                $grants[] = array(
128                                        'realm' => 'view_own_owner',
129                                        'gid' => $uid,
130                                        'grant_view' => $view_perm,
131                                        'grant_update' => $edit_perm,
132                                        'grant_delete' => $delete_perm,
133                                        'priority' => 0,
134                                );
135                            }
136                            if ($field['module'] == 'userreference') {
137                                $uid = $node->{$field_name}[0]['uid'];
138                                $type = $field['type_name'];
139                                $permission = $edit_via_ref_content;
140                                $edit_perm = in_array($permission, $default_permissions[$rid])  ? 1 : 0;
141                                $permission = $delete_via_ref_content;
142                                $delete_perm = in_array($permission, $default_permissions[$rid])  ? 1 : 0;
143                                $view_any_content = $view_via_ref_content;
144                                $view_perm = (($edit_perm || $delete_perm) ? 1 : in_array($view_any_content, $default_permissions[$rid]));
145                                $grants[] = array(
146                                        'realm' => 'view_own_owner',
147                                        'gid' => $uid,
148                                        'grant_view' => $view_perm,
149                                        'grant_update' => $edit_perm,
150                                        'grant_delete' => $delete_perm,
151                                        'priority' => 0,
152                                );
153                            }
154                    }
155                  }
156                }
157      }      }
158    }    }
159    return $grants;    return $grants;

Legend:
Removed from v.1.1.2.4  
changed lines
  Added in v.1.1.2.5

  ViewVC Help
Powered by ViewVC 1.1.2