diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 7ee599f9fbb748fa0310c1496bedd9020b1d66ff..f74317ee897169c4f1273e8c2c465732ddef1c66 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -2,7 +2,6 @@ Drupal x.x.x, xxxx-xx-xx (development version) ------------------------ - added free tagging support. - added a site-wide contact form. -- refactored the form API. - theme system: * added the PHPTemplate theme engine and removed the Xtemplate engine. * converted the bluemarine theme from XTemplate to PHPTemplate. @@ -18,6 +17,8 @@ Drupal x.x.x, xxxx-xx-xx (development version) * reorganized some settings pages. * added friendly database error screens. * improved styling of update.php. +- refactored the forms API. + * made it possible to alter, extend or theme forms. - node system: * reworked the revision functionality. - profiles: diff --git a/database/updates.inc b/database/updates.inc index e1523b94949cef2f81e03545b4b4183ded657c1a..921853020cea549c72438d209d372723487e8da1 100644 --- a/database/updates.inc +++ b/database/updates.inc @@ -241,1059 +241,4 @@ function update_113() { aid serial, title varchar(255) default NULL, path varchar(255) default NULL, - url varchar(255) default NULL, - hostname varchar(128) default NULL, - uid integer default '0', - timestamp integer NOT NULL default '0' - )"); - $ret[] = update_sql("INSERT INTO {accesslog} (title, path, url, hostname, uid, timestamp) SELECT title, path, url, hostname, uid, timestamp FROM {accesslog}_t"); - - $ret[] = update_sql("DROP TABLE {accesslog}_t"); - $ret[] = update_sql("CREATE INDEX {accesslog}_timestamp_idx ON {accesslog} (timestamp);"); - - } - - // Flush the menu cache: - cache_clear_all('menu:', TRUE); - - return $ret; -} - -function update_114() { - $ret = array(); - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("CREATE TABLE {queue} ( - nid int(10) unsigned NOT NULL, - uid int(10) unsigned NOT NULL, - vote int(3) NOT NULL default '0', - PRIMARY KEY (nid, uid) - )"); - } - else if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql("CREATE TABLE {queue} ( - nid integer NOT NULL default '0', - uid integer NOT NULL default '0', - vote integer NOT NULL default '0', - PRIMARY KEY (nid, uid) - )"); - $ret[] = update_sql("CREATE INDEX {queue}_nid_idx ON queue(nid)"); - $ret[] = update_sql("CREATE INDEX {queue}_uid_idx ON queue(uid)"); - } - - $result = db_query("SELECT nid, votes, score, users FROM {node}"); - while ($node = db_fetch_object($result)) { - if (isset($node->users)) { - $arr = explode(',', $node->users); - unset($node->users); - foreach ($arr as $value) { - $arr2 = explode('=', trim($value)); - if (isset($arr2[0]) && isset($arr2[1])) { - switch ($arr2[1]) { - case '+ 1': - db_query("INSERT INTO {queue} (nid, uid, vote) VALUES (%d, %d, %d)", $node->nid, (int)$arr2[0], 1); - break; - case '- 1': - db_query("INSERT INTO {queue} (nid, uid, vote) VALUES (%d, %d, %d)", $node->nid, (int)$arr2[0], -1); - break; - default: - db_query("INSERT INTO {queue} (nid, uid, vote) VALUES (%d, %d, %d)", $node->nid, (int)$arr2[0], 0); - } - } - } - } - } - - if ($GLOBALS['db_type'] == 'mysql') { - // Postgres only supports dropping of columns since 7.4 - $ret[] = update_sql("ALTER TABLE {node} DROP votes"); - $ret[] = update_sql("ALTER TABLE {node} DROP score"); - $ret[] = update_sql("ALTER TABLE {node} DROP users"); - } - - return $ret; -} - -function update_115() { - $ret = array(); - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {watchdog} ADD severity tinyint(3) unsigned NOT NULL default '0'"); - } - else if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql('ALTER TABLE {watchdog} ADD severity smallint'); - $ret[] = update_sql('UPDATE {watchdog} SET severity = 0'); - $ret[] = update_sql('ALTER TABLE {watchdog} ALTER COLUMN severity SET NOT NULL'); - $ret[] = update_sql('ALTER TABLE {watchdog} ALTER COLUMN severity SET DEFAULT 0'); - } - return $ret; -} - -function update_116() { - return array(update_sql("DELETE FROM {system} WHERE name = 'admin'")); -} - -function update_117() { - $ret = array(); - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("CREATE TABLE {vocabulary_node_types} ( - vid int(10) NOT NULL default '', - type varchar(16) NOT NULL default '', - PRIMARY KEY (vid, type))"); - } - else if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql("CREATE TABLE {vocabulary_node_types} ( - vid serial, - type varchar(16) NOT NULL default '', - PRIMARY KEY (vid, type)) "); - } - return $ret; -} - -function update_118() { - $ret = array(); - $node_types = array(); - $result = db_query('SELECT vid, nodes FROM {vocabulary}'); - while ($vocabulary = db_fetch_object($result)) { - $node_types[$vocabulary->vid] = explode(',', $vocabulary->nodes); - } - foreach ($node_types as $vid => $type_array) { - foreach ($type_array as $type) { - db_query("INSERT INTO {vocabulary_node_types} (vid, type) VALUES (%d, '%s')", $vid, $type); - } - } - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {vocabulary} DROP nodes"); - } - return $ret; -} - -function update_119() { - $ret = array(); - - foreach (node_get_types() as $type => $name) { - $node_options = array(); - if (variable_get('node_status_'. $type, 1)) { - $node_options[] = 'status'; - } - if (variable_get('node_moderate_'. $type, 0)) { - $node_options[] = 'moderate'; - } - if (variable_get('node_promote_'. $type, 1)) { - $node_options[] = 'promote'; - } - if (variable_get('node_sticky_'. $type, 0)) { - $node_options[] = 'sticky'; - } - if (variable_get('node_revision_'. $type, 0)) { - $node_options[] = 'revision'; - } - variable_set('node_options_'. $type, $node_options); - variable_del('node_status_'. $type); - variable_del('node_moderate_'. $type); - variable_del('node_promote_'. $type); - variable_del('node_sticky_'. $type); - variable_del('node_revision_'. $type); - } - - return $ret; -} - -function update_120() { - $ret = array(); - - // Rewrite old URL aliases. Works for both PostgreSQL and MySQL - $result = db_query("SELECT pid, src FROM {url_alias} WHERE src LIKE 'blog/%%'"); - while ($alias = db_fetch_object($result)) { - list(, $page, $op, $uid) = explode('/', $alias->src); - if ($page == 'feed') { - $new = "blog/$uid/feed"; - update_sql("UPDATE {url_alias} SET src = '%s' WHERE pid = '%s'", $new, $alias->pid); - } - } - - return $ret; -} - -function update_121() { - $ret = array(); - - // Remove the unused page table. - $ret[] = update_sql('DROP TABLE {page}'); - - return $ret; -} - -function update_122() { - - $ret = array(); - $ret[] = update_sql("ALTER TABLE {blocks} ADD types text"); - return $ret; - -} - -function update_123() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {vocabulary} ADD module varchar(255) NOT NULL default ''"); - } - elseif ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql("ALTER TABLE {vocabulary} ADD module varchar(255)"); - $ret[] = update_sql("UPDATE {vocabulary} SET module = ''"); - $ret[] = update_sql("ALTER TABLE {vocabulary} ALTER COLUMN module SET NOT NULL"); - $ret[] = update_sql("ALTER TABLE {vocabulary} ALTER COLUMN module SET DEFAULT ''"); - } - - $ret[] = update_sql("UPDATE {vocabulary} SET module = 'taxonomy'"); - $vid = variable_get('forum_nav_vocabulary', ''); - if (!empty($vid)) { - $ret[] = update_sql("UPDATE {vocabulary} SET module = 'forum' WHERE vid = " . $vid); - } - - return $ret; -} - -function update_124() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - // redo update_105, correctly creating node_comment_statistics - $ret[] = update_sql("DROP TABLE IF EXISTS {node_comment_statistics}"); - - $ret[] = update_sql("CREATE TABLE {node_comment_statistics} ( - nid int(10) unsigned NOT NULL auto_increment, - last_comment_timestamp int(11) NOT NULL default '0', - last_comment_name varchar(60) default NULL, - last_comment_uid int(10) NOT NULL default '0', - comment_count int(10) unsigned NOT NULL default '0', - PRIMARY KEY (nid), - KEY node_comment_timestamp (last_comment_timestamp) - ) TYPE=MyISAM"); - } - - else { - // also drop incorrectly named table for PostgreSQL - $ret[] = update_sql("DROP TABLE {node}_comment_statistics"); - - $ret[] = update_sql("CREATE TABLE {node_comment_statistics} ( - nid integer NOT NULL, - last_comment_timestamp integer NOT NULL default '0', - last_comment_name varchar(60) default NULL, - last_comment_uid integer NOT NULL default '0', - comment_count integer NOT NULL default '0', - PRIMARY KEY (nid) - )"); - - $ret[] = update_sql("CREATE INDEX {node_comment_statistics}_timestamp_idx ON {node_comment_statistics}(last_comment_timestamp); -"); - } - - // initialize table - $ret[] = update_sql("INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) SELECT n.nid, n.changed, NULL, 0, 0 FROM {node} n"); - - // fill table - $result = db_query("SELECT c.nid, c.timestamp, c.name, c.uid, COUNT(c.nid) as comment_count FROM {node} n LEFT JOIN {comments} c ON c.nid = n.nid WHERE c.status = 0 GROUP BY c.nid, c.timestamp, c.name, c.uid"); - while ($comment_record = db_fetch_object($result)) { - $count = db_result(db_query('SELECT COUNT(cid) FROM {comments} WHERE nid = %d AND status = 0', $comment_record->nid)); - $ret[] = db_query("UPDATE {node_comment_statistics} SET comment_count = %d, last_comment_timestamp = %d, last_comment_name = '%s', last_comment_uid = %d WHERE nid = %d", $count, $comment_record->timestamp, $comment_record->name, $comment_record->uid, $comment_record->nid); - } - - return $ret; -} - -function update_125() { - // Postgres only update. - $ret = array(); - - if ($GLOBALS['db_type'] == 'pgsql') { - - $ret[] = update_sql("CREATE OR REPLACE FUNCTION if(boolean, anyelement, anyelement) RETURNS anyelement AS ' - SELECT CASE WHEN $1 THEN $2 ELSE $3 END; - ' LANGUAGE 'sql'"); - - $ret[] = update_sql("CREATE FUNCTION greatest(integer, integer, integer) RETURNS integer AS ' - SELECT greatest($1, greatest($2, $3)); - ' LANGUAGE 'sql'"); - - } - - return $ret; -} - -function update_126() { - variable_set('forum_block_num_0', variable_get('forum_block_num', 5)); - variable_set('forum_block_num_1', variable_get('forum_block_num', 5)); - variable_del('forum_block_num'); - - return array(); -} - -function update_127() { - $ret = array(); - if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql("ALTER TABLE {poll} RENAME voters TO polled"); - } - else if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {poll} CHANGE voters polled longtext"); - } - return $ret; -} - -function update_128() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql('ALTER TABLE {term_node} ADD PRIMARY KEY (tid,nid)'); - } - elseif ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql('ALTER TABLE {term_node} ADD PRIMARY KEY (tid,nid)'); - } - - return $ret; -} - -function update_129() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {vocabulary} ADD tags tinyint(3) unsigned default '0' NOT NULL"); - } - elseif ($GLOBALS['db_type'] == 'pgsql') { - db_add_column($ret, 'vocabulary', 'tags', 'smallint', array('default' => 0, 'not null' => TRUE)); - } - - return $ret; -} - -function update_130() { - $ret = array(); - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {sessions} ADD cache int(11) NOT NULL default '0'"); - } - elseif ($GLOBALS['db_type'] == 'pgsql') { - db_add_column($ret, 'sessions', 'cache', 'int', array('default' => 0, 'not null' => TRUE)); - } - return $ret; -} - -function update_131() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {boxes} DROP INDEX title"); - // Removed recreation of the index, which is not present in the db schema - } - elseif ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql("ALTER TABLE {boxes} DROP CONSTRAINT {boxes}_title_key"); - } - - return $ret; -} - -function update_132() { - /** - * PostgreSQL only update. - */ - $ret = array(); - - if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql('DROP TABLE {search_total}'); - $ret[] = update_sql("CREATE TABLE {search_total} ( - word varchar(50) NOT NULL default '', - count float default NULL)"); - $ret[] = update_sql('CREATE INDEX {search_total}_word_idx ON {search_total}(word)'); - - /** - * Wipe the search index - */ - include_once './modules/search.module'; - search_wipe(); - } - - return $ret; -} - -function update_133() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("CREATE TABLE {contact} ( - subject varchar(255) NOT NULL default '', - recipients longtext NOT NULL default '', - reply longtext NOT NULL default '' - )"); - $ret[] = update_sql("ALTER TABLE {users} ADD login int(11) NOT NULL default '0'"); - } - elseif ($GLOBALS['db_type'] == 'pgsql') { - // Table {contact} is changed in update_143() so I have moved it's creation there. - // It was never created here for postgres because of errors. - - db_add_column($ret, 'users', 'login', 'int', array('default' => 0, 'not null' => TRUE)); - } - - return $ret; -} - -function update_134() { - $ret = array(); - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql('ALTER TABLE {blocks} DROP types'); - } - else { - $ret[] = update_sql("ALTER TABLE {blocks} RENAME types TO types_old"); - } - return $ret; -} - -function update_135() { - $result = db_query("SELECT delta FROM {blocks} WHERE module = 'aggregator'"); - while ($block = db_fetch_object($result)) { - list($type, $id) = explode(':', $block->delta); - db_query("UPDATE {blocks} SET delta = '%s' WHERE module = 'aggregator' AND delta = '%s'", $type .'-'. $id, $block->delta); - } - return array(); -} - -function update_136() { - $ret = array(); - - switch ($GLOBALS['db_type']) { - case 'pgsql': - $ret[] = update_sql("DROP INDEX {users}_changed_idx"); // We drop the index first because it won't be renamed - $ret[] = update_sql("ALTER TABLE {users} RENAME changed TO access"); - $ret[] = update_sql("CREATE INDEX {users}_access_idx on {users}(access)"); // Re-add the index - break; - case 'mysql': - case 'mysqli': - $ret[] = update_sql("ALTER TABLE {users} CHANGE COLUMN changed access int(11) NOT NULL default '0'"); - break; - } - - $ret[] = update_sql('UPDATE {users} SET access = login WHERE login > created'); - $ret[] = update_sql('UPDATE {users} SET access = created WHERE access = 0'); - return $ret; -} - -function update_137() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {locales_source} CHANGE location location varchar(255) NOT NULL default ''"); - } - elseif ($GLOBALS['db_type'] == 'pgsql') { - db_change_column($ret, 'locales_source', 'location', 'location', 'varchar(255)', array('not null' => TRUE, 'default' => "''")); - } - return $ret; -} - -function update_138() { - $ret = array(); - // duplicate of update_97 which never got into the default database.* files. - $ret[] = update_sql("INSERT INTO {url_alias} (src, dst) VALUES ('node/feed', 'rss.xml')"); - return $ret; -} - -function update_139() { - $ret = array(); - switch ($GLOBALS['db_type']) { - case 'pgsql': - db_add_column($ret, 'accesslog', 'timer', 'int', array('not null' => TRUE, 'default' => 0)); - break; - case 'mysql': - case 'mysqli': - $ret[] = update_sql("ALTER TABLE {accesslog} ADD timer int(10) unsigned NOT NULL default '0'"); - break; - } - - return $ret; -} - -function update_140() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {url_alias} ADD INDEX (src)"); - } - elseif ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql("CREATE INDEX {url_alias}_src_idx ON {url_alias}(src)"); - } - return $ret; -} - -function update_141() { - $ret = array(); - - variable_del('upload_maxsize_total'); - - return $ret; -} - -function update_142() { - $ret = array(); - switch ($GLOBALS['db_type']) { - case 'pgsql': - db_add_column($ret, 'watchdog', 'referer', 'varchar(128)', array('not null' => TRUE, 'default' => "''")); - break; - case 'mysql': - case 'mysqli': - $ret[] = update_sql("ALTER TABLE {watchdog} ADD COLUMN referer varchar(128) NOT NULL"); - break; - } - return $ret; -} - -function update_143() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {contact} CHANGE subject category VARCHAR(255) NOT NULL "); - $ret[] = update_sql("ALTER TABLE {contact} ADD PRIMARY KEY (category)"); - } - elseif ($GLOBALS['db_type'] == 'pgsql') { - // Why the table is created here? See update_133(). - $ret[] = update_sql("CREATE TABLE {contact} ( - category varchar(255) NOT NULL default '', - recipients text NOT NULL default '', - reply text NOT NULL default '', - PRIMARY KEY (category))"); - } - - return $ret; -} - -function update_144() { - $ret = array(); - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {node} CHANGE type type VARCHAR(32) NOT NULL"); - } - elseif ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql("DROP INDEX {node}_type_idx"); // Drop indexes using "type" column - $ret[] = update_sql("DROP INDEX {node}_title_idx"); - db_change_column($ret, 'node', 'type', 'type', 'varchar(32)', array('not null' => TRUE, 'default' => "''")); - // Let's recreate the indexes - $ret[] = update_sql("CREATE INDEX {node}_type_idx ON {node}(type)"); - $ret[] = update_sql("CREATE INDEX {node}_title_type_idx ON {node}(title,type)"); - $ret[] = update_sql("CREATE INDEX {node}_status_type_nid_idx ON {node}(status,type,nid)"); - } - return $ret; -} - -function update_145() { - $default_theme = variable_get('theme_default', 'bluemarine'); - $ret = array(); - - switch ($GLOBALS['db_type']) { - case 'pgsql': - db_change_column($ret, 'blocks', 'region', 'region', 'varchar(64)', array('default' => "'left'", 'not null' => TRUE)); - db_add_column($ret, 'blocks', 'theme', 'varchar(255)', array('not null' => TRUE, 'default' => "''")); - break; - case 'mysql': - case 'mysqli': - $ret[] = update_sql("ALTER TABLE {blocks} CHANGE region region varchar(64) default 'left' NOT NULL"); - $ret[] = update_sql("ALTER TABLE {blocks} ADD theme varchar(255) NOT NULL default ''"); - break; - } - - // Intialize block data for default theme - $ret[] = update_sql("UPDATE {blocks} SET region = 'left' WHERE region = '0'"); - $ret[] = update_sql("UPDATE {blocks} SET region = 'right' WHERE region = '1'"); - db_query("UPDATE {blocks} SET theme = '%s'", $default_theme); - - // Initialze block data for other enabled themes. - $themes = list_themes(); - foreach (array_keys($themes) as $theme) { - if (($theme != $default_theme) && $themes[$theme]->status == 1) { - system_initialize_theme_blocks($theme); - } - } - - return $ret; -} - -function update_146() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("CREATE TABLE {node_revisions} - SELECT nid, nid AS vid, uid, type, title, body, teaser, changed AS timestamp, format - FROM {node}"); - - $ret[] = update_sql("ALTER TABLE {node_revisions} CHANGE nid nid int(10) unsigned NOT NULL default '0'"); - $ret[] = update_sql("ALTER TABLE {node_revisions} ADD log longtext"); - - $ret[] = update_sql("ALTER TABLE {node} ADD vid int(10) unsigned NOT NULL default '0'"); - $ret[] = update_sql("ALTER TABLE {files} ADD vid int(10) unsigned NOT NULL default '0'"); - $ret[] = update_sql("ALTER TABLE {book} ADD vid int(10) unsigned NOT NULL default '0'"); - $ret[] = update_sql("ALTER TABLE {forum} ADD vid int(10) unsigned NOT NULL default '0'"); - - $ret[] = update_sql("ALTER TABLE {book} DROP PRIMARY KEY"); - $ret[] = update_sql("ALTER TABLE {forum} DROP PRIMARY KEY"); - $ret[] = update_sql("ALTER TABLE {files} DROP PRIMARY KEY"); - - $ret[] = update_sql("UPDATE {node} SET vid = nid"); - $ret[] = update_sql("UPDATE {forum} SET vid = nid"); - $ret[] = update_sql("UPDATE {book} SET vid = nid"); - $ret[] = update_sql("UPDATE {files} SET vid = nid"); - - $ret[] = update_sql("ALTER TABLE {book} ADD PRIMARY KEY vid (vid)"); - $ret[] = update_sql("ALTER TABLE {forum} ADD PRIMARY KEY vid (vid)"); - $ret[] = update_sql("ALTER TABLE {node_revisions} ADD PRIMARY KEY vid (vid)"); - $ret[] = update_sql("ALTER TABLE {node_revisions} ADD KEY nid (nid)"); - $ret[] = update_sql("ALTER TABLE {node_revisions} ADD KEY uid (uid)"); - - $ret[] = update_sql("CREATE TABLE {old_revisions} SELECT nid, type, revisions FROM {node} WHERE revisions != ''"); - - $ret[] = update_sql("ALTER TABLE {book} ADD KEY nid (nid)"); - $ret[] = update_sql("ALTER TABLE {forum} ADD KEY nid (nid)"); - $ret[] = update_sql("ALTER TABLE {files} ADD KEY fid (fid)"); - $ret[] = update_sql("ALTER TABLE {files} ADD KEY vid (vid)"); - $vid = db_next_id('{node}_nid'); - $ret[] = update_sql("INSERT INTO {sequences} (name, id) VALUES ('{node_revisions}_vid', $vid)"); - } - else { // pgsql - $ret[] = update_sql("CREATE TABLE {node_revisions} ( - nid integer NOT NULL default '0', - vid integer NOT NULL default '0', - uid integer NOT NULL default '0', - title varchar(128) NOT NULL default '', - body text NOT NULL default '', - teaser text NOT NULL default '', - log text NOT NULL default '', - timestamp integer NOT NULL default '0', - format int NOT NULL default '0', - PRIMARY KEY (nid,vid))"); - $ret[] = update_sql("INSERT INTO {node_revisions} - SELECT nid, nid AS vid, uid, title, body, teaser, changed AS timestamp, format - FROM {node}"); - $ret[] = update_sql('CREATE INDEX {node_revisions}_uid_idx ON {node_revisions}(uid)'); - $vid = db_next_id('{node}_nid'); - $ret[] = update_sql("CREATE SEQUENCE {node_revisions}_vid_seq INCREMENT 1 START $vid"); - - db_add_column($ret, 'node', 'vid', 'int', array('not null' => TRUE, 'default' => 0)); - db_add_column($ret, 'files', 'vid', 'int', array('not null' => TRUE, 'default' => 0)); - db_add_column($ret, 'book', 'vid', 'int', array('not null' => TRUE, 'default' => 0)); - db_add_column($ret, 'forum', 'vid', 'int', array('not null' => TRUE, 'default' => 0)); - - $ret[] = update_sql("ALTER TABLE {book} DROP CONSTRAINT {book}_pkey"); - $ret[] = update_sql("ALTER TABLE {forum} DROP CONSTRAINT {forum}_pkey"); - $ret[] = update_sql("ALTER TABLE {files} DROP CONSTRAINT {files}_pkey"); - - $ret[] = update_sql("UPDATE {node} SET vid = nid"); - $ret[] = update_sql("UPDATE {forum} SET vid = nid"); - $ret[] = update_sql("UPDATE {book} SET vid = nid"); - $ret[] = update_sql("UPDATE {files} SET vid = nid"); - - $ret[] = update_sql("ALTER TABLE {book} ADD PRIMARY KEY (vid)"); - $ret[] = update_sql("ALTER TABLE {forum} ADD PRIMARY KEY (nid)"); // We, The Postgres, will do it database.* way, not update() way. - - $ret[] = update_sql("CREATE TABLE {old_revisions} AS SELECT nid, type, revisions FROM {node} WHERE revisions != ''"); - - $ret[] = update_sql('CREATE INDEX {node}_vid_idx ON {node}(vid)'); - $ret[] = update_sql('CREATE INDEX {forum}_vid_idx ON {forum}(vid)'); - $ret[] = update_sql('CREATE INDEX {files}_fid_idx ON {files}(fid)'); - $ret[] = update_sql('CREATE INDEX {files}_vid_idx ON {files}(vid)'); - } - - // Move logs too. - $result = db_query("SELECT nid, log FROM {book} WHERE log != ''"); - while ($row = db_fetch_object($result)) { - db_query("UPDATE {node_revisions} SET log = '%s' WHERE vid = %d", $row->log, $row->nid); - } - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {book} DROP log"); - $ret[] = update_sql("ALTER TABLE {node} DROP teaser"); - $ret[] = update_sql("ALTER TABLE {node} DROP body"); - $ret[] = update_sql("ALTER TABLE {node} DROP format"); - $ret[] = update_sql("ALTER TABLE {node} DROP revisions"); - } - else { // pgsql - $ret[] = update_sql("ALTER TABLE {book} RENAME log TO log_old"); - $ret[] = update_sql("ALTER TABLE {node} RENAME teaser TO teaser_old"); - $ret[] = update_sql("ALTER TABLE {node} RENAME body TO body_old"); - $ret[] = update_sql("ALTER TABLE {node} RENAME format TO format_old"); - $ret[] = update_sql("ALTER TABLE {node} RENAME revisions TO revisions_old"); - } - - return $ret; -} - -function update_147() { - $ret = array(); - - // this update is mysql only, pgsql should get it right in the first try. - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {node_revisions} DROP type"); - } - - return $ret; -} - -function update_148() { - $ret = array(); - - // Add support for tracking users' session ids (useful for tracking anon users) - switch ($GLOBALS['db_type']) { - case 'pgsql': - db_add_column($ret, 'accesslog', 'sid', 'varchar(32)', array('not null' => TRUE, 'default' => "''")); - break; - case 'mysql': - case 'mysqli': - $ret[] = update_sql("ALTER TABLE {accesslog} ADD sid varchar(32) NOT NULL default ''"); - break; - } - - return $ret; -} - -function update_149() { - $ret = array(); - - switch ($GLOBALS['db_type']) { - case 'pgsql': - db_add_column($ret, 'files', 'description', 'varchar(255)', array('not null' => TRUE, 'default' => "''")); - break; - case 'mysql': - case 'mysqli': - $ret[] = update_sql("ALTER TABLE {files} ADD COLUMN description VARCHAR(255) NOT NULL DEFAULT ''"); - break; - default: - break; - } - - return $ret; -} - -function update_150() { - $ret = array(); - - $ret[] = update_sql("DELETE FROM {variable} WHERE name = 'node_cron_last'"); - $ret[] = update_sql("DELETE FROM {variable} WHERE name = 'minimum_word_size'"); - $ret[] = update_sql("DELETE FROM {variable} WHERE name = 'remove_short'"); - - $ret[] = update_sql("DELETE FROM {node_counter} WHERE nid = 0"); - - $ret[] = update_sql('DROP TABLE {search_index}'); - $ret[] = update_sql('DROP TABLE {search_total}'); - - switch ($GLOBALS['db_type']) { - case 'mysqli': - case 'mysql': - $ret[] = update_sql("CREATE TABLE {search_dataset} ( - sid int(10) unsigned NOT NULL default '0', - type varchar(16) default NULL, - data longtext NOT NULL, - KEY sid_type (sid, type) - )"); - - $ret[] = update_sql("CREATE TABLE {search_index} ( - word varchar(50) NOT NULL default '', - sid int(10) unsigned NOT NULL default '0', - type varchar(16) default NULL, - fromsid int(10) 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) - )"); - - $ret[] = update_sql("CREATE TABLE {search_total} ( - word varchar(50) NOT NULL default '', - count float default NULL, - PRIMARY KEY word (word) - )"); - break; - case 'pgsql': - $ret[] = update_sql("CREATE TABLE {search_dataset} ( - sid integer NOT NULL default '0', - type varchar(16) default NULL, - data text NOT NULL default '')"); - $ret[] = update_sql("CREATE INDEX {search_dataset}_sid_type_idx ON {search_dataset}(sid, type)"); - - $ret[] = update_sql("CREATE TABLE {search_index} ( - word varchar(50) NOT NULL default '', - sid integer NOT NULL default '0', - type varchar(16) default NULL, - fromsid integer NOT NULL default '0', - fromtype varchar(16) default NULL, - score float default NULL)"); - $ret[] = update_sql("CREATE INDEX {search_index}_sid_type_idx ON {search_index}(sid, type)"); - $ret[] = update_sql("CREATE INDEX {search_index}_fromsid_fromtype_idx ON {search_index}(fromsid, fromtype)"); - $ret[] = update_sql("CREATE INDEX {search_index}_word_idx ON {search_index}(word)"); - - $ret[] = update_sql("CREATE TABLE {search_total} ( - word varchar(50) NOT NULL default '', - count float default NULL, - PRIMARY KEY(word))"); - break; - default: - break; - } - return $ret; -} - -function update_151() { - $ret = array(); - - $ts = variable_get('theme_settings', null); - - // set up data array so we can loop over both sets of links - $menus = array(0 => array('links_var' => 'primary_links', - 'toggle_var' => 'toggle_primary_links', - 'more_var' => 'primary_links_more', - 'menu_name' => t('Primary links'), - 'menu_var' => 'menu_primary_menu', - 'pid' => 0), - 1 => array('links_var' => 'secondary_links', - 'toggle_var' => 'toggle_secondary_links', - 'more_var' => 'secondary_links_more', - 'menu_name' => t('Secondary links'), - 'menu_var' => 'menu_secondary_menu', - 'pid' => 0)); - - for ($loop = 0; $loop <= 1 ; $loop ++) { - // create new Primary and Secondary links menus - $menus[$loop]['pid'] = db_next_id('{menu}_mid'); - $ret[] = update_sql("INSERT INTO {menu} (mid, pid, path, title, description, weight, type) " . - "VALUES ({$menus[$loop]['pid']}, 0, '', '{$menus[$loop]['menu_name']}', '', 0, 115)"); - - // insert all entries from theme links into new menus - $num_inserted = 0; - if (is_array($ts) && is_array($ts[$menus[$loop]['links_var']])) { - $links = $ts[$menus[$loop]['links_var']]; - for ($i = 0; $i < count($links['text']); $i++) { - if ($links['text'][$i] != "" && $links['link'][$i] != "") { - $num_inserted ++; - $node_unalias = db_fetch_array(db_query("SELECT src FROM {url_alias} WHERE dst = '%s'", $links['link'][$i])); - if (is_array($node_unalias)) { - $link_path = $node_unalias['src']; - } - else { - $link_path = $links['link'][$i]; - } - - $mid = db_next_id('{menu}_mid'); - $ret[] = update_sql("INSERT INTO {menu} (mid, pid, path, title, description, weight, type) " . - "VALUES ($mid, {$menus[$loop]['pid']}, '" . db_escape_string($link_path) . - "', '" . db_escape_string($links['text'][$i]) . - "', '" . db_escape_string($links['description'][$i]) . "', 0, 118)"); - } - } - // delete Secondary links if not populated. - if ($loop == 1 && $num_inserted == 0) { - db_query("DELETE FROM {menu} WHERE mid={$menus[$loop]['pid']}"); - } - } - - // set menu_primary_menu variable appropriately - if (!$ts[$menus[$loop]['toggle_var']] || $num_inserted == 0) { - variable_set($menus[$loop]['menu_var'], 0); - } - else { - variable_set($menus[$loop]['menu_var'], $menus[$loop]['pid']); - } - variable_del($menus[$loop]['toggle_var']); - unset($ts[$menus[$loop]['toggle_var']]); - variable_del($menus[$loop]['links_var']); - unset($ts[$menus[$loop]['links_var']]); - variable_del($menus[$loop]['more_var']); - unset($ts[$menus[$loop]['more_var']]); - } - - if (is_array($ts)) { - variable_set('theme_settings', $ts); - } - - $ret[] = update_sql("UPDATE {system} SET status = 1 WHERE name = 'menu'"); - - return $ret; -} - -function update_152() { - $ret = array(); - - // Postgresql only update - switch ($GLOBALS['db_type']) { - case 'pgsql': - $ret[] = update_sql("ALTER TABLE {forum} RENAME shadow TO shadow_old"); - break; - case 'mysql': - case 'mysqli': - break; - } - - return $ret; -} - -function update_153(){ - $ret = array(); - switch ($GLOBALS['db_type']) { - case 'pgsql': - $ret[] = update_sql("ALTER TABLE {contact} DROP CONSTRAINT {contact}_pkey"); - $ret[] = update_sql("CREATE SEQUENCE {contact}_cid_seq"); - db_add_column($ret, 'contact', 'cid', 'int', array('not null' => TRUE, 'default' => "nextval('{contact}_cid_seq')")); - $ret[] = update_sql("ALTER TABLE {contact} ADD PRIMARY KEY (cid)"); - $ret[] = update_sql("ALTER TABLE {contact} ADD CONSTRAINT {contact}_category_key UNIQUE (category)"); - break; - case 'mysql': - case 'mysqli': - $ret[] = update_sql("ALTER TABLE {contact} DROP PRIMARY KEY"); - $ret[] = update_sql("ALTER TABLE {contact} ADD COLUMN cid int(11) NOT NULL PRIMARY KEY auto_increment"); - $ret[] = update_sql("ALTER TABLE {contact} ADD UNIQUE KEY category (category)"); - break; - } - return $ret; -} - -function update_154() { - $ret = array(); - switch ($GLOBALS['db_type']) { - case 'pgsql': - db_add_column($ret, 'contact', 'weight', 'smallint', array('not null' => TRUE, 'default' => 0)); - db_add_column($ret, 'contact', 'selected', 'smallint', array('not null' => TRUE, 'default' => 0)); - break; - case 'mysql': - case 'mysqli': - $ret[] = update_sql("ALTER TABLE {contact} ADD COLUMN weight tinyint(3) NOT NULL DEFAULT 0"); - $ret[] = update_sql("ALTER TABLE {contact} ADD COLUMN selected tinyint(1) NOT NULL DEFAULT 0"); - break; - } - return $ret; -} - -function update_155() { - $ret = array(); - - // Postgresql only update - switch ($GLOBALS['db_type']) { - case 'pgsql': - $ret[] = update_sql("DROP TABLE {cache}"); - $ret[] = update_sql("CREATE TABLE {cache} ( - cid varchar(255) NOT NULL default '', - data bytea default '', - expire integer NOT NULL default '0', - created integer NOT NULL default '0', - headers text default '', - PRIMARY KEY (cid) - )"); - $ret[] = update_sql("CREATE INDEX {cache}_expire_idx ON {cache}(expire)"); - break; - case 'mysql': - case 'mysqli': - break; - } - - return $ret; -} - - -/** - * Adds a column to a database. Uses syntax appropriate for PostgreSQL. - * Saves result of SQL commands in $ret array. - * - * Note: when you add a column with NOT NULL and you are not sure if there are rows in table already, - * you MUST also add DEFAULT. Otherwise PostgreSQL won't work if the table is not empty. If NOT NULL and - * DEFAULT is set the Postgresql version will set values of the added column in old rows to the DEFAULT value. - * - * @param $ret - * Array to which results will be added. - * @param $table - * Name of the table, without {} - * @param $column - * Name of the column - * @param $type - * Type of column - * @param $attributes - * Additional optional attributes. Recognized atributes: - * - not null => TRUE/FALSE - * - default => NULL/FALSE/value (with or without '', it wont' be added) - * @return - * nothing, but modifies $ret parametr. - */ -function db_add_column(&$ret, $table, $column, $type, $attributes = array()) { - if (array_key_exists('not null', $attributes) and $attributes['not null']) { - $not_null = 'NOT NULL'; - } - if (array_key_exists('default', $attributes)) { - if (is_null($attributes['default'])) { - $default_val = 'NULL'; - $default = 'default NULL'; - } - elseif ($attributes['default'] === FALSE) { - $default = ''; - } - else { - $default_val = "$attributes[default]"; - $default = "default $attributes[default]"; - } - } - - $ret[] = update_sql("ALTER TABLE {". $table ."} ADD $column $type"); - if ($default) { $ret[] = update_sql("ALTER TABLE {". $table ."} ALTER $column SET $default"); } - if ($not_null) { - if ($default) { $ret[] = update_sql("UPDATE {". $table ."} SET $column = $default_val"); } - $ret[] = update_sql("ALTER TABLE {". $table ."} ALTER $column SET NOT NULL"); - } -} - -/** - * Changes a column definition. Uses syntax appropriate for PostgreSQL. - * Saves result of SQL commands in $ret array. - * - * @param $ret - * Array to which results will be added. - * @param $table - * Name of the table, without {} - * @param $column - * Name of the column to change - * @param $column_new - * New name for the column (set to the same as $column if you don't want to change the name) - * @param $type - * Type of column - * @param $attributes - * Additional optional attributes. Recognized atributes: - * - not null => TRUE/FALSE - * - default => NULL/FALSE/value (with or without '', it wont' be added) - * @return - * nothing, but modifies $ret parametr. - */ -function db_change_column(&$ret, $table, $column, $column_new, $type, $attributes = array()) { - if (array_key_exists('not null', $attributes) and $attributes['not null']) { - $not_null = 'NOT NULL'; - } - if (array_key_exists('default', $attributes)) { - if (is_null($attributes['default'])) { - $default_val = 'NULL'; - $default = 'default NULL'; - } - elseif ($attributes['default'] === FALSE) { - $default = ''; - } - else { - $default_val = "$attributes[default]"; - $default = "default $attributes[default]"; - } - } - - $ret[] = update_sql("ALTER TABLE {". $table ."} RENAME $column TO ". $column ."_old"); - $ret[] = update_sql("ALTER TABLE {". $table ."} ADD $column_new $type"); - $ret[] = update_sql("UPDATE {". $table ."} SET $column_new = ". $column ."_old"); - if ($default) { $ret[] = update_sql("ALTER TABLE {". $table ."} ALTER $column_new SET $default"); } - if ($not_null) { $ret[] = update_sql("ALTER TABLE {". $table ."} ALTER $column_new SET NOT NULL"); } - // We don't drop columns for now - // $ret[] = update_sql("ALTER TABLE {". $table ."} DROP ". $column ."_old"); -} - - -function update_sql($sql) { - $edit = $_POST["edit"]; - $result = db_query($sql); - if ($result) { - return array('1', check_plain($sql) ."\n<span class=\"success\">OK</span>\n"); - } - else { - return array('0', check_plain($sql) ."\n<span class=\"failure\">FAILED</span>\n"); - } -} - -?> + url varchar(255) d \ No newline at end of file