/**
  * 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;
 }