register_classes();
add_action( 'init', 'atkp_lang' );
function atkp_lang() {
// Note: Since WP 4.6+, WordPress automatically loads translations from
// wp-content/languages/plugins/ for the standard text domain. This call
// is kept for backward compatibility with custom translation paths.
// phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound
load_plugin_textdomain( 'affiliate-toolkit-starter', false, dirname( plugin_basename( ATKP_PLUGIN_FILE ) ) . '/lang' );
}
add_action( 'plugins_loaded', 'atkp_plugins_loaded' );
function atkp_plugins_loaded() {
do_action( 'atkp_module_updater' );
}
add_action( 'publish_to_trash', 'atkp_to_trash' );
add_action( 'draft_to_trash', 'atkp_to_trash' );
add_action( 'future_to_trash', 'atkp_to_trash' );
add_action( 'deleted_post', 'atkp_deleted', 10, 2 );
function atkp_deleted( $post_id, $post ) {
if ( $post->post_type == 'atkp_product' ) {
do_action( 'atkp_product_deleted', $post->ID );
} else if ( $post->post_type == 'atkp_shop' ) {
do_action( 'atkp_shop_deleted', $post->ID );
} else if ( $post->post_type == 'atkp_list' ) {
do_action( 'atkp_list_deleted', $post->ID );
}
}
function atkp_to_trash( $post ) {
if ( $post->post_type == 'atkp_product' ) {
do_action( 'atkp_product_to_trash', $post->ID );
} else if ( $post->post_type == 'atkp_shop' ) {
do_action( 'atkp_shop_to_trash', $post->ID );
} else if ( $post->post_type == 'atkp_list' ) {
do_action( 'atkp_list_to_trash', $post->ID );
}
}
require_once ATKP_PLUGIN_DIR . '/includes/atkp_basics.php';
require_once ATKP_PLUGIN_DIR . '/includes/atkp_newsletter_popup.php';
add_action( 'atkp_initialize_widgets', 'atkp_initialize_widgets_callback' );
function atkp_initialize_widgets_callback() {
new atkp_widget();
}
//** Plugin initialisieren **//
add_action( 'init', 'atkp_init', 11 );
function atkp_init() {
if ( version_compare( get_bloginfo( 'version' ), '4.0', '<' ) ) {
wp_die( "You must update WordPress to use affiliate-toolkit!" );
}
// Register Custom Post Types (needed for both admin and frontend)
new atkp_posttypes_shop( array() );
new atkp_posttypes_product( array() );
new atkp_posttypes_list( array() );
new atkp_posttypes_template( array() );
do_action( 'atkp_register_cpt' );
// Modern Shortcode Generator mit Gutenberg-Unterstützung
// Initialize for both frontend and backend to support block rendering
atkp_shortcode_generator_modern::get_instance( array() );
if ( is_admin() ) {
add_action( 'admin_menu', 'atkp_init_menu', 20 );
// Alternative: Alter Generator (deprecated)
// new atkp_shortcode_generator2( array() );
//$g = new atkp_generator();
//$g->register_subpage();
add_action( 'admin_enqueue_scripts', 'atkp_admin_styles' );
new atkp_bulkimport( array() );
new atkp_extensions();
new atkp_queue_view();
new atkp_template_view();
} else {
new atkp_posttypes_product( array() );
new atkp_posttypes_template( array() );
add_action( 'wp_enqueue_scripts', 'atkp_frontend_styles' );
//enable shortcodes at widget area
//add_filter('widget_text', 'do_shortcode');
if ( atkp_options::$loader->get_show_credits() ) {
add_filter( 'the_content', 'atkp_credits', 20 );
}
}
//shortcodes für diverse backend editoren immer erzeugen..
new atkp_shortcodes_product( array() );
new atkp_shortcodes_list( array() );
new atkp_shortcodes_atkp( array() );
new atkp_wp_cronjob( true);
new atkp_queueservices();
new atkp_output_handle();
}
$atkp_cronjob = new atkp_wp_cronjob( false );
$atkp_cronjob->register_cron_hooks();
register_activation_hook( ATKP_PLUGIN_FILE, 'atkp_activated');
function atkp_activated() {
//if ((get_option('atkp_version_plugin', false)) === false) {
update_option( 'atkp_version_plugin', '1.0' );
update_option( 'atkp_redirect_to_welcome', true );
//}
}
add_action( 'admin_init', 'atkp_welcome_redirect', 9999 );
function atkp_welcome_redirect() {
if ( ! get_option( 'atkp_redirect_to_welcome', false ) ) {
return;
}
delete_option( 'atkp_redirect_to_welcome' );
wp_safe_redirect( admin_url( 'admin.php?page=ATKP_affiliate_toolkit-tools&tab=welcome_page' ) );
exit;
}
add_action( 'plugins_loaded', 'atkp_loaded');
function atkp_loaded() {
do_action( 'atkp_initialize_extensions' );
if ( is_admin() ) {
$atkp_settings = new atkp_settings( array() );
$tempsettings = array(
__( 'General settings', 'affiliate-toolkit-starter' ) => array(
new atkp_settings_toolkit( array() ),
'toolkit_configuration_page'
),
__( 'Advanced settings', 'affiliate-toolkit-starter' ) => array(
new atkp_settings_advanced( array() ),
'advanced_configuration_page'
),
__( 'Display settings', 'affiliate-toolkit-starter' ) => array(
new atkp_settings_display( array() ),
'display_configuration_page'
),
__( 'Licenses', 'affiliate-toolkit-starter' ) => array(
new atkp_settings_license( array() ),
'license_configuration_page'
)
);
$tempsettings = apply_filters( 'atkp_pages_settings', $tempsettings );
$atkp_settings::$settings = $tempsettings;
$compatibility = array();
$compatibility = apply_filters( 'atkp_pages_compatibility', $compatibility );
if ( count( $compatibility ) > 0 ) {
$atkp_compatibility = new atkp_compatibility( array() );
$atkp_compatibility::$modes = $compatibility;
}
$temptools = array();
$temptools = apply_filters( 'atkp_pages_tools', $temptools );
$temptools[ __( 'Shop replacement', 'affiliate-toolkit-starter' ) ] = array(
new atkp_tools_shopreplace( array() ),
'shopreplace_configuration_page'
);
$temptools[ __( 'Debug', 'affiliate-toolkit-starter' ) ] = array(
new atkp_tools_debug( array() ),
'debug_configuration_page'
);
$temptools[ __( 'Welcome', 'affiliate-toolkit-starter' ) ] = array(
new atkp_tools_welcome( array() ),
'welcome_page'
);
//$temptools[ __( 'Import template', ATKP_PLUGIN_PREFIX ) ] = array(
// new atkp_tools_import_template( array() ),
// 'importtools_configuration_page'
//);
new atkp_tools_shortcodegenerator( array() );
if ( count( $temptools ) > 0 ) {
$atkp_tools = new atkp_tools( array() );
$atkp_tools::$tools = $temptools;
}
}
}
function atkp_init_menu() {
add_menu_page(
__( 'affiliate-toolkit', 'affiliate-toolkit-starter' ),
__( 'affiliate-toolkit', 'affiliate-toolkit-starter' ),
'edit_posts',
ATKP_PLUGIN_PREFIX . '_affiliate_toolkit-plugin',
null,
plugin_dir_url( __FILE__ ) . '/images/affiliate_toolkit_menu.png',
30
);
do_action( 'atkp_register_submenu', ATKP_PLUGIN_PREFIX . '_affiliate_toolkit-plugin' );
}
new atkp_gutenberg_editor( array() );
new atkp_endpoints( array() );
function atkp_credits( $content ) {
if ( is_singular() && in_the_loop() && is_main_query() ) {
global $post;
if ( is_a( $post, 'WP_Post' ) ) {
if ( has_shortcode( $post->post_content, 'affiliate-toolkit-starter' ) || has_shortcode( $post->post_content, 'atkp_list' ) || has_shortcode( $post->post_content, 'atkp_product' ) ) {
$content .= '
' . ATKPTools::get_credits_link() . '
';
}
}
}
return $content;
}
function atkp_admin_styles( $hook ) {
$fontawesome = false;
$codemirror = false;
$colorpicker = false;
if ( 'toplevel_page_ATKP_affiliate_toolkit-plugin' == $hook || 'affiliate-toolkit_page_ATKP_affiliate_toolkit-compatibility' == $hook || 'affiliate-toolkit_page_ATKP_affiliate_toolkit-tools' == $hook || 'atkp_product_page_atkp_bulkimport' == $hook || 'affiliate-toolkit_page_ATKP_affiliate_toolkit-shortcodegenerator' == $hook ) {
wp_register_style( 'atkp-styles', plugins_url( '/css/admin-style.css', __FILE__ ), array( 'wp-admin' ), ATKP_UPDATE_VERSION );
wp_enqueue_style( 'atkp-styles' );
if ( $hook == 'toplevel_page_ATKP_affiliate_toolkit-plugin' || 'affiliate-toolkit_page_ATKP_affiliate_toolkit-shortcodegenerator' == $hook ) {
$fontawesome = true;
}
$colorpicker = true;
} else if ( 'post.php' == $hook || 'post-new.php' == $hook ) {
wp_register_style( 'atkp-styles', plugins_url( '/dist/style.css', __FILE__ ), array(), ATKP_UPDATE_VERSION );
wp_enqueue_style( 'atkp-styles' );
$fontawesome = true;
global $post_type;
if ( ATKP_TEMPLATE_POSTTYPE == $post_type ) {
$codemirror = true;
$colorpicker = true;
}
}
if ( $fontawesome ) {
wp_register_style( 'atkp-fontawesome', plugins_url( '/lib/font-awesome/css/font-awesome.min.css', __FILE__ ), array(), ATKP_UPDATE_VERSION );
wp_enqueue_style( 'atkp-fontawesome' );
}
if ( $codemirror ) {
// Use WordPress core bundled CodeMirror (available since WP 4.9+)
// instead of shipping our own copy in lib/codemirror/
$cm_settings = array(
'codemirror' => array(
'mode' => 'htmlmixed',
'lineNumbers' => true,
'autoCloseTags' => true,
'matchTags' => array( 'bothTags' => true ),
'extraKeys' => array( 'Ctrl-J' => 'toMatchingTag' ),
),
);
wp_enqueue_code_editor( $cm_settings );
}
if ( $colorpicker ) {
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_script( 'wp-color-picker' );
}
$disable_select2 = ATKPTools::get_setting( ATKP_PLUGIN_PREFIX . '_disableselect2', false );
if ( ! $disable_select2 ) {
wp_register_style( 'atkp-select2-styles', plugins_url( '/lib/select2/css/select2atkp.min.css', __FILE__ ), array(), ATKP_UPDATE_VERSION );
wp_enqueue_style( 'atkp-select2-styles' );
wp_register_script( 'atkp-select2-scripts', plugins_url( '/lib/select2/js/select2atkp.min.js', __FILE__ ), array(), ATKP_UPDATE_VERSION, true );
wp_enqueue_script( 'atkp-select2-scripts' );
}
}
function atkp_frontend_styles() {
if ( ! atkp_options::$loader->get_disablestyles() ) {
//register plugin styles
wp_register_style( 'atkp-styles', plugins_url( '/dist/style.css', __FILE__ ), array(), ATKP_UPDATE_VERSION );
wp_enqueue_style( 'atkp-styles' );
//register custom styles
if ( atkp_options::$loader->get_css_inline() == atkp_css_type::CssFile || atkp_options::$loader->get_css_inline() == atkp_css_type::Inline ) {
$custom_styleurl = ATKPTools::get_global_style_url();
if ( $custom_styleurl != null ) {
wp_register_style( 'atkp-styles-custom', $custom_styleurl, array(), ATKP_UPDATE_VERSION );
wp_enqueue_style( 'atkp-styles-custom' );
}
} else if ( atkp_options::$loader->get_css_inline() == atkp_css_type::InlineHead ) {
$output = new atkp_output();
$custom_css = $output->get_css_output();
wp_add_inline_style( 'atkp-styles', $custom_css );
//wp_enqueue_style( 'atkp-styles-custom' );
}
}
//wp_register_script( 'atkp-jquery', plugins_url( 'dist/jquery.min.js', __FILE__ ), array( 'jquery' ), '3.4.1', true );
//wp_enqueue_script( 'atkp-jquery' );
if ( ! atkp_options::$loader->get_disablejs() ) {
wp_register_script( 'atkp-scripts', plugins_url( '/dist/script.js', __FILE__ ), array( 'jquery' ), ATKP_UPDATE_VERSION, true );
$custom_scripturl = ATKPTools::get_global_script_url();
//var_dump($custom_scripturl);exit;
if ( $custom_scripturl == null ) {
ATKPTools::add_global_scripts( 'atkp-custom-scripts' );
} else {
wp_register_script( 'atkp-custom-scripts', $custom_scripturl, array( 'jquery' ), ATKP_UPDATE_VERSION, true );
}
wp_enqueue_script( 'atkp-scripts' );
wp_enqueue_script( 'atkp-custom-scripts' );
}
}
function atkp_template_list_previewtemplates( $templates ) {
unset( $templates['ajax_load'] );
unset( $templates['moreoffers'] );
unset( $templates['moreoffers2'] );
unset( $templates['floatingpanel'] );
unset( $templates['variationboxes'] );
unset( $templates['popup'] );
unset( $templates['comparebox'] );
unset( $templates['compareproduct'] );
unset( $templates['default_live'] );
unset( $templates['simple_live'] );
unset( $templates['searchbox'] );
unset( $templates['searchform'] );
unset( $templates['searchtext'] );
unset( $templates['productcompare_form'] );
unset( $templates['productcompare_form-widget'] );
return $templates;
}
add_filter( 'atkp_template_preview_list', 'atkp_template_list_previewtemplates', 10 );
function atkp_template_list_remove_search_templates( $templates, $add_systemdir, $is_searchform ) {
// Remove search templates from product template list
if ( ! $is_searchform ) {
unset( $templates['comparebox'] );
unset( $templates['compareproduct'] );
unset( $templates['default_live'] );
unset( $templates['simple_live'] );
unset( $templates['searchbox'] );
unset( $templates['searchform'] );
unset( $templates['searchtext'] );
unset( $templates['productcompare_form'] );
unset( $templates['productcompare_form-widget'] );
}
return $templates;
}
add_filter( 'atkp_template_list', 'atkp_template_list_remove_search_templates', 10, 3 );
do_action( 'atkp_initialize_widgets' );
/**
* @param bool $supported
* @param atkp_shop $shop
*
* @return bool
*/
function atkp_shop_support_articlenumber_search_at( $supported, $shop ) {
$hasarticlesearch = ATKPTools::has_articlenumbersearch( $shop->webservice );
return $supported ? $supported : $hasarticlesearch;
}
add_filter( 'atkp_shop_support_articlenumber_search', 'atkp_shop_support_articlenumber_search_at', 10, 2 );
//add_action( 'admin_notices', 'atkp_migration_admin_notice' );
add_action( 'admin_notices', 'atkp_admin_discounts' );
//add_action( 'admin_notices', 'atkp_admin_display_settings' );
add_action( 'admin_notices', 'atkp_admin_license' );
add_action( 'admin_notices', 'atkp_admin_template_sanitize_notice' );
add_action( 'wp_ajax_atkp_dismiss_template_sanitize_notice', 'atkp_dismiss_template_sanitize_notice' );
add_action( 'wp_ajax_atkp_confirm_template_sanitize_notice', 'atkp_confirm_template_sanitize_notice' );
function atkp_admin_template_sanitize_notice() {
// Only show for admins
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
// Don't show if already confirmed
if ( get_option( 'atkp_template_sanitize_notice_confirmed', false ) ) {
return;
}
$settings_url = admin_url( 'admin.php?page=ATKP_affiliate_toolkit-plugin&tab=advanced_configuration_page' );
$nonce = wp_create_nonce( 'atkp_template_sanitize_notice' );
?>
⚠
<?php ?>' ); ?>
',
''
);
?>
publish == 0 && $count->draft == 0 ) ) {
ATKPTools::set_setting( 'atkp_migration_done', 1 );
return;
}
/* translators: %s: URL to the migration page */
ATKPTools::show_notification( '' . esc_html__( 'affiliate-toolkit:', 'affiliate-toolkit-starter' ) . ' ' . sprintf( esc_html__( 'You must migrate your products to newest version (v2 to v3). Please %1$sclick here%2$s to migrate now. Please create a backup before you migrate.', 'affiliate-toolkit-starter' ), '', '' ), 'notice', 'warning' );
}
function atkp_admin_display_settings() {
$display_check_done = ATKPTools::get_setting( 'atkp_display_check_done', 0 );
//if(is_admin()) {
// ATKPTools::show_notification( sprintf( __( 'affiliate-toolkit: Please uninstall this plugin and install affiliate-toolkit from the WordPress directory. You will receive further updates via WordPress.org.', ATKP_PLUGIN_PREFIX ), 'https://wordpress.org/plugins/affiliate-toolkit-starter/' ), 'notice', 'warning' );
//}
if ( $display_check_done ) {
return;
}
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
if ( ! isset( $_GET['tab'] ) || $_GET['tab'] == 'display_configuration_page' ) {
return;
}
/* translators: %1$s: opening link tag, %2$s: closing link tag */
ATKPTools::show_notification( '' . esc_html__( 'affiliate-toolkit:', 'affiliate-toolkit-starter' ) . ' ' . sprintf( esc_html__( 'Please check your display settings. Please %1$sclick here%2$s to go to your display settings page.', 'affiliate-toolkit-starter' ), '', '' ), 'notice', 'warning' );
}
function atkp_admin_license() {
$status = ATKP_LicenseController::get_license_status();
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
if ( isset( $_GET['tab'] ) && $_GET['tab'] == 'welcome_page' ) {
return;
}
if ( $status != null ) {
/* translators: %s: license status message */
ATKPTools::show_notification( '' . sprintf( esc_html__( 'affiliate-toolkit: %s', 'affiliate-toolkit-starter' ), wp_kses_post( $status ) ) . '', 'notice', 'info' );
}
}
function atkp_admin_discounts() {
if ( atkp_options::$loader->get_disablediscounts() ) {
return;
}
if ( ! class_exists( 'ATKP_StoreController' ) ) {
return;
}
$discounts = ATKP_StoreController::get_product_discounts();
// phpcs:disable WordPress.Security.NonceVerification.Recommended
if ( ! is_string( $discounts ) && $discounts->active &&
( ( isset( $_GET['page'] ) && ATKPTools::startsWith( sanitize_text_field( wp_unslash( $_GET['page'] ) ), 'ATKP' ) ) || ( isset( $_GET['post_type'] ) && ATKPTools::startsWith( sanitize_text_field( wp_unslash( $_GET['post_type'] ) ), 'affiliate-toolkit-starter' ) ) ) ) {
// phpcs:enable WordPress.Security.NonceVerification.Recommended
$aktion_bis = new DateTime( $discounts->aktion_bis );
/* translators: %1$s: discount teaser text, %2$s: link URL, %3$s: link text, %4$s: end date */
ATKPTools::show_notification( '' . sprintf( esc_html__( 'affiliate-toolkit - %1$s:', 'affiliate-toolkit-starter' ), esc_html( $discounts->teaser ) ) . ' ' . esc_html( $discounts->link_text ) . ' ' . sprintf( esc_html__( '(Ends on %s)', 'affiliate-toolkit-starter' ), esc_html( $aktion_bis->format( get_option( 'date_format' ) . ' H:i:s' ) ) ), 'notice', 'info' );
}
}
function atkp_param_starts_with( $param, $prefix ) {
if ( is_string( $param ) ) {
return substr( $param, 0, strlen( $prefix ) ) === $prefix;
}
if ( is_array( $param ) ) {
foreach ( $param as $p ) {
if ( is_string( $p ) && substr( $p, 0, strlen( $prefix ) ) === $prefix ) {
return true;
}
}
}
return false;
}
function atkp_is_page() {
$is_atkp = false;
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
if ( isset( $_GET['post_type'] ) && atkp_param_starts_with( sanitize_text_field( wp_unslash( $_GET['post_type'] ) ), 'affiliate-toolkit-starter' ) ) {
$is_atkp = true;
}
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
if ( isset( $_GET['page'] ) && atkp_param_starts_with( sanitize_text_field( wp_unslash( $_GET['page'] ) ), 'ATKP' ) ) {
$is_atkp = true;
}
return $is_atkp;
}
if ( atkp_is_page() ) {
add_filter( 'admin_footer_text', 'atkp_admin_rateus', 1 );
}
function atkp_admin_rateus() {
$text = sprintf(
wp_kses(
/* translators: %1$s: 5 star symbols linked to wordpress.org review page, %2$s: opening link tag, %3$s: closing link tag */
_x(
'Please rate affiliate-toolkit %1$s on %2$sWordPress.org%3$s to help us spread the word. Thank you from the affiliate-toolkit team!',
'%1$s represents 5 star symbols linked to wordpress.org review page, %2$s and %3$s represent opening and closing link tags',
'affiliate-toolkit-starter'
),
array(
'a' => array(
'href' => array(),
'target' => array(),
'rel' => array(),
),
'strong' => array(),
)
),
'' .
'★★★★★',
'',
''
);
return $text;
}
// directory handle
$atkp_child_plugin_dir = ATKP_PLUGIN_DIR . '/child-plugins/';
if ( file_exists( $atkp_child_plugin_dir ) ) {
$atkp_dir = dir( $atkp_child_plugin_dir );
if ( ! ! $atkp_dir ) {
while ( false !== ( $atkp_entry = $atkp_dir->read() ) ) {
if ( $atkp_entry != '.' && $atkp_entry != '..' ) {
if ( is_dir( $atkp_child_plugin_dir . '/' . $atkp_entry ) ) {
$atkp_child_file_name = $atkp_child_plugin_dir . '/' . $atkp_entry . '/' . $atkp_entry . '.php';
if ( is_file( $atkp_child_file_name ) ) {
require_once( $atkp_child_file_name );
}
}
}
}
}
}
define( 'ATKP_INIT', '1' );
?>