Пример #1
0
 /**
  * Update Custom field portion of IPTC/EXIF mappings
  *
  * @since 1.00
  *
  * @param	array 	current iptc_exif_mapping values 
  * @param	array	new values
  *
  * @return	array	( 'message' => HTML message(s) reflecting results, 'values' => updated iptc_exif_mapping values, 'changed' => true if any changes detected else false )
  */
 private static function _update_iptc_exif_custom_mapping($current_values, $new_values)
 {
     $error_list = '';
     $message_list = '';
     $settings_changed = false;
     $custom_field_names = MLAOptions::_get_custom_field_names();
     $new_values = stripslashes_deep($new_values);
     foreach ($new_values['custom'] as $the_key => $new_value) {
         $any_setting_changed = false;
         /*
          * Replace index with field name
          */
         $new_key = trim($new_value['name']);
         /*
          * Check for the addition of a new field or new rule
          */
         if (MLACoreOptions::MLA_NEW_CUSTOM_FIELD === $the_key) {
             if (empty($new_key)) {
                 continue;
             }
             if (in_array($new_key, $custom_field_names)) {
                 /* translators: 1: ERROR tag 2: custom field name */
                 $error_list .= '<br>' . sprintf(__('%1$s: New field %2$s already exists.', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), esc_html($new_key)) . "\r\n";
                 continue;
             }
             /* translators: 1: custom field name */
             $message_list .= '<br>' . sprintf(__('Adding new field %1$s.', 'media-library-assistant'), esc_html($new_key)) . "\r\n";
             $any_setting_changed = true;
         } elseif (MLACoreOptions::MLA_NEW_CUSTOM_RULE === $the_key) {
             if ('none' == $new_key) {
                 continue;
             }
             /* translators: 1: custom field name */
             $message_list .= '<br>' . sprintf(__('Adding new rule for %1$s.', 'media-library-assistant'), esc_html($new_key)) . "\r\n";
             $any_setting_changed = true;
         }
         $new_value = $new_value;
         if (isset($current_values['custom'][$new_key])) {
             $old_values = $current_values['custom'][$new_key];
             $any_setting_changed = false;
         } else {
             $old_values = array('name' => $new_key, 'iptc_value' => 'none', 'exif_value' => '', 'iptc_first' => true, 'keep_existing' => true, 'format' => 'native', 'option' => 'text', 'no_null' => false);
         }
         if (isset($new_value['action'])) {
             if (array_key_exists('delete_rule', $new_value['action']) || array_key_exists('delete_field', $new_value['action'])) {
                 $settings_changed = true;
                 /* translators: 1: custom field name */
                 $message_list .= '<br>' . sprintf(__('Deleting rule for %1$s.', 'media-library-assistant'), esc_html($old_values['name'])) . "\r\n";
                 unset($current_values['custom'][$new_key]);
                 $settings_changed = true;
                 continue;
             }
             // delete rule
         }
         // isset action
         if ($old_values['iptc_value'] != $new_value['iptc_value']) {
             $any_setting_changed = true;
             /* translators: 1: custom field name 2: attribute 3: old value 4: new value */
             $message_list .= '<br>' . sprintf(__('%1$s changing %2$s from %3$s to %4$s.', 'media-library-assistant'), esc_html($old_values['name']), __('IPTC Value', 'media-library-assistant'), $old_values['iptc_value'], $new_value['iptc_value']) . "\r\n";
             $old_values['iptc_value'] = $new_value['iptc_value'];
         }
         if ($old_values['exif_value'] != $new_value['exif_value']) {
             $any_setting_changed = true;
             /* translators: 1: custom field name 2: attribute 3: old value 4: new value */
             $message_list .= '<br>' . sprintf(__('%1$s changing %2$s from %3$s to %4$s.', 'media-library-assistant'), esc_html($old_values['name']), __('EXIF Value', 'media-library-assistant'), $old_values['exif_value'], $new_value['exif_value']) . "\r\n";
             $old_values['exif_value'] = $new_value['exif_value'];
         }
         if ($new_value['iptc_first']) {
             $boolean_value = true;
             $boolean_text = __('EXIF to IPTC', 'media-library-assistant');
         } else {
             $boolean_value = false;
             $boolean_text = __('IPTC to EXIF', 'media-library-assistant');
         }
         if ($old_values['iptc_first'] != $boolean_value) {
             $any_setting_changed = true;
             /* translators: 1: custom field name 2: attribute 3: old value 'to' new value */
             $message_list .= '<br>' . sprintf(__('%1$s changing %2$s value from %3$s.', 'media-library-assistant'), esc_html($old_values['name']), __('Priority', 'media-library-assistant'), $boolean_text) . "\r\n";
             $old_values['iptc_first'] = $boolean_value;
         }
         if ($new_value['keep_existing']) {
             $boolean_value = true;
             $boolean_text = __('Replace to Keep', 'media-library-assistant');
         } else {
             $boolean_value = false;
             $boolean_text = __('Keep to Replace', 'media-library-assistant');
         }
         if ($old_values['keep_existing'] != $boolean_value) {
             $any_setting_changed = true;
             /* translators: 1: custom field name 2: attribute 3: old value 'to' new value */
             $message_list .= '<br>' . sprintf(__('%1$s changing %2$s value from %3$s.', 'media-library-assistant'), esc_html($old_values['name']), __('Existing Text', 'media-library-assistant'), $boolean_text) . "\r\n";
             $old_values['keep_existing'] = $boolean_value;
         }
         if ($old_values['format'] != $new_value['format']) {
             $any_setting_changed = true;
             /* translators: 1: custom field name 2: attribute 3: old value 4: new value */
             $message_list .= '<br>' . sprintf(__('%1$s changing %2$s from %3$s to %4$s.', 'media-library-assistant'), esc_html($old_values['name']), __('Format', 'media-library-assistant'), $old_values['format'], $new_value['format']) . "\r\n";
             $old_values['format'] = $new_value['format'];
         }
         if ($old_values['option'] != $new_value['option']) {
             $any_setting_changed = true;
             /* translators: 1: custom field name 2: attribute 3: old value 4: new value */
             $message_list .= '<br>' . sprintf(__('%1$s changing %2$s from %3$s to %4$s.', 'media-library-assistant'), esc_html($old_values['name']), __('Option', 'media-library-assistant'), $old_values['option'], $new_value['option']) . "\r\n";
             $old_values['option'] = $new_value['option'];
         }
         if (isset($new_value['no_null'])) {
             $boolean_value = true;
             $boolean_text = __('unchecked to checked', 'media-library-assistant');
         } else {
             $boolean_value = false;
             $boolean_text = __('checked to unchecked', 'media-library-assistant');
         }
         if ($old_values['no_null'] != $boolean_value) {
             $any_setting_changed = true;
             /* translators: 1: custom field name 2: attribute 3: old value 'to' new value */
             $message_list .= '<br>' . sprintf(__('%1$s changing %2$s value from %3$s.', 'media-library-assistant'), esc_html($old_values['name']), __('Delete NULL values', 'media-library-assistant'), $boolean_text) . "\r\n";
             $old_values['no_null'] = $boolean_value;
         }
         if ($any_setting_changed) {
             $settings_changed = true;
             $current_values['custom'][$new_key] = $old_values;
         }
     }
     // new custom value
     /*
      * Uncomment this for debugging.
      */
     // $error_list .= $message_list;
     return array('message' => $error_list, 'values' => $current_values, 'changed' => $settings_changed);
 }