is_compatible() ) {
// register hooks
$this->register_hooks();
}
}
public function is_compatible() {
if ( !function_exists( 'is_plugin_active' ) ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
if ( !is_plugin_active( 'contact-form-7/wp-contact-form-7.php' ) ) {
add_action( 'admin_notices', [$this, 'admin_notice_missing_main_plugin'] );
return false;
}
return true;
}
/**
* Admin notice
*
* Warning when the site doesn't have Elementor installed or activated.
*
* @since 1.0.0
* @access public
*/
public function admin_notice_missing_main_plugin() {
$message = sprintf(
/* translators: 1: Plugin name 2: Elementor */
esc_html__( '"%1$s" requires "%2$s" to be installed and activated.', 'cf7-pay-addons' ),
'' . CF7PA_PLUGIN_NAME . '',
'' . esc_html__( 'Contact Form 7', 'cf7-pay-addons' ) . ''
);
// printf( '
', $message );
printf( esc_html__( $message ) );
}
protected function register_hooks() {
add_filter(
'plugin_action_links_' . plugin_basename( CF7PA_ADDONS_FILE ),
[$this, 'add_plugin_action_link'],
10,
5
);
// rest api
add_action( 'rest_api_init', array($this, 'register_apis') );
// admin section
if ( is_admin() ) {
// Admin
add_action( 'admin_menu', array($this, 'admin_menu') );
add_action( 'admin_enqueue_scripts', array($this, 'admin_enqueue_scripts') );
// cf7 setting
$this->init_contact_form_checkout_setting();
}
// Frontend CSS
// make sure before contact form 7
add_action(
'wp_enqueue_scripts',
[$this, 'enqueue_scripts'],
9,
0
);
}
public function add_plugin_action_link( $actions ) {
$mylinks = array('Settings', 'Documentation');
$actions = array_merge( $mylinks, $actions );
return $actions;
}
public function register_apis() {
$settings_api = new Rest_API_Settings_Controller();
$email_api = new Rest_API_Emails_Controller();
$stripe_api = new Rest_API_Stripe_Checkout_Controller();
$webhooks_api = new Rest_API_Stripe_Webhooks_Controller();
$settings_api->register_routes();
$email_api->register_routes();
$webhooks_api->register_routes();
$stripe_api->register_routes();
}
public function enqueue_scripts() {
wp_register_script(
'stripe',
'https://js.stripe.com/v3/',
[],
'3.0'
);
wp_register_script(
'cf7-pay-addons',
CF7PA_ADDONS_ASSET_URL . 'frontend/js/pay-addons.js',
['jquery'],
CF7PA_PLUGIN_VERSION
);
wp_register_style(
'cf7-pay-addons',
CF7PA_ADDONS_ASSET_URL . 'frontend/css/pay-addons.css',
[],
CF7PA_PLUGIN_VERSION
);
wp_enqueue_script( 'stripe' );
wp_enqueue_script( 'cf7-pay-addons' );
wp_enqueue_style( 'cf7-pay-addons' );
wp_localize_script( 'cf7-pay-addons', 'cf7paSettings', array(
'root' => esc_url_raw( rest_url() . CF7PA_ADDONS_REST_API ),
'nonce' => wp_create_nonce( 'wp_rest' ),
'apiKey' => Stripe_Settings::get_publishable_key(),
) );
}
}