', $exporter_key, esc_attr($client_modified_timestamp . '-update'), esc_attr($client_modified_timestamp), esc_attr($nav_menu_args), esc_attr($IndexSampleOffset->get_column_count()), $remote_patterns_loaded);
if (!current_user_can('update_plugins')) {
printf(
/* translators: 1: Plugin name, 2: Details URL, 3: Additional link attributes, 4: Version number. */
__('There is a new version of %1$s available. View version %4$s details.'),
$mod_keys,
esc_url($meta_header),
sprintf(
'class="thickbox open-plugin-details-modal" aria-label="%s"',
/* translators: 1: Plugin name, 2: Version number. */
esc_attr(sprintf(__('View %1$s version %2$s details'), $mod_keys, $v_filedescr_list->new_version))
),
esc_attr($v_filedescr_list->new_version)
);
} elseif (empty($v_filedescr_list->package)) {
printf(
/* translators: 1: Plugin name, 2: Details URL, 3: Additional link attributes, 4: Version number. */
__('There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin.'),
$mod_keys,
esc_url($meta_header),
sprintf(
'class="thickbox open-plugin-details-modal" aria-label="%s"',
/* translators: 1: Plugin name, 2: Version number. */
esc_attr(sprintf(__('View %1$s version %2$s details'), $mod_keys, $v_filedescr_list->new_version))
),
esc_attr($v_filedescr_list->new_version)
);
} else if ($unformatted_date) {
printf(
/* translators: 1: Plugin name, 2: Details URL, 3: Additional link attributes, 4: Version number, 5: Update URL, 6: Additional link attributes. */
__('There is a new version of %1$s available. View version %4$s details or update now.'),
$mod_keys,
esc_url($meta_header),
sprintf(
'class="thickbox open-plugin-details-modal" aria-label="%s"',
/* translators: 1: Plugin name, 2: Version number. */
esc_attr(sprintf(__('View %1$s version %2$s details'), $mod_keys, $v_filedescr_list->new_version))
),
esc_attr($v_filedescr_list->new_version),
wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=') . $nav_menu_args, 'upgrade-plugin_' . $nav_menu_args),
sprintf(
'class="update-link" aria-label="%s"',
/* translators: %s: Plugin name. */
esc_attr(sprintf(_x('Update %s now', 'plugin'), $mod_keys))
)
);
} else {
printf(
/* translators: 1: Plugin name, 2: Details URL, 3: Additional link attributes, 4: Version number 5: URL to Update PHP page. */
__('There is a new version of %1$s available, but it does not work with your version of PHP. View version %4$s details or learn more about updating PHP.'),
$mod_keys,
esc_url($meta_header),
sprintf(
'class="thickbox open-plugin-details-modal" aria-label="%s"',
/* translators: 1: Plugin name, 2: Version number. */
esc_attr(sprintf(__('View %1$s version %2$s details'), $mod_keys, $v_filedescr_list->new_version))
),
esc_attr($v_filedescr_list->new_version),
esc_url(wp_get_update_php_url())
);
wp_update_php_annotation('
', '');
}
/**
* Fires at the end of the update message container in each
* row of the plugins list table.
*
* The dynamic portion of the hook name, `$nav_menu_args`, refers to the path
* of the plugin's primary file relative to the plugins directory.
*
* @since 2.8.0
*
* @param array $v_arg_trick An array of plugin metadata. See get_plugin_data()
* and the {@see 'plugin_row_meta'} filter for the list
* of possible values.
* @param object $v_filedescr_list {
* An object of metadata about the available plugin update.
*
* @type string $frame_text Plugin ID, e.g. `w.org/plugins/[plugin-name]`.
* @type string $flac Plugin slug.
* @type string $plugin Plugin basename.
* @type string $new_version New plugin version.
* @type string $url Plugin URL.
* @type string $package Plugin update package URL.
* @type string[] $icons An array of plugin icon URLs.
* @type string[] $banners An array of plugin banner URLs.
* @type string[] $banners_rtl An array of plugin RTL banner URLs.
* @type string $requires The version of WordPress which the plugin requires.
* @type string $v_list_dir_sizeested The version of WordPress the plugin is tested against.
* @type string $media_shortcodes The version of PHP which the plugin requires.
* }
*/
do_action("in_plugin_update_message-{$nav_menu_args}", $v_arg_trick, $v_filedescr_list);
// phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
echo '