prefix . 'eistat_';
// -------------------------------------------------------------
// Handle actions
// -------------------------------------------------------------
// Create ZIP archive
if (isset($_POST['eistat_create_archive'])) {
check_admin_referer('eistat_create_archive');
$eistat_from = isset($_POST['from']) ? sanitize_text_field(wp_unslash($_POST['from'])) : '';
$eistat_to = isset($_POST['to']) ? sanitize_text_field(wp_unslash($_POST['to'])) : '';
$eistat_tables = isset($_POST['tables']) && is_array($_POST['tables'])
? array_map('sanitize_key', wp_unslash($_POST['tables']))
: [];
$eistat_tables = array_intersect($eistat_tables, EISTAT_Exporter::tables());
if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $eistat_from)
&& preg_match('/^\d{4}-\d{2}-\d{2}$/', $eistat_to)
&& $eistat_tables) {
$eistat_name = EISTAT_Exporter::create_archive($eistat_tables, $eistat_from, $eistat_to);
if ($eistat_name) {
echo '
'
. sprintf(
/* translators: %s: archive file name */
esc_html__('Archive created: %s', 'statinform'),
'' . esc_html($eistat_name) . ''
)
. '
';
} else {
echo ''
. esc_html__('Failed to create the archive.', 'statinform')
. '
';
}
} else {
echo ''
. esc_html__('Please provide a valid period and select at least one table.', 'statinform')
. '
';
}
}
// Delete old data
if (isset($_POST['eistat_delete_old'])) {
check_admin_referer('eistat_delete_old');
$eistat_date = isset($_POST['delete_before'])
? sanitize_text_field(wp_unslash($_POST['delete_before']))
: '';
$eistat_with_archive = !empty($_POST['with_archive']);
if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $eistat_date)) {
if ($eistat_with_archive) {
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter
$eistat_earliest = $wpdb->get_var("SELECT MIN(date) FROM {$eistat_p}daily");
if ($eistat_earliest && $eistat_earliest < $eistat_date) {
$eistat_archive_to = gmdate('Y-m-d', strtotime($eistat_date . ' -1 day'));
$eistat_name = EISTAT_Exporter::create_archive(
EISTAT_Exporter::tables(),
$eistat_earliest,
$eistat_archive_to
);
if ($eistat_name) {
echo ''
. sprintf(
/* translators: %s: archive file name */
esc_html__('Archive created: %s', 'statinform'),
'' . esc_html($eistat_name) . ''
)
. '
';
}
}
}
$eistat_deleted = EISTAT_Exporter::delete_before($eistat_date);
$eistat_summary = [];
foreach ($eistat_deleted as $t => $n) {
if ($n > 0) {
$eistat_summary[] = $t . ': ' . number_format_i18n($n);
}
}
if ($eistat_summary) {
echo ''
. esc_html__('Deleted:', 'statinform')
. ' ' . esc_html(implode(', ', $eistat_summary)) . '
';
} else {
echo ''
. esc_html__('No data found for deletion in the specified period.', 'statinform')
. '
';
}
}
}
// Delete a single archive
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
if (isset($_GET['eistat_action']) && $_GET['eistat_action'] === 'delete_archive' && isset($_GET['name'])) {
check_admin_referer('eistat_delete_archive');
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
$eistat_name = sanitize_file_name(wp_unslash($_GET['name']));
if (EISTAT_Exporter::delete_archive($eistat_name)) {
echo ''
. esc_html__('Archive deleted.', 'statinform')
. '
';
}
}
// -------------------------------------------------------------
// Prepare data for display
// -------------------------------------------------------------
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter
$eistat_min_date = $wpdb->get_var("SELECT MIN(date) FROM {$eistat_p}daily");
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter
$eistat_max_date = $wpdb->get_var("SELECT MAX(date) FROM {$eistat_p}daily");
$eistat_size_info = EISTAT_Exporter::db_size_info();
$eistat_archives = EISTAT_Exporter::list_archives();
$eistat_default_from = $eistat_min_date ?: gmdate('Y-m-d');
$eistat_default_to = $eistat_max_date ?: gmdate('Y-m-d');
$eistat_delete_default = gmdate('Y-m-d', strtotime('-12 months'));
?>
|
|
|
|
'eistat_download_archive',
'name' => $a['name'],
], admin_url('admin-post.php')),
'eistat_download_archive'
);
$eistat_del_url = wp_nonce_url(
add_query_arg([
'page' => 'eistat-dashboard',
'view' => 'archives',
'eistat_action' => 'delete_archive',
'name' => $a['name'],
], admin_url('admin.php')),
'eistat_delete_archive'
);
?>
|
|
|
|