one-click-accessibility/modules/settings/notices/quota-100.php
Nirbhay Singh 2e56683ffd
[APP-2100][APP-2219] Add quota notices to the admin (#430)
* Release/v3.9.0 (#428)

* add: quota notices to the admin

* update: plan usage calculation and enable quota notices in admin

* fix: in app notices layout

* update: text for admin notices

* update: remove log

* update: tooltip text

---------

Co-authored-by: Aviran Levi <143411291+aviranLevi1@users.noreply.github.com>
2025-11-27 17:45:20 +05:30

99 lines
2.9 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace EA11y\Modules\Settings\Notices;
use EA11y\Classes\Utils\Notice_Base;
use EA11y\Modules\Settings\Classes\Settings;
use EA11y\Modules\Settings\Module as SettingsModule;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/**
* Class Sticky_Deprecated_Nag
*/
class Quota_100 extends Notice_Base {
public string $type = 'error-elementor';
public bool $is_dismissible = true;
public bool $per_user = false;
public $capability = 'manage_options';
public string $id = 'quota-banner-100';
public function content(): string {
$plan = Settings::get( Settings::PLAN_DATA )->plan->name;
if ( $plan === 'Free' ) {
return sprintf( '<h3>%s</h3><p>%s</p><p><a class="button button-primary ea11y-dismiss-button" style="background-color: #93003F; border-color: #93003F;" href="%s">%s</a></p>',
__( 'Youve reached your free plan limit', 'pojo-accessibility' ),
__( 'Upgrade to scan more pages, unlock AI fixes, and access all accessibility features.', 'pojo-accessibility' ),
SettingsModule::get_upgrade_link( 'acc-100-quota' ),
__( 'Upgrade Now', 'pojo-accessibility' ),
);
}
return sprintf( '<h3>%s</h3><p>%s</p><p><a class="button button-primary ea11y-dismiss-button" style="background-color: #93003F; border-color: #93003F;" href="%s">%s</a></p>',
__( 'Youve reached your monthly plan usage', 'pojo-accessibility' ),
__( 'Upgrade now to raise your limit and maintain complete access to all accessibility features.', 'pojo-accessibility' ),
SettingsModule::get_upgrade_link( 'acc-100-quota' ),
__( 'Upgrade Now', 'pojo-accessibility' ),
);
}
public function maybe_add_quota_100_notice() : void {
$plan_data = Settings::get( Settings::PLAN_DATA );
if ( ! $plan_data ) {
$this->conditions = false;
}
$plan_usage = (int) SettingsModule::get_plan_usage();
if ( 100 === $plan_usage ) {
$this->conditions = true;
} elseif ( $plan_usage < 100 ) {
$this->undismiss();
$this->conditions = false;
} else {
$this->conditions = false;
}
}
public function print_js() {
// used to make sure we only print this js once per page
$action = 'admin_notices_print_js';
if ( did_action( $action ) ) {
return;
}
do_action( $action );
?>
<script>
jQuery( document ).ready( function() {
jQuery( '.ea11y-dismiss' ).on( 'click', function(e) {
if ( ! e.target.classList.contains('notice-dismiss') && ! e.target.classList.contains('ea11y-dismiss-button') ) {
return;
}
const $this = jQuery( this );
const data = {
action: 'ea11y_admin_notice_dismiss',
nonce: $this.data( 'notice-nonce' ),
notice_id: $this.data( 'notice-id' ),
};
jQuery.post( ajaxurl, data, function( response ) {
if ( response.success ) {
$this.slideUp();
}
} );
} );
} );
</script>
<?php
}
public function __construct() {
add_action( 'current_screen', [ $this, 'maybe_add_quota_100_notice' ] );
parent::__construct();
}
}