public function update_options() { if (!check_ajax_referer('layers-onboarding-update-options', 'layers_onboarding_update_nonce', false)) { die('You threw a Nonce exception'); } // Nonce // Parse our input data parse_str(urldecode(stripslashes($_POST['data'])), $data); $return_message = array('success' => true, 'message' => __('Done!', 'layerswp')); foreach ($data as $option_key => $option_value) { $clean_option_value = esc_attr(stripslashes($option_value)); switch ($option_key) { case 'site_logo': if ('' == $clean_option_value || '0' == $clean_option_value) { die(json_encode(array('success' => true, 'message' => __('No Logo uploaded', 'layerswp')))); } $get_attachment = wp_get_attachment_image_src($clean_option_value); // Get an array of all registered image sizes. $intermediate = get_intermediate_image_sizes(); $sizes = array(); // Have we got anything fun to work with? if (is_array($intermediate) && !empty($intermediate)) { foreach ($intermediate as $key => $size) { // If the size isn't already in the $sizes array, add it. if (!array_key_exists($size, $sizes)) { $image_info = wp_get_attachment_image_src($get_attachment[0], $size); $size_info['url'] = $image_info[0]; $size_info['width'] = $image_info[1]; $size_info['height'] = $image_info[2]; $sizes[$size] = $size_info; } } } if (!is_wp_error($get_attachment) && FALSE != $get_attachment) { $site_logo_array = array('id' => $clean_option_value, 'sizes' => $sizes, 'url' => $get_attachment[0]); update_option($option_key, $site_logo_array); $return_message = array('success' => true, 'message' => __('Logo updated', 'layerswp')); } else { $return_message = array('success' => false, 'message' => __('There was an error when updating your logo.', 'layerswp')); } break; case 'site_color': $header_color = $clean_option_value; $accent_color = layers_adjust_brightness($clean_option_value, -50, TRUE); $footer_color = '#2b2b2b'; set_theme_mod('layers-header-background-color', $header_color); set_theme_mod('layers-site-accent-color', $accent_color); set_theme_mod('layers-footer-background-color', $footer_color); $return_message = array('success' => true, 'message' => __('Option updated', 'layerswp')); break; default: update_option($option_key, $clean_option_value); $return_message = array('success' => true, 'message' => __('Option updated', 'layerswp')); break; } } die(json_encode($return_message)); }
function layers_adjust_brightness($color, $steps = 50, $loop_back = false) { $mod_steps = max(-255, min(255, $steps)); $mod_color = str_replace('#', '', $color); if (strlen($mod_color) == 3) { $mod_color = str_repeat(substr($mod_color, 0, 1), 2) . str_repeat(substr($mod_color, 1, 1), 2) . str_repeat(substr($mod_color, 2, 1), 2); } $mod_color_parts = str_split($mod_color, 2); $return = '#'; foreach ($mod_color_parts as $mod_color) { $mod_color = hexdec($mod_color); $mod_color = max(0, min(255, $mod_color + $mod_steps)); $return .= str_pad(dechex($mod_color), 2, '0', STR_PAD_LEFT); } if (('#000000' == $return || '#ffffff' == $return) && $loop_back) { $return = layers_adjust_brightness($color, -$steps); } return $return; }