plugin updates

This commit is contained in:
Tony Volpe
2024-11-15 13:53:04 -05:00
parent 1293d604ca
commit 0238f0c4ca
2009 changed files with 163492 additions and 89543 deletions

View File

@@ -1,26 +1,129 @@
<?php
declare( strict_types=1 );
namespace Imagify\Admin;
use Imagify\Traits\InstanceGetterTrait;
use Imagify\EventManagement\SubscriberInterface;
use Imagify\User\User;
use Imagify_Views;
use WP_Admin_Bar;
/**
* Admin bar handler
*/
class AdminBar {
use InstanceGetterTrait;
class AdminBar implements SubscriberInterface {
/**
* User instance.
*
* @var User
*/
private $user;
/**
* Launch the hooks.
* AdminBar constructor.
*
* @return void
* @param User $user User instance.
*/
public function init() {
if ( wp_doing_ajax() ) {
add_action( 'wp_ajax_imagify_get_admin_bar_profile', array( $this, 'get_admin_bar_profile_callback' ) );
public function __construct( User $user ) {
$this->user = $user;
}
/**
* Returns an array of events this subscriber listens to
*
* @return array
*/
public static function get_subscribed_events(): array {
return [
'wp_ajax_imagify_get_admin_bar_profile' => 'get_admin_bar_profile_callback',
'admin_bar_menu' => [ 'add_imagify_admin_bar_menu', IMAGIFY_INT_MAX ],
];
}
/**
* Add Imagify menu in the admin bar.
*
* @param WP_Admin_Bar $wp_admin_bar WP_Admin_Bar instance, passed by reference.
*/
public function add_imagify_admin_bar_menu( $wp_admin_bar ) {
if ( ! imagify_get_context( 'wp' )->current_user_can( 'manage' ) ) {
return;
}
if ( ! get_imagify_option( 'admin_bar_menu' ) ) {
return;
}
// Parent.
$wp_admin_bar->add_menu( array(
'id' => 'imagify',
'title' => 'Imagify',
'href' => get_imagify_admin_url(),
) );
// Settings.
$wp_admin_bar->add_menu(array(
'parent' => 'imagify',
'id' => 'imagify-settings',
'title' => __( 'Settings' ),
'href' => get_imagify_admin_url(),
) );
// Bulk Optimization.
if ( ! is_network_admin() ) {
$wp_admin_bar->add_menu(array(
'parent' => 'imagify',
'id' => 'imagify-bulk-optimization',
'title' => __( 'Bulk Optimization', 'imagify' ),
'href' => get_imagify_admin_url( 'bulk-optimization' ),
) );
}
// Documentation.
$wp_admin_bar->add_menu(array(
'parent' => 'imagify',
'id' => 'imagify-documentation',
'title' => __( 'Documentation', 'imagify' ),
'href' => imagify_get_external_url( 'documentation' ),
'meta' => array(
'target' => '_blank',
),
) );
// Rate it.
$wp_admin_bar->add_menu(array(
'parent' => 'imagify',
'id' => 'imagify-rate-it',
/* translators: %s is WordPress.org. */
'title' => sprintf( __( 'Rate Imagify on %s', 'imagify' ), 'WordPress.org' ),
'href' => imagify_get_external_url( 'rate' ),
'meta' => array(
'target' => '_blank',
),
) );
// Quota & Profile informations.
if ( defined( 'IMAGIFY_HIDDEN_ACCOUNT' ) && IMAGIFY_HIDDEN_ACCOUNT || ! get_imagify_option( 'api_key' ) ) {
return;
}
if (
$this->user->is_free()
&&
$this->user->get_percent_unconsumed_quota() > 20
) {
$wp_admin_bar->add_menu( [
'parent' => 'imagify',
'id' => 'imagify-upgrade-plan',
'title' => '<button data-nonce="' . wp_create_nonce( 'imagify_get_pricing_' . get_current_user_id() ) . '" data-target="#imagify-pricing-modal" type="button" class="imagify-get-pricing-modal imagify-modal-trigger imagify-admin-bar-upgrade-plan">' . __( 'Upgrade Plan', 'imagify' ) . '</button>',
] );
}
$wp_admin_bar->add_menu( array(
'parent' => 'imagify',
'id' => 'imagify-profile',
'title' => wp_nonce_field( 'imagify-get-admin-bar-profile', 'imagifygetadminbarprofilenonce', false, false ) . '<div id="wp-admin-bar-imagify-profile-loading" class="hide-if-no-js">' . __( 'Loading...', 'imagify' ) . '</div><div id="wp-admin-bar-imagify-profile-content" class="hide-if-no-js"></div>',
) );
}
/**
@@ -35,22 +138,21 @@ class AdminBar {
imagify_die();
}
$user = new User();
$views = Imagify_Views::get_instance();
$unconsumed_quota = $views->get_quota_percent();
$text = '';
$button_text = '';
$upgrade_link = '';
if ( $user->is_free() ) {
if ( $this->user->is_free() ) {
$text = esc_html__( 'Upgrade your plan now for more!', 'rocket' ) . '<br>' .
esc_html__( 'From $5.99/month only, keep going with image optimization!', 'rocket' );
$button_text = esc_html__( 'Upgrade My Plan', 'rocket' );
$upgrade_link = IMAGIFY_APP_DOMAIN . '/subscription/?utm_source=plugin&utm_medium=notification';
} elseif ( $user->is_growth() ) {
} elseif ( $this->user->is_growth() ) {
$text = esc_html__( 'Switch to Infinite plan for unlimited optimization:', 'rocket' ) . '<br>';
if ( $user->is_monthly ) {
if ( $this->user->is_monthly ) {
$text .= esc_html__( 'For $9.99/month, optimize as many images as you like!', 'rocket' );
$upgrade_link = IMAGIFY_APP_DOMAIN . '/subscription/plan_switch/?label=infinite&payment_plan=1&utm_source=plugin&utm_medium=notification ';
} else {
@@ -64,11 +166,11 @@ class AdminBar {
$data = [
'quota_icon' => $views->get_quota_icon(),
'quota_class' => $views->get_quota_class(),
'plan_label' => $user->plan_label,
'plan_with_quota' => $user->is_free() || $user->is_growth(),
'plan_label' => $this->user->plan_label,
'plan_with_quota' => $this->user->is_free() || $this->user->is_growth(),
'unconsumed_quota' => $unconsumed_quota,
'user_quota' => $user->quota,
'next_update' => $user->next_date_update,
'user_quota' => $this->user->quota,
'next_update' => $this->user->next_date_update,
'text' => $text,
'button_text' => $button_text,
'upgrade_link' => $upgrade_link,

View File

@@ -0,0 +1,67 @@
<?php
declare(strict_types=1);
namespace Imagify\Admin;
use Imagify\EventManagement\SubscriberInterface;
use Imagify\User\User;
/**
* Admin Subscriber
*/
class AdminSubscriber implements SubscriberInterface {
/**
* User instance.
*
* @var User
*/
protected $user;
/**
* Instantiate the class
*
* @param User $user User instance.
*/
public function __construct( User $user ) {
$this->user = $user;
}
/**
* Returns an array of events this subscriber listens to
*
* @return array
*/
public static function get_subscribed_events() {
$basename = plugin_basename( IMAGIFY_FILE );
return [
'plugin_action_links_' . $basename => 'plugin_action_links',
'network_admin_plugin_action_links_' . $basename => 'plugin_action_links',
];
}
/**
* Add links to the plugin row in the plugins list.
*
* @since 1.7
*
* @param array $actions An array of action links.
* @return array
*/
public function plugin_action_links( $actions ) {
$text = 1 !== $this->user->plan_id ? __( 'Documentation', 'imagify' ) : __( 'Upgrade', 'imagify' );
$url = 1 !== $this->user->plan_id ? 'documentation' : 'subscription';
$class = 1 !== $this->user->plan_id ? '' : ' class="imagify-plugin-upgrade"';
array_unshift( $actions, sprintf( '<a href="%s" target="_blank"%s>%s</a>',
esc_url( imagify_get_external_url( $url ) ),
$class,
$text
) );
array_unshift( $actions, sprintf( '<a href="%s">%s</a>', esc_url( get_imagify_admin_url( 'bulk-optimization' ) ), __( 'Bulk Optimization', 'imagify' ) ) );
array_unshift( $actions, sprintf( '<a href="%s">%s</a>', esc_url( get_imagify_admin_url() ), __( 'Settings', 'imagify' ) ) );
return $actions;
}
}

View File

@@ -0,0 +1,58 @@
<?php
declare(strict_types=1);
namespace Imagify\Admin;
use Imagify\EventManagement\SubscriberInterface;
use Imagify\Dependencies\WPMedia\PluginFamily\Controller\{ PluginFamily, PluginFamilyInterface };
/**
* Process plugin family actions.
*/
class PluginFamilySubscriber implements SubscriberInterface, PluginFamilyInterface {
/**
* PluginFamily instance.
*
* @var PluginFamily
*/
protected $plugin_family;
/**
* Instantiate the class
*
* @param PluginFamily $plugin_family PluginFamily instance.
*/
public function __construct( PluginFamily $plugin_family ) {
$this->plugin_family = $plugin_family;
}
/**
* Returns an array of events this subscriber listens to
*
* @return array
*/
public static function get_subscribed_events() {
$events = PluginFamily::get_subscribed_events();
return $events;
}
/**
* Process to install & activate plugin.
*
* @return void
*/
public function install_activate() {
$this->plugin_family->install_activate();
}
/**
* Display error notice if available.
*
* @return void
*/
public function display_error_notice() {
$this->plugin_family->display_error_notice();
}
}

View File

@@ -0,0 +1,62 @@
<?php
declare(strict_types=1);
namespace Imagify\Admin;
use Imagify\Dependencies\League\Container\ServiceProvider\AbstractServiceProvider;
use Imagify\Dependencies\WPMedia\PluginFamily\Controller\PluginFamily;
/**
* Service provider for Admin.
*/
class ServiceProvider extends AbstractServiceProvider {
/**
* Services provided by this provider
*
* @var array
*/
protected $provides = [
'admin_bar',
'admin_subscriber',
'plugin_family',
'plugin_family_subscriber',
];
/**
* Subscribers provided by this provider
*
* @var array
*/
public $subscribers = [
'admin_bar',
'admin_subscriber',
'plugin_family_subscriber',
];
/**
* Registers the provided classes
*
* @return void
*/
public function register() {
$this->getContainer()->share( 'admin_bar', AdminBar::class )
->addArgument( $this->getContainer()->get( 'user' ) );
$this->getContainer()->share( 'admin_subscriber', AdminSubscriber::class )
->addArgument( $this->getContainer()->get( 'user' ) );
$this->getContainer()->add( 'plugin_family', PluginFamily::class );
$this->getContainer()->add( 'plugin_family_subscriber', PluginFamilySubscriber::class )
->addArgument( $this->getContainer()->get( 'plugin_family' ) );
}
/**
* Returns the subscribers array
*
* @return array
*/
public function get_subscribers() {
return $this->subscribers;
}
}