You are here

user_field_privacy.install in User Field Privacy 7

Install, update and uninstall functions for the user_field_privacy module.

File

user_field_privacy.install
View source
<?php

/**
 * @file
 * Install, update and uninstall functions for the user_field_privacy module.
 */

/**
 * Implements hook_schema().
 */
function user_field_privacy_schema() {
  $schema['user_field_privacy_value'] = array(
    'fields' => array(
      'fid' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'uid' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'private' => array(
        'type' => 'int',
        'size' => 'tiny',
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array(
      'fid',
      'uid',
    ),
    'indexes' => array(
      'fid' => array(
        'fid',
      ),
      'uid' => array(
        'uid',
      ),
    ),
  );
  return $schema;
}

/**
 * Converts the DB settings to proper Field API settings for exportability.
 */
function user_field_privacy_update_7000() {

  // Not using Batch API and/or update hooks' $sandbox: most likely we do not
  // have that many fields which would cause PHP timeouts.
  $query = db_select('user_field_privacy_field', 'ufpf');
  $query
    ->fields('ufpf', array(
    'privacy',
  ));
  $field_config_instance = $query
    ->innerJoin('field_config_instance', 'fci', '%alias.id = ufpf.fid');
  $query
    ->fields('fci', array(
    'field_name',
  ));
  $result = $query
    ->execute();
  while ($field = $result
    ->fetchObject()) {
    $instance = field_info_instance('user', $field->field_name, 'user');
    $instance['settings']['user_field_privacy'] = $field->privacy;
    field_update_instance($instance);
  }
}

/**
 * Drops the no longer needed user_field_privacy_field table.
 */
function user_field_privacy_update_7001() {
  db_drop_table('user_field_privacy_field');
}

/**
 * Make {user_field_privacy_value}.fid and .uid fields NOT NULL.
 */
function user_field_privacy_update_7002() {
  db_change_field('user_field_privacy_value', 'fid', 'fid', array(
    'type' => 'int',
    'unsigned' => TRUE,
    'not null' => TRUE,
    'default' => 0,
  ));
  db_change_field('user_field_privacy_value', 'uid', 'uid', array(
    'type' => 'int',
    'unsigned' => TRUE,
    'not null' => TRUE,
    'default' => 0,
  ));
}

Functions

Namesort descending Description
user_field_privacy_schema Implements hook_schema().
user_field_privacy_update_7000 Converts the DB settings to proper Field API settings for exportability.
user_field_privacy_update_7001 Drops the no longer needed user_field_privacy_field table.
user_field_privacy_update_7002 Make {user_field_privacy_value}.fid and .uid fields NOT NULL.