| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Install, update and uninstall functions for the uuid module.
 
-  */
 
- define('UUID_UPGRADE_VAR', 'uuid_upgrade_in_progress');
 
- /**
 
-  * Include some helper functions for the Entity API.
 
-  */
 
- module_load_include('inc', 'uuid', 'uuid.entity');
 
- /**
 
-  * Helper function that returns a schema field definition for UUID fields.
 
-  *
 
-  * @see uuid_schema_alter()
 
-  * @see uuid_install()
 
-  */
 
- function uuid_schema_field_definition() {
 
-   return array(
 
-     'type' => 'char',
 
-     'length' => 36,
 
-     'not null' => TRUE,
 
-     'default' => '',
 
-     'description' => 'The Universally Unique Identifier.',
 
-   );
 
- }
 
- /**
 
-  * Implements of hook_schema_alter().
 
-  */
 
- function uuid_schema_alter(&$schema = array()) {
 
-   $field = uuid_schema_field_definition();
 
-   foreach (uuid_get_core_entity_info() as $entity_type => $info) {
 
-     $schema[$info['base table']]['fields'][$info['entity keys']['uuid']] = $field;
 
-     if (!empty($info['revision table']) && !empty($info['entity keys']['revision uuid'])) {
 
-       $schema[$info['revision table']]['fields'][$info['entity keys']['revision uuid']] = $field;
 
-     }
 
-   }
 
- }
 
- /**
 
-  * Implements hook_install().
 
-  */
 
- function uuid_install() {
 
-   _uuid_install_uuid_fields();
 
-   uuid_sync_all();
 
- }
 
- /**
 
-  * Install the 'uuid' and 'vuuid' fields into Drupal core entity tables where needed.
 
-  *
 
-  * IMPORTANT:  This function is called both at install and update time.  If this method
 
-  * is modified to add additional fields in the future, the update strategy must be
 
-  * considered.  See the comment in uuid_update_7102.
 
-  */
 
- function _uuid_install_uuid_fields() {
 
-   $field = uuid_schema_field_definition();
 
-   foreach (uuid_get_core_entity_info() as $entity_type => $info) {
 
-     if (!db_field_exists($info['base table'], $info['entity keys']['uuid'])) {
 
-       db_add_field($info['base table'], $info['entity keys']['uuid'], $field);
 
-       db_add_index($info['base table'], $info['entity keys']['uuid'], array($info['entity keys']['uuid']));
 
-     }
 
-     if (!empty($info['revision table']) && !empty($info['entity keys']['revision uuid'])) {
 
-       if (!db_field_exists($info['revision table'], $info['entity keys']['revision uuid'])) {
 
-         db_add_field($info['revision table'], $info['entity keys']['revision uuid'], $field);
 
-         db_add_index($info['revision table'], $info['entity keys']['revision uuid'], array($info['entity keys']['revision uuid']));
 
-       }
 
-     }
 
-   }
 
- }
 
- /**
 
-  * Implements hook_uninstall().
 
-  */
 
- function uuid_uninstall() {
 
-   foreach (uuid_get_core_entity_info() as $entity_type => $info) {
 
-     if (db_field_exists($info['base table'], $info['entity keys']['uuid'])) {
 
-       db_drop_field($info['base table'], $info['entity keys']['uuid']);
 
-       db_drop_index($info['base table'], $info['entity keys']['uuid']);
 
-     }
 
-     if (!empty($info['revision table']) && !empty($info['entity keys']['revision uuid'])) {
 
-       if (db_field_exists($info['revision table'], $info['entity keys']['revision uuid'])) {
 
-         db_drop_field($info['revision table'], $info['entity keys']['revision uuid']);
 
-         db_drop_index($info['revision table'], $info['entity keys']['revision uuid']);
 
-       }
 
-     }
 
-   }
 
- }
 
- /**
 
-  * Implements hook_modules_installed().
 
-  */
 
- function uuid_modules_installed($modules) {
 
-   // Run the installation hook. This makes sure that the schema for all
 
-   // supported core entity types is set correct.
 
-   uuid_install();
 
- }
 
- /**
 
-  * Create uuid_vocabulary and uuid_term_data tables.
 
-  */
 
- function uuid_update_6001() {
 
-   $ret = array();
 
-   db_create_table($ret, 'uuid_vocabulary', uuid_table_schema('vocabulary', 'vid'));
 
-   db_create_table($ret, 'uuid_term_data', uuid_table_schema('term_data', 'tid'));
 
-   return $ret;
 
- }
 
- /**
 
-  * For each of out tables, drop the indexe on the UUID column and add a unique
 
-  * key on that column.
 
-  */
 
