Index: database/updates.inc =================================================================== RCS file: /cvs/drupal/drupal/database/updates.inc,v retrieving revision 1.125 diff -u -p -r1.125 updates.inc --- database/updates.inc 11 Aug 2005 12:57:41 -0000 1.125 +++ database/updates.inc 16 Aug 2005 13:43:16 -0000 @@ -8,84 +8,6 @@ // Define the various updates in an array("date : comment" => "function"); $sql_updates = array( - "2002-06-22: first update since Drupal 4.0.0 release" => "update_32", - "2002-07-07" => "update_33", - "2002-07-31" => "update_34", - "2002-08-10" => "update_35", - "2002-08-16" => "update_36", - "2002-08-19" => "update_37", - "2002-08-26" => "update_38", - "2002-09-15" => "update_39", - "2002-09-17" => "update_40", - "2002-10-13" => "update_41", - "2002-10-17" => "update_42", - "2002-10-26" => "update_43", - "2002-11-08" => "update_44", - "2002-11-20" => "update_45", - "2002-12-10: first update since Drupal 4.1.0 release" => "update_46", - "2002-12-29" => "update_47", - "2003-01-03" => "update_48", - "2003-01-05" => "update_49", - "2003-01-15" => "update_50", - "2003-04-19" => "update_51", - "2003-04-20" => "update_52", - "2003-05-18" => "update_53", - "2003-05-24" => "update_54", - "2003-05-31" => "update_55", - "2003-06-04" => "update_56", - "2003-06-08" => "update_57", - "2003-06-08: first update since Drupal 4.2.0 release" => "update_58", - "2003-08-05" => "update_59", - "2003-08-15" => "update_60", - "2003-08-20" => "update_61", - "2003-08-27" => "update_62", - "2003-09-09" => "update_63", - "2003-09-10" => "update_64", - "2003-09-29" => "update_65", - "2003-09-30" => "update_66", - "2003-10-11" => "update_67", - "2003-10-20" => "update_68", - "2003-10-22" => "update_69", - "2003-10-27" => "update_70", - "2003-11-17: first update since Drupal 4.3.0 release" => "update_71", - "2003-11-27" => "update_72", - "2003-12-03" => "update_73", - "2003-12-06" => "update_74", - "2004-01-06" => "update_75", - "2004-01-11" => "update_76", - "2004-01-13" => "update_77", - "2004-02-03" => "update_78", - "2004-02-21" => "update_79", - "2004-03-11: first update since Drupal 4.4.0 release" => "update_80", - "2004-02-20" => "update_81", - "2004-02-27" => "update_82", - "2004-04-15" => "update_83", - "2004-04-21" => "update_84", - "2004-04-27" => "update_85", - "2004-05-10" => "update_86", - "2004-05-18" => "update_87", - "2004-06-11" => "update_88", - "2004-06-18" => "update_89", - "2004-06-27" => "update_90", - "2004-06-30" => "update_91", - "2004-07-07" => "update_92", - "2004-07-11" => "update_93", - "2004-07-22" => "update_94", - "2004-07-30" => "update_95", - "2004-08-04" => "update_96", - "2004-08-06" => "update_97", - "2004-08-07" => "update_98", - "2004-08-09" => "update_99", - "2004-08-10" => "update_100", - "2004-08-11" => "update_101", - "2004-08-12" => "update_102", - "2004-08-17" => "update_103", - "2004-08-19" => "update_104", - "2004-09-14" => "update_105", - "2004-09-15" => "update_106", - "2004-09-17" => "update_107", - "2004-10-16" => "update_108", - "2004-10-18" => "update_109", "2004-10-31: first update since Drupal 4.5.0 release" => "update_110", "2004-11-07" => "update_111", "2004-11-15" => "update_112", @@ -123,1796 +45,6 @@ $sql_updates = array( "2005-08-08" => "update_144" ); -function update_32() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE users ADD index (sid(4))"); - $ret[] = update_sql("ALTER TABLE users ADD index (timestamp)"); - $ret[] = update_sql("ALTER TABLE users ADD UNIQUE KEY name (name)"); - return $ret; -} - -function update_33() { - $ret = array(); - $result = db_query("SELECT * FROM variable WHERE value NOT LIKE 's:%;'"); - // NOTE: the "WHERE"-part of the query above avoids variables to get serialized twice. - while ($variable = db_fetch_object($result)) { - variable_set($variable->name, $variable->value); - } - return $ret; -} - -function update_34() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE feed MODIFY refresh int(10) NOT NULL default '0'"); - $ret[] = update_sql("ALTER TABLE feed MODIFY timestamp int (10) NOT NULL default '0'"); - $ret[] = update_sql("ALTER TABLE users CHANGE session session TEXT"); - return $ret; -} - -function update_35() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE poll_choices ADD INDEX (nid)"); - return $ret; -} - -function update_36() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE rating CHANGE old previous int(6) NOT NULL default '0'"); - $ret[] = update_sql("ALTER TABLE rating CHANGE new current int(6) NOT NULL default '0'"); - return $ret; -} - -function update_37() { - $ret = array(); - - $ret[] = update_sql("DROP TABLE IF EXISTS sequences"); - - $ret[] = update_sql("CREATE TABLE sequences ( - name VARCHAR(255) NOT NULL PRIMARY KEY, - id INT UNSIGNED NOT NULL - ) TYPE=MyISAM"); - - if ($max = db_result(db_query("SELECT MAX(nid) FROM node"))) { - $ret[] = update_sql("REPLACE INTO sequences VALUES ('node', $max)"); - } - - if ($max = db_result(db_query("SELECT MAX(cid) FROM comments"))) { - $ret[] = update_sql("REPLACE INTO sequences VALUES ('comments', $max)"); - } - // NOTE: move the comments bit down as soon as we switched to use the new comment module! - - if ($max = db_result(db_query("SELECT MAX(tid) FROM term_data"))) { - $ret[] = update_sql("REPLACE INTO sequences VALUES ('term_data', $max)"); - } - return $ret; -} - -function update_38() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE watchdog CHANGE message message text NOT NULL default ''"); - return $ret; -} - -function update_39() { - $ret = array(); - $ret[] = update_sql("DROP TABLE moderate"); - - $ret[] = update_sql("ALTER TABLE comments ADD score MEDIUMINT NOT NULL"); - $ret[] = update_sql("ALTER TABLE comments ADD status TINYINT UNSIGNED NOT NULL"); - $ret[] = update_sql("ALTER TABLE comments ADD users MEDIUMTEXT"); - - $ret[] = update_sql("CREATE TABLE moderation_votes ( - mid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - vote VARCHAR(255), - weight TINYINT NOT NULL - )"); - - $ret[] = update_sql("CREATE TABLE moderation_roles ( - rid INT UNSIGNED NOT NULL, - mid INT UNSIGNED NOT NULL, - value TINYINT NOT NULL - )"); - - $ret[] = update_sql("ALTER TABLE moderation_roles ADD INDEX (rid)"); - $ret[] = update_sql("ALTER TABLE moderation_roles ADD INDEX (mid)"); - - $ret[] = update_sql("CREATE TABLE moderation_filters ( - fid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - filter VARCHAR(255) NOT NULL, - minimum SMALLINT NOT NULL - )"); - - $ret[] = update_sql("DELETE FROM moderation_votes"); - $ret[] = update_sql("INSERT INTO moderation_votes VALUES (1, '+1', 0)"); - $ret[] = update_sql("INSERT INTO moderation_votes VALUES (2, '-1', 1)"); - - $ret[] = update_sql("DELETE FROM moderation_roles"); - $ret[] = update_sql("INSERT INTO moderation_roles VALUES (2, 1, 1)"); - $ret[] = update_sql("INSERT INTO moderation_roles VALUES (2, 2, -1)"); - - $ret[] = update_sql("CREATE TABLE forum ( - nid int unsigned not null primary key, - icon varchar(255) not null, - shadow int unsigned not null - )"); - return $ret; -} - -function update_40() { - $ret = array(); - if ($max = db_result(db_query("SELECT MAX(cid) FROM comments"))) { - $ret[] = update_sql("REPLACE INTO sequences VALUES ('comments', $max)"); - } - return $ret; -} - -function update_41() { - $ret = array(); - $ret[] = update_sql("CREATE TABLE statistics ( - nid int(11) NOT NULL, - totalcount bigint UNSIGNED DEFAULT '0' NOT NULL, - daycount mediumint UNSIGNED DEFAULT '0' NOT NULL, - timestamp int(11) UNSIGNED DEFAULT '0' NOT NULL, - PRIMARY KEY (nid), - INDEX (totalcount), - INDEX (daycount), - INDEX (timestamp) - )"); - - $ret[] = update_sql("CREATE TABLE accesslog ( - nid int(11) UNSIGNED DEFAULT '0', - url varchar(255), - hostname varchar(128), - uid int(10) UNSIGNED DEFAULT '0', - timestamp int(11) UNSIGNED NOT NULL - )"); - return $ret; -} - -function update_42() { - $ret = array(); - $ret[] = update_sql("DROP TABLE modules"); - $ret[] = update_sql("DROP TABLE layout"); - $ret[] = update_sql("DROP TABLE referrer"); - return $ret; -} - -function update_43() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE blocks DROP remove"); - $ret[] = update_sql("ALTER TABLE blocks DROP name"); - $ret[] = update_sql("UPDATE boxes SET type = 0 WHERE type = 1"); - $ret[] = update_sql("UPDATE boxes SET type = 1 WHERE type = 2"); - return $ret; -} - -function update_44() { - $ret = array(); - $ret[] = update_sql("UPDATE system SET filename = CONCAT('modules/', filename) WHERE type = 'module'"); - return $ret; -} - -function update_45() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE page ADD description varchar(128) NOT NULL default ''"); - return $ret; -} - -function update_46() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("ALTER TABLE cache ADD created integer"); - } - else { - $ret[] = update_sql("ALTER TABLE cache ADD created int(11) NOT NULL default '0'"); - } - return $ret; -} - -function update_47() { - $ret = array(); - if ($max = db_result(db_query("SELECT MAX(vid) FROM vocabulary"))) { - $ret[] = update_sql("REPLACE INTO sequences VALUES ('vocabulary', $max)"); - } - return $ret; -} - -function update_48() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE watchdog ADD link varchar(255) DEFAULT '' NULL"); - return $ret; -} - -function update_49() { - $ret = array(); - /* - ** Make sure the admin module is added to the system table or the - ** admin menus won't show up. - */ - - $ret[] = update_sql("DELETE FROM system WHERE name = 'admin';"); - $ret[] = update_sql("INSERT INTO system VALUES ('modules/admin.module','admin','module','',1)"); - return $ret; -} - -function update_50() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE forum ADD tid INT UNSIGNED NOT NULL"); - $result = db_queryd("SELECT n.nid, t.tid FROM node n, term_node t WHERE n.nid = t.nid AND type = 'forum'"); - while ($node = db_fetch_object($result)) { - db_queryd("UPDATE forum SET tid = %d WHERE nid = %d", $node->tid, $node->nid); - } - $ret[] = update_sql("ALTER TABLE forum ADD INDEX (tid)"); - return $ret; -} - -function update_51() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE blocks CHANGE delta delta varchar(32) NOT NULL default '0'"); - return $ret; -} - -function update_52() { - $ret = array(); - $ret[] = update_sql("UPDATE sequences SET name = 'comments_cid' WHERE name = 'comments';"); - $ret[] = update_sql("UPDATE sequences SET name = 'node_nid' WHERE name = 'node';"); - - $ret[] = update_sql("DELETE FROM sequences WHERE name = 'import'"); - $ret[] = update_sql("DELETE FROM sequences WHERE name = 'bundle_bid'"); // in case we would run this entry twice - $ret[] = update_sql("DELETE FROM sequences WHERE name = 'feed_fid'"); // in case we would run this entry twice - - $bundles = db_result(db_query("SELECT MAX(bid) FROM bundle;")); - $ret[] = update_sql("INSERT INTO sequences (name, id) VALUES ('bundle_bid', '$bundles')"); - - $feeds = db_result(db_query("SELECT MAX(fid) FROM feed;")); - $ret[] = update_sql("INSERT INTO sequences (name, id) VALUES ('feed_fid', '$feeds')"); - - $ret[] = update_sql("UPDATE sequences SET name = 'vocabulary_vid' WHERE name = 'vocabulary';"); - - $ret[] = update_sql("UPDATE sequences SET name = 'term_data_tid' WHERE name = 'term_data'"); - return $ret; -} - -function update_53() { - $ret = array(); - $ret[] = update_sql("CREATE INDEX book_parent ON book(parent);"); - return $ret; -} - -function update_54() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE locales CHANGE string string BLOB DEFAULT '' NOT NULL"); - return $ret; -} - -function update_55() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE site ADD checked INT(11) NOT NULL;"); - $ret[] = update_sql("ALTER TABLE site CHANGE timestamp changed INT(11) NOT NULL;"); - return $ret; -} - -function update_56() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE vocabulary CHANGE types nodes TEXT DEFAULT '' NOT NULL"); - return $ret; -} - -function update_57() { - $ret = array(); - $ret[] = update_sql("DELETE FROM variable WHERE name = 'site_charset'"); - return $ret; -} - -function update_58() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("ALTER TABLE {node} ADD path varchar(250) NULL"); - $ret[] = update_sql("ALTER TABLE {node} ALTER COLUMN path SET DEFAULT ''"); - } - else { - $ret[] = update_sql("ALTER TABLE {node} ADD path varchar(250) NULL default ''"); - } - return $ret; -} - -function update_59() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("ALTER TABLE {comments} ADD thread VARCHAR(255)"); - $ret[] = update_sql("ALTER TABLE {comments} ALTER COLUMN thread SET NOT NULL"); - } - else { - $ret[] = update_sql("ALTER TABLE {comments} ADD thread VARCHAR(255) NOT NULL"); - } - - $result = db_query("SELECT DISTINCT(nid) FROM {comments} WHERE thread = ''"); - - while ($node = db_fetch_object($result)) { - $result2 = db_query("SELECT cid, pid FROM {comments} WHERE nid = '%d' ORDER BY timestamp", $node->nid); - $comments = array(); - while ($comment = db_fetch_object($result2)) { - $comments[$comment->cid] = $comment; - } - - $structure = array(); - $structure = _update_thread_structure($comments, 0, -1, $structure); - - foreach ($structure as $cid => $thread) { - $new_parts = array(); - foreach(explode(".", $thread) as $part) { - if ($part > 9) { - $start = substr($part, 0, strlen($part) - 1); - $end = substr($part, -1, 1); - - $new_parts[] = str_repeat("9", $start).$end; - } - else { - $new_parts[] = $part; - } - } - $thread = implode(".", $new_parts); - - db_query("UPDATE {comments} SET thread = '%s' WHERE cid = '%d'", $thread."/", $comments[$cid]->cid); - } - } - return $ret; -} - -function _update_thread_structure($comments, $pid, $depth, $structure) { - $ret = array(); - $depth++; - - foreach ($comments as $key => $comment) { - if ($comment->pid == $pid) { - if ($structure[$comment->pid]) { - $structure[$comment->cid] = $structure[$comment->pid]."."._update_next_thread($structure, $structure[$comment->pid]); - } - else { - $structure[$comment->cid] = _update_next_thread($structure, ""); - } - - $structure = _update_thread_structure($comments, $comment->cid, $depth, $structure); - } - } - - return $structure; - return $ret; -} - -function update_60() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE {forum} DROP icon"); - return $ret; -} - -function update_61() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("CREATE TABLE {sessions} ( - uid integer NOT NULL, - sid varchar(32) NOT NULL default '', - hostname varchar(128) NOT NULL default '', - timestamp integer NOT NULL default '0', - session text, - PRIMARY KEY (sid) - );"); - - $ret[] = update_sql("ALTER TABLE {users} DROP session;"); - $ret[] = update_sql("ALTER TABLE {users} DROP hostname;"); - $ret[] = update_sql("ALTER TABLE {users} DROP sid;"); - - } - else { - $ret[] = update_sql("CREATE TABLE IF NOT EXISTS {sessions} ( - uid int(10) unsigned NOT NULL, - sid varchar(32) NOT NULL default '', - hostname varchar(128) NOT NULL default '', - timestamp int(11) NOT NULL default '0', - session text, - KEY uid (uid), - KEY sid (sid(4)), - KEY timestamp (timestamp) - )"); - - $ret[] = update_sql("ALTER TABLE {users} DROP session;"); - $ret[] = update_sql("ALTER TABLE {users} DROP hostname;"); - $ret[] = update_sql("ALTER TABLE {users} DROP sid;"); - } - return $ret; -} - -function update_62() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("CREATE INDEX accesslog_timestamp ON {accesslog} (timestamp)"); - - $ret[] = update_sql("DROP INDEX node_type_idx"); - $ret[] = update_sql("DROP INDEX node_title_idx"); - $ret[] = update_sql("DROP INDEX node_promote_idx"); - - $ret[] = update_sql("CREATE INDEX node_type ON {node} (type)"); - $ret[] = update_sql("CREATE INDEX node_title_type ON {node} (title,type)"); - $ret[] = update_sql("CREATE INDEX node_moderate ON {node} (moderate)"); - $ret[] = update_sql("CREATE INDEX node_path ON {node} (path)"); - $ret[] = update_sql("CREATE INDEX node_promote_status ON {node} (promote, status)"); - - } - else { - $ret[] = update_sql("ALTER TABLE {accesslog} ADD INDEX accesslog_timestamp (timestamp)"); - - $ret[] = update_sql("ALTER TABLE {node} DROP INDEX type"); - $ret[] = update_sql("ALTER TABLE {node} DROP INDEX title"); - $ret[] = update_sql("ALTER TABLE {node} DROP INDEX promote"); - - $ret[] = update_sql("ALTER TABLE {node} ADD INDEX node_type (type(4))"); - $ret[] = update_sql("ALTER TABLE {node} ADD INDEX node_title_type (title,type(4))"); - $ret[] = update_sql("ALTER TABLE {node} ADD INDEX node_moderate (moderate)"); - $ret[] = update_sql("ALTER TABLE {node} ADD INDEX node_path (path(5))"); - $ret[] = update_sql("ALTER TABLE {node} ADD INDEX node_promote_status (promote, status)"); - } - return $ret; -} - -function _update_next_thread($structure, $parent) { - $ret = array(); - do { - $val++; - if ($parent) { - $thread = "$parent.$val"; - } - else { - $thread = $val; - } - - } while (array_search($thread, $structure)); - - return $val; - return $ret; -} - -function update_63() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("INSERT INTO {users} (uid, name, mail, timestamp) VALUES ('0', '', '', '". time() ."')"); - } - else { - $ret[] = update_sql("ALTER TABLE {users} CHANGE uid uid int(10) unsigned NOT NULL default '0'"); - $ret[] = update_sql("INSERT INTO {users} (uid, name, mail, timestamp) VALUES ('0', '', '', '". time() ."')"); - $users = db_result(db_query("SELECT MAX(uid) FROM {users};")); - $ret[] = update_sql("INSERT INTO {sequences} (name, id) VALUES ('users_uid', '$users')"); - } - return $ret; -} - -function update_64() { - $ret = array(); - $ret[] = update_sql("UPDATE {users} SET rid = 1 WHERE uid = 0"); - return $ret; -} - -function update_65() { - $ret = array(); - // PostgreSQL-only update. - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("CREATE FUNCTION \"rand\"() RETURNS float AS ' - BEGIN - RETURN random(); - END;' LANGUAGE 'plpgsql'"); - } - return $ret; -} - -function update_66() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("CREATE TABLE {path} ( - pid serial, - src varchar(128) NOT NULL default '', - dst varchar(128) NOT NULL default '', - PRIMARY KEY (pid) - )"); - $ret[] = update_sql("CREATE INDEX path_src_idx ON {path}(src)"); - $ret[] = update_sql("CREATE INDEX path_dst_idx ON {path}(dst)"); - $result = db_query("SELECT nid, path FROM {node} WHERE path != ''"); - while ($node = db_fetch_object($result)) { - $ret[] = update_sql("INSERT INTO {path} (src, dst) VALUES ('node/view/$node->nid', '". check_query($node->path) ."')"); - } - } - else { - $ret[] = update_sql("CREATE TABLE {path} ( - pid int(10) unsigned NOT NULL auto_increment, - src varchar(128) NOT NULL default '', - dst varchar(128) NOT NULL default '', - PRIMARY KEY (pid), - UNIQUE KEY src (src), - UNIQUE KEY dst (dst) - )"); - // Migrate the existing paths: - $result = db_query("SELECT nid, path FROM {node} WHERE path != ''"); - while ($node = db_fetch_object($result)) { - $ret[] = update_sql("INSERT INTO {path} (src, dst) VALUES ('node/view/$node->nid', '". check_query($node->path) ."')"); - } - - $ret[] = update_sql("ALTER TABLE {node} DROP path"); - } - return $ret; -} - -function update_67() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - // Taking no action. PostgreSQL is not always capable of dropping columns. - } - else { - $ret[] = update_sql("ALTER TABLE {users} DROP homepage"); - } - return $ret; -} - -function update_68() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - // Unneccesary. The PostgreSQL port was already using a sequence. - } - else { - $max = db_result(db_query("SELECT MAX(aid) FROM {access};")); - $ret[] = update_sql("INSERT INTO {sequences} (name, id) VALUES ('access_aid', '$max')"); - $ret[] = update_sql("ALTER TABLE {access} CHANGE aid aid tinyint(10) NOT NULL "); - } - return $ret; -} - -function update_69() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - /* Rename the statistics table to node_counter */ - $ret[] = update_sql("ALTER TABLE {statistics} RENAME TO {node_counter}"); - $ret[] = update_sql("DROP INDEX {statistics}_totalcount_idx"); - $ret[] = update_sql("DROP INDEX {statistics}_daycount_idx"); - $ret[] = update_sql("DROP INDEX {statistics}_timestamp_idx"); - $ret[] = update_sql("CREATE INDEX {node_counter}_totalcount_idx ON {node_counter}(totalcount)"); - $ret[] = update_sql("CREATE INDEX {node_counter}_daycount_idx ON {node_counter}(daycount)"); - $ret[] = update_sql("CREATE INDEX {node_counter}_timestamp_idx ON {node_counter}(timestamp)"); - - /* Rename the path table to url_alias */ - $ret[] = update_sql("ALTER TABLE {path} RENAME TO {url_alias}"); - $ret[] = update_sql("ALTER TABLE {path}_pid_seq RENAME TO {url_alias}_pid_seq"); - } - else { - $ret[] = update_sql("ALTER TABLE {statistics} RENAME TO {node_counter}"); - $ret[] = update_sql("ALTER TABLE {path} RENAME TO {url_alias}"); - $ret[] = update_sql("UPDATE {sequences} SET name = '{url_alias}_pid' WHERE name = '{path}_pid'"); - } - - $ret[] = update_sql("UPDATE {users} SET name = '' WHERE uid = 0;"); - return $ret; -} - -function update_70() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE {variable} CHANGE name name varchar(48) NOT NULL"); - return $ret; -} - -function update_71() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("ALTER TABLE {system} ADD bootstrap integer"); - } - else { - $ret[] = update_sql("ALTER TABLE {system} ADD bootstrap int(2)"); - } - return $ret; -} - -function update_72() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("ALTER TABLE {blocks} ADD throttle smallint"); - $ret[] = update_sql("ALTER TABLE {blocks} ALTER COLUMN throttle SET DEFAULT '0'"); - $ret[] = update_sql("UPDATE {blocks} SET throttle = 0"); - $ret[] = update_sql("ALTER TABLE {blocks} ALTER COLUMN throttle SET NOT NULL"); - } - else { - $ret[] = update_sql("ALTER TABLE {blocks} ADD throttle tinyint(1) NOT NULL DEFAULT '0'"); - } - return $ret; -} - -function update_73() { - $ret = array(); - /* MySQL only update */ - if ($GLOBALS["db_type"] == "mysql") { - $ret[] = update_sql("ALTER TABLE {book} CHANGE log log longtext"); - $ret[] = update_sql("ALTER TABLE {boxes} CHANGE body body longtext"); - $ret[] = update_sql("ALTER TABLE {cache} CHANGE data data longtext"); - $ret[] = update_sql("ALTER TABLE {comments} CHANGE comment comment longtext"); - $ret[] = update_sql("ALTER TABLE {comments} CHANGE users users longtext"); - $ret[] = update_sql("ALTER TABLE {directory} CHANGE slogan slogan longtext"); - $ret[] = update_sql("ALTER TABLE {directory} CHANGE mission mission longtext"); - $ret[] = update_sql("ALTER TABLE {feed} CHANGE description description longtext"); - $ret[] = update_sql("ALTER TABLE {item} CHANGE description description longtext"); - $ret[] = update_sql("ALTER TABLE {node} CHANGE users users longtext"); - $ret[] = update_sql("ALTER TABLE {node} CHANGE teaser teaser longtext"); - $ret[] = update_sql("ALTER TABLE {node} CHANGE body body longtext"); - $ret[] = update_sql("ALTER TABLE {node} CHANGE revisions revisions longtext"); - $ret[] = update_sql("ALTER TABLE {permission} CHANGE perm perm longtext"); - $ret[] = update_sql("ALTER TABLE {poll} CHANGE voters voters longtext"); - $ret[] = update_sql("ALTER TABLE {sessions} CHANGE session session longtext"); - $ret[] = update_sql("ALTER TABLE {term_data} CHANGE description description longtext"); - $ret[] = update_sql("ALTER TABLE {users} CHANGE data data longtext"); - $ret[] = update_sql("ALTER TABLE {variable} CHANGE value value longtext"); - $ret[] = update_sql("ALTER TABLE {vocabulary} CHANGE description description longtext"); - $ret[] = update_sql("ALTER TABLE {vocabulary} CHANGE nodes nodes longtext"); - $ret[] = update_sql("ALTER TABLE {watchdog} CHANGE message message longtext"); - } - return $ret; -} - -function update_74() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("ALTER TABLE {system} ADD throttle smallint"); - $ret[] = update_sql("ALTER TABLE {system} ALTER COLUMN throttle SET DEFAULT '0'"); - $ret[] = update_sql("UPDATE {system} SET throttle = 0"); - $ret[] = update_sql("ALTER TABLE {system} ALTER COLUMN throttle SET NOT NULL"); - } - else { - $ret[] = update_sql("ALTER TABLE {system} ADD throttle tinyint(1) NOT NULL DEFAULT '0'"); - } - return $ret; -} - -function update_75() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("ALTER TABLE {feed} ADD etag text"); - $ret[] = update_sql("ALTER TABLE {feed} ALTER COLUMN etag SET DEFAULT ''"); - $ret[] = update_sql("ALTER TABLE {feed} ALTER COLUMN etag SET NOT NULL"); - - $ret[] = update_sql("ALTER TABLE {feed} ADD modified integer"); - $ret[] = update_sql("ALTER TABLE {feed} ALTER COLUMN modified SET DEFAULT '0'"); - $ret[] = update_sql("UPDATE {feed} SET modified = 0"); - $ret[] = update_sql("ALTER TABLE {feed} ALTER COLUMN modified SET NOT NULL"); - - $ret[] = update_sql("ALTER TABLE {feed} RENAME timestamp TO checked"); - - $ret[] = update_sql("UPDATE {blocks} SET module = 'aggregator' WHERE module = 'import'"); - $ret[] = update_sql("UPDATE {system} SET filename = 'modules/aggregator.module', name = 'aggregator' WHERE filename = 'modules/import.module'"); - } - else { - $ret[] = update_sql("ALTER TABLE {feed} ADD etag varchar(255) NOT NULL DEFAULT ''"); - $ret[] = update_sql("ALTER TABLE {feed} ADD modified int(10) NOT NULL DEFAULT 0"); - $ret[] = update_sql("ALTER TABLE {feed} CHANGE timestamp checked int(10) NOT NULL DEFAULT 0"); - $ret[] = update_sql("UPDATE {blocks} SET module = 'aggregator' WHERE module = 'import'"); - $ret[] = update_sql("UPDATE {system} SET filename = 'modules/aggregator.module', name = 'aggregator' WHERE filename = 'modules/import.module'"); - } - return $ret; -} - -function update_76() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - $ret[] = update_sql("ALTER TABLE {feed} ADD image text"); - } else { - $ret[] = update_sql("ALTER TABLE {feed} ADD image longtext"); - } - return $ret; -} - -function update_77() { - $ret = array(); - $ret[] = update_sql("ALTER TABLE {cache} ADD headers text"); - return $ret; -} - -function update_78() { - $ret = array(); - if ($GLOBALS["db_type"] == "mysql") { - $ret[] = update_sql("CREATE TABLE {filters} ( - module varchar(64) NOT NULL default '', - weight tinyint(2) DEFAULT '0' NOT NULL, - KEY module (module) - )"); - } - else { - $ret[] = update_sql("CREATE TABLE {filters} ( - module varchar(64) NOT NULL DEFAULT '', - weight smallint NOT NULL DEFAULT 0 - );"); - $ret[] = update_sql("CREATE INDEX {filters_weight} ON {filters} (weight);"); - } - return $ret; -} - -function update_79() { - $ret = array(); - // Works for both mysql and postgresql - $ret[] = update_sql("ALTER TABLE {node} DROP attributes"); - $ret[] = update_sql("ALTER TABLE {comments} DROP link"); - return $ret; -} - -function update_80() { - if ($GLOBALS['db_type'] == 'mysql') { - // Add a 'created' field to the users table: - $ret[] = update_sql('ALTER TABLE {users} ADD created INT(11) NOT NULL'); - $ret[] = update_sql('ALTER TABLE {users} CHANGE timestamp changed INT(11) NOT NULL'); - - // Add some indices to speed up the update process: - $ret[] = update_sql('ALTER TABLE {comments} ADD index (timestamp)'); - $ret[] = update_sql('ALTER TABLE {node} ADD index (created)'); - - // Assign everyone a created timestamp to begin with: - $ret[] = update_sql("UPDATE {users} SET created = changed WHERE created = ''"); - - } - else { - // Add a 'created' field to the users table: - $ret[] = update_sql('ALTER TABLE {users} ADD created INTEGER'); - $ret[] = update_sql("ALTER TABLE {users} ALTER COLUMN created SET DEFAULT '0'"); - $ret[] = update_sql("UPDATE {users} SET created = 0"); - $ret[] = update_sql("ALTER TABLE {users} ALTER COLUMN created SET NOT NULL"); - - $ret[] = update_sql('ALTER TABLE {users} RENAME timestamp TO changed'); - - $ret[] = update_sql("UPDATE {users} SET created = changed WHERE created = 0"); - } - - // Print a status message:" - print '

