Version 1.0-beta2 ()
------------------------------------------------------------------------
+ * Add ability to "preload" specific plugins and SQL entries into
+ Serendipity. Just create a plugins/preload.txt file containing
+ the plugins to load (one plugin per line, indicate plugin type
+ like "serendipity_event_spartacus:event"). Preloaded SQL data
+ can be put into sql/preload.sql and may only contain INSERT
+ statements. (garvinhicking, judebert)
+
* When the "no_create" privilege is set, deny users access to any
external admin plugins (garvinhicking)
*/
function serendipity_installDatabase() {
global $serendipity;
- $queries = serendipity_parse_sql_tables(S9Y_INCLUDE_PATH . 'sql/db.sql');
- $queries = str_replace('{PREFIX}', $serendipity['dbPrefix'], $queries);
- foreach ($queries as $query) {
- serendipity_db_schema_import($query);
- }
+ $queries = serendipity_parse_sql_tables(S9Y_INCLUDE_PATH . 'sql/db.sql');
+ $queries = str_replace('{PREFIX}', $serendipity['dbPrefix'], $queries);
+
+ foreach ($queries as $query) {
+ serendipity_db_schema_import($query);
+ }
+
+ if (file_exists(S9Y_INCLUDE_PATH . 'sql/preload.sql')) {
+ $queries = serendipity_parse_sql_inserts(S9Y_INCLUDE_PATH . 'sql/preload.sql');
+ $queries = str_replace('{PREFIX}', $serendipity['dbPrefix'], $queries);
+ foreach ($queries as $query) {
+ serendipity_db_schema_import($query);
+ }
+ }
}
/**
}
/**
- * Parse .sql files for use within Serendipity, query by query
+ * Parse .sql files for use within Serendipity, query by query,
+ * accepting only CREATE commands.
*
* @access public
* @param string The filename of the SQL file
return $queries;
}
+/**
+ * Parse .sql files for use within Serendipity, query by query,
+ * accepting only INSERT commands.
+ *
+ * @access public
+ * @param string The filename of the SQL file
+ * @return array An array of queries to execute
+ */
+function serendipity_parse_sql_inserts($filename) {
+ $queries = array();
+
+ $fp = fopen($filename, 'r', 1);
+ if ($fp) {
+ while (!@feof($fp)) {
+ $line = trim(fgets($fp, 65536));
+ if (preg_match('#^insert\s*into.*;$#i', $line)) {
+ array_push($queries, $line);
+ }
+ }
+ }
+ fclose($fp);
+
+ return $queries;
+}
+
/**
* Check the serendipity Installation for problems, during installation
*