- function uuid_update_6002() {
 
-   $ret = array();
 
-   foreach (uuid_schema() as $table => $schema) {
 
-     db_drop_index($ret, $table, $table . '_uuid_idx');
 
-     db_add_unique_key($ret, $table, $table . '_uuid_key', array('uuid'));
 
-   }
 
-   return $ret;
 
- }
 
- /**
 
-  * Create uuid_comment table.
 
-  */
 
- function uuid_update_6003() {
 
-   $ret = array();
 
-   db_create_table($ret, 'uuid_comments', uuid_table_schema('comments', 'cid'));
 
-   return $ret;
 
- }
 
- /**
 
-  * Fix the column definitions for uuid columns in all tables
 
-  * to use the more efficient char spec.
 
-  */
 
- function uuid_update_6004() {
 
-   $ret = array();
 
-   // Use what's in uuid_table_schema in order to be consistent.
 
-   $tables = uuid_schema();
 
-   $spec = $tables['uuid_node']['fields']['uuid'];
 
-   foreach ($tables as $tablename => $schema) {
 
-     if (db_table_exists($tablename)) {
 
-       db_change_field($ret, $tablename, 'uuid', 'uuid', $spec);
 
-     }
 
-   }
 
-   return $ret;
 
- }
 
- /**
 
-  * Modify existing uuid_node_revisions table to support revision deletion, and
 
-  * add in as much legacy data as possible.
 
-  */
 
- function uuid_update_6005() {
 
-   $ret = array();
 
-   if (db_table_exists('uuid_node_revisions')) {
 
-     // Use what's already defined in uuid schema in order to be consistent.
 
-     $schema = uuid_schema();
 
-     $spec = $schema['uuid_node_revisions']['fields']['nid'];
 
-     db_add_field($ret, 'uuid_node_revisions', 'nid', $spec);
 
-     // Add node ids to the new column, for revisions that exist, but now have a
 
-     // default value of 0 in uuid_node_revisions.
 
-     $result = db_query('SELECT nr.nid, nr.vid FROM {node_revisions} AS nr LEFT JOIN {uuid_node_revisions} AS unr ON unr.vid=nr.vid WHERE unr.nid=%d', 0);
 
-     while ($item = db_fetch_object($result)) {
 
-       $ret[] = update_sql('UPDATE {uuid_node_revisions} SET nid=' . (int) $item->nid . ' WHERE vid=' . (int) $item->vid);
 
-     }
 
-     // Add uuid_node_revision rows for rows that don't exist, but should.
 
-     $result = db_query('SELECT nr.nid, nr.vid FROM {node_revisions} AS nr LEFT JOIN {uuid_node_revisions} AS unr ON unr.vid=nr.vid WHERE unr.nid IS NULL');
 
-     while ($item = db_fetch_object($result)) {
 
-       $ret[] = update_sql(sprintf("INSERT INTO {uuid_node_revisions} (vid, uuid, nid) VALUES(%d, '%s', %d)", $item->vid, uuid_uuid(), $item->nid));
 
-     }
 
-     // Delete any orphaned revision vid, uuid pairs.
 
-     $ret[] = update_sql('DELETE FROM {uuid_node_revisions} WHERE nid=0');
 
-   }
 
-   return $ret;
 
- }
 
- /**
 
-  * Remove old variables.
 
-  */
 
- function uuid_update_7100() {
 
-   $types = array(
 
-     'nodes',
 
-     'users',
 
-     'taxonomy',
 
-     'comments',
 
-   );
 
-   foreach ($types as $type) {
 
-     variable_del('uuid_automatic_for_' . $type);
 
-   }
 
-   return array();
 
- }
 
- /**
 
-  * Clear cache for installations that used alpha1. Modules that previously was
 
-  * enabled in uuid_update_7100() doesn't exist anymore.
 
-  */
 
- function uuid_update_7101() {
 
-   drupal_flush_all_caches();
 
- }
 
- /**
 
-  * Insure that the uuid and vuuid fields are added where needed.
 
-  *
 
-  * Note that update 7102 calls _uuid_install_uuid_fields(), which is an
 
-  * idempotent function.  If _uuid_install_uuid_fields() is changed at some
 
-  * point in the future (but remains idempotent), then some uuid users
 
-  * will have run update 7102, and some will not.  A new uuid_update_7103()
 
-  * function would would therefore be necessary to update all users to
 
-  * the latest schema.  At the same time, uuid_update_7102() could become
 
-  * an empty function, as it would not be necessary to call _uuid_install_uuid_fields()
 
-  * twice.
 
-  */
 
- function uuid_update_7102() {
 
-   // If the user have disabled the UUID module during upgrade (as UPGRADE.txt
 
-   // instructs), some functions will be missing. So include the module file.
 
-   module_load_include('module', 'uuid', 'uuid');
 
-   _uuid_install_uuid_fields();
 
-   uuid_sync_all();
 
- }
 
 
  |