/** * Save MLA Gallery settings to the options table * * @since 0.80 * * @uses $_REQUEST * * @return array Message(s) reflecting the results of the operation */ private static function _save_gallery_settings() { $settings_changed = false; $message_list = ''; $error_list = ''; /* * Start with any page-level options */ foreach (MLACoreOptions::$mla_option_definitions as $key => $value) { if ('mla_gallery' == $value['tab']) { $this_setting_changed = false; $old_value = MLACore::mla_get_option($key); if ('select' == $value['type']) { if ($old_value != $_REQUEST[MLA_OPTION_PREFIX . $key]) { $this_setting_changed = true; } } elseif ('text' == $value['type']) { if ('' == $_REQUEST[MLA_OPTION_PREFIX . $key]) { $_REQUEST[MLA_OPTION_PREFIX . $key] = $value['std']; } if ($old_value != $_REQUEST[MLA_OPTION_PREFIX . $key]) { $this_setting_changed = true; } } elseif ('checkbox' == $value['type']) { if (isset($_REQUEST[MLA_OPTION_PREFIX . $key])) { $this_setting_changed = "checked" != $old_value; } else { $this_setting_changed = "checked" == $old_value; } } /* * Always update to scrub default settings */ $message = self::mla_update_option_row($key, $value); if ($this_setting_changed) { $settings_changed = true; $message_list .= $message; } } // mla_gallery option } // foreach mla_options /* * Get the current style contents for comparison * $new_names[ shortcode ][ template_name ] * $old_templates, $new_templates [ template_name ] - omit shortcode for backwards compatibility */ $old_templates = MLATemplate_Support::mla_get_style_templates(); $new_templates = array(); $new_names = $_REQUEST['mla_style_templates_name']; $new_values = stripslashes_deep($_REQUEST['mla_style_templates_value']); $new_deletes = isset($_REQUEST['mla_style_templates_delete']) ? $_REQUEST['mla_style_templates_delete'] : array(); /* * Build new style template array, noting changes */ $templates_changed = false; foreach ($new_names as $shortcode => $template_names) { $definition = MLATemplate_Support::$mla_template_definitions['style'][$shortcode]; foreach ($template_names as $name => $new_name) { if (in_array($name, $definition['default_names'])) { continue; } if (array_key_exists($shortcode, $new_deletes) && array_key_exists($name, $new_deletes[$shortcode])) { /* translators: 1: template type 2: template name */ $message_list .= '<br>' . sprintf(_x('Deleting %1$s "%2$s".', 'message_list', 'media-library-assistant'), __('Style Template', 'media-library-assistant'), $name); $templates_changed = true; continue; } $new_slug = sanitize_title($new_name); if ('blank' == $name) { if ('' == $new_slug) { continue; } elseif ('blank' == $new_slug) { /* translators: 1: ERROR tag 2: template name 3: template type */ $error_list .= '<br>' . sprintf(__('%1$s: Reserved name "%2$s", new %3$s discarded.', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), $new_slug, __('Style Template', 'media-library-assistant')); continue; } if (array_key_exists($new_slug, $old_templates)) { /* translators: 1: ERROR tag 2: template name 3: template type */ $error_list .= '<br>' . sprintf(__('%1$s: Duplicate name "%2$s", new %3$s discarded.', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), $new_slug, __('Style Template', 'media-library-assistant')); continue; } else { /* translators: 1: template type 2: template name */ $message_list .= '<br>' . sprintf(_x('Adding new %1$s "%2$s".', 'message_list', 'media-library-assistant'), __('Style Template', 'media-library-assistant'), $new_slug); $templates_changed = true; } } // 'blank' - reserved name /* * Handle name changes, check for duplicates */ if ('' == $new_slug) { /* translators: 1: ERROR tag 2: element name 3: old value */ $error_list .= '<br>' . sprintf(__('%1$s: Blank %2$s, reverting to "%3$s".', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), __('style template name', 'media-library-assistant'), $name); $new_slug = $name; } if ($new_slug != $name) { if (array_key_exists($new_slug, $old_templates)) { /* translators: 1: ERROR tag 2: element name 3: new value 4: old value */ $error_list .= '<br>' . sprintf(__('%1$s: Duplicate new %2$s "%3$s", reverting to "%4$s".', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), __('style template name', 'media-library-assistant'), $new_slug, $name); $new_slug = $name; } elseif ('blank' == $new_slug) { /* translators: 1: ERROR tag 2: element name 3: new value 4: old value */ $error_list .= '<br>' . sprintf(__('%1$s: Reserved %2$s "%3$s", reverting to "%4$s".', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), __('style template name', 'media-library-assistant'), $new_slug, $name); $new_slug = $name; } elseif ('blank' != $name) { /* translators: 1: element name 2: old_value 3: new_value */ $message_list .= '<br>' . sprintf(_x('Changing %1$s from "%2$s" to "%3$s"', 'message_list', 'media-library-assistant'), __('style template name', 'media-library-assistant'), $name, $new_slug); $templates_changed = true; } } // name changed if ('blank' != $name && $new_values[$shortcode][$name] != $old_templates[$name]) { /* translators: 1: template type 2: template name */ $message_list .= '<br>' . sprintf(_x('Updating contents of %1$s "%2$s".', 'message_list', 'media-library-assistant'), __('Style Template', 'media-library-assistant'), $new_slug); $templates_changed = true; } /* * Encode shortcode assignment in template content */ $new_templates[$new_slug] = sprintf("<!-- mla_shortcode_slug=\"%1\$s\" -->\r\n%2\$s", $definition['slug'], $new_values[$shortcode][$name]); } // foreach $name } // each shortcode if ($templates_changed) { $settings_changed = true; if (false == MLATemplate_Support::mla_put_style_templates($new_templates)) { /* translators: 1: ERROR tag 2: template type */ $error_list .= '<br>' . sprintf(__('%1$s: Update of %2$s failed.', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), __('Style Template', 'media-library-assistant')); } } /* * Get the current markup contents for comparison */ $old_templates = MLATemplate_Support::mla_get_markup_templates(); $new_templates = array(); $new_names = $_REQUEST['mla_markup_templates_name']; $new_deletes = isset($_REQUEST['mla_markup_templates_delete']) ? $_REQUEST['mla_markup_templates_delete'] : array(); $new_values = stripslashes_deep($_REQUEST['mla_markup_templates_sections']); /* * Build new markup template array, noting changes */ $templates_changed = false; foreach ($new_names as $shortcode => $template_names) { $definition = MLATemplate_Support::$mla_template_definitions['markup'][$shortcode]; foreach ($template_names as $name => $new_name) { if (in_array($name, $definition['default_names'])) { continue; } if (array_key_exists($shortcode, $new_deletes) && array_key_exists($name, $new_deletes[$shortcode])) { /* translators: 1: template type 2: template name */ $message_list .= '<br>' . sprintf(_x('Deleting %1$s "%2$s".', 'message_list', 'media-library-assistant'), __('markup template', 'media-library-assistant'), $name); $templates_changed = true; continue; } $new_slug = sanitize_title($new_name); if ('blank' == $name) { if ('' == $new_slug) { continue; } if ('blank' == $new_slug) { /* translators: 1: ERROR tag 2: template name 3: template type */ $error_list .= '<br>' . sprintf(__('%1$s: Reserved name "%2$s", new %3$s discarded.', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), $new_slug, __('markup template', 'media-library-assistant')); continue; } if (array_key_exists($new_slug, $old_templates)) { /* translators: 1: ERROR tag 2: template name 3: template type */ $error_list .= '<br>' . sprintf(__('%1$s: Duplicate name "%2$s", new %3$s discarded.', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), $new_slug, __('markup template', 'media-library-assistant')); continue; } else { /* translators: 1: template type 2: template name */ $message_list .= '<br>' . sprintf(_x('Adding new %1$s "%2$s".', 'message_list', 'media-library-assistant'), __('markup template', 'media-library-assistant'), $new_slug); $templates_changed = true; } } // 'blank' - reserved name /* * Handle name changes, check for duplicates */ if ('' == $new_slug) { /* translators: 1: ERROR tag 2: element name 3: old value */ $error_list .= '<br>' . sprintf(__('%1$s: Blank %2$s, reverting to "%3$s".', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), __('markup template name', 'media-library-assistant'), $name); $new_slug = $name; } if ($new_slug != $name) { if (array_key_exists($new_slug, $old_templates)) { /* translators: 1: ERROR tag 2: element name 3: new value 4: old value */ $error_list .= '<br>' . sprintf(__('%1$s: Duplicate new %2$s "%3$s", reverting to "%4$s".', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), __('markup template name', 'media-library-assistant'), $new_slug, $name); $new_slug = $name; } elseif ('blank' == $new_slug) { /* translators: 1: ERROR tag 2: element name 3: new value 4: old value */ $error_list .= '<br>' . sprintf(__('%1$s: Reserved %2$s "%3$s", reverting to "%4$s".', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), __('markup template name', 'media-library-assistant'), $new_slug, $name); $new_slug = $name; } elseif ('blank' != $name) { /* translators: 1: element name 2: old_value 3: new_value */ $message_list .= '<br>' . sprintf(_x('Changing %1$s from "%2$s" to "%3$s"', 'message_list', 'media-library-assistant'), __('markup template name', 'media-library-assistant'), $name, $new_slug); $templates_changed = true; } } // name changed if ('blank' != $name) { foreach ($new_values[$shortcode][$name] as $section_name => $section_value) { $old_value = isset($old_templates[$name][$section_name]) ? $old_templates[$name][$section_name] : ''; if ($section_value != $old_value) { /* translators: 1: section name, 2: template name */ $message_list .= '<br>' . sprintf(_x('Updating %1$s markup for "%2$s".', 'message_list', 'media-library-assistant'), $section_name, $new_slug); $templates_changed = true; } } } // ! 'blank' /* * Encode shortcode assignment in template content */ if (isset($new_values[$shortcode][$name]['arguments'])) { $new_values[$shortcode][$name]['arguments'] = sprintf("mla_shortcode_slug=\"%1\$s\"\r\n%2\$s", $definition['slug'], $new_values[$shortcode][$name]['arguments']); } else { $new_values[$shortcode][$name]['arguments'] = sprintf("mla_shortcode_slug=\"%1\$s\"\r\n", $definition['slug']); } foreach ($new_values[$shortcode][$name] as $section_name => $section_value) { if (!empty($section_value)) { $new_templates[$new_slug][$section_name] = $section_value; } } } // foreach $name } // foreach $shortcode if ($templates_changed) { $settings_changed = true; if (false == MLATemplate_Support::mla_put_markup_templates($new_templates)) { /* translators: 1: ERROR tag 2: template type */ $error_list .= '<br>' . sprintf(__('%1$s: Update of %2$s failed.', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), __('markup template', 'media-library-assistant')); } } if ($settings_changed) { /* translators: 1: field type */ $message = sprintf(__('%1$s settings saved.', 'media-library-assistant'), __('Shortcodes', 'media-library-assistant')) . "\r\n"; } else { /* translators: 1: field type */ $message = sprintf(__('%1$s no changes detected.', 'media-library-assistant'), __('Shortcodes', 'media-library-assistant')) . "\r\n"; } $page_content = array('message' => $message . $error_list, 'body' => ''); /* * Uncomment this for debugging. */ // $page_content['message'] .= $message_list; return $page_content; }