You are here

page_title.install in Page Title 6.2

The install file for Page Title allows the module to install (and uninstall) itself. This is required as this module uses its own table.

File

page_title.install
View source
<?php

/**
 * @file
 * The install file for Page Title allows the module to install (and uninstall) itself. This is required as this module uses its own table.
 */

/**
 * Implementation of hook_install().
 */
function page_title_install() {
  drupal_install_schema('page_title');
  drupal_set_message(t('Page Title has been installed. Please go to <strong>Admin > Site Configuration > Page title</strong> to configure the settings for your site, or !link', array(
    '!link' => l(t('click here'), 'admin/settings/page-title'),
  )));
}

/**
 * Implementation of hook_schema().
 */
function page_title_schema() {
  $schema['page_title'] = array(
    'fields' => array(
      'type' => array(
        'type' => 'varchar',
        'length' => 15,
        'not null' => TRUE,
        'default' => 'node',
      ),
      'id' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'page_title' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
    ),
    'primary key' => array(
      'type',
      'id',
    ),
  );
  return $schema;
}

/**
 * Implementation of hook_update_n().
 */
function page_title_update_6200() {
  $ret = array();
  if (db_column_exists('page_title', 'id')) {
    return $ret;
  }
  elseif (db_table_exists('page_title_temp') || db_table_exists('page_title_old')) {
    drupal_set_message(t('Page Title cannot be updated until page_title_temp and/or page_title_old have been removed. Please manually remove these tables (if safe to do so), return to <a href="@update-php">update.php</a> and run the remaining updates.', array(
      '@update-php' => base_path() . 'update.php?op=selection',
    )), 'warning', FALSE);
    return array(
      '#abort' => array(
        'success' => FALSE,
        'query' => t('It seems page_title_temp or page_title_old tables are already present in your database, possibly from a previous update. Please remove these tables from your database.'),
      ),
    );
  }
  db_create_table($ret, 'page_title_temp', array(
    'fields' => array(
      'type' => array(
        'type' => 'varchar',
        'length' => 15,
        'not null' => TRUE,
        'default' => 'node',
      ),
      'id' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'page_title' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
    ),
    'primary key' => array(
      'type',
      'id',
    ),
  ));
  $ret[] = update_sql('INSERT INTO {page_title_temp} (id, page_title) SELECT nid, page_title FROM {page_title}');
  db_rename_table($ret, 'page_title', 'page_title_old');
  db_rename_table($ret, 'page_title_temp', 'page_title');
  $display_settings = variable_get('page_title_display', array());
  foreach ($display_settings as $type) {
    if ($type) {
      variable_set('page_title_type_' . $type . '_showfield', 1);
    }
  }
  variable_del('page_title_display');
  return $ret;
}

/**
 * Implementation of hook_uninstall().
 */
function page_title_uninstall() {
  drupal_uninstall_schema('page_title');

  // Clear variables
  variable_del('page_title_default');
  variable_del('page_title_individual');
  variable_del('page_title_front');
  variable_del('page_title_blog');
  variable_del('page_title_user');
  variable_del('page_title_user_showfield');
  variable_del('page_title_pager_pattern');
  variable_del('page_title_forum_root_title');
  variable_del('page_title_comment_reply');
  variable_del('page_title_comment_child_reply');

  // Clear the node specific variables
  $types = node_get_types('names');
  foreach ($types as $type => $name) {
    variable_del("page_title_type_{$type}");
    variable_del("page_title_type_{$type}_showfield");
  }

  // Clear the vocab specific variables
  if (module_exists('taxonomy')) {
    $vocabs = taxonomy_get_vocabularies();
    foreach ($vocabs as $vid => $vocab) {
      variable_del("page_title_vocab_{$vid}");
      variable_del("page_title_vocab_{$vid}_showfield");
    }
  }
}

Functions

Namesort descending Description
page_title_install Implementation of hook_install().
page_title_schema Implementation of hook_schema().
page_title_uninstall Implementation of hook_uninstall().
page_title_update_6200 Implementation of hook_update_n().