function filter_update_8001

Migrate filter formats into configuration.

Related topics

File

drupal/core/modules/filter/filter.install, line 31
Install, update, and uninstall functions for the Filter module.

Code

function filter_update_8001() {
  $uuid = new Uuid();
  $result = db_query('SELECT format, name, cache, status, weight FROM {filter_format}', array(), array(
    'fetch' => PDO::FETCH_ASSOC,
  ));
  foreach ($result as $format) {
    $id = $format['format'];

    // Generate a UUID.
    $format['uuid'] = $uuid
      ->generate();

    // Retrieve and prepare all filters.
    $filters = db_query('SELECT name, module, status, weight, settings FROM {filter} WHERE format = :format ORDER BY weight, module, name', array(
      ':format' => $id,
    ), array(
      'fetch' => PDO::FETCH_ASSOC,
    ))
      ->fetchAllAssoc('name');
    foreach ($filters as $name => &$filter) {

      // The filter name is used as key only.
      unset($filter['name']);
      $filter['settings'] = unserialize($filter['settings']);
    }
    $format['filters'] = $filters;

    // Save the config object.
    $config = config('filter.format.' . $id);
    $config
      ->setData($format);
    $config
      ->save();
  }
}