summaryrefslogtreecommitdiff
path: root/sites/all/modules/wysiwyg/wysiwyg.features.inc
diff options
context:
space:
mode:
Diffstat (limited to 'sites/all/modules/wysiwyg/wysiwyg.features.inc')
-rw-r--r--sites/all/modules/wysiwyg/wysiwyg.features.inc92
1 files changed, 92 insertions, 0 deletions
diff --git a/sites/all/modules/wysiwyg/wysiwyg.features.inc b/sites/all/modules/wysiwyg/wysiwyg.features.inc
new file mode 100644
index 000000000..5edd6421b
--- /dev/null
+++ b/sites/all/modules/wysiwyg/wysiwyg.features.inc
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * Implements hook_features_export_options().
+ */
+function wysiwyg_features_export_options() {
+ $profiles = array();
+
+ // Get human-readable name from filter module.
+ $formats = filter_formats();
+
+ foreach (array_keys(wysiwyg_profile_load_all()) as $format) {
+ // Text format may vanish without deleting the wysiwyg profile.
+ if (isset($formats[$format])) {
+ $profiles[$format] = $formats[$format]->name;
+ }
+ }
+ return $profiles;
+}
+
+/**
+ * Implements hook_features_export().
+ */
+function wysiwyg_features_export($data, &$export, $module_name = '') {
+ $pipe = array();
+
+ // The wysiwyg_default_formats() hook integration is provided by the
+ // features module so we need to add it as a dependency.
+ $export['dependencies']['features'] = 'features';
+ $export['dependencies']['wysiwyg'] = 'wysiwyg';
+
+ foreach ($data as $name) {
+ if ($profile = wysiwyg_get_profile($name)) {
+ // Add profile to exports.
+ $export['features']['wysiwyg'][$profile->format] = $profile->format;
+
+ // Chain filter format for export.
+ $pipe['filter'][] = $profile->format;
+ }
+ }
+
+ return $pipe;
+}
+
+/**
+ * Implements hook_features_export_render().
+ */
+function wysiwyg_features_export_render($module, $data, $export = NULL) {
+ $code = array();
+ $code[] = ' $profiles = array();';
+ $code[] = '';
+
+ foreach ($data as $name) {
+ if ($profile = wysiwyg_get_profile($name)) {
+ $profile_export = features_var_export($profile, ' ');
+ $profile_identifier = features_var_export($profile->format);
+ $code[] = " // Exported profile: {$profile->format}";
+ $code[] = " \$profiles[{$profile_identifier}] = {$profile_export};";
+ $code[] = "";
+ }
+ }
+
+ $code[] = ' return $profiles;';
+ $code = implode("\n", $code);
+ return array('wysiwyg_default_profiles' => $code);
+}
+
+/**
+ * Implements hook_features_revert().
+ */
+function wysiwyg_features_revert($module) {
+ return wysiwyg_features_rebuild($module);
+}
+
+/**
+ * Implements hook_features_rebuild().
+ */
+function wysiwyg_features_rebuild($module) {
+ if ($defaults = features_get_default('wysiwyg', $module)) {
+ foreach ($defaults as $profile) {
+ db_merge('wysiwyg')
+ ->key(array('format' => $profile['format']))
+ ->fields(array(
+ 'editor' => $profile['editor'],
+ 'settings' => serialize($profile['settings']),
+ ))
+ ->execute();
+ }
+ wysiwyg_profile_cache_clear();
+ }
+}
+