晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/stando/www/wp-content/plugins/force-regenerate-thumbnails/ |
Upload File : |
<?php
/*
Plugin Name: Force Regenerate Thumbnails
Plugin URI: http://pedroelsner.com/2012/08/forcando-a-atualizacao-de-thumbnails-no-wordpress
Description: Delete and REALLY force the regenerate thumbnail.
Version: 2.0.6
Author: Pedro Elsner
Author URI: http://www.pedroelsner.com/
*/
/*
Bebug URL
wp-admin/admin-ajax.php?action=regeneratethumbnail&id=
*/
/**
* Force GD for Image handle (WordPress 3.5 or better)
* Thanks (@nikcree)
*
* @since 1.5
*/
$version = get_bloginfo('version');
if ($version >= 3.5) {
function ms_image_editor_default_to_gd_fix( $editors ) {
$gd_editor = 'WP_Image_Editor_GD';
$editors = array_diff( $editors, array( $gd_editor ) );
array_unshift( $editors, $gd_editor );
return $editors;
}
add_filter('wp_image_editors', 'ms_image_editor_default_to_gd_fix');
}
/**
* Force Regenerate Thumbnails
*
* @since 1.0
*/
class ForceRegenerateThumbnails {
/**
* Register ID of management page
*
* @var
* @since 1.0
*/
var $menu_id;
/**
* User capability
*
* @access public
* @since 1.0
*/
public $capability;
/**
* Plugin initialization
*
* @access public
* @since 1.0
*/
function __construct() {
load_plugin_textdomain('force-regenerate-thumbnails', false, '/force-regenerate-thumbnails/localization');
add_action('admin_menu', array(&$this, 'add_admin_menu'));
add_action('admin_enqueue_scripts', array(&$this, 'admin_enqueues'));
add_action('wp_ajax_regeneratethumbnail', array(&$this, 'ajax_process_image'));
add_filter('media_row_actions', array(&$this, 'add_media_row_action'), 10, 2);
add_action('admin_head-upload.php', array(&$this, 'add_bulk_actions_via_javascript'));
add_action('admin_action_bulk_force_regenerate_thumbnails', array(&$this, 'bulk_action_handler'));
add_action('admin_action_-1', array(&$this, 'bulk_action_handler'));
// Allow people to change what capability is required to use this plugin
$this->capability = apply_filters('regenerate_thumbs_cap', 'manage_options');
}
/**
* Register the management page
*
* @access public
* @since 1.0
*/
function add_admin_menu() {
$this->menu_id = add_management_page(__('Force Regenerate Thumbnails', 'force-regenerate-thumbnails' ), __( 'Force Regenerate Thumbnails', 'force-regenerate-thumbnails' ), $this->capability, 'force-regenerate-thumbnails', array(&$this, 'force_regenerate_interface') );
}
/**
* Enqueue the needed Javascript and CSS
*
* @param string $hook_suffix
* @access public
* @since 1.0
*/
function admin_enqueues($hook_suffix) {
if ($hook_suffix != $this->menu_id) {
return;
}
// WordPress 3.1 vs older version compatibility
//if (wp_script_is('jquery-ui-widget', 'registered')) {
// wp_enqueue_script('jquery-ui-progressbar', plugins_url('jquery-ui/jquery.ui.progressbar.min.js', __FILE__), array('jquery-ui-core', 'jquery-ui-widget'), '1.8.6');
//} else {
// wp_enqueue_script('jquery-ui-progressbar', plugins_url('jquery-ui/jquery.ui.progressbar.min.1.7.2.js', __FILE__), array('jquery-ui-core'), '1.7.2');
//}
wp_enqueue_script('jquery-ui-progressbar', plugins_url('jquery-ui/jquery.ui.progressbar.min.1.7.2.js', __FILE__), array('jquery-ui-core'), '1.7.2');
wp_enqueue_style('jquery-ui-regenthumbs', plugins_url('jquery-ui/redmond/jquery-ui-1.7.2.custom.css', __FILE__), array(), '1.7.2');
wp_enqueue_style('plugin-custom-style', plugins_url('style.css', __FILE__), array(), '2.0.1');
}
/**
* Add a "Force Regenerate Thumbnails" link to the media row actions
*
* @param array $actions
* @param string $post
* @return array
* @access public
* @since 1.0
*/
function add_media_row_action($actions, $post) {
if ('image/' != substr($post->post_mime_type, 0, 6) || !current_user_can($this->capability))
return $actions;
$url = wp_nonce_url( admin_url( 'tools.php?page=force-regenerate-thumbnails&goback=1&ids=' . $post->ID ), 'force-regenerate-thumbnails' );
$actions['regenerate_thumbnails'] = '<a href="' . esc_url( $url ) . '" title="' . esc_attr( __( "Regenerate the thumbnails for this single image", 'force-regenerate-thumbnails' ) ) . '">' . __( 'Force Regenerate Thumbnails', 'force-regenerate-thumbnails' ) . '</a>';
return $actions;
}
/**
* Add "Force Regenerate Thumbnails" to the Bulk Actions media dropdown
*
* @param array $actions Actions list
* @return array
* @access public
* @since 1.0
*/
function add_bulk_actions($actions) {
$delete = false;
if (!empty($actions['delete'])) {
$delete = $actions['delete'];
unset($actions['delete']);
}
$actions['bulk_force_regenerate_thumbnails'] = __('Force Regenerate Thumbnails', 'force-regenerate-thumbnails');
if ($delete) {
$actions['delete'] = $delete;
}
return $actions;
}
/**
* Add new items to the Bulk Actions using Javascript
*
* @access public
* @since 1.0
*/
function add_bulk_actions_via_javascript() {
if (!current_user_can( $this->capability)) {
return;
}
?>
<script type="text/javascript">
jQuery(document).ready(function($){
$('select[name^="action"] option:last-child').before('<option value="bulk_force_regenerate_thumbnails"><?php echo esc_attr(__('Force Regenerate Thumbnails', 'force-regenerate-thumbnails')); ?></option>');
});
</script>
<?php
}
/**
* Handles the bulk actions POST
*
* @access public
* @since 1.0
*/
function bulk_action_handler() {
if (empty($_REQUEST['action']) || ('bulk_force_regenerate_thumbnails' != $_REQUEST['action'] && 'bulk_force_regenerate_thumbnails' != $_REQUEST['action2'])) {
return;
}
if (empty($_REQUEST['media']) || ! is_array($_REQUEST['media'])) {
return;
}
check_admin_referer('bulk-media');
$ids = implode(',', array_map('intval', $_REQUEST['media']));
wp_redirect(add_query_arg('_wpnonce', wp_create_nonce('force-regenerate-thumbnails'), admin_url('tools.php?page=force-regenerate-thumbnails&goback=1&ids=' . $ids)));
exit();
}
/**
* The user interface plus thumbnail regenerator
*
* @access public
* @since 1.0
*/
function force_regenerate_interface() {
global $wpdb;
?>
<div id="message" class="updated fade" style="display:none"></div>
<div class="wrap regenthumbs">
<h2><?php _e('Force Regenerate Thumbnails', 'force-regenerate-thumbnails'); ?></h2>
<?php
// If the button was clicked
if (!empty($_POST['force-regenerate-thumbnails'] ) || !empty($_REQUEST['ids'])) {
// Capability check
if (!current_user_can( $this->capability))
wp_die(__('Cheatin’ uh?'));
// Form nonce check
check_admin_referer('force-regenerate-thumbnails');
// Create the list of image IDs
if (!empty($_REQUEST['ids'])) {
$images = array_map('intval', explode(',', trim($_REQUEST['ids'], ',')));
$ids = implode(',', $images);
} else {
// Directly querying the database is normally frowned upon, but all
// of the API functions will return the full post objects which will
// suck up lots of memory. This is best, just not as future proof.
if (!$images = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%' ORDER BY ID DESC")) {
echo ' <p>' . sprintf(__("Unable to find any images. Are you sure <a href='%s'>some exist</a>?", 'force-regenerate-thumbnails'), admin_url('upload.php?post_mime_type=image')) . "</p></div>";
return;
}
// Generate the list of IDs
$ids = array();
foreach ($images as $image) {
$ids[] = $image->ID;
}
$ids = implode(',', $ids);
}
echo ' <p>' . __("Please be patient while the thumbnails are regenerated. You will be notified via this page when the regenerating is completed.", 'force-regenerate-thumbnails') . '</p>';
$count = count($images);
$text_goback = (!empty($_GET['goback']))
? sprintf(__('To go back to the previous page, <a href="%s">click here</a>.', 'force-regenerate-thumbnails'), 'javascript:history.go(-1)')
: '';
$text_failures = sprintf(__('All done! %1$s image(s) were successfully resized in %2$s seconds and there were %3$s failure(s). To try regenerating the failed images again, <a href="%4$s">click here</a>. %5$s', 'force-regenerate-thumbnails'), "' + rt_successes + '", "' + rt_totaltime + '", "' + rt_errors + '", esc_url(wp_nonce_url(admin_url('tools.php?page=force-regenerate-thumbnails&goback=1'), 'force-regenerate-thumbnails') . '&ids=') . "' + rt_failedlist + '", $text_goback);
$text_nofailures = sprintf(__('All done! %1$s image(s) were successfully resized in %2$s seconds and there were 0 failures. %3$s', 'force-regenerate-thumbnails'), "' + rt_successes + '", "' + rt_totaltime + '", $text_goback);
?>
<noscript><p><em><?php _e('You must enable Javascript in order to proceed!', 'force-regenerate-thumbnails') ?></em></p></noscript>
<div id="regenthumbs-bar" style="position:relative;height:25px;">
<div id="regenthumbs-bar-percent" style="position:absolute;left:50%;top:50%;width:300px;margin-left:-150px;height:25px;margin-top:-9px;font-weight:bold;text-align:center;"></div>
</div>
<p><input type="button" class="button hide-if-no-js" name="regenthumbs-stop" id="regenthumbs-stop" value="<?php _e('Abort Process', 'force-regenerate-thumbnails') ?>" /></p>
<h3 class="title"><?php _e('Process Information', 'force-regenerate-thumbnails'); ?></h3>
<p>
<?php printf(__('Total: %s', 'force-regenerate-thumbnails'), $count); ?><br />
<?php printf(__('Success: %s', 'force-regenerate-thumbnails'), '<span id="regenthumbs-debug-successcount">0</span>'); ?><br />
<?php printf(__('Failure: %s', 'force-regenerate-thumbnails'), '<span id="regenthumbs-debug-failurecount">0</span>'); ?>
</p>
<ol id="regenthumbs-debuglist">
<li style="display:none"></li>
</ol>
<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(function($){
var i;
var rt_images = [<?php echo $ids; ?>];
var rt_total = rt_images.length;
var rt_count = 1;
var rt_percent = 0;
var rt_successes = 0;
var rt_errors = 0;
var rt_failedlist = '';
var rt_resulttext = '';
var rt_timestart = new Date().getTime();
var rt_timeend = 0;
var rt_totaltime = 0;
var rt_continue = true;
// Create the progress bar
$("#regenthumbs-bar").progressbar();
$("#regenthumbs-bar-percent").html("0%");
// Stop button
$("#regenthumbs-stop").click(function() {
rt_continue = false;
$('#regenthumbs-stop').val("<?php echo $this->esc_quotes(__('Stopping...', 'force-regenerate-thumbnails')); ?>");
});
// Clear out the empty list element that's there for HTML validation purposes
$("#regenthumbs-debuglist li").remove();
// Called after each resize. Updates debug information and the progress bar.
function RegenThumbsUpdateStatus(id, success, response) {
$("#regenthumbs-bar").progressbar("value", (rt_count / rt_total) * 100);
$("#regenthumbs-bar-percent").html(Math.round((rt_count / rt_total) * 1000) / 10 + "%");
rt_count = rt_count + 1;
if (success) {
rt_successes = rt_successes + 1;
$("#regenthumbs-debug-successcount").html(rt_successes);
$("#regenthumbs-debuglist").append("<li>" + response.success + "</li>");
}
else {
rt_errors = rt_errors + 1;
rt_failedlist = rt_failedlist + ',' + id;
$("#regenthumbs-debug-failurecount").html(rt_errors);
$("#regenthumbs-debuglist").append("<li>" + response.error + "</li>");
}
}
// Called when all images have been processed. Shows the results and cleans up.
function RegenThumbsFinishUp() {
rt_timeend = new Date().getTime();
rt_totaltime = Math.round((rt_timeend - rt_timestart) / 1000);
$('#regenthumbs-stop').hide();
if (rt_errors > 0) {
rt_resulttext = '<?php echo $text_failures; ?>';
} else {
rt_resulttext = '<?php echo $text_nofailures; ?>';
}
$("#message").html("<p><strong>" + rt_resulttext + "</strong></p>");
$("#message").show();
}
// Regenerate a specified image via AJAX
function RegenThumbs(id) {
$.ajax({
type: 'POST',
cache: false,
url: ajaxurl,
data: { action: "regeneratethumbnail", id: id },
success: function(response) {
//Catch unknown error
if(response === null) {
response = {};
response.success = false;
response.error = 'Unknown error occured.';
}
if (response.success) {
RegenThumbsUpdateStatus(id, true, response);
} else {
RegenThumbsUpdateStatus(id, false, response);
}
if (rt_images.length && rt_continue) {
RegenThumbs(rt_images.shift());
} else {
RegenThumbsFinishUp();
}
},
error: function(response) {
RegenThumbsUpdateStatus(id, false, response);
if (rt_images.length && rt_continue) {
RegenThumbs(rt_images.shift());
} else {
RegenThumbsFinishUp();
}
}
});
}
RegenThumbs(rt_images.shift());
});
// ]]>
</script>
<?php
}
// No button click? Display the form.
else {
?>
<form method="post" action="">
<?php wp_nonce_field('force-regenerate-thumbnails') ?>
<h3>All Thumbnails</h3>
<p><?php printf(__("Pressing the follow button, you can regenerate thumbnails for all images that you have uploaded to your blog.", 'force-regenerate-thumbnails'), admin_url('options-media.php')); ?></p>
<p>
<noscript><p><em><?php _e('You must enable Javascript in order to proceed!', 'force-regenerate-thumbnails') ?></em></p></noscript>
<input type="submit" class="button-primary hide-if-no-js" name="force-regenerate-thumbnails" id="force-regenerate-thumbnails" value="<?php _e('Regenerate All Thumbnails', 'force-regenerate-thumbnails') ?>" />
</p>
</br>
<h3>Specific Thumbnails</h3>
<p><?php printf(__("You can regenerate all thumbnails for specific images from the <a href='%s'>Media</a> page. (WordPress 3.1+ only)", 'force-regenerate-thumbnails'), admin_url('upload.php')); ?></p>
</form>
<?php
} // End if button
?>
</div>
<?php
}
/**
* Process a single image ID (this is an AJAX handler)
*
* @access public
* @since 1.0
*/
function ajax_process_image() {
// No timeout limit
set_time_limit(0);
// Don't break the JSON result
error_reporting(0);
$id = (int) $_REQUEST['id'];
try {
header('Content-type: application/json');
$image = get_post($id);
if (is_null($image)) {
throw new Exception(sprintf(__('Failed: %d is an invalid image ID.', 'force-regenerate-thumbnails'), $id));
}
if ('attachment' != $image->post_type || 'image/' != substr($image->post_mime_type, 0, 6)) {
throw new Exception(sprintf(__('Failed: %d is an invalid image ID.', 'force-regenerate-thumbnails'), $id));
}
if (!current_user_can($this->capability)) {
throw new Exception(__('Your user account does not have permission to regenerate images.', 'force-regenerate-thumbnails'));
}
/**
* Fix for get_option('upload_path')
* Thanks (@DavidLingren)
*
* @since 2.0.1
*/
$upload_dir = wp_upload_dir();
// Get original image
$image_fullpath = get_attached_file($image->ID);
$debug_1 = $image_fullpath;
$debug_2 = '';
$debug_3 = '';
$debug_4 = '';
// Can't get image path
if (false === $image_fullpath || strlen($image_fullpath) == 0) {
// Try get image path from url
if ((strrpos($image->guid, $upload_dir['baseurl']) !== false)) {
$image_fullpath = realpath($upload_dir['basedir'] . DIRECTORY_SEPARATOR . substr($image->guid, strlen($upload_dir['baseurl']), strlen($image->guid)));
$debug_2 = $image_fullpath;
if (realpath($image_fullpath) === false) {
throw new Exception(sprintf(__('The originally uploaded image file cannot be found at "%s".', 'force-regenerate-thumbnails'), esc_html((string) $image_fullpath)));
}
} else {
throw new Exception(__('The originally uploaded image file cannot be found.', 'force-regenerate-thumbnails'));
}
}
// Image path incomplete
if ((strrpos($image_fullpath, $upload_dir['basedir']) === false)) {
$image_fullpath = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . $image_fullpath;
$debug_3 = $image_fullpath;
}
// Image don't exists
if (!file_exists($image_fullpath) || realpath($image_fullpath) === false) {
// Try get image path from url
if ((strrpos($image->guid, $upload_dir['baseurl']) !== false)) {
$image_fullpath = realpath($upload_dir['basedir'] . DIRECTORY_SEPARATOR . substr($image->guid, strlen($upload_dir['baseurl']), strlen($image->guid)));
$debug_4 = $image_fullpath;
if (realpath($image_fullpath) === false) {
throw new Exception(sprintf(__('The originally uploaded image file cannot be found at "%s".', 'force-regenerate-thumbnails'), esc_html((string) $image_fullpath)));
}
} else {
throw new Exception(sprintf(__('The originally uploaded image file cannot be found at "%s".', 'force-regenerate-thumbnails'), esc_html((string) $image_fullpath)));
}
}
/**
* Update META POST
* Thanks (@norecipes)
*
* @since 2.0.2
*/
update_attached_file($image->ID, $image_fullpath);
// Results
$thumb_deleted = array();
$thumb_error = array();
$thumb_regenerate = array();
// Hack to find thumbnail
$file_info = pathinfo($image_fullpath);
$file_info['filename'] .= '-';
/**
* Try delete all thumbnails
*/
$files = array();
$path = opendir($file_info['dirname']);
if ( false !== $path ) {
while (false !== ($thumb = readdir($path))) {
if (!(strrpos($thumb, $file_info['filename']) === false)) {
$files[] = $thumb;
}
}
closedir($path);
sort($files);
}
foreach ($files as $thumb) {
$thumb_fullpath = $file_info['dirname'] . DIRECTORY_SEPARATOR . $thumb;
$thumb_info = pathinfo($thumb_fullpath);
$valid_thumb = explode($file_info['filename'], $thumb_info['filename']);
if ($valid_thumb[0] == "") {
$dimension_thumb = explode('x', $valid_thumb[1]);
if (count($dimension_thumb) == 2) {
if (is_numeric($dimension_thumb[0]) && is_numeric($dimension_thumb[1])) {
unlink($thumb_fullpath);
if (!file_exists($thumb_fullpath)) {
$thumb_deleted[] = sprintf("%sx%s", $dimension_thumb[0], $dimension_thumb[1]);
} else {
$thumb_error[] = sprintf("%sx%s", $dimension_thumb[0], $dimension_thumb[1]);
}
}
}
}
}
/**
* Regenerate all thumbnails
*/
$metadata = wp_generate_attachment_metadata($image->ID, $image_fullpath);
if (is_wp_error($metadata)) {
throw new Exception($metadata->get_error_message());
}
if (empty($metadata)) {
throw new Exception(__('Unknown failure reason.', 'force-regenerate-thumbnails'));
}
wp_update_attachment_metadata($image->ID, $metadata);
/**
* Verify results (deleted, errors, success)
*/
$files = array();
$path = opendir($file_info['dirname']);
if ( false !== $path ) {
while (false !== ($thumb = readdir($path))) {
if (!(strrpos($thumb, $file_info['filename']) === false)) {
$files[] = $thumb;
}
}
closedir($path);
sort($files);
}
foreach ($files as $thumb) {
$thumb_fullpath = $file_info['dirname'] . DIRECTORY_SEPARATOR . $thumb;
$thumb_info = pathinfo($thumb_fullpath);
$valid_thumb = explode($file_info['filename'], $thumb_info['filename']);
if ($valid_thumb[0] == "") {
$dimension_thumb = explode('x', $valid_thumb[1]);
if (count($dimension_thumb) == 2) {
if (is_numeric($dimension_thumb[0]) && is_numeric($dimension_thumb[1])) {
$thumb_regenerate[] = sprintf("%sx%s", $dimension_thumb[0], $dimension_thumb[1]);
}
}
}
}
// Remove success if has in error list
foreach ($thumb_regenerate as $key => $regenerate) {
if (in_array($regenerate, $thumb_error))
unset($thumb_regenerate[$key]);
}
// Remove deleted if has in success list
foreach ($thumb_deleted as $key => $deleted) {
if (in_array($deleted, $thumb_regenerate))
unset($thumb_deleted[$key]);
}
/**
* Display results
*/
$message = sprintf(__('<b>"%s" (ID %s)</b>', 'force-regenerate-thumbnails'), esc_html(get_the_title($id)), $image->ID);
$message .= "<br /><br />";
$message .= sprintf(__("<code>BaseDir: %s</code><br />", 'force-regenerate-thumbnails'), $upload_dir['basedir']);
$message .= sprintf(__("<code>BaseUrl: %s</code><br />", 'force-regenerate-thumbnails'), $upload_dir['baseurl']);
$message .= sprintf(__("<code>Image: %s</code><br />", 'force-regenerate-thumbnails'), $debug_1);
if ($debug_2 != '')
$message .= sprintf(__("<code>Image Debug 2: %s</code><br />", 'force-regenerate-thumbnails'), $debug_2);
if ($debug_3 != '')
$message .= sprintf(__("<code>Image Debug 3: %s</code><br />", 'force-regenerate-thumbnails'), $debug_3);
if ($debug_4 != '')
$message .= sprintf(__("<code>Image Debug 4: %s</code><br />", 'force-regenerate-thumbnails'), $debug_4);
if (count($thumb_deleted) > 0) {
$message .= sprintf(__('<br />Deleted: %s', 'force-regenerate-thumbnails'), implode(', ', $thumb_deleted));
}
if (count($thumb_error) > 0) {
$message .= sprintf(__('<br /><b><span style="color: #DD3D36;">Deleted error: %s</span></b>', 'force-regenerate-thumbnails'), implode(', ', $thumb_error));
$message .= sprintf(__('<br /><span style="color: #DD3D36;">Please, check the folder permission (chmod 777): %s</span>', 'force-regenerate-thumbnails'), $upload_dir['basedir']);
}
if (count($thumb_regenerate) > 0) {
$message .= sprintf(__('<br />Regenerate: %s</span>', 'force-regenerate-thumbnails'), implode(', ', $thumb_regenerate));
if (count($thumb_error) <= 0) {
$message .= sprintf(__('<br />Successfully regenerated in %s seconds', 'force-regenerate-thumbnails'), timer_stop());
}
}
if (count($thumb_error) > 0) {
die(json_encode(array('error' => '<div id="message" class="error fade"><p>' . $message . '</p></div>')));
} else {
die(json_encode(array('success' => '<div id="message" class="updated fade"><p>' . $message . '</p></div>')));
}
} catch (Exception $e) {
$this->die_json_failure_msg($id, '<b><span style="color: #DD3D36;">' . $e->getMessage() . '</span></b>');
}
exit;
}
/**
* Helper to make a JSON failure message
*
* @param integer $id
* @param string #message
* @access public
* @since 1.8
*/
function die_json_failure_msg($id, $message) {
die(json_encode(array('error' => sprintf(__('(ID %s)<br />%s', 'force-regenerate-thumbnails'), $id, $message))));
}
/**
* Helper function to escape quotes in strings for use in Javascript
*
* @param string #message
* @return string
* @access public
* @since 1.0
*/
function esc_quotes($string) {
return str_replace('"', '\"', $string);
}
}
/**
* Start
*/
function ForceRegenerateThumbnails() {
global $ForceRegenerateThumbnails;
$ForceRegenerateThumbnails = new ForceRegenerateThumbnails();
}
add_action('init', 'ForceRegenerateThumbnails');
?>