- Killer patch #144765 by bjaspan, frando et al: schema API 1 hits core. Oh, behave.
parent
ae762838c0
commit
3cafffe63f
|
@ -2513,6 +2513,160 @@ function drupal_common_themes() {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ingroup schemaapi
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get the schema defintion of a table, or the whole database schema.
|
||||
* The returned schema will include any modifications made by any
|
||||
* module that implements hook_schema_alter().
|
||||
*
|
||||
* @param $name
|
||||
* The name of the table. If not given, the schema of all tables is returned.
|
||||
* @param $rebuild
|
||||
* If true, the schema will be rebuilt instead of retreived from the cache.
|
||||
*/
|
||||
function drupal_get_schema($name = NULL, $rebuild = FALSE) {
|
||||
static $schema = array();
|
||||
|
||||
if (empty($schema) || $rebuild) {
|
||||
// Try to load the schema from cache.
|
||||
if (!$rebuild && $cached = cache_get('schema')) {
|
||||
$schema = $cached->data;
|
||||
}
|
||||
// Otherwise, rebuild the schema cache.
|
||||
else {
|
||||
// Load the .schema files.
|
||||
module_load_all_includes('schema');
|
||||
|
||||
// Invoke hook_schema for all modules.
|
||||
foreach (module_implements('schema') as $module) {
|
||||
$current = module_invoke($module, 'schema');
|
||||
_drupal_initialize_schema($module, $current);
|
||||
$schema = array_merge($current, $schema);
|
||||
}
|
||||
|
||||
drupal_alter('schema', $schema);
|
||||
cache_set('schema', $schema);
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($name)) {
|
||||
return $schema;
|
||||
}
|
||||
elseif (isset($schema[$name])) {
|
||||
return $schema[$name];
|
||||
}
|
||||
else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create all tables that a module defines in its hook_schema().
|
||||
*
|
||||
* Note: This function does not pass the module's schema through
|
||||
* hook_schema_alter(). The module's tables will be created exactly
|
||||
* as the module defines them.
|
||||
*
|
||||
* @param $module
|
||||
* The module for which the tables will be created.
|
||||
*/
|
||||
function drupal_install_schema($module) {
|
||||
$schema = drupal_get_schema_unprocessed($module);
|
||||
_drupal_initialize_schema($module, $schema);
|
||||
|
||||
$ret = array();
|
||||
foreach ($schema as $table) {
|
||||
db_create_table($ret, $table);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all tables that a module defines in its hook_schema().
|
||||
*
|
||||
* Note: This function does not pass the module's schema through
|
||||
* hook_schema_alter(). The module's tables will be created exactly
|
||||
* as the module defines them.
|
||||
*
|
||||
* @param $module
|
||||
* The module for which the tables will be removed.
|
||||
*/
|
||||
function drupal_uninstall_schema($module) {
|
||||
$schema = drupal_get_schema_unprocessed($module);
|
||||
_drupal_initialize_schema($module, $schema);
|
||||
|
||||
$ret = array();
|
||||
foreach ($schema as $table) {
|
||||
db_drop_table($ret, $table['name']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the unprocessed and unaltered version of a module's schema.
|
||||
*
|
||||
* Use this function only if you explicitly need the original
|
||||
* specification of a schema, as it was defined in a module's
|
||||
* hook_schema(). No additional default values will be set,
|
||||
* hook_schema_alter() is not invoked and these unprocessed
|
||||
* definitions won't be cached.
|
||||
*
|
||||
* This function can be used to retrieve a schema specification in
|
||||
* hook_schema(), so it allows you to derive your tables from existing
|
||||
* specifications.
|
||||
*
|
||||
* It is also used by drupal_install_schema() and
|
||||
* drupal_uninstall_schema() to ensure that a module's tables are
|
||||
* created exactly as specified without any changes introduced by a
|
||||
* module that implements hook_schema_alter().
|
||||
*
|
||||
* @param $module
|
||||
* The module to which the table belongs.
|
||||
* @param $table
|
||||
* The name of the table. If not given, the module's complete schema
|
||||
* is returned.
|
||||
*/
|
||||
function drupal_get_schema_unprocessed($module, $table = NULL) {
|
||||
// Load the .schema file.
|
||||
module_load_include('schema', $module);
|
||||
$schema = module_invoke($module, 'schema');
|
||||
|
||||
if (!is_null($table) && isset($schema[$table])) {
|
||||
return $schema[$table];
|
||||
}
|
||||
else {
|
||||
return $schema;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill in required default values for table definitions returned by
|
||||
* hook_schema().
|
||||
*
|
||||
* @param $module
|
||||
* The module for which hook_schema() was invoked.
|
||||
* @param $schema
|
||||
* The schema definition array as it was returned by the module's
|
||||
* hook_schema().
|
||||
*/
|
||||
function _drupal_initialize_schema($module, &$schema) {
|
||||
// Set the name and module key for all tables.
|
||||
foreach ($schema as $name => $table) {
|
||||
if (empty($table['module'])) {
|
||||
$schema[$name]['module'] = $module;
|
||||
}
|
||||
if (!isset($table['name'])) {
|
||||
$schema[$name]['name'] = $name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @} End of "ingroup schemaapi".
|
||||
*/
|
||||
|
||||
/**
|
||||
* Parse Drupal info file format.
|
||||
*
|
||||
|
|
|
@ -43,6 +43,22 @@
|
|||
* common pattern of iterating over the result set using db_fetch_object().
|
||||
*/
|
||||
|
||||
/**
|
||||
* Perform an SQL query and return success or failure.
|
||||
*
|
||||
* @param $sql
|
||||
* A string containing a complete SQL query. %-substitution
|
||||
* parameters are not supported.
|
||||
* @return
|
||||
* An array containing the keys:
|
||||
* success: a boolean indicating whether the query succeeded
|
||||
* query: the SQL query executed, passed through check_plain()
|
||||
*/
|
||||
function update_sql($sql) {
|
||||
$result = db_query($sql, true);
|
||||
return array('success' => $result !== FALSE, 'query' => check_plain($sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* Append a database prefix to all tables in a query.
|
||||
*
|
||||
|
@ -317,3 +333,144 @@ function db_escape_table($string) {
|
|||
* @} End of "defgroup database".
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup schemaapi Schema API
|
||||
* @{
|
||||
*
|
||||
* A Drupal schema definition is an array structure representing one or
|
||||
* more tables and their related keys and indexes. A schema is defined by
|
||||
* hook_schema(), which usually lives in a modulename.schema file.
|
||||
*
|
||||
* By implenting hook_schema() and specifying the tables your module
|
||||
* declares, you can easily create and drop these tables on all
|
||||
* supported database engines. You don't have to deal with the
|
||||
* different SQL dialects for table creation and alteration of the
|
||||
* supported database engines.
|
||||
*
|
||||
* hook_schema() should return an array with a key for each table that
|
||||
* the module defines.
|
||||
*
|
||||
* The following keys in the table definition are processed during
|
||||
* table creation:
|
||||
*
|
||||
* - 'fields': An associative array ('fieldname' => specification)
|
||||
* that describes the table's database columns. The specification
|
||||
* is also an array. The following specification parameters are defined:
|
||||
*
|
||||
* - 'type': The generic datatype: 'varchar', 'int', 'serial'
|
||||
* 'float', 'numeric', 'text', 'blob' or 'datetime'. Most types
|
||||
* just map to the according database engine specific
|
||||
* datatypes. Use 'serial' for auto incrementing fields. This
|
||||
* will expand to 'int auto_increment' on mysql.
|
||||
* - 'size': The data size: 'tiny', 'small', 'medium', 'normal',
|
||||
* 'big'. This is a hint about the largest value the field will
|
||||
* store and determines which of the database engine specific
|
||||
* datatypes will be used (e.g. on MySQL, TINYINT vs. INT vs. BIGINT).
|
||||
* 'normal', the default, selects the base type (e.g. on MySQL,
|
||||
* INT, VARCHAR, BLOB, etc.).
|
||||
*
|
||||
* Not all sizes are available for all data types. See
|
||||
* db_type_map() for possible combinations.
|
||||
* - 'not null': If true, no NULL values will be allowed in this
|
||||
* database column. Defaults to false.
|
||||
* - 'default': The field's default value. The PHP type of the
|
||||
* value matters: '', '0', and 0 are all different. If you
|
||||
* specify '0' as the default value for a type 'int' field it
|
||||
* will not work because '0' is a string containing the
|
||||
* character "zero", not an integer.
|
||||
* - 'length': The maximal length of a type 'varchar' or 'text'
|
||||
* field. Ignored for other field types.
|
||||
* - 'unsigned': A boolean indicating whether a type 'int', 'float'
|
||||
* and 'numeric' only is signed or unsigned. Defaults to
|
||||
* FALSE. Ignored for other field types.
|
||||
* - 'precision', 'scale': For type 'numeric' fields, indicates
|
||||
* the precision (total number of significant digits) and scale
|
||||
* (decimal digits right of the decimal point). Both values are
|
||||
* mandatory. Ignored for other field types.
|
||||
*
|
||||
* All parameters apart from 'type' are optional except that type
|
||||
* 'numeric' columns must specify 'precision' and 'scale'.
|
||||
*
|
||||
* - 'primary key': An array of one or more key column specifers (see below)
|
||||
* that form the primary key.
|
||||
* - 'unique key': An associative array of unique keys ('keyname' =>
|
||||
* specification). Each specification is an array of one or more
|
||||
* key column specifiers (see below) that form a unique key on the table.
|
||||
* - 'indexes': An associative array of indexes ('indexame' =>
|
||||
* specification). Each specification is an array of one or more
|
||||
* key column specifiers (see below) that form an index on the
|
||||
* table.
|
||||
*
|
||||
* A key column specifier is either a string naming a column or an
|
||||
* array of two elements, column name and length, specifying a prefix
|
||||
* of the named column.
|
||||
*
|
||||
* As an example, here is a SUBSET of the schema definition for
|
||||
* Drupal's 'node' table. It show four fields (nid, vid, type, and
|
||||
* title), the primary key on field 'nid', a unique key named 'vid' on
|
||||
* field 'vid', and two indexes, one named 'nid' on field 'nid' and
|
||||
* one named 'node_title_type' on the field 'title' and the first four
|
||||
* bytes of the field 'type':
|
||||
*
|
||||
* $schema['node'] = array(
|
||||
* 'fields' => array(
|
||||
* 'nid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
* 'vid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
* 'type' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''),
|
||||
'title' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
* ),
|
||||
* 'primary key' => array('nid'),
|
||||
* 'unique keys' => array(
|
||||
* 'vid' => array('vid')
|
||||
* ),
|
||||
* 'indexes' => array(
|
||||
* 'nid' => array('nid'),
|
||||
* 'node_title_type' => array('title', array('type', 4)),
|
||||
* ),
|
||||
* );
|
||||
*
|
||||
* @see drupal_install_schema()
|
||||
*/
|
||||
|
||||
/**
|
||||
* Create a new table from a Drupal table definition.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* A valid and processed table schema definition array.
|
||||
*/
|
||||
function db_create_table(&$ret, $table) {
|
||||
$statements = db_create_table_sql($table);
|
||||
foreach ($statements as $statement) {
|
||||
$ret[] = update_sql($statement);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an array of field names from an array of key/index column
|
||||
* specifiers. This is usually an identity function but if a
|
||||
* key/index uses a column prefix specification, this function
|
||||
* extracts just the name.
|
||||
*
|
||||
* @param $fields
|
||||
* An array of key/index column specifiers.
|
||||
* @return
|
||||
* An array of field names.
|
||||
*/
|
||||
function db_field_names($fields) {
|
||||
$ret = array();
|
||||
foreach ($fields as $field) {
|
||||
if (is_array($field)) {
|
||||
$ret[] = $field[0];
|
||||
}
|
||||
else {
|
||||
$ret[] = $field;
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @} End of "defgroup schemaapi".
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,409 @@
|
|||
<?php
|
||||
|
||||
// $Id$
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Functions shared between mysql and mysqli database engines.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup schemaapi
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Generate SQL to create a new table from a Drupal schema definition.
|
||||
*
|
||||
* @param $table
|
||||
* A valid Drupal table definition array.
|
||||
* @return
|
||||
* An array of SQL statements to create the table.
|
||||
*/
|
||||
function db_create_table_sql($table) {
|
||||
|
||||
if (empty($table['mysql_suffix'])) {
|
||||
$table['mysql_suffix'] = "/*!40100 DEFAULT CHARACTER SET UTF8 */";
|
||||
}
|
||||
|
||||
$sql = "CREATE TABLE {". $table['name'] ."} (\n";
|
||||
|
||||
// Add the SQL statement for each field.
|
||||
foreach ($table['fields'] as $name => $field) {
|
||||
$sql .= _db_create_field_sql($name, _db_process_field($field)) .", \n";
|
||||
}
|
||||
|
||||
// Process keys & indexes.
|
||||
if (!empty($table['primary key'])) {
|
||||
$sql .= " PRIMARY KEY (". _db_create_key_sql($table['primary key']) ."), \n";
|
||||
}
|
||||
if (!empty($table['unique keys'])) {
|
||||
foreach ($table['unique keys'] as $key => $fields)
|
||||
$sql .= " UNIQUE KEY $key (". _db_create_key_sql($fields) ."), \n";
|
||||
}
|
||||
if (!empty($table['indexes'])) {
|
||||
foreach ($table['indexes'] as $index => $fields)
|
||||
$sql .= " INDEX $index (". _db_create_key_sql($fields) ."), \n";
|
||||
}
|
||||
|
||||
// Remove the last comma and space.
|
||||
$sql = substr($sql, 0, -3) ."\n) ";
|
||||
|
||||
$sql .= $table['mysql_suffix'];
|
||||
|
||||
return array($sql);
|
||||
}
|
||||
|
||||
function _db_create_key_sql($fields) {
|
||||
$ret = array();
|
||||
foreach ($fields as $field) {
|
||||
if (is_array($field)) {
|
||||
$ret[] = $field[0] .'('. $field[1] .')';
|
||||
}
|
||||
else {
|
||||
$ret[] = $field;
|
||||
}
|
||||
}
|
||||
return implode(', ', $ret);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set database-engine specific properties for a field.
|
||||
*
|
||||
* @param $field
|
||||
* A field description array, as specified in the schema documentation.
|
||||
*/
|
||||
function _db_process_field($field) {
|
||||
|
||||
if (!isset($field['size'])) {
|
||||
$field['size'] = 'normal';
|
||||
}
|
||||
|
||||
// Set the correct database-engine specific datatype.
|
||||
if (!isset($field['mysql_type'])) {
|
||||
$map = db_type_map();
|
||||
$field['mysql_type'] = $map[$field['type'] .':'. $field['size']];
|
||||
}
|
||||
|
||||
if ($field['type'] == 'serial') {
|
||||
$field['auto_increment'] = TRUE;
|
||||
}
|
||||
|
||||
return $field;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an SQL string for a field to be used in table creation or alteration.
|
||||
*
|
||||
* Before passing a field out of a schema definition into this function it has
|
||||
* to be processed by _db_process_field().
|
||||
*
|
||||
* @param $name
|
||||
* Name of the field.
|
||||
* @param $spec
|
||||
* The field specification, as per the schema data structure format.
|
||||
*/
|
||||
function _db_create_field_sql($name, $spec) {
|
||||
$sql = "`". $name ."` ". $spec['mysql_type'];
|
||||
|
||||
if (isset($spec['length'])) {
|
||||
$sql .= '('. $spec['length'] .')';
|
||||
}
|
||||
elseif (isset($spec['precision']) && isset($spec['scale'])) {
|
||||
$sql .= '('. $spec['scale'] .', '. $spec['precision'] .')';
|
||||
}
|
||||
|
||||
if (!empty($spec['unsigned'])) {
|
||||
$sql .= ' unsigned';
|
||||
}
|
||||
|
||||
if (!empty($spec['not null'])) {
|
||||
$sql .= ' NOT NULL';
|
||||
}
|
||||
|
||||
if (!empty($spec['auto_increment'])) {
|
||||
$sql .= ' auto_increment';
|
||||
}
|
||||
|
||||
if (isset($spec['default'])) {
|
||||
if (is_string($spec['default'])) {
|
||||
$spec['default'] = "'". $spec['default'] ."'";
|
||||
}
|
||||
$sql .= ' DEFAULT '. $spec['default'];
|
||||
}
|
||||
|
||||
if (empty($spec['not null']) && !isset($spec['default'])) {
|
||||
$sql .= ' DEFAULT NULL';
|
||||
}
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* This maps a generic data type in combination with its data size
|
||||
* to the engine-specific data type.
|
||||
*/
|
||||
function db_type_map() {
|
||||
// Put :normal last so it gets preserved by array_flip. This makes
|
||||
// it much easier for modules (such as schema.module) to map
|
||||
// database types back into schema types.
|
||||
$map = array(
|
||||
'varchar:normal' => 'VARCHAR',
|
||||
|
||||
'text:tiny' => 'SMALLTEXT',
|
||||
'text:small' => 'SMALLTEXT',
|
||||
'text:medium' => 'MEDIUMTEXT',
|
||||
'text:big' => 'LONGTEXT',
|
||||
'text:normal' => 'TEXT',
|
||||
|
||||
'serial:tiny' => 'TINYINT',
|
||||
'serial:small' => 'SMALLINT',
|
||||
'serial:medium' => 'MEDIUMINT',
|
||||
'serial:big' => 'BIGINT',
|
||||
'serial:normal' => 'INT',
|
||||
|
||||
'int:tiny' => 'TINYINT',
|
||||
'int:small' => 'SMALLINT',
|
||||
'int:medium' => 'MEDIUMINT',
|
||||
'int:big' => 'BIGINT',
|
||||
'int:normal' => 'INT',
|
||||
|
||||
'float:tiny' => 'FLOAT',
|
||||
'float:small' => 'FLOAT',
|
||||
'float:medium' => 'FLOAT',
|
||||
'float:big' => 'DOUBLE',
|
||||
'float:normal' => 'FLOAT',
|
||||
|
||||
'numeric:normal' => 'NUMERIC',
|
||||
|
||||
'blob:big' => 'LONGBLOB',
|
||||
'blob:normal' => 'BLOB',
|
||||
|
||||
'datetime:normal' => 'DATETIME',
|
||||
);
|
||||
return $map;
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop a table.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be dropped.
|
||||
*/
|
||||
function db_drop_table(&$ret, $table) {
|
||||
$ret[] = update_sql('DROP TABLE {'. $table .'}');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new field to a table.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* Name of the table to be altered.
|
||||
* @param $field
|
||||
* Name of the field to be added.
|
||||
* @param $spec
|
||||
* The field specification array, as taken from a schema definition
|
||||
*/
|
||||
function db_add_field(&$ret, $table, $field, $spec) {
|
||||
$query = 'ALTER TABLE {'. $table .'} ADD '. $field .' ';
|
||||
$query .= _db_create_field_sql($field, _db_process_field($spec));
|
||||
$ret[] = update_sql($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop a field.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $field
|
||||
* The field to be dropped.
|
||||
*/
|
||||
function db_drop_field(&$ret, $table, $field) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} DROP '. $field);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the default value for a field.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $field
|
||||
* The field to be altered.
|
||||
* @param $default
|
||||
* Default value to be set. NULL for 'default NULL'.
|
||||
*/
|
||||
function db_field_set_default(&$ret, $table, $field, $default) {
|
||||
if ($default == NULL) {
|
||||
$default = 'NULL';
|
||||
}
|
||||
else {
|
||||
$default = is_string($default) ? "'$default'" : $default;
|
||||
}
|
||||
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} ALTER COLUMN '. $field .' SET DEFAULT '. $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a field to have no default value.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $field
|
||||
* The field to be altered.
|
||||
*/
|
||||
function db_field_set_no_default(&$ret, $table, $field) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} ALTER COLUMN '. $field .' DROP DEFAULT');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a primary key.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $fields
|
||||
* Fields for the primary key.
|
||||
*/
|
||||
function db_add_primary_key(&$ret, $table, $fields) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} ADD PRIMARY KEY ('.
|
||||
_db_create_key_sql($fields) .')');
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop the primary key.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
*/
|
||||
function db_drop_primary_key(&$ret, $table) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} DROP PRIMARY KEY');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a unique key.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $name
|
||||
* The name of the key.
|
||||
* @param $fields
|
||||
* An array of field names.
|
||||
*/
|
||||
function db_add_unique_key(&$ret, $table, $name, $fields) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} ADD UNIQUE KEY '.
|
||||
$name .' ('. _db_create_key_sql($fields) .')');
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop a unique key.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $name
|
||||
* The name of the key.
|
||||
*/
|
||||
function db_drop_unique_key(&$ret, $table, $name) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} DROP KEY '. $name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an index.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $name
|
||||
* The name of the index.
|
||||
* @param $fields
|
||||
* An array of field names.
|
||||
*/
|
||||
function db_add_index(&$ret, $table, $name, $fields) {
|
||||
$query = 'ALTER TABLE {'. $table .'} ADD INDEX '. $name .' (';
|
||||
|
||||
foreach ($fields as $current) {
|
||||
$query .= $current .', ';
|
||||
}
|
||||
|
||||
// Remove the last comma, add a closing bracket.
|
||||
$query = substr($query, 0, -2) .')';
|
||||
|
||||
$ret[] = update_sql($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop an index.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $name
|
||||
* The name of the index.
|
||||
*/
|
||||
function db_drop_index(&$ret, $table, $name) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} DROP INDEX '. $name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Change a field definition.
|
||||
*
|
||||
* Remember that changing a field definition involves adding a new field
|
||||
* and dropping an old one. This means that any indices, primary keys and
|
||||
* sequences from serial-type fields are dropped and might need to be
|
||||
* recreated.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* Name of the table.
|
||||
* @param $field
|
||||
* Name of the field to change.
|
||||
* @param $field_new
|
||||
* New name for the field (set to the same as $field if you don't want to change the name).
|
||||
* @param $spec
|
||||
* The field specification for the new field.
|
||||
*/
|
||||
function db_change_field(&$ret, $table, $field, $field_new, $spec) {
|
||||
$ret[] = update_sql("ALTER TABLE {". $table ."} CHANGE $field ".
|
||||
_db_create_field_sql($field_new, _db_process_field($spec)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a field definition to match its schema. If the field is
|
||||
* involved in any keys or indexes, recreate them.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* Name of the table.
|
||||
* @param $field
|
||||
* Name of the field to update.
|
||||
*/
|
||||
function db_update_field(&$ret, $table, $field) {
|
||||
$spec = drupal_get_schema($table);
|
||||
db_change_field($ret, $table, $field, $field, $spec['fields'][$field]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @} End of "ingroup schemaapi".
|
||||
*/
|
||||
|
||||
?>
|
|
@ -11,6 +11,8 @@
|
|||
* @{
|
||||
*/
|
||||
|
||||
// Include functions shared between mysql and mysqli.
|
||||
require_once './includes/database.mysql-common.inc';
|
||||
|
||||
/**
|
||||
* Report database status.
|
||||
|
@ -437,5 +439,3 @@ function db_distinct_field($table, $field, $query) {
|
|||
/**
|
||||
* @} End of "ingroup database".
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
* @{
|
||||
*/
|
||||
|
||||
// Include functions shared between mysql and mysqli.
|
||||
require_once './includes/database.mysql-common.inc';
|
||||
|
||||
/**
|
||||
* Report database status.
|
||||
*/
|
||||
|
|
|
@ -436,4 +436,422 @@ function db_distinct_field($table, $field, $query) {
|
|||
* @} End of "ingroup database".
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup schemaapi
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* This maps a generic data type in combination with its data size
|
||||
* to the engine-specific data type.
|
||||
*/
|
||||
function db_type_map() {
|
||||
// Put :normal last so it gets preserved by array_flip. This makes
|
||||
// it much easier for modules (such as schema.module) to map
|
||||
// database types back into schema types.
|
||||
$map = array(
|
||||
'varchar:normal' => 'varchar',
|
||||
|
||||
'text:tiny' => 'text',
|
||||
'text:small' => 'text',
|
||||
'text:medium' => 'text',
|
||||
'text:big' => 'text',
|
||||
'text:normal' => 'text',
|
||||
|
||||
'int:tiny' => 'smallint',
|
||||
'int:small' => 'smallint',
|
||||
'int:medium' => 'int',
|
||||
'int:big' => 'bigint',
|
||||
'int:normal' => 'int',
|
||||
|
||||
'float:tiny' => 'real',
|
||||
'float:small' => 'real',
|
||||
'float:medium' => 'real',
|
||||
'float:big' => 'double precision',
|
||||
'float:normal' => 'real',
|
||||
|
||||
'numeric:normal' => 'numeric',
|
||||
|
||||
'blob:big' => 'bytea',
|
||||
'blob:normal' => 'bytea',
|
||||
|
||||
'datetime:normal' => 'timestamp',
|
||||
|
||||
'serial:tiny' => 'serial',
|
||||
'serial:small' => 'serial',
|
||||
'serial:medium' => 'serial',
|
||||
'serial:big' => 'bigserial',
|
||||
'serial:normal' => 'serial',
|
||||
);
|
||||
return $map;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate SQL to create a new table from a Drupal schema definition.
|
||||
*
|
||||
* @param $table
|
||||
* A valid Drupal table definition array.
|
||||
* @return
|
||||
* An array of SQL statements to create the table.
|
||||
*/
|
||||
function db_create_table_sql($table) {
|
||||
$sql_fields = array();
|
||||
foreach ($table['fields'] as $name => $field) {
|
||||
$sql_fields[] = _db_create_field_sql($name, _db_process_field($field));
|
||||
}
|
||||
|
||||
$sql_keys = array();
|
||||
if (isset($table['primary key']) && is_array($table['primary key'])) {
|
||||
$sql_keys[] = 'PRIMARY KEY ('. implode(', ', $table['primary key']) .')';
|
||||
}
|
||||
if (isset($table['unique keys']) && is_array($table['unique keys'])) {
|
||||
foreach ($table['unique keys'] as $keyname => $key) {
|
||||
$sql_keys[] = 'CONSTRAINT {'. $table['name'] .'}_'. $keyname .'_key UNIQUE ('. implode(', ', $key) .')';
|
||||
}
|
||||
}
|
||||
|
||||
$sql = "CREATE TABLE {". $table['name'] ."} (\n\t";
|
||||
$sql .= implode(",\n\t", $sql_fields);
|
||||
if (count($sql_keys) > 0) {
|
||||
$sql .= ",\n\t";
|
||||
}
|
||||
$sql .= implode(",\n\t", $sql_keys);
|
||||
$sql .= "\n)";
|
||||
$statements[] = $sql;
|
||||
|
||||
if (isset($table['indexes']) && is_array($table['indexes'])) {
|
||||
foreach ($table['indexes'] as $keyname => $key) {
|
||||
$statements[] = _db_create_index_sql($table['name'], $keyname, $key);
|
||||
}
|
||||
}
|
||||
|
||||
return $statements;
|
||||
}
|
||||
|
||||
function _db_create_index_sql($table, $name, $fields) {
|
||||
$query = 'CREATE INDEX {'. $table .'}_'. $name .'_idx ON {'. $table .'} (';
|
||||
$query .= _db_create_key_sql($fields) .')';
|
||||
return $query;
|
||||
}
|
||||
|
||||
function _db_create_key_sql($fields) {
|
||||
$ret = array();
|
||||
foreach ($fields as $field) {
|
||||
if (is_array($field)) {
|
||||
$ret[] = 'substr('. $field[0] .', 1, '. $field[1] .')';
|
||||
}
|
||||
else {
|
||||
$ret[] = $field;
|
||||
}
|
||||
}
|
||||
return implode(', ', $ret);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set database-engine specific properties for a field.
|
||||
*
|
||||
* @param $field
|
||||
* A field description array, as specified in the schema documentation.
|
||||
*/
|
||||
function _db_process_field($field) {
|
||||
if (!isset($field['size'])) {
|
||||
$field['size'] = 'normal';
|
||||
}
|
||||
// Set the correct database-engine specific datatype.
|
||||
if (!isset($field['pgsql_type'])) {
|
||||
$map = db_type_map();
|
||||
$field['pgsql_type'] = $map[$field['type'] .':'. $field['size']];
|
||||
}
|
||||
if ($field['type'] == 'serial') {
|
||||
unset($field['not null']);
|
||||
}
|
||||
return $field;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an SQL string for a field to be used in table creation or alteration.
|
||||
*
|
||||
* Before passing a field out of a schema definition into this function it has
|
||||
* to be processed by _db_process_field().
|
||||
*
|
||||
* @param $name
|
||||
* Name of the field.
|
||||
* @param $spec
|
||||
* The field specification, as per the schema data structure format.
|
||||
*/
|
||||
function _db_create_field_sql($name, $spec) {
|
||||
$sql = $name .' '. $spec['pgsql_type'];
|
||||
|
||||
if ($spec['type'] == 'serial') {
|
||||
unset($spec['not null']);
|
||||
}
|
||||
if (!empty($spec['unsigned'])) {
|
||||
if ($spec['type'] == 'serial') {
|
||||
$sql .= " CHECK ($name >= 0)";
|
||||
}
|
||||
else {
|
||||
$sql .= '_unsigned';
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($spec['length'])) {
|
||||
$sql .= '('. $spec['length'] .')';
|
||||
}
|
||||
elseif (isset($spec['precision']) && isset($spec['scale'])) {
|
||||
$sql .= '('. $spec['scale'] .', '. $spec['precision'] .')';
|
||||
}
|
||||
|
||||
if (isset($spec['not null']) && $spec['not null']) {
|
||||
$sql .= ' NOT NULL';
|
||||
}
|
||||
if (isset($spec['default'])) {
|
||||
$default = is_string($spec['default']) ? "'". $spec['default'] ."'" : $spec['default'];
|
||||
$sql .= " default $default";
|
||||
}
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop a table.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be dropped.
|
||||
*/
|
||||
function db_drop_table(&$ret, $table) {
|
||||
$ret[] = update_sql('DROP TABLE {'. $table .'}');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new field to a table.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* Name of the table to be altered.
|
||||
* @param $field
|
||||
* Name of the field to be added.
|
||||
* @param $spec
|
||||
* The field specification array, as taken from a schema definition
|
||||
*/
|
||||
function db_add_field(&$ret, $table, $field, $spec) {
|
||||
$query = 'ALTER TABLE {'. $table .'} ADD COLUMN ';
|
||||
$query .= _db_create_field_sql($field, _db_process_field($spec));
|
||||
$ret[] = update_sql($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop a field.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $field
|
||||
* The field to be dropped.
|
||||
*/
|
||||
function db_drop_field(&$ret, $table, $field) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} DROP COLUMN '. $field);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the default value for a field.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $field
|
||||
* The field to be altered.
|
||||
* @param $default
|
||||
* Default value to be set. NULL for 'default NULL'.
|
||||
*/
|
||||
function db_field_set_default(&$ret, $table, $field, $default) {
|
||||
if ($default == NULL) {
|
||||
$default = 'NULL';
|
||||
}
|
||||
else {
|
||||
$default = is_string($default) ? "'$default'" : $default;
|
||||
}
|
||||
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} ALTER COLUMN '. $field .' SET DEFAULT '. $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a field to have no default value.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $field
|
||||
* The field to be altered.
|
||||
*/
|
||||
function db_field_set_no_default(&$ret, $table, $field) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} ALTER COLUMN '. $field .' DROP DEFAULT');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a primary key.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $fields
|
||||
* Fields for the primary key.
|
||||
*/
|
||||
function db_add_primary_key(&$ret, $table, $fields) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} ADD PRIMARY KEY ('.
|
||||
implode(',', $fields) .')');
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop the primary key.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
*/
|
||||
function db_drop_primary_key(&$ret, $table) {
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} DROP CONSTRAINT {'. $table .'}_pkey');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a unique key.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $name
|
||||
* The name of the key.
|
||||
* @param $fields
|
||||
* An array of field names.
|
||||
*/
|
||||
function db_add_unique_key(&$ret, $table, $name, $fields) {
|
||||
$name = '{'. $table .'}_'. $name .'_key';
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} ADD CONSTRAINT '.
|
||||
$name .' UNIQUE ('. implode(',', $fields) .')');
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop a unique key.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $name
|
||||
* The name of the key.
|
||||
*/
|
||||
function db_drop_unique_key(&$ret, $table, $name) {
|
||||
$name = '{'. $table .'}_'. $name .'_key';
|
||||
$ret[] = update_sql('ALTER TABLE {'. $table .'} DROP CONSTRAINT '. $name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an index.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $name
|
||||
* The name of the index.
|
||||
* @param $fields
|
||||
* An array of field names.
|
||||
*/
|
||||
function db_add_index(&$ret, $table, $name, $fields) {
|
||||
$ret[] = update_sql(_db_create_index_sql($table, $name, $fields));
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop an index.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* The table to be altered.
|
||||
* @param $name
|
||||
* The name of the index.
|
||||
*/
|
||||
function db_drop_index(&$ret, $table, $name) {
|
||||
$name = '{'. $table .'}_'. $name .'_idx';
|
||||
$ret[] = update_sql('DROP INDEX '. $name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Change a field definition.
|
||||
*
|
||||
* Remember that changing a field definition involves adding a new field
|
||||
* and dropping an old one. This means that any indices, primary keys and
|
||||
* sequences from serial-type fields are dropped and might need to be
|
||||
* recreated.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* Name of the table.
|
||||
* @param $field
|
||||
* Name of the field to change.
|
||||
* @param $field_new
|
||||
* New name for the field (set to the same as $field if you don't want to change the name).
|
||||
* @param $spec
|
||||
* The field specification for the new field.
|
||||
*/
|
||||
function db_change_field(&$ret, $table, $field, $field_new, $spec) {
|
||||
$ret[] = update_sql("ALTER TABLE {". $table ."} RENAME $field TO ". $field ."_old");
|
||||
$not_null = isset($spec['not null']) ? $spec['not null'] : FALSE;
|
||||
unset($spec['not null']);
|
||||
db_add_field($ret, $table, "$field_new", $spec);
|
||||
$ret[] = update_sql("UPDATE {". $table ."} SET $field_new = ". $field ."_old");
|
||||
if ($not_null) {
|
||||
$ret[] = update_sql("ALTER TABLE {". $table ."} ALTER $field_new SET NOT NULL");
|
||||
}
|
||||
db_drop_field($ret, $table, $field .'_old');
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a field definition to match its schema. If the field is
|
||||
* involved in any keys or indexes, recreate them if necessary.
|
||||
*
|
||||
* @param $ret
|
||||
* Array to which query results will be added.
|
||||
* @param $table
|
||||
* Name of the table.
|
||||
* @param $field
|
||||
* Name of the field to update.
|
||||
*/
|
||||
function db_update_field(&$ret, $table, $field) {
|
||||
$spec = drupal_get_schema($table);
|
||||
|
||||
db_change_field($ret, $table, $field, $field, $spec['fields'][$field]);
|
||||
if (isset($spec['primary key'])) {
|
||||
if (array_search($field, db_field_names($spec['primary key'])) !== FALSE) {
|
||||
db_add_primary_key($ret, $table, $spec['primary key']);
|
||||
}
|
||||
}
|
||||
if (isset($spec['unique keys'])) {
|
||||
foreach ($spec['unique keys'] as $name => $fields) {
|
||||
if (array_search($field, db_field_names($fields)) !== FALSE) {
|
||||
db_add_unique_key($ret, $table, $fields);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset($spec['indexes'])) {
|
||||
foreach ($spec['indexes'] as $name => $fields) {
|
||||
if (array_search($field, db_field_names($fields)) !== FALSE) {
|
||||
db_add_index($ret, $table, $fields);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @} End of "ingroup schemaapi".
|
||||
*/
|
||||
|
||||
|
|
|
@ -189,9 +189,42 @@ function module_load_install($module) {
|
|||
// Make sure the installation API is available
|
||||
include_once './includes/install.inc';
|
||||
|
||||
$install_file = './'. drupal_get_path('module', $module) .'/'. $module .'.install';
|
||||
if (is_file($install_file)) {
|
||||
include_once $install_file;
|
||||
module_load_include('install', $module);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a module include file.
|
||||
*
|
||||
* @param $type
|
||||
* The include file's type (file extension).
|
||||
* @param $module
|
||||
* The module to which the include file belongs.
|
||||
* @param $name
|
||||
* Optionally, specify the file name. If not set, the module's name is used.
|
||||
*/
|
||||
function module_load_include($type, $module, $name = NULL) {
|
||||
if (empty($name)) {
|
||||
$name = $module;
|
||||
}
|
||||
|
||||
$file = './'. drupal_get_path('module', $module) ."/$name.$type";
|
||||
|
||||
if (is_file($file)) {
|
||||
require_once $file;
|
||||
}
|
||||
else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load an include file for each of the modules that have been enabled in
|
||||
* the system table.
|
||||
*/
|
||||
function module_load_all_includes($type, $name = NULL) {
|
||||
$modules = module_list();
|
||||
foreach ($modules as $module) {
|
||||
module_load_include($type, $module, $name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,126 +5,17 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function aggregator_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {aggregator_category} (
|
||||
cid int NOT NULL auto_increment,
|
||||
title varchar(255) NOT NULL default '',
|
||||
description longtext NOT NULL,
|
||||
block tinyint NOT NULL default '0',
|
||||
PRIMARY KEY (cid),
|
||||
UNIQUE KEY title (title)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {aggregator_category_feed} (
|
||||
fid int NOT NULL default '0',
|
||||
cid int NOT NULL default '0',
|
||||
PRIMARY KEY (fid,cid)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {aggregator_category_item} (
|
||||
iid int NOT NULL default '0',
|
||||
cid int NOT NULL default '0',
|
||||
PRIMARY KEY (iid,cid)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {aggregator_feed} (
|
||||
fid int NOT NULL auto_increment,
|
||||
title varchar(255) NOT NULL default '',
|
||||
url varchar(255) NOT NULL default '',
|
||||
refresh int NOT NULL default '0',
|
||||
checked int NOT NULL default '0',
|
||||
link varchar(255) NOT NULL default '',
|
||||
description longtext NOT NULL,
|
||||
image longtext NOT NULL,
|
||||
etag varchar(255) NOT NULL default '',
|
||||
modified int NOT NULL default '0',
|
||||
block tinyint NOT NULL default '0',
|
||||
PRIMARY KEY (fid),
|
||||
UNIQUE KEY link (url),
|
||||
UNIQUE KEY title (title)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {aggregator_item} (
|
||||
iid int NOT NULL auto_increment,
|
||||
fid int NOT NULL default '0',
|
||||
title varchar(255) NOT NULL default '',
|
||||
link varchar(255) NOT NULL default '',
|
||||
author varchar(255) NOT NULL default '',
|
||||
description longtext NOT NULL,
|
||||
timestamp int default NULL,
|
||||
guid varchar(255),
|
||||
PRIMARY KEY (iid),
|
||||
KEY fid (fid)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
break;
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {aggregator_category} (
|
||||
cid serial,
|
||||
title varchar(255) NOT NULL default '',
|
||||
description text NOT NULL,
|
||||
block smallint NOT NULL default '0',
|
||||
PRIMARY KEY (cid),
|
||||
UNIQUE (title)
|
||||
)");
|
||||
|
||||
db_query("CREATE TABLE {aggregator_category_feed} (
|
||||
fid int NOT NULL default '0',
|
||||
cid int NOT NULL default '0',
|
||||
PRIMARY KEY (fid,cid)
|
||||
)");
|
||||
|
||||
db_query("CREATE TABLE {aggregator_category_item} (
|
||||
iid int NOT NULL default '0',
|
||||
cid int NOT NULL default '0',
|
||||
PRIMARY KEY (iid,cid)
|
||||
)");
|
||||
|
||||
db_query("CREATE TABLE {aggregator_feed} (
|
||||
fid serial,
|
||||
title varchar(255) NOT NULL default '',
|
||||
url varchar(255) NOT NULL default '',
|
||||
refresh int NOT NULL default '0',
|
||||
checked int NOT NULL default '0',
|
||||
link varchar(255) NOT NULL default '',
|
||||
description text NOT NULL default '',
|
||||
image text NOT NULL default '',
|
||||
etag varchar(255) NOT NULL default '',
|
||||
modified int NOT NULL default '0',
|
||||
block smallint NOT NULL default '0',
|
||||
PRIMARY KEY (fid),
|
||||
UNIQUE (url),
|
||||
UNIQUE (title)
|
||||
)");
|
||||
|
||||
db_query("CREATE TABLE {aggregator_item} (
|
||||
iid serial,
|
||||
fid int NOT NULL default '0',
|
||||
title varchar(255) NOT NULL default '',
|
||||
link varchar(255) NOT NULL default '',
|
||||
author varchar(255) NOT NULL default '',
|
||||
description text NOT NULL,
|
||||
timestamp int default NULL,
|
||||
guid varchar(255),
|
||||
PRIMARY KEY (iid)
|
||||
)");
|
||||
db_query("CREATE INDEX {aggregator_item}_fid_idx ON {aggregator_item} (fid)");
|
||||
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('aggregator');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function aggregator_uninstall() {
|
||||
db_query('DROP TABLE {aggregator_category}');
|
||||
db_query('DROP TABLE {aggregator_category_feed}');
|
||||
db_query('DROP TABLE {aggregator_category_item}');
|
||||
db_query('DROP TABLE {aggregator_feed}');
|
||||
db_query('DROP TABLE {aggregator_item}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('aggregator');
|
||||
|
||||
variable_del('aggregator_allowed_html_tags');
|
||||
variable_del('aggregator_summary_items');
|
||||
variable_del('aggregator_clear');
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function aggregator_schema() {
|
||||
$schema['aggregator_category'] = array(
|
||||
'fields' => array(
|
||||
'cid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'title' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'description' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'block' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'primary key' => array('cid'),
|
||||
'unique keys' => array('title' => array('title')),
|
||||
);
|
||||
|
||||
$schema['aggregator_category_feed'] = array(
|
||||
'fields' => array(
|
||||
'fid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'cid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('fid', 'cid'),
|
||||
);
|
||||
|
||||
$schema['aggregator_category_item'] = array(
|
||||
'fields' => array(
|
||||
'iid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'cid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('iid', 'cid'),
|
||||
);
|
||||
|
||||
$schema['aggregator_feed'] = array(
|
||||
'fields' => array(
|
||||
'fid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'title' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'url' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'refresh' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'checked' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'link' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'description' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'image' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'etag' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'modified' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'block' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'unique keys' => array(
|
||||
'url' => array('url'),
|
||||
'title' => array('title')
|
||||
),
|
||||
'primary key' => array('fid'),
|
||||
);
|
||||
|
||||
$schema['aggregator_item'] = array(
|
||||
'fields' => array(
|
||||
'iid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'fid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'title' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'link' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'author' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'description' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'timestamp' => array('type' => 'int', 'not null' => FALSE),
|
||||
'guid' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE)
|
||||
),
|
||||
'indexes' => array('fid' => array('fid')),
|
||||
'primary key' => array('iid'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function block_schema() {
|
||||
$schema['blocks'] = array(
|
||||
'fields' => array(
|
||||
'bid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'module' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),
|
||||
'delta' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '0'),
|
||||
'theme' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'status' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'region' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => 'left'),
|
||||
'custom' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'throttle' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'visibility' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'pages' => array('type' => 'text', 'not null' => TRUE),
|
||||
'title' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => '')
|
||||
),
|
||||
'primary key' => array('bid'),
|
||||
);
|
||||
|
||||
$schema['blocks_roles'] = array(
|
||||
'fields' => array(
|
||||
'module' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE),
|
||||
'delta' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE),
|
||||
'rid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE)
|
||||
),
|
||||
'primary key' => array(
|
||||
'module',
|
||||
'delta',
|
||||
'rid'
|
||||
),
|
||||
);
|
||||
|
||||
$schema['boxes'] = array(
|
||||
'fields' => array(
|
||||
'bid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'body' => array('type' => 'text', 'not null' => FALSE, 'size' => 'big'),
|
||||
'info' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'format' => array('type' => 'int', 'size' => 'small', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'unique keys' => array('info' => array('info')),
|
||||
'primary key' => array('bid'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -5,36 +5,14 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function book_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {book} (
|
||||
vid int unsigned NOT NULL default '0',
|
||||
nid int unsigned NOT NULL default '0',
|
||||
parent int NOT NULL default '0',
|
||||
weight tinyint NOT NULL default '0',
|
||||
PRIMARY KEY (vid),
|
||||
KEY nid (nid),
|
||||
KEY parent (parent)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {book} (
|
||||
vid int_unsigned NOT NULL default '0',
|
||||
nid int_unsigned NOT NULL default '0',
|
||||
parent int NOT NULL default '0',
|
||||
weight smallint NOT NULL default '0',
|
||||
PRIMARY KEY (vid)
|
||||
)");
|
||||
db_query("CREATE INDEX {book}_nid_idx ON {book} (nid)");
|
||||
db_query("CREATE INDEX {book}_parent_idx ON {book} (parent)");
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('book');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function book_uninstall() {
|
||||
db_query('DROP TABLE {book}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('book');
|
||||
}
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function book_schema() {
|
||||
$schema['book'] = array(
|
||||
'fields' => array(
|
||||
'vid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'parent' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'indexes' => array(
|
||||
'nid' => array('nid'),
|
||||
'parent' => array('parent')
|
||||
),
|
||||
'primary key' => array('vid'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function comment_schema() {
|
||||
$schema['comments'] = array(
|
||||
'fields' => array(
|
||||
'cid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'pid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'nid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'uid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'subject' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),
|
||||
'comment' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'hostname' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'timestamp' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'score' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'medium'),
|
||||
'status' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'format' => array('type' => 'int', 'size' => 'small', 'not null' => TRUE, 'default' => 0),
|
||||
'thread' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE),
|
||||
'users' => array('type' => 'text', 'not null' => FALSE, 'size' => 'big'),
|
||||
'name' => array('type' => 'varchar', 'length' => 60, 'not null' => FALSE),
|
||||
'mail' => array('type' => 'varchar', 'length' => 64, 'not null' => FALSE),
|
||||
'homepage' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE)
|
||||
),
|
||||
'indexes' => array(
|
||||
'nid' => array('nid'),
|
||||
'status' => array('status')
|
||||
),
|
||||
'primary key' => array('cid'),
|
||||
);
|
||||
|
||||
$schema['node_comment_statistics'] = array(
|
||||
'fields' => array(
|
||||
'nid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'last_comment_timestamp' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'last_comment_name' => array('type' => 'varchar', 'length' => 60, 'not null' => FALSE),
|
||||
'last_comment_uid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'comment_count' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'indexes' => array('node_comment_timestamp' => array('last_comment_timestamp')),
|
||||
'primary key' => array('nid'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -5,40 +5,17 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function contact_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {contact} (
|
||||
cid int unsigned NOT NULL auto_increment,
|
||||
category varchar(255) NOT NULL default '',
|
||||
recipients longtext NOT NULL,
|
||||
reply longtext NOT NULL,
|
||||
weight tinyint NOT NULL default '0',
|
||||
selected tinyint NOT NULL default '0',
|
||||
PRIMARY KEY (cid),
|
||||
UNIQUE KEY category (category)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {contact} (
|
||||
cid serial CHECK (cid >= 0),
|
||||
category varchar(255) NOT NULL default '',
|
||||
recipients text NOT NULL default '',
|
||||
reply text NOT NULL default '',
|
||||
weight smallint NOT NULL default '0',
|
||||
selected smallint NOT NULL default '0',
|
||||
PRIMARY KEY (cid),
|
||||
UNIQUE (category)
|
||||
)");
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('contact');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function contact_uninstall() {
|
||||
db_query('DROP TABLE {contact}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('contact');
|
||||
|
||||
variable_del('contact_default_status');
|
||||
variable_del('contact_form_information');
|
||||
variable_del('contact_hourly_threshold');
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function contact_schema() {
|
||||
$schema['contact'] = array(
|
||||
'fields' => array(
|
||||
'cid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'category' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'recipients' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'reply' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'selected' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'unique keys' => array('category' => array('category')),
|
||||
'primary key' => array('cid'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -5,51 +5,14 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function dblog_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {watchdog} (
|
||||
wid int NOT NULL auto_increment,
|
||||
uid int NOT NULL default '0',
|
||||
type varchar(16) NOT NULL default '',
|
||||
message longtext NOT NULL,
|
||||
variables longtext NOT NULL,
|
||||
severity tinyint unsigned NOT NULL default '0',
|
||||
link varchar(255) NOT NULL default '',
|
||||
location text NOT NULL,
|
||||
referer varchar(128) NOT NULL default '',
|
||||
hostname varchar(128) NOT NULL default '',
|
||||
timestamp int NOT NULL default '0',
|
||||
PRIMARY KEY (wid),
|
||||
KEY (type)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {watchdog} (
|
||||
wid serial,
|
||||
uid int NOT NULL default '0',
|
||||
type varchar(16) NOT NULL default '',
|
||||
message text NOT NULL,
|
||||
variables text NOT NULL,
|
||||
severity smallint_unsigned NOT NULL default '0',
|
||||
link varchar(255) NOT NULL default '',
|
||||
location text NOT NULL default '',
|
||||
referer varchar(128) NOT NULL default '',
|
||||
hostname varchar(128) NOT NULL default '',
|
||||
timestamp int NOT NULL default '0',
|
||||
PRIMARY KEY (wid)
|
||||
)");
|
||||
db_query("CREATE INDEX {watchdog}_type_idx ON {watchdog} (type)");
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('dblog');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function dblog_uninstall() {
|
||||
db_query('DROP TABLE {watchdog}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('dblog');
|
||||
}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function dblog_schema() {
|
||||
$schema['watchdog'] = array(
|
||||
'fields' => array(
|
||||
'wid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'uid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'type' => array('type' => 'varchar', 'length' => 16, 'not null' => TRUE, 'default' => ''),
|
||||
'message' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'variables' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'severity' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'link' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'location' => array('type' => 'text', 'not null' => TRUE),
|
||||
'referer' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'hostname' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'timestamp' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('wid'),
|
||||
'indexes' => array('type' => array('type')),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -5,63 +5,17 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function drupal_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {client} (
|
||||
cid int unsigned NOT NULL auto_increment,
|
||||
link varchar(255) NOT NULL default '',
|
||||
name varchar(128) NOT NULL default '',
|
||||
mail varchar(128) NOT NULL default '',
|
||||
slogan longtext NOT NULL,
|
||||
mission longtext NOT NULL,
|
||||
users int NOT NULL default '0',
|
||||
nodes int NOT NULL default '0',
|
||||
version varchar(35) NOT NULL default'',
|
||||
created int NOT NULL default '0',
|
||||
changed int NOT NULL default '0',
|
||||
PRIMARY KEY (cid)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {client_system} (
|
||||
cid int NOT NULL default '0',
|
||||
name varchar(255) NOT NULL default '',
|
||||
type varchar(255) NOT NULL default '',
|
||||
PRIMARY KEY (cid,name)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {client} (
|
||||
cid serial CHECK (cid >= 0),
|
||||
link varchar(255) NOT NULL default '',
|
||||
name varchar(128) NOT NULL default '',
|
||||
mail varchar(128) NOT NULL default '',
|
||||
slogan text NOT NULL,
|
||||
mission text NOT NULL,
|
||||
users int NOT NULL default '0',
|
||||
nodes int NOT NULL default '0',
|
||||
version varchar(35) NOT NULL default'',
|
||||
created int NOT NULL default '0',
|
||||
changed int NOT NULL default '0',
|
||||
PRIMARY KEY (cid)
|
||||
)");
|
||||
|
||||
db_query("CREATE TABLE {client_system} (
|
||||
cid int NOT NULL default '0',
|
||||
name varchar(255) NOT NULL default '',
|
||||
type varchar(255) NOT NULL default '',
|
||||
PRIMARY KEY (cid,name)
|
||||
)");
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('drupal');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function drupal_uninstall() {
|
||||
db_query('DROP TABLE {client}');
|
||||
db_query('DROP TABLE {client_system}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('drupal');
|
||||
|
||||
variable_del('drupal_authentication_service');
|
||||
variable_del('drupal_directory');
|
||||
variable_del('drupal_register');
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function drupal_schema() {
|
||||
$schema['client'] = array(
|
||||
'fields' => array(
|
||||
'cid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'link' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'name' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'mail' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'slogan' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'mission' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'users' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'nodes' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'version' => array('type' => 'varchar', 'length' => 35, 'not null' => TRUE, 'default' => ''),
|
||||
'created' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'changed' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('cid'),
|
||||
);
|
||||
|
||||
$schema['client_system'] = array(
|
||||
'fields' => array(
|
||||
'cid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'type' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '')
|
||||
),
|
||||
'primary key' => array('cid', 'name'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function filter_schema() {
|
||||
$schema['filters'] = array(
|
||||
'fields' => array(
|
||||
'fid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'format' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'module' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),
|
||||
'delta' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'primary key' => array('fid'),
|
||||
'indexes' => array('weight' => array('weight')),
|
||||
);
|
||||
$schema['filter_formats'] = array(
|
||||
'fields' => array(
|
||||
'format' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'roles' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'cache' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'unique keys' => array('name' => array('name')),
|
||||
'primary key' => array('format'),
|
||||
);
|
||||
|
||||
$schema['cache_filter'] = drupal_get_schema_unprocessed('system', 'cache');
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -5,36 +5,17 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function forum_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {forum} (
|
||||
nid int unsigned NOT NULL default '0',
|
||||
vid int unsigned NOT NULL default '0',
|
||||
tid int unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (vid),
|
||||
KEY nid (nid),
|
||||
KEY tid (tid)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {forum} (
|
||||
nid int_unsigned NOT NULL default '0',
|
||||
vid int_unsigned NOT NULL default '0',
|
||||
tid int_unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (vid)
|
||||
)");
|
||||
db_query("CREATE INDEX {forum}_nid_idx ON {forum} (nid)");
|
||||
db_query("CREATE INDEX {forum}_tid_idx ON {forum} (tid)");
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('forum');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function forum_uninstall() {
|
||||
db_query('DROP TABLE {forum}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('forum');
|
||||
|
||||
db_query("DELETE FROM {node} WHERE type = 'forum'");
|
||||
variable_del('forum_containers');
|
||||
variable_del('forum_nav_vocabulary');
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function forum_schema() {
|
||||
$schema['forum'] = 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)
|
||||
),
|
||||
'indexes' => array(
|
||||
'nid' => array('nid'),
|
||||
'tid' => array('tid')
|
||||
),
|
||||
'primary key' => array('vid'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -8,82 +8,10 @@ function locale_install() {
|
|||
// locales_source.source and locales_target.target are not used as binary
|
||||
// fields; non-MySQL database servers need to ensure the field type is text
|
||||
// and that LIKE produces a case-sensitive comparison.
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {languages} (
|
||||
language varchar(12) NOT NULL default '',
|
||||
name varchar(64) NOT NULL default '',
|
||||
native varchar(64) NOT NULL default '',
|
||||
direction int NOT NULL default '0',
|
||||
enabled int NOT NULL default '0',
|
||||
plurals int NOT NULL default '0',
|
||||
formula varchar(128) NOT NULL default '',
|
||||
domain varchar(128) NOT NULL default '',
|
||||
prefix varchar(128) NOT NULL default '',
|
||||
weight int NOT NULL default '0',
|
||||
PRIMARY KEY (language)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {locales_source} (
|
||||
lid int NOT NULL auto_increment,
|
||||
location varchar(255) NOT NULL default '',
|
||||
textgroup varchar(255) NOT NULL default '',
|
||||
source blob NOT NULL,
|
||||
PRIMARY KEY (lid),
|
||||
KEY source (source(30))
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
// Create tables.
|
||||
drupal_install_schema('locale');
|
||||
|
||||
db_query("CREATE TABLE {locales_target} (
|
||||
lid int NOT NULL default '0',
|
||||
translation blob NOT NULL,
|
||||
language varchar(12) NOT NULL default '',
|
||||
plid int NOT NULL default '0',
|
||||
plural int NOT NULL default '0',
|
||||
KEY lid (lid),
|
||||
KEY lang (language),
|
||||
KEY plid (plid),
|
||||
KEY plural (plural)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {languages} (
|
||||
language varchar(12) NOT NULL default '',
|
||||
name varchar(64) NOT NULL default '',
|
||||
native varchar(64) NOT NULL default '',
|
||||
direction int NOT NULL default '0',
|
||||
enabled int NOT NULL default '0',
|
||||
plurals int NOT NULL default '0',
|
||||
formula varchar(128) NOT NULL default '',
|
||||
domain varchar(128) NOT NULL default '',
|
||||
prefix varchar(128) NOT NULL default '',
|
||||
weight int NOT NULL default '0',
|
||||
PRIMARY KEY (language)
|
||||
)");
|
||||
|
||||
db_query("CREATE TABLE {locales_source} (
|
||||
lid serial,
|
||||
location varchar(255) NOT NULL default '',
|
||||
textgroup varchar(255) NOT NULL default '',
|
||||
source text NOT NULL,
|
||||
PRIMARY KEY (lid)
|
||||
)");
|
||||
|
||||
db_query("CREATE TABLE {locales_target} (
|
||||
lid int NOT NULL default '0',
|
||||
translation text NOT NULL,
|
||||
language varchar(12) NOT NULL default '',
|
||||
plid int NOT NULL default '0',
|
||||
plural int NOT NULL default '0'
|
||||
)");
|
||||
db_query("CREATE INDEX {locales_target}_lid_idx ON {locales_target} (lid)");
|
||||
db_query("CREATE INDEX {locales_target}_language_idx ON {locales_target} (language)");
|
||||
db_query("CREATE INDEX {locales_target}_plid_idx ON {locales_target} (plid)");
|
||||
db_query("CREATE INDEX {locales_target}_plural_idx ON {locales_target} (plural)");
|
||||
db_query("CREATE INDEX {locales_source}_source_idx ON {locales_source} (source)");
|
||||
break;
|
||||
}
|
||||
db_query("INSERT INTO {languages} (language, name, native, direction, enabled, weight) VALUES ('en', 'English', 'English', '0', '1', '0')");
|
||||
}
|
||||
|
||||
|
@ -171,7 +99,6 @@ function locale_update_6002() {
|
|||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function locale_uninstall() {
|
||||
db_query('DROP TABLE {languages}');
|
||||
db_query('DROP TABLE {locales_source}');
|
||||
db_query('DROP TABLE {locales_target}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('locale');
|
||||
}
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function locale_schema() {
|
||||
$schema['languages'] = array(
|
||||
'fields' => array(
|
||||
'language' => array('type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => ''),
|
||||
'name' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),
|
||||
'native' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),
|
||||
'direction' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'enabled' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'plurals' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'formula' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'domain' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'prefix' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('language'),
|
||||
);
|
||||
|
||||
$schema['locales_source'] = array(
|
||||
'fields' => array(
|
||||
'lid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'location' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'textgroup' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'source' => array('type' => 'text', 'mysql_type' => 'blob', 'not null' => TRUE),
|
||||
),
|
||||
'primary key' => array('lid'),
|
||||
'indexes' => array
|
||||
('source' => array(array('source', 30))),
|
||||
);
|
||||
|
||||
$schema['locales_target'] = array(
|
||||
'fields' => array(
|
||||
'lid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'translation' => array('type' => 'text', 'mysql_type' => 'blob', 'not null' => TRUE),
|
||||
'language' => array('type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => ''),
|
||||
'plid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'plural' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'indexes' => array(
|
||||
'language' => array('language'),
|
||||
'lid' => array('lid'),
|
||||
'plid' => array('plid'),
|
||||
'plural' => array('plural')
|
||||
),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -5,41 +5,15 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function menu_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {menu_custom} (
|
||||
path varchar(255) NOT NULL default '' ,
|
||||
disabled int NOT NULL default 0,
|
||||
title varchar(255) NOT NULL default '',
|
||||
description varchar(255) NOT NULL default '',
|
||||
weight int NOT NULL default 0 ,
|
||||
type int NOT NULL default 0 ,
|
||||
admin int NOT NULL default 0,
|
||||
parent varchar(255) NOT NULL default '',
|
||||
PRIMARY KEY (path)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {menu_custom} (
|
||||
path varchar(255) NOT NULL default '' ,
|
||||
disabled int NOT NULL default 0,
|
||||
title varchar(255) NOT NULL default '',
|
||||
description varchar(255) NOT NULL default '',
|
||||
weight int NOT NULL default 0 ,
|
||||
type int NOT NULL default 0 ,
|
||||
admin int NOT NULL default 0,
|
||||
parent varchar(255) NOT NULL default '',
|
||||
PRIMARY KEY (path)
|
||||
)");
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('menu');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function menu_uninstall() {
|
||||
db_query('DROP TABLE {menu_custom}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('menu');
|
||||
menu_rebuild();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function menu_schema() {
|
||||
$schema['menu_router'] = array(
|
||||
'fields' => array(
|
||||
'path' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'load_functions' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'to_arg_functions' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'access_callback' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'access_arguments' => array('type' => 'text', 'not null' => FALSE),
|
||||
'page_callback' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'page_arguments' => array('type' => 'text', 'not null' => FALSE),
|
||||
'fit' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'number_parts' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'tab_parent' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'tab_root' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'title' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'title_callback' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'title_arguments' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'type' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'block_callback' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'description' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'position' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'file' => array('type' => 'text', 'not null' => FALSE, 'default' => '', 'size' => 'medium')
|
||||
),
|
||||
'indexes' => array(
|
||||
'fit' => array('fit'),
|
||||
'tab_parent' => array('tab_parent')
|
||||
),
|
||||
'primary key' => array('path'),
|
||||
);
|
||||
|
||||
$schema['menu_links'] = array(
|
||||
'fields' => array(
|
||||
'menu_name' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),
|
||||
'mlid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'plid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'href' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'router_path' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'hidden' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'small'),
|
||||
'external' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'small'),
|
||||
'has_children' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'expanded' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'small'),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'depth' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'p1' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'p2' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'p3' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'p4' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'p5' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'p6' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'module' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => 'system'),
|
||||
'link_title' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'options' => array('type' => 'text', 'not null' => FALSE)
|
||||
),
|
||||
'indexes' => array(
|
||||
'expanded_children' => array('expanded', 'has_children'),
|
||||
'menu_name_path' => array('menu_name', 'href'),
|
||||
'parents' => array('plid', 'p1', 'p2', 'p3', 'p4', 'p5')
|
||||
),
|
||||
'primary key' => array('mlid'),
|
||||
);
|
||||
|
||||
$schema['cache_menu'] = drupal_get_schema_unprocessed('system', 'cache');
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function node_schema() {
|
||||
$schema['node'] = array(
|
||||
'fields' => array(
|
||||
'nid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'vid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'type' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''),
|
||||
'language' => array('type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => ''),
|
||||
'title' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'uid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'status' => array('type' => 'int', 'not null' => TRUE, 'default' => 1),
|
||||
'created' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'changed' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'comment' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'promote' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'moderate' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'sticky' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'indexes' => array(
|
||||
'nid' => array('nid'),
|
||||
'node_changed' => array('changed'),
|
||||
'node_created' => array('created'),
|
||||
'node_moderate' => array('moderate'),
|
||||
'node_promote_status' => array('promote', 'status'),
|
||||
'node_status_type' => array('status', 'type', 'nid'),
|
||||
'node_title_type' => array('title', array('type', 4)),
|
||||
'node_type' => array(array('type', 4)),
|
||||
'status' => array('status'),
|
||||
'uid' => array('uid')
|
||||
),
|
||||
'unique keys' => array(
|
||||
'nid_vid' => array('nid', 'vid'),
|
||||
'vid' => array('vid')
|
||||
),
|
||||
'primary key' => array('nid'),
|
||||
);
|
||||
|
||||
$schema['node_access'] = array(
|
||||
'fields' => array(
|
||||
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'gid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'realm' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'grant_view' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'grant_update' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'grant_delete' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'primary key' => array(
|
||||
'nid',
|
||||
'gid',
|
||||
'realm'
|
||||
),
|
||||
);
|
||||
|
||||
$schema['node_counter'] = array(
|
||||
'fields' => array(
|
||||
'nid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'totalcount' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'big'),
|
||||
'daycount' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'medium'),
|
||||
'timestamp' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('nid'),
|
||||
);
|
||||
|
||||
$schema['node_revisions'] = array(
|
||||
'fields' => array(
|
||||
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'vid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'uid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'title' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'body' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'teaser' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'log' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'timestamp' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'format' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'indexes' => array(
|
||||
'nid' => array('nid'),
|
||||
'uid' => array('uid')
|
||||
),
|
||||
'primary key' => array('vid'),
|
||||
);
|
||||
|
||||
$schema['node_type'] = array(
|
||||
'fields' => array(
|
||||
'type' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE),
|
||||
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'module' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE),
|
||||
'description' => array('type' => 'text', 'not null' => TRUE, 'size' => 'medium'),
|
||||
'help' => array('type' => 'text', 'not null' => TRUE, 'size' => 'medium'),
|
||||
'has_title' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'size' => 'tiny'),
|
||||
'title_label' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'has_body' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'size' => 'tiny'),
|
||||
'body_label' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'min_word_count' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'size' => 'small'),
|
||||
'custom' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'modified' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'locked' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'orig_type' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '')
|
||||
),
|
||||
'primary key' => array('type'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -5,73 +5,14 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function poll_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {poll} (
|
||||
nid int unsigned NOT NULL default '0',
|
||||
runtime int NOT NULL default '0',
|
||||
active int unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (nid)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {poll_votes} (
|
||||
nid int unsigned NOT NULL,
|
||||
uid int unsigned NOT NULL default 0,
|
||||
chorder int NOT NULL default -1,
|
||||
hostname varchar(128) NOT NULL default '',
|
||||
INDEX (nid),
|
||||
INDEX (uid),
|
||||
INDEX (hostname)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {poll_choices} (
|
||||
chid int unsigned NOT NULL auto_increment,
|
||||
nid int unsigned NOT NULL default '0',
|
||||
chtext varchar(128) NOT NULL default '',
|
||||
chvotes int NOT NULL default '0',
|
||||
chorder int NOT NULL default '0',
|
||||
PRIMARY KEY (chid),
|
||||
KEY nid (nid)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {poll} (
|
||||
nid int_unsigned NOT NULL default '0',
|
||||
runtime int NOT NULL default '0',
|
||||
active int_unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (nid)
|
||||
)");
|
||||
|
||||
db_query("CREATE TABLE {poll_votes} (
|
||||
nid int_unsigned NOT NULL,
|
||||
uid int_unsigned NOT NULL default 0,
|
||||
chorder int NOT NULL default -1,
|
||||
hostname varchar(128) NOT NULL default ''
|
||||
)");
|
||||
db_query("CREATE INDEX {poll_votes}_nid_idx ON {poll_votes} (nid)");
|
||||
db_query("CREATE INDEX {poll_votes}_uid_idx ON {poll_votes} (uid)");
|
||||
db_query("CREATE INDEX {poll_votes}_hostname_idx ON {poll_votes} (hostname)");
|
||||
|
||||
db_query("CREATE TABLE {poll_choices} (
|
||||
chid serial CHECK (chid >= 0),
|
||||
nid int_unsigned NOT NULL default '0',
|
||||
chtext varchar(128) NOT NULL default '',
|
||||
chvotes int NOT NULL default '0',
|
||||
chorder int NOT NULL default '0',
|
||||
PRIMARY KEY (chid)
|
||||
)");
|
||||
db_query("CREATE INDEX {poll_choices}_nid_idx ON {poll_choices} (nid)");
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('poll');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function poll_uninstall() {
|
||||
db_query('DROP TABLE {poll}');
|
||||
db_query('DROP TABLE {poll_votes}');
|
||||
db_query('DROP TABLE {poll_choices}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('poll');
|
||||
}
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function poll_schema() {
|
||||
$schema['poll'] = array(
|
||||
'fields' => array(
|
||||
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'runtime' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'active' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('nid'),
|
||||
);
|
||||
|
||||
$schema['poll_choices'] = array(
|
||||
'fields' => array(
|
||||
'chid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'chtext' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'chvotes' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'chorder' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'indexes' => array('nid' => array('nid')),
|
||||
'primary key' => array('chid'),
|
||||
);
|
||||
|
||||
$schema['poll_votes'] = array(
|
||||
'fields' => array(
|
||||
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'uid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'chorder' => array('type' => 'int', 'not null' => TRUE, 'default' => -1),
|
||||
'hostname' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '')
|
||||
),
|
||||
'indexes' => array(
|
||||
'hostname' => array('hostname'),
|
||||
'nid' => array('nid'),
|
||||
'uid' => array('uid')
|
||||
),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -5,73 +5,16 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function profile_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {profile_fields} (
|
||||
fid int NOT NULL auto_increment,
|
||||
title varchar(255) default NULL,
|
||||
name varchar(128) default NULL,
|
||||
explanation TEXT,
|
||||
category varchar(255) default NULL,
|
||||
page varchar(255) default NULL,
|
||||
type varchar(128) default NULL,
|
||||
weight tinyint DEFAULT '0' NOT NULL,
|
||||
required tinyint DEFAULT '0' NOT NULL,
|
||||
register tinyint DEFAULT '0' NOT NULL,
|
||||
visibility tinyint DEFAULT '0' NOT NULL,
|
||||
autocomplete tinyint DEFAULT '0' NOT NULL,
|
||||
options text,
|
||||
KEY category (category),
|
||||
UNIQUE KEY name (name),
|
||||
PRIMARY KEY (fid)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {profile_values} (
|
||||
fid int unsigned default '0',
|
||||
uid int unsigned default '0',
|
||||
value text,
|
||||
KEY uid (uid),
|
||||
KEY fid (fid)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {profile_fields} (
|
||||
fid serial,
|
||||
title varchar(255) default NULL,
|
||||
name varchar(128) default NULL,
|
||||
explanation TEXT default NULL,
|
||||
category varchar(255) default NULL,
|
||||
page varchar(255) default NULL,
|
||||
type varchar(128) default NULL,
|
||||
weight smallint DEFAULT '0' NOT NULL,
|
||||
required smallint DEFAULT '0' NOT NULL,
|
||||
register smallint DEFAULT '0' NOT NULL,
|
||||
visibility smallint DEFAULT '0' NOT NULL,
|
||||
autocomplete smallint DEFAULT '0' NOT NULL,
|
||||
options text,
|
||||
UNIQUE (name),
|
||||
PRIMARY KEY (fid)
|
||||
)");
|
||||
db_query("CREATE INDEX {profile_fields}_category_idx ON {profile_fields} (category)");
|
||||
|
||||
db_query("CREATE TABLE {profile_values} (
|
||||
fid int_unsigned default '0',
|
||||
uid int_unsigned default '0',
|
||||
value text
|
||||
)");
|
||||
db_query("CREATE INDEX {profile_values}_uid_idx ON {profile_values} (uid)");
|
||||
db_query("CREATE INDEX {profile_values}_fid_idx ON {profile_values} (fid)");
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('profile');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function profile_uninstall() {
|
||||
db_query('DROP TABLE {profile_fields}');
|
||||
db_query('DROP TABLE {profile_values}');
|
||||
// Remove tables
|
||||
drupal_uninstall_schema('profile');
|
||||
|
||||
variable_del('profile_block_author_fields');
|
||||
}
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function profile_schema() {
|
||||
$schema['profile_fields'] = array(
|
||||
'fields' => array(
|
||||
'fid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'title' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE),
|
||||
'name' => array('type' => 'varchar', 'length' => 128, 'not null' => FALSE),
|
||||
'explanation' => array('type' => 'text', 'not null' => FALSE),
|
||||
'category' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE),
|
||||
'page' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE),
|
||||
'type' => array('type' => 'varchar', 'length' => 128, 'not null' => FALSE),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'required' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'register' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'visibility' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'autocomplete' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'options' => array('type' => 'text', 'not null' => FALSE)
|
||||
),
|
||||
'indexes' => array('category' => array('category')),
|
||||
'unique keys' => array('name' => array('name')),
|
||||
'primary key' => array('fid'),
|
||||
);
|
||||
|
||||
$schema['profile_values'] = array(
|
||||
'fields' => array(
|
||||
'fid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => FALSE, 'default' => 0),
|
||||
'uid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => FALSE, 'default' => 0),
|
||||
'value' => array('type' => 'text', 'not null' => FALSE)
|
||||
),
|
||||
'indexes' => array(
|
||||
'fid' => array('fid'),
|
||||
'uid' => array('uid')
|
||||
),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -5,70 +5,17 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function search_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {search_dataset} (
|
||||
sid int unsigned NOT NULL default '0',
|
||||
type varchar(16) default NULL,
|
||||
data longtext NOT NULL,
|
||||
KEY sid_type (sid, type)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {search_index} (
|
||||
word varchar(50) NOT NULL default '',
|
||||
sid int unsigned NOT NULL default '0',
|
||||
type varchar(16) default NULL,
|
||||
fromsid int unsigned NOT NULL default '0',
|
||||
fromtype varchar(16) default NULL,
|
||||
score float default NULL,
|
||||
KEY sid_type (sid, type),
|
||||
KEY from_sid_type (fromsid, fromtype),
|
||||
KEY word (word)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
|
||||
db_query("CREATE TABLE {search_total} (
|
||||
word varchar(50) NOT NULL default '',
|
||||
count float default NULL,
|
||||
PRIMARY KEY (word)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {search_dataset} (
|
||||
sid int_unsigned NOT NULL default '0',
|
||||
type varchar(16) default NULL,
|
||||
data text NOT NULL
|
||||
)");
|
||||
db_query("CREATE INDEX {search_dataset}_sid_type_idx ON {search_dataset} (sid, type)");
|
||||
|
||||
db_query("CREATE TABLE {search_index} (
|
||||
word varchar(50) NOT NULL default '',
|
||||
sid int_unsigned NOT NULL default '0',
|
||||
type varchar(16) default NULL,
|
||||
fromsid int_unsigned NOT NULL default '0',
|
||||
fromtype varchar(16) default NULL,
|
||||
score float default NULL
|
||||
)");
|
||||
db_query("CREATE INDEX {search_index}_sid_type_idx ON {search_index} (sid, type)");
|
||||
db_query("CREATE INDEX {search_index}_from_sid_type_idx ON {search_index} (fromsid, fromtype)");
|
||||
db_query("CREATE INDEX {search_index}_word_idx ON {search_index} (word)");
|
||||
|
||||
db_query("CREATE TABLE {search_total} (
|
||||
word varchar(50) NOT NULL default '',
|
||||
count float default NULL,
|
||||
PRIMARY KEY (word)
|
||||
)");
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('search');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function search_uninstall() {
|
||||
db_query('DROP TABLE {search_dataset}');
|
||||
db_query('DROP TABLE {search_index}');
|
||||
db_query('DROP TABLE {search_total}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('search');
|
||||
|
||||
variable_del('minimum_word_size');
|
||||
variable_del('overlap_cjk');
|
||||
}
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function search_schema() {
|
||||
$schema['search_dataset'] = array(
|
||||
'fields' => array(
|
||||
'sid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'type' => array('type' => 'varchar', 'length' => 16, 'not null' => FALSE),
|
||||
'data' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big')
|
||||
),
|
||||
'indexes' => array('sid_type' => array('sid', 'type')),
|
||||
);
|
||||
|
||||
$schema['search_index'] = array(
|
||||
'fields' => array(
|
||||
'word' => array('type' => 'varchar', 'length' => 50, 'not null' => TRUE, 'default' => ''),
|
||||
'sid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'type' => array('type' => 'varchar', 'length' => 16, 'not null' => FALSE),
|
||||
'fromsid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'fromtype' => array('type' => 'varchar', 'length' => 16, 'not null' => FALSE),
|
||||
'score' => array('type' => 'float', 'not null' => FALSE)
|
||||
),
|
||||
'indexes' => array(
|
||||
'from_sid_type' => array('fromsid', 'fromtype'),
|
||||
'sid_type' => array('sid', 'type'),
|
||||
'word' => array('word')
|
||||
),
|
||||
);
|
||||
|
||||
$schema['search_total'] = array(
|
||||
'fields' => array(
|
||||
'word' => array('type' => 'varchar', 'length' => 50, 'not null' => TRUE, 'default' => ''),
|
||||
'count' => array('type' => 'float', 'not null' => FALSE)
|
||||
),
|
||||
'primary key' => array('word'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -5,39 +5,8 @@
|
|||
* Implementation of hook_install().
|
||||
*/
|
||||
function statistics_install() {
|
||||
switch ($GLOBALS['db_type']) {
|
||||
case 'mysql':
|
||||
case 'mysqli':
|
||||
db_query("CREATE TABLE {accesslog} (
|
||||
aid int NOT NULL auto_increment,
|
||||
sid varchar(64) NOT NULL default '',
|
||||
title varchar(255) default NULL,
|
||||
path varchar(255) default NULL,
|
||||
url varchar(255) default NULL,
|
||||
hostname varchar(128) default NULL,
|
||||
uid int unsigned default '0',
|
||||
timer int unsigned NOT NULL default '0',
|
||||
timestamp int unsigned NOT NULL default '0',
|
||||
KEY accesslog_timestamp (timestamp),
|
||||
PRIMARY KEY (aid)
|
||||
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
|
||||
break;
|
||||
case 'pgsql':
|
||||
db_query("CREATE TABLE {accesslog} (
|
||||
aid serial,
|
||||
sid varchar(64) NOT NULL default '',
|
||||
title varchar(255) default NULL,
|
||||
path varchar(255) default NULL,
|
||||
url varchar(255) default NULL,
|
||||
hostname varchar(128) default NULL,
|
||||
uid int_unsigned default '0',
|
||||
timer int_unsigned NOT NULL default '0',
|
||||
timestamp int_unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (aid)
|
||||
)");
|
||||
db_query("CREATE INDEX {accesslog}_accesslog_timestamp_idx ON {accesslog} (timestamp)");
|
||||
break;
|
||||
}
|
||||
// Create tables.
|
||||
drupal_install_schema('statistics');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -63,7 +32,9 @@ function statistics_update_1000() {
|
|||
* Implementation of hook_uninstall().
|
||||
*/
|
||||
function statistics_uninstall() {
|
||||
db_query('DROP TABLE {accesslog}');
|
||||
// Remove tables.
|
||||
drupal_uninstall_schema('statistics');
|
||||
|
||||
variable_del('statistics_count_content_views');
|
||||
variable_del('statistics_enable_access_log');
|
||||
variable_del('statistics_flush_accesslog_timer');
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function statistics_schema() {
|
||||
$schema['accesslog'] = array(
|
||||
'fields' => array(
|
||||
'aid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'sid' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),
|
||||
'title' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE),
|
||||
'path' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE),
|
||||
'url' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE),
|
||||
'hostname' => array('type' => 'varchar', 'length' => 128, 'not null' => FALSE),
|
||||
'uid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => FALSE, 'default' => 0),
|
||||
'timer' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'timestamp' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'indexes' => array('accesslog_timestamp' => array('timestamp')),
|
||||
'primary key' => array('aid'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,139 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function system_schema() {
|
||||
$schema['batch'] = array(
|
||||
'fields' => array(
|
||||
'bid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'token' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE),
|
||||
'timestamp' => array('type' => 'int', 'not null' => TRUE),
|
||||
'batch' => array('type' => 'text', 'not null' => FALSE, 'size' => 'big')
|
||||
),
|
||||
'primary key' => array('bid'),
|
||||
'indexes' => array('token' => array('token')),
|
||||
);
|
||||
|
||||
$schema['cache'] = array(
|
||||
'fields' => array(
|
||||
'cid' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'data' => array('type' => 'blob', 'not null' => FALSE, 'size' => 'big'),
|
||||
'expire' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'created' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'headers' => array('type' => 'text', 'not null' => FALSE),
|
||||
'serialized' => array('type' => 'int', 'size' => 'small', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'indexes' => array('expire' => array('expire')),
|
||||
'primary key' => array('cid'),
|
||||
);
|
||||
|
||||
$schema['cache_form'] = $schema['cache'];
|
||||
$schema['cache_page'] = $schema['cache'];
|
||||
|
||||
$schema['files'] = array(
|
||||
'fields' => array(
|
||||
'fid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'filename' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'filepath' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'filemime' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'filesize' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'indexes' => array('nid' => array('nid')),
|
||||
'primary key' => array('fid'),
|
||||
);
|
||||
|
||||
$schema['file_revisions'] = array(
|
||||
'fields' => array(
|
||||
'fid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'vid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'description' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'list' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'primary key' => array('fid', 'vid'),
|
||||
'indexes' => array('vid' => array('vid')),
|
||||
);
|
||||
|
||||
$schema['flood'] = array(
|
||||
'fields' => array(
|
||||
'fid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'event' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),
|
||||
'hostname' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'timestamp' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('fid'),
|
||||
);
|
||||
|
||||
$schema['history'] = array(
|
||||
'fields' => array(
|
||||
'uid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'nid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'timestamp' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('uid', 'nid'),
|
||||
);
|
||||
|
||||
$schema['sequences'] = array(
|
||||
'fields' => array(
|
||||
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'id' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('name'),
|
||||
);
|
||||
|
||||
$schema['sessions'] = array(
|
||||
'fields' => array(
|
||||
'uid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'sid' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),
|
||||
'hostname' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'timestamp' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'cache' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'session' => array('type' => 'text', 'not null' => FALSE, 'size' => 'big')
|
||||
),
|
||||
'primary key' => array('sid'),
|
||||
'indexes' => array(
|
||||
'timestamp' => array('timestamp'),
|
||||
'uid' => array('uid')
|
||||
),
|
||||
);
|
||||
|
||||
$schema['system'] = array(
|
||||
'fields' => array(
|
||||
'filename' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'type' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'owner' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'status' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'throttle' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'bootstrap' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'schema_version' => array('type' => 'int', 'not null' => TRUE, 'default' => -1, 'size' => 'small'),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'info' => array('type' => 'text', 'not null' => FALSE)
|
||||
),
|
||||
'primary key' => array('filename'),
|
||||
'indexes' => array('weight' => array('weight')),
|
||||
);
|
||||
|
||||
$schema['url_alias'] = array(
|
||||
'fields' => array(
|
||||
'pid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'src' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'dst' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'language' => array('type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => '')
|
||||
),
|
||||
'unique keys' => array('dst_language' => array('dst', 'language')),
|
||||
'primary key' => array('pid'),
|
||||
'indexes' => array('src' => array('src')),
|
||||
);
|
||||
|
||||
$schema['variable'] = array(
|
||||
'fields' => array(
|
||||
'name' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'value' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
|
||||
'language' => array('type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => '')
|
||||
),
|
||||
'primary key' => array('name', 'language'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function taxonomy_schema() {
|
||||
$schema['term_data'] = array(
|
||||
'fields' => array(
|
||||
'tid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'vid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'description' => array('type' => 'text', 'not null' => FALSE, 'size' => 'big'),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'primary key' => array('tid'),
|
||||
'indexes' => array('vid' => array('vid')),
|
||||
);
|
||||
|
||||
$schema['term_hierarchy'] = array(
|
||||
'fields' => array(
|
||||
'tid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'parent' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'indexes' => array(
|
||||
'parent' => array('parent'),
|
||||
'tid' => array('tid')
|
||||
),
|
||||
'primary key' => array('tid', 'parent'),
|
||||
);
|
||||
|
||||
$schema['term_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)
|
||||
),
|
||||
'indexes' => array(
|
||||
'nid' => array('nid'),
|
||||
'tid' => array('tid'),
|
||||
'vid' => array('vid')
|
||||
),
|
||||
'primary key' => array(
|
||||
'vid',
|
||||
'tid',
|
||||
'nid'
|
||||
),
|
||||
);
|
||||
|
||||
$schema['term_relation'] = array(
|
||||
'fields' => array(
|
||||
'trid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'tid1' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'tid2' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'indexes' => array(
|
||||
'tid1' => array('tid1'),
|
||||
'tid2' => array('tid2')
|
||||
),
|
||||
'primary key' => array('trid'),
|
||||
);
|
||||
|
||||
$schema['term_synonym'] = array(
|
||||
'fields' => array(
|
||||
'tsid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'tid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '')
|
||||
),
|
||||
'indexes' => array(
|
||||
'name' => array(array('name', 3)),
|
||||
'tid' => array('tid')
|
||||
),
|
||||
'primary key' => array('tsid'),
|
||||
);
|
||||
|
||||
$schema['vocabulary'] = array(
|
||||
'fields' => array(
|
||||
'vid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'description' => array('type' => 'text', 'not null' => FALSE, 'size' => 'big'),
|
||||
'help' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'relations' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'hierarchy' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'multiple' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'required' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'tags' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'module' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'primary key' => array('vid'),
|
||||
);
|
||||
|
||||
$schema['vocabulary_node_types'] = array(
|
||||
'fields' => array(
|
||||
'vid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'type' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '')
|
||||
),
|
||||
'primary key' => array('vid', 'type'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
<?php
|
||||
// $Id$
|
||||
|
||||
function user_schema() {
|
||||
$schema['access'] = array(
|
||||
'fields' => array(
|
||||
'aid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'mask' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'type' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'status' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny')
|
||||
),
|
||||
'primary key' => array('aid'),
|
||||
);
|
||||
|
||||
$schema['authmap'] = array(
|
||||
'fields' => array(
|
||||
'aid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'uid' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'authname' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
|
||||
'module' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '')
|
||||
),
|
||||
'unique keys' => array('authname' => array('authname')),
|
||||
'primary key' => array('aid'),
|
||||
);
|
||||
|
||||
$schema['permission'] = array(
|
||||
'fields' => array(
|
||||
'pid' => array('type' => 'serial', 'not null' => TRUE),
|
||||
'rid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'perm' => array('type' => 'text', 'not null' => FALSE, 'size' => 'big'),
|
||||
'tid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('pid'),
|
||||
'indexes' => array('rid' => array('rid')),
|
||||
);
|
||||
|
||||
$schema['role'] = array(
|
||||
'fields' => array(
|
||||
'rid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'name' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => '')
|
||||
),
|
||||
'unique keys' => array('name' => array('name')),
|
||||
'primary key' => array('rid'),
|
||||
);
|
||||
|
||||
$schema['users'] = array(
|
||||
'fields' => array(
|
||||
'uid' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
|
||||
'name' => array('type' => 'varchar', 'length' => 60, 'not null' => TRUE, 'default' => ''),
|
||||
'pass' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''),
|
||||
'mail' => array('type' => 'varchar', 'length' => 64, 'not null' => FALSE, 'default' => ''),
|
||||
'mode' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'sort' => array('type' => 'int', 'not null' => FALSE, 'default' => 0, 'size' => 'tiny'),
|
||||
'threshold' => array('type' => 'int', 'not null' => FALSE, 'default' => 0, 'size' => 'tiny'),
|
||||
'theme' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'signature' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'created' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'access' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'login' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
'status' => array('type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
|
||||
'timezone' => array('type' => 'varchar', 'length' => 8, 'not null' => FALSE),
|
||||
'language' => array('type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => ''),
|
||||
'picture' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'init' => array('type' => 'varchar', 'length' => 64, 'not null' => FALSE, 'default' => ''),
|
||||
'data' => array('type' => 'text', 'not null' => FALSE, 'size' => 'big')
|
||||
),
|
||||
'indexes' => array(
|
||||
'access' => array('access'),
|
||||
'created' => array('created')
|
||||
),
|
||||
'unique keys' => array('name' => array('name')),
|
||||
'primary key' => array('uid'),
|
||||
);
|
||||
|
||||
$schema['users_roles'] = array(
|
||||
'fields' => array(
|
||||
'uid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
|
||||
'rid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
|
||||
),
|
||||
'primary key' => array('uid', 'rid'),
|
||||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
@ -17,12 +17,6 @@
|
|||
// Enforce access checking?
|
||||
$access_check = TRUE;
|
||||
|
||||
|
||||
function update_sql($sql) {
|
||||
$result = db_query($sql);
|
||||
return array('success' => $result !== FALSE, 'query' => check_plain($sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a column to a database using syntax appropriate for PostgreSQL.
|
||||
* Save result of SQL commands in $ret array.
|
||||
|
|
Loading…
Reference in New Issue