Index: modules/system/system.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.install,v
retrieving revision 1.89
diff -u -r1.89 system.install
--- modules/system/system.install	10 Apr 2007 10:10:27 -0000	1.89
+++ modules/system/system.install	11 Apr 2007 07:05:37 -0000
@@ -1095,18 +1095,25 @@
 
   db_query("INSERT INTO {node_access} VALUES (0, 0, 'all', 1, 0, 0)");
 
-  db_query("INSERT INTO {filter_formats} (name, roles, cache) VALUES ('Filtered HTML',',1,2,',1)");
-  db_query("INSERT INTO {filter_formats} (name, roles, cache) VALUES ('PHP code','',0)");
-  db_query("INSERT INTO {filter_formats} (name, roles, cache) VALUES ('Full HTML','',1)");
-
-  db_query("INSERT INTO {filters} VALUES (1,'filter',3,0)");
-  db_query("INSERT INTO {filters} VALUES (1,'filter',0,1)");
-  db_query("INSERT INTO {filters} VALUES (1,'filter',2,2)");
-
-  db_query("INSERT INTO {filters} VALUES (2,'filter',1,0)");
-
-  db_query("INSERT INTO {filters} VALUES (3,'filter',3,0)");
-  db_query("INSERT INTO {filters} VALUES (3,'filter',2,1)");
+  // Add input formats.
+  db_query("INSERT INTO {filter_formats} (name, roles, cache) VALUES ('Filtered HTML', ',1,2,', 1)");
+  db_query("INSERT INTO {filter_formats} (name, roles, cache) VALUES ('Full HTML', '', 1)");
+
+  // Enable filters for each input format.
+
+  // Filtered HTML:
+  // URL filter.
+  db_query("INSERT INTO {filters} (format, module, delta, weight) VALUES (1, 'filter', 2, 0)");
+  // HTML filter.
+  db_query("INSERT INTO {filters} (format, module, delta, weight) VALUES (1, 'filter', 0, 1)");
+  // Line break filter.
+  db_query("INSERT INTO {filters} (format, module, delta, weight) VALUES (1, 'filter', 1, 2)");
+
+  // Full HTML:
+  // URL filter.
+  db_query("INSERT INTO {filters} (format, module, delta, weight) VALUES (2, 'filter', 2, 0)");
+  // Line break filter.
+  db_query("INSERT INTO {filters} (format, module, delta, weight) VALUES (2, 'filter', 1, 1)");
 
   db_query("INSERT INTO {variable} (name,value) VALUES ('filter_html_1','i:1;')");
 
@@ -3705,6 +3712,41 @@
   return $ret;
 }
 
+
+/**
+ * The PHP filter is now a separate module.
+ */
+function system_update_2008() {
+  $ret = array();
+
+  // Delete existing PHP filter and input format.
+  $ret[] = update_sql("DELETE FROM {filter_formats} WHERE format = 2");
+  $ret[] = update_sql("DELETE FROM {filters} WHERE format = 2");
+
+  // Enable the PHP filter module.
+  $ret[] = update_sql("UPDATE {system} SET status = 1 WHERE name = 'php' AND type = 'module'");
+
+  // Add the PHP Code input format.
+  $ret[] = update_sql("INSERT INTO {filter_formats} (name, roles, cache) VALUES ('PHP code', '', 0)");
+  $format = db_result(db_query("SELECT MAX(format) FROM {filter_formats}"));
+
+  // Enable the PHP evaluator filter.
+  db_query("INSERT INTO {filters} (format, module, delta, weight) VALUES (%d, 'php', 0, 0)", $format);
+
+  // If any other input formats use the PHP evaluator, update them accordingly.
+  $ret[] = update_sql("UPDATE {filters} SET delta = 0, module = 'php' WHERE module = 'filter' AND delta = 1");
+
+  // With the removal of the PHP evaluator filter, the deltas of the line break
+  // and URL filter have changed.
+  $ret[] = update_sql("UPDATE {filters} SET delta = 1 WHERE module = 'filter' AND delta = 2");
+  $ret[] = update_sql("UPDATE {filters} SET delta = 2 WHERE module = 'filter' AND delta = 3");
+
+  // Update any nodes associated with the PHP input format.
+  db_query("UPDATE {node_revisions} SET format = %d WHERE format = 2", $format);
+
+  return $ret;
+}
+
 /**
  * @} End of "defgroup updates-5.0-to-x.x"
  * The next series of updates should start at 3000.
