View source
<?php
function filter_configuration_api() {
return array(
'filter' => array(
'name' => t('Text formats'),
'default_hook' => 'filter_default_formats',
'default_file' => CONFIGURATION_DEFAULTS_INCLUDED,
'feature_source' => TRUE,
),
);
}
function filter_configuration_export_options() {
$options = array();
foreach (filter_formats() as $format => $info) {
$options[$format] = $info->name;
}
return $options;
}
function filter_configuration_export($data, &$export, $module_name = '') {
$export['dependencies']['configuration'] = 'configuration';
$filter_info = filter_get_filters();
foreach ($data as $name) {
if ($format = configuration_filter_format_load($name)) {
$export['configuration']['filter'][$format->format] = $format->format;
foreach (array_keys($format->filters) as $name) {
if (isset($filter_info[$name], $filter_info[$name]['module'])) {
$module = $filter_info[$name]['module'];
$export['dependencies'][$module] = $module;
}
}
}
}
$pipe = array();
return $pipe;
}
function filter_configuration_export_render($module, $data, $export = NULL) {
$code = array();
$code[] = ' $formats = array();';
$code[] = '';
foreach ($data as $name) {
if ($format = configuration_filter_format_load($name)) {
$format_export = configuration_var_export($format, ' ');
$format_identifier = configuration_var_export($format->format);
$code[] = " // Exported format: {$format->name}";
$code[] = " \$formats[{$format_identifier}] = {$format_export};";
$code[] = "";
}
}
$code[] = ' return $formats;';
$code = implode("\n", $code);
return array(
'filter_default_formats' => $code,
);
}
function filter_configuration_revert($identifiers, $module_name = 'configuration') {
return filter_configuration_rebuild($identifiers, $module_name);
}
function filter_configuration_rebuild($identifiers, $module_name = 'configuration') {
if ($defaults = configuration_get_default('filter', $module_name)) {
foreach ($defaults as $identifier => $format) {
if (in_array($identifier, $identifiers) || !empty($identifiers) && $identifiers[0] == '#import_all') {
$format = (object) $format;
filter_format_save($format);
}
}
}
}
function configuration_filter_format_load($name) {
$query = db_select('filter_format');
$query
->fields('filter_format');
$query
->condition('format', $name);
if ($format = $query
->execute()
->fetchObject()) {
$format->filters = array();
foreach (filter_list_format($format->format) as $filter) {
if (!empty($filter->status)) {
$format->filters[$filter->name]['weight'] = $filter->weight;
$format->filters[$filter->name]['status'] = $filter->status;
$format->filters[$filter->name]['settings'] = $filter->settings;
}
}
return $format;
}
return FALSE;
}
function configuration_check_filter($identifier) {
$from_activestore =& drupal_static('configuration_from_activestore');
$component = 'filter';
if (file_exists("config://configuration.filter.inc")) {
include_once drupal_realpath("config://configuration.filter.inc");
cache_clear_all('filter_list_format', 'cache', TRUE);
drupal_static_reset('filter_list_format');
module_load_include('inc', 'configuration', 'configuration.export');
$code = filter_configuration_export_render('configuration', array(
$identifier,
));
eval(array_pop($code));
$formats_code = configuration_filter_default_formats();
if (empty($formats)) {
configuration_set_status($component, $identifier, CONFIGURATION_TRACKED_DATASTORE_ONLY);
}
configuration_update_component_status($component, $identifier, $formats, $formats_code, $from_activestore);
}
}
function configuration_hash_filter($identifier) {
module_load_include('inc', 'configuration', 'configuration.export');
$data = filter_configuration_export_options();
$code = filter_configuration_export_render('configuration', array(
$identifier,
));
eval(array_pop($code));
return md5(serialize($formats[$identifier]));
}