Inventory_Presser_Addon_Updater::show_update_notification( string $file, array $plugin )
show update nofication row — needed for multisite subsites, because WP won’t tell you otherwise!
On This Page
Parameters Parameters
- $file
-
(string) (Required)
- $plugin
-
(array) (Required)
Source Source
File: includes/addon/class-addon-updater.php
public function show_update_notification( $file, $plugin ) {
/**
* If this is a multi-site install, only show the update on the
* network plugins page.
*/
if ( is_multisite() && ! is_network_admin() ) {
return;
}
if ( ! current_user_can( 'update_plugins' ) ) {
return;
}
if ( $this->name != $file ) {
return;
}
// Remove our filter on the site transient.
remove_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ), 10 );
$update_cache = get_site_transient( 'update_plugins' );
$update_cache = is_object( $update_cache ) ? $update_cache : new stdClass();
if ( empty( $update_cache->response ) || empty( $update_cache->response[ $this->name ] ) ) {
$version_info = $this->get_repo_api_data();
if ( false === $version_info ) {
$version_info = $this->api_request(
'plugin_latest_version',
array(
'slug' => $this->slug,
'beta' => $this->beta,
)
);
// Since we disabled our filter for the transient, we aren't running our object conversion on banners, sections, or icons. Do this now:
if ( isset( $version_info->banners ) && ! is_array( $version_info->banners ) ) {
$version_info->banners = $this->convert_object_to_array( $version_info->banners );
}
if ( isset( $version_info->sections ) && ! is_array( $version_info->sections ) ) {
$version_info->sections = $this->convert_object_to_array( $version_info->sections );
}
if ( isset( $version_info->icons ) && ! is_array( $version_info->icons ) ) {
$version_info->icons = $this->convert_object_to_array( $version_info->icons );
}
if ( isset( $version_info->contributors ) && ! is_array( $version_info->contributors ) ) {
$version_info->contributors = $this->convert_object_to_array( $version_info->contributors );
}
$this->set_version_info_cache( $version_info );
}
if ( ! is_object( $version_info ) ) {
return;
}
if ( version_compare( $this->version, $version_info->new_version, '<' ) ) {
$update_cache->response[ $this->name ] = $version_info;
} else {
$update_cache->no_update[ $this->name ] = $version_info;
}
$update_cache->last_checked = time();
$update_cache->checked[ $this->name ] = $this->version;
set_site_transient( 'update_plugins', $update_cache );
} else {
$version_info = $update_cache->response[ $this->name ];
}
// Restore our filter.
add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) );
if ( ! empty( $update_cache->response[ $this->name ] )
&& version_compare( $this->version, $version_info->new_version, '<' )
) {
// build a plugin list row, with update notification.
printf(
'<tr class="plugin-update-tr" id="%1$s-update" data-slug="%1$s" data-plugin="%2$s">'
. '<td colspan="4" class="plugin-update colspanchange">'
. '<div class="update-message notice inline notice-warning notice-alt"><p>',
esc_attr( $this->slug ),
esc_attr( $file )
);
$changelog_link = self_admin_url(
add_query_arg(
array(
'edd_sl_action' => 'view_plugin_changelog',
'plugin' => $this->name,
'slug' => $this->slug,
'TB_iframe' => 'true',
'width' => '772',
'height' => '911',
),
'index.php'
)
);
printf(
'%s %s %s <a href="%s" class="thickbox open-plugin-details-modal" aria-label="%s %s %s %s %s">%s %s %s</a>',
esc_html__( 'There is a new version of', 'inventory-presser' ),
esc_html( $version_info->name ),
esc_html__( 'available.', 'inventory-presser' ),
esc_url( $changelog_link ),
esc_html__( 'View', 'inventory-presser' ),
esc_html( $version_info->name ),
esc_html__( 'version', 'inventory-presser' ),
esc_html( $version_info->new_version ),
esc_html__( 'details', 'inventory-presser' ),
esc_html__( ' View version', 'inventory-presser' ),
esc_html( $version_info->new_version ),
esc_html__( 'details', 'inventory-presser' )
);
// Do we have a license key? Include "update now" link if so.
if ( ! empty( $this->api_data['license'] ) ) {
$update_url = wp_nonce_url(
self_admin_url( add_query_arg( 'action', 'upgrade-plugin', add_query_arg( 'plugin', $this->name, 'update.php' ) ) ),
'upgrade-plugin_' . $this->name
);
printf(
' %s <a href="%s" class="update-link" aria-label="%s %s %s">%s</a>.',
esc_html__( 'or', 'inventory-presser' ),
esc_url( $update_url ),
esc_attr__( 'Update', 'inventory-presser' ),
esc_html( $version_info->name ),
esc_attr__( 'now', 'inventory-presser' ),
esc_html__( 'update now', 'inventory-presser' )
);
} else {
echo '.';
}
do_action( "in_plugin_update_message-{$file}", $plugin, $version_info );
echo ' <em></em></p></div></td></tr>';
}
}
Expand full source codeCollapse full source codeView on Github