View source
<?php
function wysiwyg_install() {
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
db_query("CREATE TABLE {wysiwyg} (\n format int NOT NULL default '0',\n editor varchar(128) NOT NULL default '',\n settings text,\n PRIMARY KEY (format)\n ) /*!40100 DEFAULT CHARACTER SET utf8 */");
break;
case 'pgsql':
db_query("CREATE TABLE {wysiwyg} (\n format int NOT NULL default '0',\n editor varchar(128) NOT NULL default '',\n settings text,\n PRIMARY KEY (format)\n )");
break;
}
wysiwyg_migrate_tinymce();
}
function wysiwyg_uninstall() {
db_query('DROP TABLE {wysiwyg}');
}
function wysiwyg_migrate_tinymce() {
if (db_table_exists('tinymce_settings')) {
$schema = db_result(db_query("SELECT schema_version FROM {system} WHERE name = 'tinymce'"));
if ($schema >= 1) {
$profiles = db_query("SELECT settings FROM {tinymce_settings}");
while ($profile = db_fetch_array($profiles)) {
$settings = unserialize($profile['settings']);
$old_buttons = isset($settings['buttons']) ? $settings['buttons'] : array();
$settings['buttons'] = array();
foreach ($old_buttons as $old_button => $enabled) {
list($plugin, $button) = explode('-', $old_button, 2);
$settings['buttons'][$plugin][$button] = 1;
}
foreach (_wysiwyg_install_get_formats() as $format => $name) {
db_query("INSERT INTO {wysiwyg} (format, editor, settings) VALUES (%d, 'tinymce', '%s')", $format, serialize($settings));
}
break;
}
module_disable(array(
'tinymce',
));
drupal_set_message('TinyMCE module can be safely uninstalled now.');
}
else {
drupal_set_message('To migrate your existing TinyMCE settings to Wysiwyg Editor, please update TinyMCE module to the latest official release, and re-install Wysiwyg Editor module.');
}
}
}
function _wysiwyg_install_get_formats() {
$formats = array();
$result = db_query("SELECT format, name FROM {filter_formats}");
while ($format = db_fetch_object($result)) {
$formats[$format->format] = $format->name;
$result2 = db_query("SELECT module, delta FROM {filters} WHERE format = %d", $format->format);
while ($filter = db_fetch_object($result2)) {
if ($filter->module == 'filter' && $filter->delta == 1) {
unset($formats[$format->format]);
break;
}
}
}
return $formats;
}
function wysiwyg_update_5001() {
$ret = array();
if (db_table_exists('wysiwyg')) {
return $ret;
}
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
$ret[] = update_sql("CREATE TABLE {wysiwyg} (\n format int NOT NULL default '0',\n editor varchar(128) NOT NULL default '',\n settings text,\n PRIMARY KEY (format)\n ) /*!40100 DEFAULT CHARACTER SET utf8 */");
break;
case 'pgsql':
$ret[] = update_sql("CREATE TABLE {wysiwyg} (\n format int NOT NULL default '0',\n editor varchar(128) NOT NULL default '',\n settings text,\n PRIMARY KEY (format)\n )");
break;
}
$formats = _wysiwyg_install_get_formats();
$result = db_query("SELECT name, settings FROM {wysiwyg_profile}");
while ($profile = db_fetch_object($result)) {
$profile->settings = unserialize($profile->settings);
$profile->editor = $profile->settings['editor'];
unset($profile->settings['editor']);
unset($profile->settings['old_name']);
unset($profile->settings['name']);
unset($profile->settings['rids']);
break;
}
if ($profile) {
foreach ($formats as $format => $name) {
db_query("INSERT INTO {wysiwyg} (format, editor, settings) VALUES (%d, '%s', '%s')", $format, $profile->editor, serialize($profile->settings));
$ret[] = array(
'success' => TRUE,
'query' => strtr('Wysiwyg profile %profile converted and associated with input format %format.', array(
'%profile' => check_plain($profile->name),
'%format' => check_plain($name),
)),
);
}
}
$ret[] = update_sql("DROP TABLE {wysiwyg_profile}");
$ret[] = update_sql("DROP TABLE {wysiwyg_role}");
return $ret;
}