/var/www/p4ela.net/www/wp-includes
NameSizeModeActions
assets/-0777rm
block-bindings/-0777rm
block-patterns/-0777rm
block-supports/-0777rm
blocks/-0777rm
certificates/-0777rm
css/-0777rm
customize/-0777rm
fonts/-0777rm
html-api/-0777rm
ID3/-0777rm
images/-0777rm
interactivity-api/-0777rm
IXR/-0777rm
js/-0777rm
l10n/-0777rm
php-compat/-0777rm
PHPMailer/-0777rm
pomo/-0777rm
Requests/-0777rm
rest-api/-0777rm
SimplePie/-0777rm
sitemaps/-0777rm
sodium_compat/-0777rm
style-engine/-0777rm
Text/-0777rm
theme-compat/-0777rm
widgets/-0777rm
admin-bar.php371000666editdlrm
atomlib.php120780666editdlrm
author-template.php189510666editdlrm
block-bindings.php55940666editdlrm
block-editor.php283400666editdlrm
block-i18n.json3160666editdlrm
block-patterns.php131190666editdlrm
block-template-utils.php601450666editdlrm
block-template.php141420666editdlrm
blocks.php1048890666editdlrm
bookmark-template.php129480666editdlrm
bookmark.php154270666editdlrm
cache-compat.php59690666editdlrm
cache.php134740666editdlrm
canonical.php345060666editdlrm
capabilities.php427180666editdlrm
category-template.php570030666editdlrm
category.php127090666editdlrm
class-avif-info.php296150666editdlrm
class-feed.php5390666editdlrm
class-http.php3670666editdlrm
class-IXR.php25430666editdlrm
class-json.php436840666editdlrm
class-oembed.php4010666editdlrm
class-phpass.php67710666editdlrm
class-phpmailer.php6640666editdlrm
class-pop3.php211740666editdlrm
class-requests.php22370666editdlrm
class-simplepie.php4530666editdlrm
class-smtp.php4570666editdlrm
class-snoopy.php377150666editdlrm
class-walker-category-dropdown.php24690666editdlrm
class-walker-category.php84770666editdlrm
class-walker-comment.php142210666editdlrm
class-walker-nav-menu.php117840666editdlrm
class-walker-page-dropdown.php27100666editdlrm
class-walker-page.php76120666editdlrm
class-wp-admin-bar.php178740666editdlrm
class-wp-ajax-response.php52660666editdlrm
class-wp-application-passwords.php156170666editdlrm
class-wp-block-bindings-registry.php84630666editdlrm
class-wp-block-bindings-source.php29920666editdlrm
class-wp-block-editor-context.php13500666editdlrm
class-wp-block-list.php47570666editdlrm
class-wp-block-metadata-registry.php102270666editdlrm
class-wp-block-parser-block.php25550666editdlrm
class-wp-block-parser-frame.php20170666editdlrm
class-wp-block-parser.php115320666editdlrm
class-wp-block-pattern-categories-registry.php53710666editdlrm
class-wp-block-patterns-registry.php111850666editdlrm
class-wp-block-styles-registry.php62620666editdlrm
class-wp-block-supports.php56120666editdlrm
class-wp-block-template.php20330666editdlrm
class-wp-block-templates-registry.php72310666editdlrm
class-wp-block-type-registry.php50130666editdlrm
class-wp-block-type.php172650666editdlrm
class-wp-block.php204380666editdlrm
class-wp-classic-to-block-menu-converter.php40880666editdlrm
class-wp-comment-query.php483950666editdlrm
class-wp-comment.php93720666editdlrm
class-wp-customize-control.php257300666editdlrm
class-wp-customize-manager.php2025390666editdlrm
class-wp-customize-nav-menus.php574330666editdlrm
class-wp-customize-panel.php106370666editdlrm
class-wp-customize-section.php112090666editdlrm
class-wp-customize-setting.php298890666editdlrm
class-wp-customize-widgets.php721570666editdlrm
class-wp-date-query.php357260666editdlrm
class-wp-dependencies.php151390666editdlrm
class-wp-dependency.php26270666editdlrm
class-wp-duotone.php407830666editdlrm
class-wp-editor.php723350666editdlrm
class-wp-embed.php159940666editdlrm
class-wp-error.php75020666editdlrm
class-wp-exception.php2530666editdlrm
class-wp-fatal-error-handler.php81500666editdlrm
class-wp-feed-cache-transient.php31760666editdlrm
class-wp-feed-cache.php9690666editdlrm
class-wp-hook.php160000666editdlrm
class-wp-http-cookie.php73890666editdlrm
class-wp-http-curl.php125410666editdlrm
class-wp-http-encoding.php66890666editdlrm
class-wp-http-ixr-client.php35060666editdlrm
class-wp-http-proxy.php59800666editdlrm
class-wp-http-requests-hooks.php20220666editdlrm
class-wp-http-requests-response.php44000666editdlrm
class-wp-http-response.php29770666editdlrm
class-wp-http-streams.php168590666editdlrm
class-wp-http.php415060666editdlrm
class-wp-image-editor-gd.php198860666editdlrm
class-wp-image-editor-imagick.php391060666editdlrm
class-wp-image-editor.php169380666editdlrm
class-wp-list-util.php74430666editdlrm
class-wp-locale-switcher.php66300666editdlrm
class-wp-locale.php161110666editdlrm
class-wp-matchesmapregex.php18280666editdlrm
class-wp-meta-query.php305310666editdlrm
class-wp-metadata-lazyloader.php68330666editdlrm
class-wp-navigation-fallback.php92110666editdlrm
class-wp-network-query.php198570666editdlrm
class-wp-network.php122960666editdlrm
class-wp-object-cache.php175240666editdlrm
class-wp-oembed-controller.php69050666editdlrm
class-wp-oembed.php314750666editdlrm
class-wp-paused-extensions-storage.php51110666editdlrm
class-wp-plugin-dependencies.php253190666editdlrm
class-wp-post-type.php303400666editdlrm
class-wp-post.php64840666editdlrm
class-wp-query.php1540810666editdlrm
class-wp-recovery-mode-cookie-service.php68770666editdlrm
class-wp-recovery-mode-email-service.php111830666editdlrm
class-wp-recovery-mode-key-service.php46080666editdlrm
class-wp-recovery-mode-link-service.php34630666editdlrm
class-wp-recovery-mode.php114350666editdlrm
class-wp-rewrite.php636880666editdlrm
class-wp-role.php25230666editdlrm
class-wp-roles.php85860666editdlrm
class-wp-script-modules.php193660666editdlrm
class-wp-scripts.php283440666editdlrm
class-wp-session-tokens.php74510666editdlrm
class-wp-simplepie-file.php34080666editdlrm
class-wp-simplepie-sanitize-kses.php18370666editdlrm
class-wp-site-query.php316250666editdlrm
class-wp-site.php74540666editdlrm
class-wp-styles.php110100666editdlrm
class-wp-tax-query.php195550666editdlrm
class-wp-taxonomy.php185670666editdlrm
class-wp-term-query.php408690666editdlrm
class-wp-term.php52980666editdlrm
class-wp-text-diff-renderer-inline.php9790666editdlrm
class-wp-text-diff-renderer-table.php188070666editdlrm
class-wp-textdomain-registry.php104810666editdlrm
class-wp-theme-json-data.php18090666editdlrm
class-wp-theme-json-resolver.php358050666editdlrm
class-wp-theme-json-schema.php73670666editdlrm
class-wp-theme-json.php1607800666editdlrm
class-wp-theme.php654130666editdlrm
class-wp-token-map.php286180666editdlrm
class-wp-user-meta-session-tokens.php29900666editdlrm
class-wp-user-query.php436540666editdlrm
class-wp-user-request.php22220666editdlrm
class-wp-user.php228270666editdlrm
class-wp-walker.php133220666editdlrm
class-wp-widget-factory.php33470666editdlrm
class-wp-widget.php184240666editdlrm
class-wp-xmlrpc-server.php2149480666editdlrm
class-wp.php261190666editdlrm
class-wpdb.php1183890666editdlrm
class.wp-dependencies.php3730666editdlrm
class.wp-scripts.php3430666editdlrm
class.wp-styles.php3380666editdlrm
comment-template.php1027730666editdlrm
comment.php1302750666editdlrm
compat.php169740666editdlrm
cron.php415940666editdlrm
date.php4000666editdlrm
default-constants.php113650666editdlrm
default-filters.php356850666editdlrm
default-widgets.php22220666editdlrm
deprecated.php1901300666editdlrm
embed-template.php3380666editdlrm
embed.php379080666editdlrm
error-protection.php41210666editdlrm
feed-atom-comments.php55040666editdlrm
feed-atom.php30480666editdlrm
feed-rdf.php26680666editdlrm
feed-rss.php11890666editdlrm
feed-rss2-comments.php41360666editdlrm
feed-rss2.php37990666editdlrm
feed.php234110666editdlrm
fonts.php97510666editdlrm
formatting.php3352290666editdlrm
functions.php2831630666editdlrm
functions.wp-scripts.php145580666editdlrm
functions.wp-styles.php85830666editdlrm
general-template.php1694920666editdlrm
global-styles-and-settings.php212050666editdlrm
http.php270840666editdlrm
https-detection.php56610666editdlrm
https-migration.php47410666editdlrm
kses.php745750666editdlrm
l10n.php684150666editdlrm
link-template.php1577100666editdlrm
load.php556580666editdlrm
locale.php1620666editdlrm
media-template.php630430666editdlrm
media.php2184850666editdlrm
meta.php644090666editdlrm
ms-blogs.php257720666editdlrm
ms-default-constants.php49210666editdlrm
ms-default-filters.php66360666editdlrm
ms-deprecated.php217590666editdlrm
ms-files.php27110666editdlrm
ms-functions.php912490666editdlrm
ms-load.php198830666editdlrm
ms-network.php37820666editdlrm
ms-settings.php41240666editdlrm
ms-site.php404900666editdlrm
nav-menu-template.php259170666editdlrm
nav-menu.php443470666editdlrm
option.php1017590666editdlrm
pluggable-deprecated.php62630666editdlrm
pluggable.php1159700666editdlrm
plugin.php354650666editdlrm
post-formats.php71020666editdlrm
post-template.php668800666editdlrm
post-thumbnail-template.php108260666editdlrm
post.php2898940666editdlrm
query.php370350666editdlrm
registration-functions.php2000666editdlrm
registration.php2000666editdlrm
rest-api.php995930666editdlrm
revision.php308900666editdlrm
rewrite.php195410666editdlrm
robots-template.php51850666editdlrm
rss-functions.php2550666editdlrm
rss.php231130666editdlrm
script-loader.php1307350666editdlrm
script-modules.php77120666editdlrm
session.php2580666editdlrm
shortcodes.php240510666editdlrm
sitemaps.php32380666editdlrm
spl-autoload-compat.php4410666editdlrm
style-engine.php75630666editdlrm
taxonomy.php1754380666editdlrm
template-canvas.php5440666editdlrm
template-loader.php33500666editdlrm
template.php241540666editdlrm
theme-i18n.json12920666editdlrm
theme-previews.php28320666editdlrm
theme-templates.php62230666editdlrm
theme.json87040666editdlrm
theme.php1339850666editdlrm
update.php367880666editdlrm
user.php1750580666editdlrm
vars.php64890666editdlrm
version.php9310666editdlrm
widgets.php706820666editdlrm
wp-db.php4450666editdlrm
wp-diff.php7260666editdlrm
Edit: /var/www/p4ela.net/www/wp-includes/class-wp-recovery-mode-email-service.php (11183B)
link_service = $link_service; } /** * Sends the recovery mode email if the rate limit has not been sent. * * @since 5.2.0 * * @param int $rate_limit Number of seconds before another email can be sent. * @param array $error Error details from `error_get_last()`. * @param array $extension { * The extension that caused the error. * * @type string $slug The extension slug. The plugin or theme's directory. * @type string $type The extension type. Either 'plugin' or 'theme'. * } * @return true|WP_Error True if email sent, WP_Error otherwise. */ public function maybe_send_recovery_mode_email( $rate_limit, $error, $extension ) { $last_sent = get_option( self::RATE_LIMIT_OPTION ); if ( ! $last_sent || time() > $last_sent + $rate_limit ) { if ( ! update_option( self::RATE_LIMIT_OPTION, time() ) ) { return new WP_Error( 'storage_error', __( 'Could not update the email last sent time.' ) ); } $sent = $this->send_recovery_mode_email( $rate_limit, $error, $extension ); if ( $sent ) { return true; } return new WP_Error( 'email_failed', sprintf( /* translators: %s: mail() */ __( 'The email could not be sent. Possible reason: your host may have disabled the %s function.' ), 'mail()' ) ); } $err_message = sprintf( /* translators: 1: Last sent as a human time diff, 2: Wait time as a human time diff. */ __( 'A recovery link was already sent %1$s ago. Please wait another %2$s before requesting a new email.' ), human_time_diff( $last_sent ), human_time_diff( $last_sent + $rate_limit ) ); return new WP_Error( 'email_sent_already', $err_message ); } /** * Clears the rate limit, allowing a new recovery mode email to be sent immediately. * * @since 5.2.0 * * @return bool True on success, false on failure. */ public function clear_rate_limit() { return delete_option( self::RATE_LIMIT_OPTION ); } /** * Sends the Recovery Mode email to the site admin email address. * * @since 5.2.0 * * @param int $rate_limit Number of seconds before another email can be sent. * @param array $error Error details from `error_get_last()`. * @param array $extension { * The extension that caused the error. * * @type string $slug The extension slug. The directory of the plugin or theme. * @type string $type The extension type. Either 'plugin' or 'theme'. * } * @return bool Whether the email was sent successfully. */ private function send_recovery_mode_email( $rate_limit, $error, $extension ) { $url = $this->link_service->generate_url(); $blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ); $switched_locale = switch_to_locale( get_locale() ); if ( $extension ) { $cause = $this->get_cause( $extension ); $details = wp_strip_all_tags( wp_get_extension_error_description( $error ) ); if ( $details ) { $header = __( 'Error Details' ); $details = "\n\n" . $header . "\n" . str_pad( '', strlen( $header ), '=' ) . "\n" . $details; } } else { $cause = ''; $details = ''; } /** * Filters the support message sent with the the fatal error protection email. * * @since 5.2.0 * * @param string $message The Message to include in the email. */ $support = apply_filters( 'recovery_email_support_info', __( 'Please contact your host for assistance with investigating this issue further.' ) ); /** * Filters the debug information included in the fatal error protection email. * * @since 5.3.0 * * @param array $message An associative array of debug information. */ $debug = apply_filters( 'recovery_email_debug_info', $this->get_debug( $extension ) ); /* translators: Do not translate LINK, EXPIRES, CAUSE, DETAILS, SITEURL, PAGEURL, SUPPORT. DEBUG: those are placeholders. */ $message = __( 'Howdy! WordPress has a built-in feature that detects when a plugin or theme causes a fatal error on your site, and notifies you with this automated email. ###CAUSE### First, visit your website (###SITEURL###) and check for any visible issues. Next, visit the page where the error was caught (###PAGEURL###) and check for any visible issues. ###SUPPORT### If your site appears broken and you can\'t access your dashboard normally, WordPress now has a special "recovery mode". This lets you safely login to your dashboard and investigate further. ###LINK### To keep your site safe, this link will expire in ###EXPIRES###. Don\'t worry about that, though: a new link will be emailed to you if the error occurs again after it expires. When seeking help with this issue, you may be asked for some of the following information: ###DEBUG### ###DETAILS###' ); $message = str_replace( array( '###LINK###', '###EXPIRES###', '###CAUSE###', '###DETAILS###', '###SITEURL###', '###PAGEURL###', '###SUPPORT###', '###DEBUG###', ), array( $url, human_time_diff( time() + $rate_limit ), $cause ? "\n{$cause}\n" : "\n", $details, home_url( '/' ), home_url( $_SERVER['REQUEST_URI'] ), $support, implode( "\r\n", $debug ), ), $message ); $email = array( 'to' => $this->get_recovery_mode_email_address(), /* translators: %s: Site title. */ 'subject' => __( '[%s] Your Site is Experiencing a Technical Issue' ), 'message' => $message, 'headers' => '', 'attachments' => '', ); /** * Filters the contents of the Recovery Mode email. * * @since 5.2.0 * @since 5.6.0 The `$email` argument includes the `attachments` key. * * @param array $email { * Used to build a call to wp_mail(). * * @type string|array $to Array or comma-separated list of email addresses to send message. * @type string $subject Email subject * @type string $message Message contents * @type string|array $headers Optional. Additional headers. * @type string|array $attachments Optional. Files to attach. * } * @param string $url URL to enter recovery mode. */ $email = apply_filters( 'recovery_mode_email', $email, $url ); $sent = wp_mail( $email['to'], wp_specialchars_decode( sprintf( $email['subject'], $blogname ) ), $email['message'], $email['headers'], $email['attachments'] ); if ( $switched_locale ) { restore_previous_locale(); } return $sent; } /** * Gets the email address to send the recovery mode link to. * * @since 5.2.0 * * @return string Email address to send recovery mode link to. */ private function get_recovery_mode_email_address() { if ( defined( 'RECOVERY_MODE_EMAIL' ) && is_email( RECOVERY_MODE_EMAIL ) ) { return RECOVERY_MODE_EMAIL; } return get_option( 'admin_email' ); } /** * Gets the description indicating the possible cause for the error. * * @since 5.2.0 * * @param array $extension { * The extension that caused the error. * * @type string $slug The extension slug. The directory of the plugin or theme. * @type string $type The extension type. Either 'plugin' or 'theme'. * } * @return string Message about which extension caused the error. */ private function get_cause( $extension ) { if ( 'plugin' === $extension['type'] ) { $plugin = $this->get_plugin( $extension ); if ( false === $plugin ) { $name = $extension['slug']; } else { $name = $plugin['Name']; } /* translators: %s: Plugin name. */ $cause = sprintf( __( 'In this case, WordPress caught an error with one of your plugins, %s.' ), $name ); } else { $theme = wp_get_theme( $extension['slug'] ); $name = $theme->exists() ? $theme->display( 'Name' ) : $extension['slug']; /* translators: %s: Theme name. */ $cause = sprintf( __( 'In this case, WordPress caught an error with your theme, %s.' ), $name ); } return $cause; } /** * Return the details for a single plugin based on the extension data from an error. * * @since 5.3.0 * * @param array $extension { * The extension that caused the error. * * @type string $slug The extension slug. The directory of the plugin or theme. * @type string $type The extension type. Either 'plugin' or 'theme'. * } * @return array|false A plugin array {@see get_plugins()} or `false` if no plugin was found. */ private function get_plugin( $extension ) { if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $plugins = get_plugins(); // Assume plugin main file name first since it is a common convention. if ( isset( $plugins[ "{$extension['slug']}/{$extension['slug']}.php" ] ) ) { return $plugins[ "{$extension['slug']}/{$extension['slug']}.php" ]; } else { foreach ( $plugins as $file => $plugin_data ) { if ( str_starts_with( $file, "{$extension['slug']}/" ) || $file === $extension['slug'] ) { return $plugin_data; } } } return false; } /** * Return debug information in an easy to manipulate format. * * @since 5.3.0 * * @param array $extension { * The extension that caused the error. * * @type string $slug The extension slug. The directory of the plugin or theme. * @type string $type The extension type. Either 'plugin' or 'theme'. * } * @return array An associative array of debug information. */ private function get_debug( $extension ) { $theme = wp_get_theme(); $wp_version = get_bloginfo( 'version' ); if ( $extension ) { $plugin = $this->get_plugin( $extension ); } else { $plugin = null; } $debug = array( 'wp' => sprintf( /* translators: %s: Current WordPress version number. */ __( 'WordPress version %s' ), $wp_version ), 'theme' => sprintf( /* translators: 1: Current active theme name. 2: Current active theme version. */ __( 'Active theme: %1$s (version %2$s)' ), $theme->get( 'Name' ), $theme->get( 'Version' ) ), ); if ( null !== $plugin ) { $debug['plugin'] = sprintf( /* translators: 1: The failing plugins name. 2: The failing plugins version. */ __( 'Current plugin: %1$s (version %2$s)' ), $plugin['Name'], $plugin['Version'] ); } $debug['php'] = sprintf( /* translators: %s: The currently used PHP version. */ __( 'PHP version %s' ), PHP_VERSION ); return $debug; } }