39342-vm/wp-content/plugins/stripe-payments/includes/class-asp-addons-helper.php
2026-03-27 11:54:51 +00:00

148 lines
5.7 KiB
PHP

<?php
class ASP_Addons_Helper {
public $addon = null;
public $section;
public $asp_admin;
private $auc_plugin_path = 'stripe-payments-addons-update-checker/class-asp-addons-update-checker.php';
private $item_hash = '';
protected $addons = array(
array( 'stripe-payments-country-autodetect', 'stripe-payments-country-autodetect/asp-country-autodetect-main.php', 'stripe-payments-country-autodetect', '' ),
array( 'stripe-payments-custom-messages', 'stripe-payments-custom-messages/asp-custmsg-main.php', 'stripe-payments-custom-messages', 'stripe-custom-messages-addon.png' ),
);
private $icons_path = WP_ASP_PLUGIN_URL . '/admin/assets/images/';
private $icons = array();
public function __construct( $addon ) {
$this->addon = $addon;
if ( is_admin() ) {
$this->asp_admin = AcceptStripePayments_Admin::get_instance();
add_action( 'activate_' . $this->auc_plugin_path, array( $this, 'remove_auc_notice' ) );
}
}
public function remove_auc_notice() {
if ( ! empty( $this->item_hash ) ) {
AcceptStripePayments_Admin::remove_admin_notice_by_hash( $this->item_hash );
}
}
public function init_tasks() {
add_action( 'init', array( $this, 'load_text_domain' ) );
if ( is_admin() ) {
$this->add_settings_link();
$this->check_updates();
}
}
public function log( $msg, $success = true ) {
if ( method_exists( 'ASP_Debug_Logger', 'log' ) ) {
ASP_Debug_Logger::log( $msg, $success, $this->addon->ADDON_SHORT_NAME );
}
}
public function check_updates() {
//Note: This function can get called from an addon before init. So we don't do any translation strings here.
if ( ! is_admin() ) {
//We are not in admin-dashboard area so just return (We only need to check updates in admin area).
return;
}
if ( class_exists( 'ASP_Addons_Update_Checker' ) ) {
if ( empty( $this->addon->SLUG ) || empty( $this->addon->file ) ) {
return;
}
ASP_Addons_Update_Checker::check_updates( $this->addon->SLUG, $this->addon->file );
} else {
// let's display admin notice to install Addons Update Checker (if the message is not yet dismissed)
$user_id = get_current_user_id();
if ( empty( $user_id ) ) {
return;
}
if ( ! current_user_can( 'install_plugins' ) && ! current_user_can( 'activate_plugins' ) ) {
return;
}
$notice_dismissed = get_user_meta( $user_id, 'asp_dismiss_auc_msg', true );
if ( ! empty( $notice_dismissed ) ) {
return;
}
$admin_url = get_admin_url();
$dismiss_url = add_query_arg( 'asp_dismiss_auc_msg', '1', $admin_url );
$dismiss_url = wp_nonce_url( $dismiss_url, 'asp_dismiss_auc_msg' );
$dismiss_msg = '<span class="asp_dismiss_notice_update_checker" style="text-align: right;display:block;"><a style="text-decoration: none; border-bottom: 1px dashed;font-size:0.9em;" href="' . $dismiss_url . '">' . 'Don\'t show this message again' . '</a></span>';
//This function can get called from an addon before init. So we don't do any translation strings here.
$this->item_hash = AcceptStripePayments_Admin::add_admin_notice(
'warning',
'<span><strong>Accept Stripe Payments</strong></span><br>Please install the <a target="_blank" href="https://s-plugins.com/update-checker-plugin-for-the-addons/">Stripe Payments Addons Update Checker</a> plugin to keep your addons upto date.' .
$dismiss_msg,
false
);
}
}
public function check_ver() {
if ( version_compare( WP_ASP_PLUGIN_VERSION, $this->addon->MIN_ASP_VER ) < 0 ) {
add_action( 'admin_notices', array( $this, 'display_min_version_error' ) );
return false;
}
return true;
}
public function add_settings_link() {
add_filter( 'plugin_action_links', array( $this, 'settings_link' ), 10, 2 );
}
public function load_text_domain() {
if ( ! empty( $this->addon->file ) && ! empty( $this->addon->textdomain ) ) {
load_plugin_textdomain( $this->addon->textdomain, false, dirname( plugin_basename( $this->addon->file ) ) . '/languages/' );
}
}
public function settings_link( $links, $file ) {
if ( plugin_basename( $this->addon->file ) === $file && ! empty( $this->addon->SETTINGS_TAB_NAME ) ) {
$settings_link = sprintf( '<a href="edit.php?post_type=' . ASPMain::$products_slug . '&page=stripe-payments-settings#%s">%s</a>', $this->addon->SETTINGS_TAB_NAME, __( 'Settings', 'stripe-payments' ) );
array_unshift( $links, $settings_link );
}
return $links;
}
public function display_min_version_error() {
$class = 'notice notice-error';
// translators: %1$s - plugin name, %2$s - min core plugin version, %3$s - installed core plugin version
$message = sprintf( __( '%1$s requires Stripe Payments plugin minimum version to be %2$s (you have version %3$s installed). Please update Stripe Payments plugin.', 'stripe-payments' ), $this->addon->ADDON_FULL_NAME, $this->addon->MIN_ASP_VER, WP_ASP_PLUGIN_VERSION );
printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
}
public function add_settings_section( $title, $descr_callback = null ) {
//$descr_callback added since 1.9.8
add_settings_section( 'AcceptStripePayments-' . $this->addon->SETTINGS_TAB_NAME . '-section', $title, $descr_callback, $this->asp_admin->plugin_slug . '-' . $this->addon->SETTINGS_TAB_NAME );
$this->section = 'AcceptStripePayments-' . $this->addon->SETTINGS_TAB_NAME . '-section';
}
public function add_settings_field( $name, $title, $desc, $size = 10 ) {
$this->asp_admin = AcceptStripePayments_Admin::get_instance();
add_settings_field(
$name,
$title,
array( $this->asp_admin, 'settings_field_callback' ),
$this->asp_admin->plugin_slug . '-' . $this->addon->SETTINGS_TAB_NAME,
$this->section,
array(
'field' => $name,
'size' => $size,
'desc' => $desc,
)
);
}
}
class_alias( 'ASP_Addons_Helper', 'ASPAddonsHelper' );