129 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
/**
 | 
						|
 * @file page_title.install
 | 
						|
 *
 | 
						|
 * Handles the install, uninstall and updating of Page Title
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Implements 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;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Implements hook_update_n().
 | 
						|
 */
 | 
						|
function page_title_update_6200() {
 | 
						|
  $ret = array();
 | 
						|
 | 
						|
  if (db_column_exists('page_title', 'id')) {
 | 
						|
    return $ret;
 | 
						|
  }
 | 
						|
 | 
						|
  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;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Implements hook_update_n().
 | 
						|
 * Rename all the Vocabulary settings to reference by the new Machine Name, rather than Vocab ID.
 | 
						|
 */
 | 
						|
function page_title_update_7200() {
 | 
						|
  $ret = array();
 | 
						|
 | 
						|
  // If taxonomy not enabled, do no further updates
 | 
						|
  if (!module_exists('taxonomy')) {
 | 
						|
    return $ret;
 | 
						|
  }
 | 
						|
 | 
						|
  foreach (taxonomy_get_vocabularies() as $vocab) {
 | 
						|
    $page_title_vocab_settings = variable_get("page_title_vocab_{$vocab->vid}", FALSE);
 | 
						|
    $page_title_vocab_showfield = variable_get("page_title_vocab_{$vocab->vid}_showfield", FALSE);
 | 
						|
 | 
						|
    if ($page_title_vocab_settings) {
 | 
						|
      variable_set("page_title_vocab_{$vocab->machine_name}", $page_title_vocab_settings);
 | 
						|
    }
 | 
						|
    if ($page_title_vocab_showfield) {
 | 
						|
      variable_set("page_title_vocab_{$vocab->machine_name}_showfield", $page_title_vocab_showfield);
 | 
						|
    }
 | 
						|
    variable_del("page_title_vocab_{$vocab->vid}_showfield");
 | 
						|
    variable_del("page_title_vocab_{$vocab->vid}");
 | 
						|
  }
 | 
						|
 | 
						|
  return $ret;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Implements hook_uninstall().
 | 
						|
 */
 | 
						|
function page_title_uninstall() {
 | 
						|
  // 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_type_get_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_{$vocab->machine_name}");
 | 
						|
      variable_del("page_title_vocab_{$vocab->machine_name}_showfield");
 | 
						|
 | 
						|
      // Legacy delete - just in case the uninstall is happening befoer update 7200
 | 
						|
      variable_del("page_title_vocab_{$vid}");
 | 
						|
      variable_del("page_title_vocab_{$vid}_showfield");
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |