Logging: Add filter to modify the list of expired logs to be deleted (#44380)
* Logging: Add filter to modify the list of expired logs to be deleted This provides a way for extensions to ensure that some log files are retained for a different time period than the normal retention period setting. * phpcs cleanup * Add changelog file * Add note to settings view when hook has filter on it Also remove the note about retention days from the log entry that's generated when expired log files are deleted
This commit is contained in:
parent
a619aba5ee
commit
b2d9d6f118
|
@ -0,0 +1,4 @@
|
|||
Significance: minor
|
||||
Type: add
|
||||
|
||||
Add a filter to allow preventing an expired log file from being deleted
|
|
@ -237,7 +237,29 @@ class LogHandlerFileV2 extends WC_Log_Handler {
|
|||
)
|
||||
);
|
||||
|
||||
if ( is_wp_error( $files ) || count( $files ) < 1 ) {
|
||||
if ( is_wp_error( $files ) ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$files = array_filter(
|
||||
$files,
|
||||
function( $file ) use ( $timestamp ) {
|
||||
/**
|
||||
* Allows preventing an expired log file from being deleted.
|
||||
*
|
||||
* @param bool $delete True to delete the file.
|
||||
* @param File $file The log file object.
|
||||
* @param int $timestamp The expiration threshold.
|
||||
*
|
||||
* @since 8.7.0
|
||||
*/
|
||||
$delete = apply_filters( 'woocommerce_logger_delete_expired_file', true, $file, $timestamp );
|
||||
|
||||
return boolval( $delete );
|
||||
}
|
||||
);
|
||||
|
||||
if ( count( $files ) < 1 ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -254,31 +276,16 @@ class LogHandlerFileV2 extends WC_Log_Handler {
|
|||
time(),
|
||||
'info',
|
||||
sprintf(
|
||||
'%s %s',
|
||||
sprintf(
|
||||
esc_html(
|
||||
// translators: %s is a number of log files.
|
||||
_n(
|
||||
'%s expired log file was deleted.',
|
||||
'%s expired log files were deleted.',
|
||||
$deleted,
|
||||
'woocommerce'
|
||||
)
|
||||
),
|
||||
number_format_i18n( $deleted )
|
||||
esc_html(
|
||||
// translators: %s is a number of log files.
|
||||
_n(
|
||||
'%s expired log file was deleted.',
|
||||
'%s expired log files were deleted.',
|
||||
$deleted,
|
||||
'woocommerce'
|
||||
)
|
||||
),
|
||||
sprintf(
|
||||
esc_html(
|
||||
// translators: %s is a number of days.
|
||||
_n(
|
||||
'The retention period for log files is %s day.',
|
||||
'The retention period for log files is %s days.',
|
||||
$retention_days,
|
||||
'woocommerce'
|
||||
)
|
||||
),
|
||||
number_format_i18n( $retention_days )
|
||||
)
|
||||
number_format_i18n( $deleted )
|
||||
),
|
||||
array(
|
||||
'source' => 'wc_logger',
|
||||
|
|
|
@ -154,18 +154,28 @@ class Settings {
|
|||
'step' => 1,
|
||||
);
|
||||
|
||||
$desc = array();
|
||||
|
||||
$hardcoded = has_filter( 'woocommerce_logger_days_to_retain_logs' );
|
||||
$desc = '';
|
||||
if ( $hardcoded ) {
|
||||
$custom_attributes['disabled'] = 'true';
|
||||
|
||||
$desc = sprintf(
|
||||
$desc[] = sprintf(
|
||||
// translators: %s is the name of a filter hook.
|
||||
__( 'This setting cannot be changed here because it is being set by a filter on the %s hook.', 'woocommerce' ),
|
||||
'<code>woocommerce_logger_days_to_retain_logs</code>'
|
||||
);
|
||||
}
|
||||
|
||||
$file_delete_has_filter = LogHandlerFileV2::class === $this->get_default_handler() && has_filter( 'woocommerce_logger_delete_expired_file' );
|
||||
if ( $file_delete_has_filter ) {
|
||||
$desc[] = sprintf(
|
||||
// translators: %s is the name of a filter hook.
|
||||
__( 'The %s hook has a filter set, so some log files may have different retention settings.', 'woocommerce' ),
|
||||
'<code>woocommerce_logger_delete_expired_file</code>'
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'title' => __( 'Retention period', 'woocommerce' ),
|
||||
'desc_tip' => __( 'This sets how many days log entries will be kept before being auto-deleted.', 'woocommerce' ),
|
||||
|
@ -181,7 +191,7 @@ class Settings {
|
|||
' %s',
|
||||
__( 'days', 'woocommerce' ),
|
||||
),
|
||||
'desc' => $desc,
|
||||
'desc' => implode( '<br><br>', $desc ),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue