source: sipes/modules_contrib/field_permissions/field_permissions.install

stableversion-3.0
Last change on this file was 663b989, checked in by José Gregorio Puentes <jpuentes@…>, 8 años ago

se actualizo el modulo

  • Propiedad mode establecida a 100644
File size: 4.5 KB
Línea 
1<?php
2// $Id: field_permissions.install,v 1.1.2.4 2009/11/14 15:58:44 markuspetrux Exp $
3
4/**
5 * @file
6 * Installation hooks for Field Permissions module.
7 */
8
9/**
10 * Implementation of hook_install().
11 */
12function field_permissions_install() {
13  $t = get_t();
14
15  // If Content Permissions module is enabled we need to enable permissions
16  // for all fields, as a method to upgrade from one module to another with
17  // the same exact options available.
18  $messages = array();
19  if (module_exists('content_permissions')) {
20    drupal_load('module', 'content');
21    $result = db_query('SELECT field_name, global_settings FROM {'. content_field_tablename() .'}');
22    while ($field = db_fetch_object($result)) {
23      $global_settings = unserialize($field->global_settings);
24      $global_settings['field_permissions'] = array(
25        'view' => 'view',
26        'edit' => 'edit',
27      );
28      $global_settings = serialize($global_settings);
29      // We cannot use update_sql() here because of curly braces in serialized array.
30      db_query("UPDATE {". content_field_tablename() ."} SET global_settings = '%s' WHERE field_name = '%s'", $global_settings, $field->field_name);
31      $messages[] = $t('Field permissions have been enabled for field %field-name.', array('%field-name' => $field->field_name));
32    }
33  }
34
35  drupal_set_message($t('Field Permissions module has been installed successfully.'));
36
37  if (!empty($messages)) {
38    content_clear_type_cache();
39    drupal_set_message($t('We have found that Content Permissions module (part of CCK) is installed, permissions have been enabled for all fields in your site. You can now uninstall Content Permissions module. Then you may want to enable and/or disable permissions for each field independently from the field settings form.'));
40    drupal_set_message(implode('<br />', $messages));
41  }
42}
43
44/**
45 * Implementation of hook_uninstall().
46 */
47function field_permissions_uninstall() {
48  $t = get_t();
49
50  drupal_load('module', 'content');
51
52  // Remove field permission settings from fields.
53  $messages = array();
54  $result = db_query('SELECT field_name, global_settings FROM {'. content_field_tablename() .'}');
55  while ($field = db_fetch_object($result)) {
56    $global_settings = unserialize($field->global_settings);
57    if (isset($global_settings['field_permissions'])) {
58      unset($global_settings['field_permissions']);
59      $global_settings = serialize($global_settings);
60      // We cannot use update_sql() here because of curly braces in serialized array.
61      db_query("UPDATE {". content_field_tablename() ."} SET global_settings = '%s' WHERE field_name = '%s'", $global_settings, $field->field_name);
62      $messages[] = $t('Field permission settings have been removed from field %field-name.', array('%field-name' => $field->field_name));
63    }
64  }
65
66  drupal_set_message($t('Field Permissions module has been uninstalled successfully.'));
67
68  if (!empty($messages)) {
69    content_clear_type_cache();
70    drupal_set_message(implode('<br />', $messages));
71  }
72}
73
74/**
75 * Update global field settings for field permissions.
76 */
77function field_permissions_update_6001() {
78  $ret = array();
79
80  drupal_load('module', 'content');
81
82  $result = db_query('SELECT field_name, global_settings FROM {'. content_field_tablename() .'}');
83  while ($field = db_fetch_object($result)) {
84    $global_settings = unserialize($field->global_settings);
85    if (isset($global_settings['field_permissions']) && !is_array($global_settings['field_permissions'])) {
86      if ($global_settings['field_permissions'] == 'any') {
87        $global_settings['field_permissions'] = array(
88          'view' => 'view',
89          'edit' => 'edit',
90        );
91      }
92      elseif ($global_settings['field_permissions'] == 'own') {
93        $global_settings['field_permissions'] = array(
94          'view' => 'view', 'view own' => 'view own',
95          'edit' => 'edit', 'edit own' => 'edit own',
96        );
97      }
98      else {
99        unset($global_settings['field_permissions']);
100      }
101      $global_settings = serialize($global_settings);
102      // We cannot use update_sql() here because of curly braces in serialized array.
103      $sql = "UPDATE {". content_field_tablename() ."} SET global_settings = '%s' WHERE field_name = '%s'";
104      db_query($sql, $global_settings, $field->field_name);
105      $ret[] = array(
106        'success' => TRUE,
107        'query' => strtr('Field permission settings have been updated for field %field-name.', array('%field-name' => $field->field_name)),
108      );
109    }
110  }
111
112  // Rebuild content caches only if necessary.
113  if (!empty($ret)) {
114    content_clear_type_cache();
115  }
116
117  return $ret;
118}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.