Commit 3e36be3b authored by Dries's avatar Dries
Browse files

- Patch #39778 by chx: obliterate nodeapi op form in favor of the forms API's...

- Patch #39778 by chx: obliterate nodeapi op form in favor of the forms API's way of doing things.  Tested with help from webchick.
parent a2d8174c
......@@ -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:
......
......@@ -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)");