function wysiwyg_template_update_7200 in Wysiwyg API template plugin 7.2
Provide machine names and auto-generation of machine names for existing templates. Drop tid field.
File
- ./
wysiwyg_template.install, line 108
Code
function wysiwyg_template_update_7200() {
// Get an array map of tid/title values before deleting tid field.
$templates = db_select('wysiwyg_templates', 't')
->fields('t', array(
'tid',
'title',
))
->execute()
->fetchAllKeyed(0, 1);
// Change tid from serial to int first, otherwise removing the primary key
// isn't possible.
db_change_field('wysiwyg_templates', 'tid', 'tid', array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
));
db_drop_primary_key('wysiwyg_templates');
// Create name field and populate it.
db_add_field('wysiwyg_templates', 'name', array(
'description' => 'The machine name for the template.',
'type' => 'varchar',
'length' => 128,
'not null' => TRUE,
));
foreach ($templates as $tid => $title) {
// Basic formatting.
$new_name = strtolower(trim(substr($title, 0, 128)));
// Regex to strip out all unwanted characters.
$new_name = preg_replace('/[^a-z0-9_]+/', '_', $new_name);
// Check if this queue name already exists.
if (wysiwyg_template_name_exists($new_name)) {
$tmp_name = $new_name;
$i = 0;
do {
// Append an incrementing numeric suffix until we find a unique name.
$unique_suffix = '_' . $i;
$new_name = truncate_utf8($tmp_name, 128 - drupal_strlen($unique_suffix, TRUE)) . $unique_suffix;
$i++;
} while (wysiwyg_template_name_exists($new_name));
}
db_update('wysiwyg_templates')
->fields(array(
'name' => $new_name,
))
->condition('tid', $tid)
->execute();
}
db_add_primary_key('wysiwyg_templates', array(
'name',
));
db_drop_field('wysiwyg_templates', 'tid');
}