Note: this might take a while ...

'; - - // Try updating the user records using the comment table: - $result = db_query('SELECT DISTINCT(u.uid) FROM {comments} c LEFT JOIN {users} u ON c.uid = u.uid WHERE c.timestamp < u.created'); - while ($account = db_fetch_object($result)) { - // Retrieve the proper timestamp: - $timestamp = db_result(db_query('SELECT MIN(timestamp) FROM {comments} WHERE uid = %d', $account->uid)); - - // Update this user record as well as older records with an older timestamp: - db_query('UPDATE {users} SET created = %d WHERE created > %d AND uid <= %d', $timestamp, $timestamp, $account->uid); - } - - // Try updating the user records using the node table: - $result = db_query('SELECT DISTINCT(u.uid) FROM {node} n LEFT JOIN {users} u ON n.uid = u.uid WHERE n.created < u.created'); - while ($account = db_fetch_object($result)) { - // Retrieve the proper timestamp: - $timestamp = db_result(db_query('SELECT MIN(created) FROM {node} WHERE uid = %d', $account->uid)); - - // Update this user record as well as older records with an older timestamp: - db_query('UPDATE {users} SET created = %d WHERE created > %d AND uid <= %d', $timestamp, $timestamp, $account->uid); - } - - if ($GLOBALS['db_type'] == 'mysql') { - // Add profile module related tables: - $ret[] = update_sql("CREATE TABLE {profile_fields} ( - fid int(10) NOT NULL auto_increment, - title varchar(255) default NULL, - name varchar(128) default NULL, - explanation TEXT default NULL, - category varchar(255) default NULL, - type varchar(128) default NULL, - weight tinyint(1) DEFAULT '0' NOT NULL, - overview tinyint(1) DEFAULT '0' NOT NULL, - options text, - KEY category (category), - UNIQUE KEY name (name), - PRIMARY KEY (fid) - );"); - - $ret[] = update_sql("CREATE TABLE {profile_values} ( - fid int(11) unsigned default '0', - uid int(11) unsigned default '0', - value text, - KEY uid (uid), - KEY fid (fid) - );"); - $ret[] = update_sql("ALTER TABLE {users} ADD picture varchar(255) NOT NULL DEFAULT ''"); - } - else { - - $ret[] = update_sql("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, - type varchar(128) default NULL, - weight smallint DEFAULT '0' NOT NULL, - overview smallint DEFAULT '0' NOT NULL, - options text, - UNIQUE (name), - PRIMARY KEY (fid) - )"); - $ret[] = update_sql("CREATE INDEX profile_fields_category ON profile_fields (category)"); - - $ret[] = update_sql("CREATE TABLE profile_values ( - fid integer default '0', - uid integer default '0', - value text - )"); - $ret[] = update_sql("CREATE INDEX profile_values_uid ON profile_values (uid)"); - $ret[] = update_sql("CREATE INDEX profile_values_fid ON profile_values (fid)"); - - $ret[] = update_sql("ALTER TABLE {users} ADD picture varchar(255)"); - $ret[] = update_sql("ALTER TABLE {users} ALTER COLUMN picture SET DEFAULT ''"); - $ret[] = update_sql("UPDATE {users} SET picture = ''"); - $ret[] = update_sql("ALTER TABLE {users} ALTER COLUMN picture SET NOT NULL"); - - } - - // Migrate the old profile data to the new scheme: - $fields = array( - array("Name", "realname", "textfield", NULL, 0), - array("Address", "address", "textfield", NULL, 0), - array("City", "city", "textfield", NULL, 0), - array("State, province or region", "state", "textfield", NULL, 0), - array("Zip or postal code", "zip", "textfield", NULL, 0), - array("Country", "country", "textfield", NULL, 1), - array("Gender", "gender", "selection", "male\nfemale", 1), - array("Job title", "job", "textfield", NULL, 0), - array("ICQ messenger ID", "icq", "textfield", NULL, 0), - array("MSN messenger ID", "msn", "textfield", NULL, 0), - array("Yahoo messenger ID", "yahoo", "textfield", NULL, 0), - array("AIM messenger ID", "aim", "textfield", NULL, 0), - array("URL of homepage", "homepage", "url", NULL, 1), - array("Biography", "biography", "textarea", NULL, 0), - array("Interests", "interests", "textarea", NULL, 0), - array("Public key", "publickey", "textarea", NULL, 0), - array("Birthday", "birthday", "date", NULL, 0) - ); - - // Remove existing data (debug mode): - db_query('DELETE FROM {profile_fields}'); - db_query('DELETE FROM {profile_values}'); - - foreach ($fields as $field) { - db_query("INSERT INTO {profile_fields} (title, name, type, category, options, overview) VALUES ('%s', '%s', '%s', 'Personal information', '%s', %d)", $field[0], $field[1], $field[2], $field[3], $field[4]); - } - - $result = db_query("SELECT uid FROM {users} WHERE uid > 0"); - while ($account = db_fetch_object($result)) { - // Load the user record: - $account = user_load(array('uid' => $account->uid)); - $edit = array(); - - // Modify the user record: - foreach ($fields as $field) { - $old = "profile_". $field[1]; - $new = $field[1]; - if ($account->$old) { - $edit[$new] = $account->$old; - } - // Force deletion of old field - $edit[$old] = NULL; - } - - // Birthday format change: - if ($edit['birthday']) { - $edit['birthday'] = array('day' => $edit['birthday'], 'month' => $account->profile_birthmonth, 'year' => $account->profile_birthyear); - // Force deletion of old field - $edit['profile_birthmonth'] = NULL; - $edit['profile_birthyear'] = NULL; - } - - // Gender specific changes: - if ($edit['gender'] == 'f') $edit['gender'] = 'female'; - if ($edit['gender'] == 'm') $edit['gender'] = 'male'; - - // Avatar specific changes: - if ($account->profile_avatar) { - $edit['picture'] = $account->profile_avatar; - // Force deletion of old field - $edit['profile_avatar'] = NULL; - } - - // Save the update record: - user_save($account, $edit, 'Personal information'); - } - - // This variable is needed to distinguish between 4.5-RC sites which ran a faulty - // update_80() and 4.5-final sites. See update_108. - variable_set('update_80_fix', true); - - return $ret; -} - -function update_81() { - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql('ALTER TABLE {profile_fields} ADD page varchar(255) default NULL'); - } - else { - $ret[] = update_sql('ALTER TABLE {profile_fields} ADD page varchar(255)'); - $ret[] = update_sql('ALTER TABLE {profile_fields} ALTER COLUMN page SET default NULL'); - } - $ret[] = update_sql("UPDATE {profile_fields} SET type = 'url' WHERE name = 'homepage'"); - return $ret; -} - -function update_82() { - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {profile_fields} ADD required tinyint(1) DEFAULT '0' NOT NULL"); - } - else { - $ret[] = update_sql("ALTER TABLE {profile_fields} ADD required smallint"); - $ret[] = update_sql("ALTER TABLE {profile_fields} ALTER COLUMN required SET DEFAULT '0'"); - $ret[] = update_sql("UPDATE {profile_fields} SET required = '0'"); - $ret[] = update_sql("ALTER TABLE {profile_fields} ALTER COLUMN required SET NOT NULL"); - } - return $ret; -} - -function update_83() { - $ret = array(); - if ($GLOBALS["db_type"] == "mysql") { - $ret[] = update_sql("CREATE TABLE {menu} ( - mid int(10) unsigned NOT NULL default '0', - pid int(10) unsigned NOT NULL default '0', - path varchar(255) NOT NULL default '', - title varchar(255) NOT NULL default '', - weight tinyint(4) NOT NULL default '0', - visibility int(1) unsigned NOT NULL default '0', - status int(1) unsigned NOT NULL default '0', - PRIMARY KEY (mid) - );"); - } - else { - $ret[] = update_sql("CREATE TABLE {menu} ( - mid serial, - pid integer NOT NULL default '0', - path varchar(255) NOT NULL default '', - title varchar(255) NOT NULL default '', - weight smallint NOT NULL default '0', - visibility smallint NOT NULL default '0', - status smallint NOT NULL default '0', - PRIMARY KEY (mid) -);"); - - } - db_next_id('{menu}_mid'); - return $ret; -} - -function update_84() { - $ret = array(); - if ($GLOBALS["db_type"] == "mysql") { - $ret[] = update_sql("ALTER TABLE {vocabulary} ADD help VARCHAR(255) NOT NULL DEFAULT '' AFTER description;"); - } - else { - $ret[] = update_sql("ALTER TABLE {vocabulary} ADD help VARCHAR(255)"); - $ret[] = update_sql("ALTER TABLE {vocabulary} ALTER help SET DEFAULT ''"); - $ret[] = update_sql("UPDATE {vocabulary} SET help = ''"); - $ret[] = update_sql("ALTER TABLE {vocabulary} ALTER help SET NOT NULL"); - } - return $ret; -} - -function update_85() { - $ret = array(); - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {bundle} RENAME TO {aggregator_category}"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} DROP attributes"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} CHANGE bid cid int(10) NOT NULL auto_increment"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} ADD description longtext NOT NULL"); - $ret[] = update_sql("UPDATE {sequences} SET name = '{aggregator_category}_cid' WHERE name = '{bundle}_bid'"); - $ret[] = update_sql("ALTER TABLE {feed} RENAME TO {aggregator_feed}"); - $ret[] = update_sql("ALTER TABLE {aggregator_feed} DROP attributes"); - $ret[] = update_sql("ALTER TABLE {aggregator_feed} ADD block tinyint(2) NOT NULL"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} ADD block tinyint(2) NOT NULL"); - $ret[] = update_sql("UPDATE {sequences} SET name = '{aggregator_feed}_fid' WHERE name = '{feed}_fid'"); - $ret[] = update_sql("ALTER TABLE {item} RENAME TO {aggregator_item}"); - $ret[] = update_sql("ALTER TABLE {aggregator_item} DROP attributes"); - $max = db_result(db_query_range("SELECT iid FROM {aggregator_item} ORDER BY iid DESC", 0, 1)); - if ($max) { - $ret[] = update_sql("INSERT INTO {sequences} (name, id) VALUES ('{aggregator_item}_iid', $max)"); - } - $ret[] = update_sql("CREATE TABLE {aggregator_category_feed} ( - fid int(10) NOT NULL, - cid int(10) NOT NULL, - PRIMARY KEY (fid, cid) - )"); - $ret[] = update_sql("CREATE TABLE {aggregator_category_item} ( - iid int(10) NOT NULL, - cid int(10) NOT NULL, - PRIMARY KEY (iid, cid) - )"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} MODIFY description longtext NULL"); - $ret[] = update_sql("ALTER TABLE {aggregator_item} MODIFY description longtext NULL"); - $ret[] = update_sql("ALTER TABLE {aggregator_feed} MODIFY description longtext NULL"); - $ret[] = update_sql("ALTER TABLE {aggregator_feed} MODIFY image longtext NULL"); - - } - else { - $ret[] = update_sql("ALTER TABLE {bundle} RENAME TO {aggregator_category}"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} DROP attributes"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} RENAME bid TO cid"); - $lastvalue = db_result(db_query('SELECT last_value from {bundle}_bid_seq')); - $ret[] = update_sql("CREATE SEQUENCE {aggregator_category}_cid_seq START $lastvalue MINVALUE 0"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} ALTER cid SET DEFAULT nextval('public.{aggregator_category}_cid_seq'::text)"); - - $ret[] = update_sql("ALTER TABLE {aggregator_category} ADD description text"); - $ret[] = update_sql("UPDATE {aggregator_category} SET description = ''"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} ALTER COLUMN description SET NOT NULL"); - - $ret[] = update_sql("ALTER TABLE {feed} RENAME TO {aggregator_feed}"); - $lastvalue = db_result(db_query('SELECT last_value from {feed}_fid_seq')); - $ret[] = update_sql("CREATE SEQUENCE {aggregator_feed}_fid_seq START $lastvalue MINVALUE 0"); - $ret[] = update_sql("ALTER TABLE {aggregator_feed} ALTER fid SET DEFAULT nextval('public.{aggregator_feed}_fid_seq'::text)"); - - $ret[] = update_sql("ALTER TABLE {aggregator_feed} DROP attributes"); - $ret[] = update_sql("ALTER TABLE {aggregator_feed} ADD block smallint"); - $ret[] = update_sql("UPDATE {aggregator_feed} SET block = 0"); - $ret[] = update_sql("ALTER TABLE {aggregator_feed} ALTER COLUMN block SET NOT NULL"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} ADD block smallint"); - $ret[] = update_sql("UPDATE {aggregator_category} SET block = 0"); - $ret[] = update_sql("ALTER TABLE {aggregator_category} ALTER COLUMN block SET NOT NULL"); - - $ret[] = update_sql("ALTER TABLE {item} RENAME TO {aggregator_item}"); - $lastvalue = db_result(db_query('SELECT last_value from {item}_iid_seq')); - $ret[] = update_sql("CREATE SEQUENCE {aggregator_item}_iid_seq START $lastvalue MINVALUE 0"); - $ret[] = update_sql("ALTER TABLE {aggregator_item} ALTER iid SET DEFAULT nextval('public.{aggregator_item}_iid_seq'::text)"); - - $ret[] = update_sql("ALTER TABLE {aggregator_item} DROP attributes"); - $ret[] = update_sql("CREATE TABLE {aggregator_category_feed} ( - fid integer NOT NULL default '0', - cid integer NOT NULL default '0', - PRIMARY KEY (fid,cid) - );"); - $ret[] = update_sql("CREATE TABLE {aggregator_category_item} ( - iid integer NOT NULL default '0', - cid integer NOT NULL default '0', - PRIMARY KEY (iid,cid) - )"); - } - return $ret; -} - -function update_86() { - $ret = array(); - $ret[] = update_sql("INSERT INTO {users_roles} (uid, rid) SELECT uid, rid FROM {users}"); - // TODO: should we verify the insert above worked before dropping rid? - if ($GLOBALS['db_type'] == 'mysql') { - //only the most recent versions of postgres support dropping columns - $ret[] = update_sql("ALTER TABLE {users} DROP rid"); - } - return $ret; -} - -function update_87() { - // Works for both postgres and mysql - $ret = array(); - $ret[] = update_sql("ALTER TABLE {comments} ADD name varchar(60) DEFAULT NULL"); - $ret[] = update_sql("ALTER TABLE {comments} ADD mail varchar(64) DEFAULT NULL"); - $ret[] = update_sql("ALTER TABLE {comments} ADD homepage varchar(255) DEFAULT NULL"); - return $ret; -} - -function update_88() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {menu} DROP status"); - $ret[] = update_sql("ALTER TABLE {menu} DROP visibility"); - $ret[] = update_sql("ALTER TABLE {menu} ADD type INT(2) UNSIGNED DEFAULT '0' NOT NULL"); - } - else { - $ret[] = update_sql("ALTER TABLE {menu} ADD type smallint"); - $ret[] = update_sql("ALTER TABLE {menu} ALTER COLUMN type SET DEFAULT '0'"); - $ret[] = update_sql("UPDATE {menu} SET type = '0'"); - $ret[] = update_sql("ALTER TABLE {menu} ALTER COLUMN type SET NOT NULL"); - } - $ret[] = update_sql("DELETE FROM {menu}"); - return $ret; -} - -function update_89() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {node} CHANGE static sticky INT(2) DEFAULT '0' NOT NULL"); - } - else { - $ret[] = update_sql("ALTER TABLE {node} RENAME static TO sticky;"); - } - - // Change the node settings, so that it uses node_sticky_$type instead of node_static_$type - $result = db_query("SELECT * FROM {variable} WHERE name LIKE 'node_static_%'"); - while ($variable = db_fetch_object($result)) { - //get the node type name, place it into $name_arr. The name can be found with $name_arr[2] - $name_arr = explode("_", $variable->name, 3); - $ret[] = update_sql("INSERT INTO {variable} (name,value) VALUES ('node_sticky_". $name_arr[2] ."','". $variable->value. "')"); - } - $ret[] = db_query("DELETE FROM {variable} WHERE name LIKE 'node_static_%'"); - - return $ret; -} - -function update_90() { - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {profile_fields} CHANGE overview visibility INT(1) UNSIGNED DEFAULT '0' NOT NULL"); - } - else { - $ret[] = update_sql("ALTER TABLE {profile_fields} RENAME overview TO visibility"); - } - $ret[] = update_sql("UPDATE {profile_fields} SET visibility = 2 WHERE visibility = 1"); - $ret[] = update_sql("UPDATE {profile_fields} SET visibility = 1 WHERE visibility = 0"); - return $ret; -} - -function update_91() { - $ret = array(); - if ($GLOBALS["db_type"] == "pgsql") { - // node_created was created implicitly somewhere else - $ret[] = update_sql("CREATE INDEX node_changed ON {node} (changed)"); - } - else { - $ret[] = update_sql("ALTER TABLE {node} ADD INDEX node_created (created)"); - $ret[] = update_sql("ALTER TABLE {node} ADD INDEX node_changed (changed)"); - } - return $ret; -} - -function update_92() { - $ret = array(); - $ret[] = update_sql("DELETE FROM {cache}"); - return $ret; -} - -function update_93() { - $ret = array(); - if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql('DROP INDEX url_alias_src_idx'); - } - else { - $ret[] = update_sql('ALTER TABLE {url_alias} DROP INDEX src'); - } - $ret[] = update_sql("INSERT INTO {url_alias} (src, dst) VALUES ('node/feed', 'rss.xml')"); - return $ret; -} - -function update_94() { - /** - * Postgres only update - */ - $ret = array(); - if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql('DROP FUNCTION "greatest"(integer, integer)'); - $ret[] = update_sql(" - CREATE FUNCTION greatest(integer, integer) RETURNS integer AS ' - BEGIN - IF $2 IS NULL THEN - RETURN $1; - END IF; - IF $1 > $2 THEN - RETURN $1; - END IF; - RETURN $2; - END; - ' LANGUAGE 'plpgsql'; - "); - } - return $ret; -} - -function update_95() { - $ret = array(); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("CREATE TABLE {node_access} ( - nid int(10) unsigned NOT NULL default '0', - gid int(10) unsigned NOT NULL default '0', - realm varchar(255) NOT NULL default '', - grant_view tinyint(1) unsigned NOT NULL default '0', - grant_update tinyint(1) unsigned NOT NULL default '0', - grant_delete tinyint(1) unsigned NOT NULL default '0', - PRIMARY KEY (nid,gid,realm) - )"); - } - else { - $ret[] = update_sql("CREATE TABLE {node_access} ( - nid SERIAL, - gid integer NOT NULL default '0', - realm text NOT NULL default '', - grant_view smallint NOT NULL default '0', - grant_update smallint NOT NULL default '0', - grant_delete smallint NOT NULL default '0', - PRIMARY KEY (nid,gid,realm) - )"); - - $ret[] = update_sql("CREATE FUNCTION \"concat\"(text, text) RETURNS text AS ' - BEGIN - RETURN $1 || $2; - END; - ' LANGUAGE 'plpgsql';"); - } - $ret[] = update_sql("INSERT INTO {node_access} VALUES (0, 0, 'all', 1, 0, 0);"); - return $ret; -} - -function update_96() { - $ret = array(); - - $ret[] = update_sql('ALTER TABLE {accesslog} ADD path VARCHAR(255) DEFAULT NULL'); - $ret[] = update_sql('UPDATE {accesslog} SET path = CONCAT("node/", nid) WHERE nid != 0'); - $ret[] = update_sql('ALTER TABLE {accesslog} ADD title VARCHAR(255) DEFAULT NULL'); - /* Only supported by MySQL 4.0.4 and up - $ret[] = update_sql('UPDATE {accesslog} a, {node} n SET a.title = n.title WHERE a.nid = n.nid');*/ - $ret[] = update_sql('ALTER TABLE {accesslog} DROP nid'); - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {menu} ADD description varchar(255) DEFAULT '' NOT NULL"); - } - else { - $ret[] = update_sql("ALTER TABLE {menu} ADD description smallint"); - $ret[] = update_sql("ALTER TABLE {menu} ALTER COLUMN description SET DEFAULT '0'"); - $ret[] = update_sql("UPDATE {menu} SET description = '0'"); - $ret[] = update_sql("ALTER TABLE {menu} ALTER COLUMN description SET NOT NULL"); - } - - return $ret; -} - -function update_97() { - /** - * Works for both PostgreSQL and MySQL - */ - $convert = array('node/view/' => 'node/', 'book/view/' => 'book/', 'user/view/' => 'user/'); - foreach ($convert as $from => $to) { - $result = db_query("SELECT pid, src FROM {url_alias} WHERE src LIKE '%s%%'", $from); - while ($alias = db_fetch_object($result)) { - db_query("UPDATE {url_alias} SET src = '%s' WHERE pid = '%s'", str_replace($from, $to, $alias->src), $alias->pid); - } - } - - return array(); -} - -function update_98() { - /** - * Works for both PostgreSQL and MySQL - */ - $result = db_query("SELECT pid, src FROM {url_alias} WHERE src LIKE 'taxonomy/%%'"); - while ($alias = db_fetch_object($result)) { - list(, $page, $op, $terms) = explode('/', $alias->src); - if ($page == 'feed' || $page == 'page') { - switch ($op) { - case 'or': - $new = 'taxonomy/term/'. str_replace(',', '+', $terms); - break; - case 'and': - $new = 'taxonomy/term/'. $terms; - break; - } - if ($new) { - if ($page == 'feed') { - $new .= '/0/feed'; - } - db_query("UPDATE {url_alias} SET src = '%s' WHERE pid = '%s'", $new, $alias->pid); - } - } - } - - return array(); -} - -function update_99() { - // Filter patch - Multiple input formats - $ret = array(); - - /* - ** Load the list of PHP book and page nodes. - */ - $php_nodes = array(); - $res = db_query("SELECT nid FROM {book} WHERE format = 1"); - while ($book = db_fetch_object($res)) { - $php_nodes[] = $book->nid; - } - $res = db_query("SELECT nid FROM {page} WHERE format = 1"); - while ($page = db_fetch_object($res)) { - $php_nodes[] = $page->nid; - } - - /* - ** Apply database changes - */ - if ($GLOBALS['db_type'] == 'mysql') { - // Filters table - $ret[] = update_sql("ALTER TABLE {filters} ADD format int(4) NOT NULL default '0'"); - $ret[] = update_sql("ALTER TABLE {filters} ADD delta tinyint(2) NOT NULL default '0'"); - - // Filter_formats table - $ret[] = update_sql("CREATE TABLE {filter_formats} ( - format int(4) NOT NULL auto_increment, - name varchar(255) NOT NULL default '', - roles varchar(255) NOT NULL default '', - cache tinyint(2) NOT NULL default '1', - PRIMARY KEY (format) - )"); - - // Store formats in nodes, comments and boxes - $ret[] = update_sql("ALTER TABLE {boxes} CHANGE type format int(4) NOT NULL default '0'"); - $ret[] = update_sql("ALTER TABLE {comments} ADD format int(4) NOT NULL default '0'"); - $ret[] = update_sql("ALTER TABLE {node} ADD format int(4) NOT NULL default '0'"); - - // Get rid of the old book/page type info - $ret[] = update_sql("ALTER TABLE {book} DROP format"); - $ret[] = update_sql("ALTER TABLE {page} DROP format"); - } - else if ($GLOBALS['db_type'] == 'pgsql') { - $result = db_query("SELECT * FROM {filters}"); - if ($result) { - while ($obj = db_fetch_object($result)) { - $filters[] = $obj; - } - } - - $ret[] = update_sql("DROP TABLE {filters}"); - - $ret[] = update_sql("CREATE TABLE {filters} ( - format integer NOT NULL DEFAULT '0', - module varchar(64) NOT NULL DEFAULT '', - delta smallint NOT NULL DEFAULT 1, - weight smallint DEFAULT '0' NOT NULL - )"); - - $ret[] = update_sql("CREATE INDEX filters_module_idx ON filters(module)"); - if (is_array($filters)) { - foreach ($filters as $filter) { - db_query("INSERT INTO {filters} VALUES (%d, '%s', %d, %d)", $filter->format ? $filter->format : 0, $filter->module, $filter->delta ? $filter->delta : 1, $filter->weight); - } - } - - $ret[] = update_sql("CREATE TABLE {filter_formats} ( - format SERIAL, - name varchar(255) NOT NULL default '', - roles varchar(255) NOT NULL default '', - cache smallint NOT NULL default '0', - PRIMARY KEY (format) - )"); - - $ret[] = update_sql("ALTER TABLE {boxes} RENAME type TO format"); - - $ret[] = update_sql("ALTER TABLE {comments} ADD format smallint"); - $ret[] = update_sql("ALTER TABLE {comments} ALTER COLUMN format SET DEFAULT '0'"); - $ret[] = update_sql("UPDATE {comments} SET format = '0'"); - $ret[] = update_sql("ALTER TABLE {comments} ALTER COLUMN format SET NOT NULL"); - - $ret[] = update_sql("ALTER TABLE {node} ADD format smallint"); - $ret[] = update_sql("ALTER TABLE {node} ALTER COLUMN format SET DEFAULT '0'"); - $ret[] = update_sql("UPDATE {node} SET format = '0'"); - $ret[] = update_sql("ALTER TABLE {node} ALTER COLUMN format SET NOT NULL"); - - - /* Postgres usually can't drop columns - $ret[] = update_sql("ALTER TABLE {book} DROP format"); - $ret[] = update_sql("ALTER TABLE {page} DROP format"); - */ - - } - - // Initialize all nodes and comments to the legacy format (see below) - $ret[] = update_sql("UPDATE {node} SET format = 1"); - $ret[] = update_sql("UPDATE {comments} SET format = 1"); - - // Set format to PHP for the old PHP book/page nodes. - if (count($php_nodes)) { - $ret[] = update_sql("UPDATE {node} SET format = 2 WHERE nid IN (". implode(',', $php_nodes) .")"); - } - - // Boxes now use the filtering system as well. - // Type 0 (HTML) maps to Format 3 (Full HTML). - // Type 1 (PHP) maps to Format 2 (PHP). - $ret[] = update_sql("UPDATE {boxes} SET format = 3 - format"); - - /* - ** Update PHP content to use tags. - */ - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("UPDATE {node} SET teaser = CONCAT('rid; - } - - $ret[] = update_sql("INSERT INTO {filter_formats} VALUES (". db_next_id("{filter_formats}_format") .",'PHP code','". implode(',', $php_roles) .",',0)"); - - // This is a 'Full HTML' format which allows all HTML without restrictions. - $ret[] = update_sql("INSERT INTO {filter_formats} VALUES (". db_next_id("{filter_formats}_format") .",'Full HTML','',1)"); - - // Set the default format to the legacy format - variable_set('filter_default_format', 1); - - // Put the old filters into the legacy format - $ret[] = update_sql("UPDATE {filters} SET format = 1"); - - // Add filter.module's standard filters (these used to be hardcoded). - if (!variable_get('rewrite_old_urls', 0)) { - $ret[] = update_sql("DELETE FROM {filters} WHERE module = 'filter'"); - } - else { - $ret[] = update_sql("UPDATE {filters} SET delta = 2 WHERE module ='filter'"); - } - if ($old_html_filter != 0) { - $ret[] = update_sql("INSERT INTO {filters} (format, module, delta, weight) VALUES (1,'filter',0,0)"); // HTML tag/style filter - } - $ret[] = update_sql("INSERT INTO {filters} (format, module, delta, weight) VALUES (1,'filter',2,1)"); // Linebreak filter - $ret[] = update_sql("INSERT INTO {filters} (format, module, delta, weight) VALUES (2,'filter',1,0)"); // PHP evaluator - $ret[] = update_sql("INSERT INTO {filters} (format, module, delta, weight) VALUES (3,'filter',2,0)"); // Linebreak filter - - // Migrate the settings for all core/contrib filtering modules into the legacy - // format. - $migrate = array('filter_html', // filter.module - 'allowed_html', - 'filter_style', - 'anyfilter_regexps', // anyfilter.module - 'htmlcorrector_smartclose', // htmlcorrector.module - 'htmlcorrector_xhtmlify', - 'htmlcorrector_valueentities', - 'project_filter', // project.module - 'latex_filter_link' // latex.module - ); - - foreach ($migrate as $variable) { - $value = variable_get($variable, NULL); - if ($value != NULL) { - variable_set($variable .'_1', $value); - variable_del($variable); - } - } - - return $ret; -} - -function update_100() { - - $ret = array(); - if ($GLOBALS["db_type"] == "mysql") { - $ret[] = update_sql("CREATE TABLE {locales_source} ( - lid int(11) NOT NULL auto_increment, - location varchar(128) NOT NULL default '', - source blob NOT NULL, - PRIMARY KEY (lid) - )"); - $ret[] = update_sql("CREATE TABLE {locales_target} ( - lid int(11) NOT NULL default '0', - translation blob NOT NULL, - locale varchar(12) NOT NULL default '', - plid int(11) NOT NULL default '0', - plural int(1) NOT NULL default '0', - KEY lid (lid), - KEY lang (locale), - KEY plid (plid), - KEY plural (plural) - )"); - $ret[] = update_sql("ALTER TABLE {users} CHANGE language language varchar(12) NOT NULL default ''"); - } - else { - $ret[] = update_sql("CREATE TABLE {locales_target} ( - lid int4 NOT NULL default '0', - translation text DEFAULT '' NOT NULL, - locale varchar(12) NOT NULL default '', - plid int4 NOT NULL default '0', - plural int4 NOT NULL default '0' - )"); - $ret[] = update_sql("CREATE INDEX {locales_target}_lid ON {locales_target}(lid)"); - $ret[] = update_sql("CREATE INDEX {locales_target}_locale ON {locales_target}(locale)"); - $ret[] = update_sql("CREATE INDEX {locales_target}_plid ON {locales_target}(plid)"); - $ret[] = update_sql("CREATE INDEX {locales_target}_plural ON {locales_target}(plural)"); - - $ret[] = update_sql("CREATE SEQUENCE {locales_source}_lid INCREMENT 1 START 0 MINVALUE 0"); - $ret[] = update_sql("CREATE TABLE {locales_source} ( - lid serial, - location varchar(128) NOT NULL default '', - source text NOT NULL, - PRIMARY KEY (lid) - )"); - - $ret[] = update_sql("ALTER TABLE {users} rename language to lang_archive"); - $ret[] = update_sql("ALTER TABLE {users} add language varchar(12)"); - $ret[] = update_sql("ALTER TABLE {users} ALTER language SET DEFAULT ''"); - $ret[] = update_sql("UPDATE {users} SET language = ''"); - $ret[] = update_sql("ALTER TABLE {users} ALTER language SET NOT NULL"); - $ret[] = update_sql("update {users} set language = lang_archive"); - - } - $ret[] = update_sql("INSERT INTO {locales_meta} (locale, name, enabled, isdefault) VALUES ('en', 'English', '1', '1')"); - - return $ret; -} - -function update_101() { - /** - * Works for both PostgreSQL and MySQL - */ - include_once 'includes/locale.inc'; - // get the language columns - $result = db_query('SELECT * FROM {locales} LIMIT 1'); - $fields = array(); - if (db_num_rows($result)) { - $columns = array_keys(db_fetch_array($result)); - foreach ($columns as $field) { - $fields[$field] = 1; - } - - // but not the fixed fields - unset($fields['lid'], $fields['location'], $fields['string']); - - // insert locales - $list = _locale_get_iso639_list(); - foreach ($fields as $key => $value) { - if (db_result(db_query("SELECT COUNT(lid) FROM {locales} WHERE $key != ''"))) { - if (isset($list[$key])) { - $name = $list[$key][0]; - if ($key == 'en') { - $key = 'en-local'; - } - db_query("INSERT INTO {locales_meta} (locale, name) VALUES ('%s', '%s')", $key, $name); - } - else { - db_query("INSERT INTO {locales_meta} (locale, name) VALUES ('%s', '%s')", $key, $key); - } - } - } - - // get all strings - $result = db_query('SELECT * FROM {locales}'); - while ($entry = db_fetch_object($result)) { - // insert string if at least one translation exists - $test = 'return $entry->'. implode(' == "" && $entry->', array_keys($fields)) .' == "";'; - if (!eval($test)) { - db_query("INSERT INTO {locales_source} (location, source) VALUES ('%s', '%s')", $entry->location, $entry->string); - $lid = db_fetch_object(db_query("SELECT lid FROM {locales_source} WHERE location = '%s' AND source = '%s'", $entry->location, $entry->string)); - foreach ($fields as $key => $value) { - // insert translation if non-empty - if ($key == 'en') { - $keynew = 'en-local'; - } - else { - $keynew = $key; - } - db_query("INSERT INTO {locales_target} (lid, translation, locale) VALUES (%d, '%s', '%s')", $lid->lid, $entry->$key, $keynew); - } - } - } - } - - $ret = array(); - $ret[] = update_sql("DROP TABLE {locales}"); - return $ret; -} - -function update_102() { - /** - * Works for both PostgreSQL and MySQL - */ - return array(update_sql("INSERT INTO {system} (filename, name, type, description, status, throttle, bootstrap) VALUES ('modules/legacy.module', 'legacy', 'module', '', 1, 0, 0)")); -} - -function update_103() { - $ret = array(); - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("CREATE TABLE {files} ( - fid int(10) unsigned NOT NULL default '0', - nid int(10) unsigned NOT NULL default '0', - filename varchar(255) NOT NULL default '', - filepath varchar(255) NOT NULL default '', - filemime varchar(255) NOT NULL default '', - filesize int(10) unsigned NOT NULL default '0', - list tinyint(1) unsigned NOT NULL default '0', - PRIMARY KEY (fid) - )"); - } - else { - $ret[] = update_sql("CREATE TABLE {files} ( - fid serial, - nid integer NOT NULL default '0', - filename varchar(255) NOT NULL default '', - filepath varchar(255) NOT NULL default '', - filemime varchar(255) NOT NULL default '', - filesize integer NOT NULL default '0', - list smallint NOT NULL default '0', - PRIMARY KEY (fid) - )"); - } - return $ret; -} - -function update_104() { - /** - * Works for both PostgreSQL and MySQL - */ - $ret = array(); - if (variable_get('theme_default', 'xtemplate') == 'chameleon') { - $ret[] = update_sql("DELETE FROM {system} WHERE name = 'chameleon'"); - $ret[] = update_sql("INSERT INTO {system} VALUES ('themes/chameleon/chameleon.theme','chameleon','theme','',1,0,0)"); - $ret[] = update_sql("INSERT INTO {system} VALUES ('themes/chameleon/marvin/style.css','marvin','theme','themes/chameleon/chameleon.theme',1,0,0)"); - if (variable_get("chameleon_stylesheet", "themes/chameleon/pure/chameleon.css") == "themes/chameleon/marvin/chameleon.css") { - variable_set('theme_default', 'chameleon/marvin'); - } - else { - variable_set('theme_default', 'chameleon'); - } - } - elseif (variable_get('theme_default', 'xtemplate') == 'xtemplate') { - $ret[] = update_sql("DELETE FROM {system} WHERE name = 'xtemplate'"); - $ret[] = update_sql("INSERT INTO {system} VALUES ('themes/bluemarine/xtemplate.xtmpl','bluemarine','theme','themes/engines/xtemplate/xtemplate.engine',1,0,0)"); - $ret[] = update_sql("INSERT INTO {system} VALUES ('themes/pushbutton/xtemplate.xtmpl','pushbutton','theme','themes/engines/xtemplate/xtemplate.engine',1,0,0)"); - $ret[] = update_sql("INSERT INTO {system} VALUES ('themes/engines/xtemplate/xtemplate.engine','xtemplate','theme_engine','',1,0,0)"); - if (variable_get('xtemplate_template', 'default') == 'pushbutton') { - variable_set('theme_default', 'pushbutton'); - } - else { - variable_set('theme_default', 'bluemarine'); - } - - // Convert old xtemplate settings to new theme system - $settings = array(); - $convert = array('xtemplate_primary_links' => 'primary_links', - 'xtemplate_secondary_links' => 'secondary_links', - 'xtemplate_search_box' => 'toggle_search', - 'xtemplate_avatar_node' => 'toggle_node_user_picture', - 'xtemplate_avatar_comment' => 'toggle_comment_user_picture'); - foreach ($convert as $from => $to) { - if (($value = variable_get($from, NULL)) != NULL) { - $settings[$to] = $value; - variable_del($from); - } - } - - // Logo requires special treatment. Used to be an HTML tag, now it's a path to an image. - if (($logo = variable_get('xtemplate_logo', NULL)) != NULL) { - $match = array(); - // If logo was of the form , convert it. - if (preg_match('@src=(?:["\']?)(.+?)(?:["\']?(?:>| ?/>))@i', $logo, $match)) { - $settings['default_logo'] = 0; - $settings['logo_path'] = $match[1]; - } - variable_del('xtemplate_logo'); - } - - if (count($settings) > 0) { - variable_set('theme_settings', $settings); - } - - // These are not part of 'theme_settings' - $convert = array('xtemplate_avatar_default' => 'user_picture_default', - 'xtemplate_mission' => 'site_mission'); - foreach ($convert as $from => $to) { - if (($value = variable_get($from, NULL)) != NULL) { - variable_set($to, $value); - variable_del($from); - } - } - } - return $ret; -} - -function update_105() { - $ret = array(); - - $shadowupdates = db_query("SELECT nid,tid FROM {forum} WHERE shadow=0"); - while ($shadowrecord = db_fetch_object($shadowupdates)) { - db_query("DELETE FROM {term_node} WHERE nid = %d AND tid <> %d", $shadowrecord->nid, $shadowrecord->tid); - } - - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql("ALTER TABLE {forum} DROP shadow"); - $ret[] = update_sql('ALTER TABLE {node} ADD INDEX node_status_type (status, type, nid)'); - } - else { - // PostgreSQL is incapable of dropping columns in all but the latest versions. - $ret[] = update_sql("CREATE INDEX {node}_status_type_idx ON {node} (status, type, nid)"); - - $ret[] = update_sql("CREATE FUNCTION \"if\"(integer, text, text) RETURNS text AS ' - BEGIN - IF $1 THEN - RETURN $2; - END IF; - IF NOT $1 THEN - RETURN $3; - END IF; - END; - ' LANGUAGE 'plpgsql'"); - } - - return $ret; -} - -function update_106() { - $ret = array(); - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql('ALTER TABLE {cache} ADD INDEX expire (expire)'); - } - else if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql('CREATE INDEX {cache}_expire_idx ON {cache}(expire)'); - } - - $ret[] = update_sql('DELETE FROM {cache}'); - return $ret; -} - -function update_107() { - $ret = array(); - if ($GLOBALS['db_type'] == 'mysql') { - $ret[] = update_sql('ALTER TABLE {profile_fields} ADD register TINYINT(1) DEFAULT 0 NOT NULL AFTER required'); - } - else if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql('ALTER TABLE {profile_fields} ADD register smallint'); - } - - return $ret; -} - -function update_108() { - $ret = array(); - // This update is needed for 4.5-RC sites, where profile data was not being - // wiped from the user->data column correctly because update_80() was faulty. - if (!variable_get('update_80_fix', false)) { - // The data field needs to be cleared of profile fields. - $result = db_query("SELECT uid FROM {users} WHERE data LIKE '%profile%'"); - while ($uid = db_fetch_object($result)) { - $user = user_load(array('uid' => $uid->uid)); - $unset = array(); - foreach ($user as $key => $value) { - if (substr($key, 0, 8) == 'profile_') { - // Fields with a NULL value are wiped from the data column. - $unset[$key] = NULL; - } - } - user_save($user, $unset); - } - } - return $ret; -} - -function update_109() { - $ret = array(); - // This is to fix the PostreSQL locales_source table. - if ($GLOBALS['db_type'] == 'pgsql') { - $ret[] = update_sql("ALTER TABLE {locales_source} RENAME location TO old_location"); - $ret[] = update_sql("ALTER TABLE {locales_source} ADD COLUMN location text"); - db_query("UPDATE {locales_source} SET location = old_location"); - $ret[] = update_sql("ALTER TABLE {locales_source} ALTER COLUMN location SET NOT NULL"); - $ret[] = update_sql("ALTER TABLE {locales_source} ALTER COLUMN location SET DEFAULT ''"); - $ret[] = update_sql("ALTER TABLE {locales_target} DROP CONSTRAINT {locales_target}_locale_key "); - $ret[] = update_sql("ALTER TABLE {locales_target} DROP CONSTRAINT {locales_target}_plid_key "); - $ret[] = update_sql("ALTER TABLE {locales_target} DROP CONSTRAINT {locales_target}_plural_key "); - } - return $ret; -} - function update_110() { $ret = array();