You are here

content_profile.install in Content Profile 6

Content profile installation file.

File

content_profile.install
View source
<?php

/**
 * @file
 * Content profile installation file.
 */

/**
 * Implementation of hook_enable().
 */
function content_profile_enable() {

  //enable the default content type 'profile' to be a content profile
  $setting = variable_get('content_profile_profile', FALSE);
  if (!$setting && $setting !== array()) {
    variable_set('content_profile_profile', array());
  }
}

/**
 * Implementation of hook_install().
 */
function content_profile_install() {

  // Set the module weight to -1, so content_profile_user() gets called before
  // node_user(), so that one can't set a node's uid to 0 on user deletion
  // before the profile nodes are deleted.
  db_query("UPDATE {system} SET weight = -1 WHERE name = 'content_profile'");
  content_profile_import();

  //create a profile type, if it doesn't exist yet
  if (!node_get_types('type', 'profile')) {
    $info = array(
      'type' => 'profile',
      'name' => t('Profile'),
      'module' => 'node',
      'description' => t('A user profile built as content.'),
      'locked' => FALSE,
      'custom' => TRUE,
    );
    $info = _node_type_set_defaults($info);
    node_type_save((object) $info);
  }
}

/**
 * Import settings from nodeprofile / bio.
 */
function content_profile_import() {

  //nodeprofile
  if ($settings = variable_get('nodeprofile_settings', array())) {
    $cp_setting = array();
    foreach ($settings as $setting => $data) {
      foreach ($data as $type => $value) {
        $cp_settings[$type][$setting] = $value;
      }
    }
    foreach ($cp_settings as $type => $data) {
      variable_set('content_profile_use_' . $type, 1);
      $data['edit_tab'] = $data['user_edit'] ? 'sub' : 0;
      unset($data['user_edit']);
      variable_set('content_profile_' . $type, $data);
    }
    variable_del('nodeprofile_settings');
  }

  //bio
  if ($type = variable_get('bio_nodetype', FALSE)) {
    variable_set('content_profile_use_' . $type, 1);
    variable_del('bio_nodetype');
  }
}

/**
 * Implementation of hook_uninstall().
 */
function content_profile_uninstall() {
  foreach (node_get_types('names') as $typename => $visiblename) {
    if (variable_get('content_profile_use' . $typename, 0)) {
      variable_del('content_profile_use_' . $typename);
      variable_del('content_profile_' . $typename);
    }
  }
}

/**
 * Set module weight to -1, as explained in content_profile_install().
 */
function content_profile_update_6001() {
  $ret = array();
  $ret[] = update_sql("UPDATE {system} SET weight = -1 WHERE name = 'content_profile'");
  return $ret;
}

/**
 * Make the profile type to be "custom", so it can be deleted.
 */
function content_profile_update_6002() {
  $ret = array();
  if (($type = node_get_types('type', 'profile')) && !$type->custom) {
    $type->custom = TRUE;
    node_type_save($type);
  }
  return $ret;
}

/**
 * Update the settings to reflect the changes of the format
 * ('edit_link_sub' has been removed in favour of 'edit_tab')
 */
function content_profile_update_6003() {
  $ret = array();
  drupal_load('module', 'content_profile');
  foreach (content_profile_get_types('names') as $type => $type_name) {
    $settings = content_profile_get_settings($type);
    if (!empty($settings['edit_link_sub'])) {
      unset($settings['edit_link_sub']);
      $settings['edit_tab'] = 'sub';
      content_profile_set_settings($type, $settings);
    }
  }
  return $ret;
}

/**
 * Due to an old bug it may be that the $settings of a content type
 * are '0'. As it should be an array this generates errors.
 * This update fixes up those scrambled settings.
 */
function content_profile_update_6004() {
  $ret = array();
  drupal_load('module', 'content_profile');
  foreach (node_get_types('names') as $type => $type_name) {
    $settings = variable_get('content_profile_' . $type, array());
    if (!is_array($settings)) {
      content_profile_set_settings($type, array());
    }
  }
  return $ret;
}

Functions

Namesort descending Description
content_profile_enable Implementation of hook_enable().
content_profile_import Import settings from nodeprofile / bio.
content_profile_install Implementation of hook_install().
content_profile_uninstall Implementation of hook_uninstall().
content_profile_update_6001 Set module weight to -1, as explained in content_profile_install().
content_profile_update_6002 Make the profile type to be "custom", so it can be deleted.
content_profile_update_6003 Update the settings to reflect the changes of the format ('edit_link_sub' has been removed in favour of 'edit_tab')
content_profile_update_6004 Due to an old bug it may be that the $settings of a content type are '0'. As it should be an array this generates errors. This update fixes up those scrambled settings.