oont-contents/plugins/w3-total-cache/Extension_AlwaysCached_Page.php
2025-02-08 15:10:23 +01:00

160 lines
4 KiB
PHP

<?php
/**
* File: Extension_AlwaysCached_Page.php
*
* Controls the AlwaysCached settings page.
*
* @since 2.8.0
*
* @package W3TC
*/
namespace W3TC;
/**
* AlwaysCached Page.
*
* @since 2.8.0
*/
class Extension_AlwaysCached_Page {
/**
* Prints the admin scripts.
*
* @since 2.8.0
*
* @return void
*/
public static function admin_print_scripts() {
if ( 'alwayscached' === Util_Request::get_string( 'extension' ) ) {
wp_register_script( 'w3tc_extension_alwayscached', plugins_url( 'Extension_AlwaysCached_Page_View.js', W3TC_FILE ), array( 'jquery' ), W3TC_VERSION, true );
wp_localize_script(
'w3tc_extension_alwayscached',
'W3TCAlwaysCachedData',
array(
'lang' => array(
'processQueueItemSuccess' => __( 'Successfully regenerated entry.', 'w3-total-cache' ),
'processQueueItemFail' => __( 'Failed to process queue item.', 'w3-total-cache' ),
'processQueueItemFailAlert' => __( 'An unknown error occured!', 'w3-total-cache' ),
'queueItemRegenerate' => __( 'Regenerate', 'w3-total-cache' ),
'queueItemCommand' => __( 'command', 'w3-total-cache' ),
'queuePageLabel' => __( 'Pages:', 'w3-total-cache' ),
'queuePageJump' => __( 'Page #', 'w3-total-cache' ),
'queuePageJumpSubmit' => __( 'Go', 'w3-total-cache' ),
'queueLoadFailAlert' => __( 'An unknown error occured!', 'w3-total-cache' ),
),
)
);
wp_enqueue_script( 'w3tc_extension_alwayscached' );
}
}
/**
* Prints the settings page.
*
* @since 2.8.0
*
* @return void
*/
public static function w3tc_extension_page_alwayscached() {
$config = Dispatcher::config();
include W3TC_DIR . '/Extension_AlwaysCached_Page_View.php';
}
/**
* Adds AJAX actions.
*
* @since 2.8.0
*
* @return void
*/
public static function w3tc_ajax() {
add_action(
'w3tc_ajax_extension_alwayscached_queue',
array(
'\W3TC\Extension_AlwaysCached_Page',
'w3tc_ajax_extension_alwayscached_queue',
)
);
add_action(
'w3tc_ajax_extension_alwayscached_queue_filter',
array(
'\W3TC\Extension_AlwaysCached_Page',
'w3tc_ajax_extension_alwayscached_queue_filter',
)
);
add_action(
'w3tc_ajax_extension_alwayscached_process_queue_item',
array(
'\W3TC\Extension_AlwaysCached_Page',
'w3tc_ajax_extension_alwayscached_process_queue_item',
)
);
}
/**
* Regenerates queue item.
*
* @since 2.8.0
*
* @return void
*/
public static function w3tc_ajax_extension_alwayscached_process_queue_item() {
$item_url = Util_Request::get_string( 'item_url' );
$item = Extension_AlwaysCached_Queue::get_by_url( $item_url );
$result = Extension_AlwaysCached_Worker::process_item( $item, true );
if ( 'ok' === $result ) {
Extension_AlwaysCached_Queue::pop_item_finish( $item, true );
wp_send_json_success( 'ok' );
} else {
wp_send_json_error( 'failed' );
}
}
/**
* Prints the queue content via AJAX.
*
* @since 2.8.0
*
* @return void
*/
public static function w3tc_ajax_extension_alwayscached_queue() {
include W3TC_DIR . '/Extension_AlwaysCached_Page_Queue_View.php';
exit();
}
/**
* Queue filter & pagination.
*
* @since 2.8.0
*
* @return void
*/
public static function w3tc_ajax_extension_alwayscached_queue_filter() {
$queue_mode = Util_Request::get_string( 'mode' );
$search_query = Util_Request::get_string( 'search', '' );
$current_page = Util_Request::get_integer( 'page', 1 );
$limit = 15;
$offset = ( $current_page - 1 ) * $limit;
$rows = Extension_AlwaysCached_Queue::rows( $queue_mode, $offset, $limit, $search_query );
if ( 'postponed' === $queue_mode ) {
$total_rows = Extension_AlwaysCached_Queue::row_count_postponed( $search_query );
} else {
$total_rows = Extension_AlwaysCached_Queue::row_count_pending( $search_query );
}
wp_send_json(
array(
'rows' => $rows,
'total_pages' => ceil( $total_rows / $limit ),
'current_page' => $current_page,
)
);
}
}