Skip to content
Snippets Groups Projects
updates.inc 44.3 KiB
Newer Older
  • Learn to ignore specific revisions
  •   $ret[] = update_sql("UPDATE {system} SET status = 1 WHERE name = 'menu'");
    
      return $ret;
    }
    
    
    function system_update_152() {
    
      $ret = array();
    
      // Postgresql only update
      switch ($GLOBALS['db_type']) {
        case 'pgsql':
    
    Dries Buytaert's avatar
    Dries Buytaert committed
          $ret[] = update_sql("ALTER TABLE {forum} DROP shadow");
    
          break;
        case 'mysql':
        case 'mysqli':
          break;
      }
    
      return $ret;
    }
    
    
    function system_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 system_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 system_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;
    }
    
    
    function system_update_156() {
      $ret = array();
      $ret[] = update_sql("DELETE FROM {cache}");
      system_themes();
    
    
    function system_update_157() {
      $ret = array();
      $ret[] = update_sql("DELETE FROM {url_alias} WHERE src = 'node/feed' AND dst = 'rss.xml'");
      $ret[] = update_sql("INSERT INTO {url_alias} (src, dst) VALUES ('rss.xml', 'node/feed')");
    
    function system_update_158() {
      $ret = array();
    
      switch ($GLOBALS['db_type']) {
        case 'mysqli':
        case 'mysql':
          $ret[] = update_sql("ALTER TABLE {old_revisions} ADD done tinyint(1) NOT NULL DEFAULT 0");
          $ret[] = update_sql("ALTER TABLE {old_revisions} ADD INDEX (done)");
          break;
    
        case 'pgsql':
    
          db_add_column($ret, 'old_revisions', 'done', 'smallint', array('not null' => TRUE, 'default' => 0));
          $ret[] = update_sql('CREATE INDEX {old_revisions}_done_idx ON {old_revisions}(done)');
    
          break;
      }
    
      return $ret;
    }
    
    /**
     * Retrieve data out of the old_revisions table and put into new revision
     * system.
     *
     * The old_revisions table is not deleted because any data which could not be
     * put into the new system is retained.
     */
    function system_update_159() {
      $ret = array();
    
      $result = db_query_range("SELECT * FROM {old_revisions} WHERE done = 0 AND type IN ('page', 'story', 'poll', 'book', 'forum')", 0, 20);
    
      $vid = db_next_id('{node_revisions}_vid');
      while ($node = db_fetch_object($result)) {
        $revisions = unserialize($node->revisions);
    
        if (!$revisions && is_array($revisions) && count($revisions) > 0) {
    
          $revisions_query = array();
          $revisions_args = array();
          $book_query = array();
          $book_args = array();
          $forum_query = array();
          $forum_args = array();
          foreach ($revisions as $version) {
            $revision = array();
            foreach ($version['node'] as $node_field => $node_value) {
              $revision[$node_field] = $node_value;
            }
            $revision['uid'] = $version['uid'];
            $revision['timestamp'] = $version['timestamp'];
            $vid++;
            $revisions_query[] = "(%d, %d, %d, '%s', '%s', '%s', '%s', %d, %d)";
            $revisions_args = array_merge($revisions_args, array($node->nid, $vid, $revision['uid'], $revision['title'], $revision['body'], $revision['teaser'], $revision['log'], $revision['timestamp'], $revision['format']));
            switch ($node->type) {
              case 'forum':
                if ($revision['tid'] > 0) {
                  $forum_query[] = "(%d, %d, %d)";
                  $forum_args = array_merge($forum_args, array($vid, $node->nid, $revision['tid']));
                }
                break;
    
              case 'book':
                $book_query[] = "(%d, %d, %d, %d)";
                $book_args = array_merge($book_args, array($vid, $node->nid, $revision['parent'], $revision['weight']));
                break;
            }
          }
          if (count($revisions_query)) {
            $revision_status = db_query("INSERT INTO {node_revisions} (nid, vid, uid, title, body, teaser, log, timestamp, format) VALUES ". implode(',', $revisions_query), $revisions_args);
          }
          if (count($forum_query)) {
            $forum_status = db_query("INSERT INTO {forum} (vid, nid, tid) VALUES ". implode(',', $forum_query), $forum_args);
          }
          if (count($book_query)) {
            $book_status = db_query("INSERT INTO {book} (vid, nid, parent, weight) VALUES ". implode(',', $book_query), $book_args);
          }
          $delete = FALSE;
          switch ($node->type) {
            case 'forum':
              if ($forum_status && $revision_status) {
                $delete = TRUE;
              }
              break;
    
            case 'book':
              if ($book_status && $revision_status) {
                $delete = TRUE;
              }
              break;
    
            default:
              if ($revision_status) {
                $delete = TRUE;
              }
              break;
          }
    
          if ($delete) {
            db_query('DELETE FROM {old_revisions} WHERE nid = %d', $node->nid);
          }
          else {
            db_query('UPDATE {old_revisions} SET done = 1 WHERE nid = %d', $node->nid);
          }
        }
      }
    
      switch ($GLOBALS['db_type']) {
        case 'mysqli':
        case 'mysql':
          $ret[] = update_sql("UPDATE {sequences} SET id = $vid WHERE name = '{node_revisions}_vid'");
          break;
    
        case 'pgsql':
    
          $ret[] = update_sql("SELECT setval('{node_revisions}_vid_seq', $vid)");
    
        $ret[] = update_sql('ALTER TABLE {old_revisions} DROP done');
      }
      else {
        $ret['#finished'] = FALSE;
      }
    
      return $ret;
    }
    
    
    function system_update_160() {
      $types = module_invoke('node', 'get_types');
      if (is_array($types)) {
        foreach($types as $type) {
          if (!is_array(variable_get("node_options_$type", array()))) {
            variable_set("node_options_$type", array());
          }
        }
      }
      return array();
    }
    
    
    function system_update_161() {
      variable_del('forum_icon_path');
    
    Dries Buytaert's avatar
    Dries Buytaert committed
    function system_update_162() {
      $ret = array();
    
      // PostgreSQL only update
      switch ($GLOBALS['db_type']) {
        case 'pgsql':
    
          $ret[] = update_sql('DROP INDEX {book}_parent');
          $ret[] = update_sql('CREATE INDEX {book}_parent_idx ON {book}(parent)');
    
          $ret[] = update_sql('DROP INDEX {node_comment_statistics}_timestamp_idx');
          $ret[] = update_sql('CREATE INDEX {node_comment_statistics}_last_comment_timestamp_idx ON {node_comment_statistics}(last_comment_timestamp)');
    
          $ret[] = update_sql('ALTER TABLE {filters} ALTER delta SET DEFAULT 0');
          $ret[] = update_sql('DROP INDEX {filters}_module_idx');
    
          $ret[] = update_sql('DROP INDEX {locales_target}_lid_idx');
          $ret[] = update_sql('DROP INDEX {locales_target}_lang_idx');
          $ret[] = update_sql('CREATE INDEX {locales_target}_locale_idx ON {locales_target}(locale)');
    
          $ret[] = update_sql('DROP INDEX {node}_created');
          $ret[] = update_sql('CREATE INDEX {node}_created_idx ON {node}(created)');
          $ret[] = update_sql('DROP INDEX {node}_changed');
          $ret[] = update_sql('CREATE INDEX {node}_changed_idx ON {node}(changed)');
    
          $ret[] = update_sql('DROP INDEX {profile_fields}_category');
          $ret[] = update_sql('CREATE INDEX {profile_fields}_category_idx ON {profile_fields}(category)');
    
          $ret[] = update_sql('DROP INDEX {url_alias}_dst_idx');
          $ret[] = update_sql('CREATE UNIQUE INDEX {url_alias}_dst_idx ON {url_alias}(dst)');
    
          $ret[] = update_sql('CREATE INDEX {sessions}_uid_idx ON {sessions}(uid)');
          $ret[] = update_sql('CREATE INDEX {sessions}_timestamp_idx ON {sessions}(timestamp)');
    
          $ret[] = update_sql('ALTER TABLE {accesslog} DROP mask');
    
          db_change_column($ret, 'accesslog', 'path', 'path', 'text');
          db_change_column($ret, 'accesslog', 'url', 'url', 'text');
          db_change_column($ret, 'watchdog', 'link', 'link', 'text', array('not null' => TRUE, 'default' => "''"));
          db_change_column($ret, 'watchdog', 'location', 'location', 'text', array('not null' => TRUE, 'default' => "''"));
          db_change_column($ret, 'watchdog', 'referer', 'referer', 'text', array('not null' => TRUE, 'default' => "''"));
    
          break;
      }
    
      return $ret;
    }
    
    
    function system_update_163() {
      $ret = array();
      if ($GLOBALS['db_type'] == 'mysql') {
        $ret[] = update_sql('ALTER TABLE {cache} CHANGE data data LONGBLOB');
      }
      return $ret;
    }