features.filter.inc in Features 7.2
Same filename and directory in other branches
Features integration on behalf of 'filter' module.
File
includes/features.filter.incView source
<?php
/**
* @file
* Features integration on behalf of 'filter' module.
*/
/**
* Implements hook_features_api().
*/
function filter_features_api() {
return array(
'filter' => array(
'name' => t('Text formats'),
/* @see \hook_filter_default_formats() */
/* @see \hook_filter_default_formats_alter() */
'default_hook' => 'filter_default_formats',
'default_file' => FEATURES_DEFAULTS_INCLUDED,
'feature_source' => TRUE,
),
);
}
/**
* Implements hook_features_export_options().
*/
function filter_features_export_options() {
$options = array();
foreach (filter_formats() as $format => $info) {
$options[$format] = $info->name;
}
return $options;
}
/**
* Implements hook_features_export().
*/
function filter_features_export($data, &$export, $module_name = '') {
// The filter_default_formats() hook integration is provided by the
// features module so we need to add it as a dependency.
$export['dependencies']['features'] = 'features';
$filter_info = filter_get_filters();
foreach ($data as $name) {
if ($format = features_filter_format_load($name)) {
// Add format to exports.
$export['features']['filter'][$format->format] = $format->format;
// Ensure that each filter's module is included as a dependency.
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;
}
/**
* Implements hook_features_export_render().
*/
function filter_features_export_render($module, $data, $export = NULL) {
$code = array();
$code[] = ' $formats = array();';
$code[] = '';
foreach ($data as $name) {
if ($format = features_filter_format_load($name)) {
$format_export = features_var_export($format, ' ');
$format_identifier = features_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,
);
}
/**
* Implements hook_features_revert().
*/
function filter_features_revert($module) {
return filter_features_rebuild($module);
}
/**
* Implements hook_features_rebuild().
*/
function filter_features_rebuild($module) {
if ($defaults = features_get_default('filter', $module)) {
foreach ($defaults as $format) {
$format = (object) $format;
filter_format_save($format);
}
}
}
/**
* Loads a filter format by its name.
*
* @param string $name
* Filter format name.
*
* @return \stdClass|false
* The filter format, or FALSE if not found.
*/
function features_filter_format_load($name) {
// Use machine name for retrieving the format if available.
$query = db_select('filter_format');
$query
->fields('filter_format');
$query
->condition('format', $name);
// Retrieve filters for the format and attach.
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;
}
Functions
Name | Description |
---|---|
features_filter_format_load | Loads a filter format by its name. |
filter_features_api | Implements hook_features_api(). |
filter_features_export | Implements hook_features_export(). |
filter_features_export_options | Implements hook_features_export_options(). |
filter_features_export_render | Implements hook_features_export_render(). |
filter_features_rebuild | Implements hook_features_rebuild(). |
filter_features_revert | Implements hook_features_revert(). |