/[drupal]/contributions/modules/node_access_control/node_access_control_helpers.inc
ViewVC logotype

Contents of /contributions/modules/node_access_control/node_access_control_helpers.inc

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


Revision 1.2 - (show annotations) (download) (as text)
Fri Jun 6 11:31:00 2008 UTC (17 months, 3 weeks ago) by rmuilwijk
Branch: MAIN
CVS Tags: DRUPAL-5--1-0-BETA1, HEAD
Branch point for: DRUPAL-5
Changes since 1.1: +2 -2 lines
File MIME type: text/x-php
Changed the url to our upcoming english based community site.
1 <?php
2 // $Id: node_access_control_helpers.inc,v 1.1 2008/06/06 11:14:49 rmuilwijk Exp $
3
4 /**
5 * @file
6 * Provides helper functions for node access control
7 *
8 * This module was developed by Madcap, open.madcap.nl
9 *
10 * @author Raymond Muilwijk <r.muilwijk@madcap.nl>
11 */
12
13 /**
14 * Helper function for loading a node's access control
15 *
16 * @param object $node
17 */
18 function node_access_control_load_node(&$node) {
19 if (!isset($node->node_access_control)) {
20 $rs = db_query("SELECT * FROM {node_access_control} WHERE nid=%d AND vid=%d", $node->nid, $node->vid);
21 $node->node_access_control = db_fetch_array($rs);
22 }
23 }
24
25 /**
26 * Helper function for getting all roles and their permissions
27 *
28 * @return array
29 */
30 function node_access_control_get_all_roles($reset = FALSE) {
31 static $roles = NULL;
32
33 if ($roles == NULL || $reset == TRUE) {
34 $rs = db_query("SELECT r.rid, p.perm FROM {role} r JOIN {permission} p USING (rid)");
35 while ($row = db_fetch_array($rs)) {
36 $roles[$row['rid']] = $row['perm'];
37 }
38 }
39
40 return $roles;
41 }
42
43 /**
44 * Helper function for checking or a string of permissions has a operators permission
45 *
46 * @param string $total_permissions
47 * @param string $op
48 * @param object $node
49 * @return boolean
50 */
51 function node_access_control_has_perm($total_permissions, $op, &$node) {
52 node_access_control_load_node($node);
53
54 $perm = node_access_control_get_perm($node, $op);
55
56 if ($perm == '0') {
57 // Drupal sets view access default to true. When we don't have a permission for one of the op's "view" should return true.
58 // "Update" and "delete" should return false.
59 if ($op == 'view') {
60 return TRUE;
61 }
62
63 return FALSE;
64 }
65
66 return (strpos($total_permissions . ', ', "$perm, ") !== FALSE);
67 }
68
69 /**
70 * Helper function for retrieving all the node access controlled node types
71 *
72 * @return array
73 */
74 function node_access_control_get_types() {
75 $types = node_get_types();
76
77 $nac_types = array();
78
79 foreach ($types as $type => $type_object) {
80 if (variable_get('node_access_control_enabled_' . $type, FALSE) == TRUE) {
81 $nac_types[] = $type;
82 }
83 }
84
85 return $nac_types;
86 }
87
88 /**
89 * Helper function for checking whether a node type is controlled by node access or not
90 *
91 * @param string $type
92 * @return boolean
93 */
94 function node_access_control_valid_type($type) {
95 return variable_get('node_access_control_enabled_' . $type, FALSE);
96 }
97
98 /**
99 * Helper function for retrieving the permissions defined by this module
100 *
101 * @return array
102 */
103 function node_access_control_get_permissions() {
104 return variable_get('node_access_control_permissions', array());
105 }
106
107 /**
108 * Helper function for settings the permissions defined by this module
109 */
110 function node_access_control_set_permissions($perms) {
111 ksort($perms);
112 variable_set('node_access_control_permissions', $perms);
113 }
114
115 /**
116 * Helper function for returning a node's permission for a operator
117 *
118 * @param object $node
119 * @param string $op
120 * @return string
121 */
122 function node_access_control_get_perm(&$node, $op) {
123 node_access_control_load_node($node);
124
125 // We want this to be E_ALL safe code so we have to check or it's all set
126 if (isset($node->node_access_control) && is_array($node->node_access_control) && isset($node->node_access_control['perm_' . $op])) {
127 return $node->node_access_control['perm_' . $op]; // Return actual value
128 }
129
130 return '0';
131 }
132
133 /**
134 * Helper function for checking whether or not access control is set.
135 *
136 * @param object $node
137 * @return boolean
138 */
139 function node_access_control_isset(&$node) {
140 node_access_control_load_node($node);
141
142 if (!isset($node->node_access_control) || !is_array($node->node_access_control)) {
143 return false;
144 }
145
146 $nac_view = node_access_control_get_perm($node, 'view');
147 $nac_update = node_access_control_get_perm($node, 'update');
148 $nac_delete = node_access_control_get_perm($node, 'delete');
149
150 return ($nac_view != '0' || $nac_update != '0' || $nac_delete != '0');
151 }

  ViewVC Help
Powered by ViewVC 1.1.2