123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <?php
- function field_permissions_install() {
-
- db_update('system')
- ->fields(array('weight' => 50))
- ->condition('name', 'field_permissions')
- ->execute();
- }
- function field_permissions_update_7000(&$sandbox) {
- db_update('system')
- ->fields(array('weight' => 50))
- ->condition('name', 'field_permissions')
- ->execute();
- }
- function field_permissions_update_7001() {
- foreach (field_info_fields() as $field_name => $field) {
-
-
-
- if (!empty($field['settings']['field_permissions']) && array_filter($field['settings']['field_permissions'])) {
-
-
-
- $field['field_permissions']['type'] = 2;
- $field_permissions = $field['settings']['field_permissions'];
- $permissions_by_operation = array(
-
- array(
- 'view' => "view $field_name",
- 'view own' => "view own $field_name",
- ),
-
- array(
- 'create' => "create $field_name",
- 'edit' => "edit $field_name",
- 'edit own' => "edit own $field_name",
- ),
- );
-
- foreach ($permissions_by_operation as $permissions) {
- $actions = array_keys($permissions);
-
-
-
- $has_enabled_permissions = (bool) array_filter(array_intersect_key($field_permissions, array_flip($actions)));
- if (!$has_enabled_permissions) {
- _update_7000_user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, $permissions, 'field_permissions');
- _update_7000_user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, $permissions, 'field_permissions');
- }
-
-
-
- else {
- foreach ($actions as $action) {
- if (empty($field_permissions[$action])) {
- if ($action != 'create') {
- $permission = $permissions[$action];
- $rids = array_keys(user_roles(FALSE, $permission));
- foreach ($rids as $rid) {
- user_role_revoke_permissions($rid, array($permission));
- }
- }
-
-
-
-
-
-
-
- else {
- $rids_with_create_access = array();
-
-
-
- if (!empty($field_permissions['edit'])) {
- $rids_with_create_access = array_keys(user_roles(FALSE, $permissions['edit']));
- }
-
-
-
-
-
-
-
- if (!empty($field_permissions['edit own'])) {
- $rids_with_create_access = array_unique(array_merge($rids_with_create_access, array_keys(user_roles(FALSE, $permissions['edit own']))));
- }
-
- foreach ($rids_with_create_access as $rid) {
- _update_7000_user_role_grant_permissions($rid, array($permissions['create']), 'field_permissions');
- }
- }
- }
- }
- }
- }
- }
-
-
- if (isset($field['settings']['field_permissions'])) {
-
-
- $field['settings']['field_permissions'] = NULL;
- field_update_field($field);
- }
- }
- }
|