<?php // $Id$ /** * @file * gmap_taxonomy install routines. */ /** * Implementation of hook_install(). */ function gmap_taxonomy_install() { drupal_install_schema('gmap_taxonomy'); } /** * Implementation of hook_uninstall(). */ function gmap_taxonomy_uninstall() { drupal_uninstall_schema('gmap_taxonomy'); } /** * Implementation of hook_schema(). */ function gmap_taxonomy_schema() { $schema['gmap_taxonomy_term'] = array( 'fields' => array( 'tid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0), 'marker' => array('type' => 'varchar', 'length' => 32), ), 'primary key' => array('tid'), ); $schema['gmap_taxonomy_node'] = array( 'fields' => array( 'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0), 'vid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0), 'tid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0), 'marker' => array('type' => 'varchar', 'length' => 32), ), 'primary key' => array('vid'), 'indexes' => array( 'nid' => array('nid'), ), ); return $schema; } /** * Track the tid that caused the association, so we can * do fixups faster. */ function gmap_taxonomy_update_5001() { $ret = array(); // Add the new column. // @@@ AFTER vid... db_add_field($ret, 'gmap_taxonomy_node', 'tid', array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)); // Useful for repopulating in bulk... Copy to hook_enable()? $ret[] = update_sql('DELETE FROM {gmap_taxonomy_node}'); $ret[] = update_sql("INSERT INTO {gmap_taxonomy_node} (nid, vid, tid, marker) (SELECT n.nid, n.vid, t.tid, g.marker FROM {node_revisions} n INNER JOIN {term_node} t ON n.nid = t.nid INNER JOIN {gmap_taxonomy_term} g ON t.tid = g.tid GROUP BY n.vid ORDER BY NULL)"); return $ret; }