function jqmobile_get_theme_options() { return get_option('jqmobile_theme_options', jqmobile_get_default_theme_options()); }
function jqmobile_theme_options_validate($input) { $output = $defaults = jqmobile_get_default_theme_options(); $uploadfiles = $_FILES['jqmobile_upload']; if ($uploadfiles['error'] == 0) { require_once ABSPATH . 'wp-admin/includes/file.php'; WP_Filesystem(); global $wp_filesystem; $filetmp = $uploadfiles['tmp_name']; $filename = $uploadfiles['name']; $unpack_folder = $wp_filesystem->wp_content_dir() . 'themeroller/'; $old_files = $wp_filesystem->dirlist($unpack_folder); if (!empty($old_files)) { foreach ($old_files as $file) { $wp_filesystem->delete($unpack_folder . $file['name'], true); } } //We need a working directory $working_dir = $unpack_folder . basename($filename, '.zip'); // Clean up working directory if ($wp_filesystem->is_dir($working_dir)) { $wp_filesystem->delete($working_dir, true); } // Unzip package to working directory $result = unzip_file($filetmp, $working_dir); //TODO optimizations, Copy when Move/Rename would suffice? if (is_wp_error($result)) { $wp_filesystem->delete($working_dir, true); // @TODO: error handling exit; } $new_files = $wp_filesystem->dirlist($working_dir . '/themes'); $target_name = ''; $target_dir = ''; foreach ($new_files as $key => $value) { if (preg_match('/\\.css$/', $value['name'])) { $target_name = str_replace('.min', '', preg_replace('/\\.css$/', '', $value['name'])); } } if ($target_name) { $target_dir = get_stylesheet_directory() . '/themes/' . $target_name; if ($wp_filesystem->is_dir($target_dir)) { $wp_filesystem->delete($target_dir, true); } if (!$wp_filesystem->mkdir($target_dir, FS_CHMOD_DIR)) { exit; } if (!$wp_filesystem->mkdir($target_dir . "/images", FS_CHMOD_DIR)) { exit; } // @TODO: error handling copy_dir($working_dir . '/themes/images', $target_dir . '/images'); $wp_filesystem->copy($working_dir . '/themes/' . $target_name . '.css', $target_dir . '/jquery.mobile.theme.css', true, FS_CHMOD_FILE); } } if (isset($input['color_scheme']) && in_array($input['color_scheme'], jqmobile_color_schemes())) { $output['color_scheme'] = $input['color_scheme']; } if (isset($input['mobile_layout']) && array_key_exists($input['mobile_layout'], jqmobile_mobile_layouts())) { $output['mobile_layout'] = $input['mobile_layout']; } $output['ui'] = array(); $entities = jqmobile_mobile_entities(); $range = range('a', 'z'); foreach ($input['ui'] as $key => $value) { if (array_key_exists($key, $entities) && in_array($value, $range)) { $output['ui'][$key] = $value; } } // @TODO: ui validation return apply_filters('jqmobile_theme_options_validate', $output, $input, $defaults); }