Automator_Load
Class Automator_Load
Source Source
File: src/class-automator-load.php
class Automator_Load { /** * The instance of the class * * @since 1.0.0 * @access public * @var Object */ public static $instance = null; /** * @var array */ public static $core_class_inits = array(); /** * @var array */ public static $integrations = array(); /** * @var array */ public static $active_integrations = array(); /** * class constructor */ public function __construct() { if ( strpos( $_SERVER['REQUEST_URI'], 'favicon' ) ) { // bail out if it's favicon.ico return; } // Show upgrade notice from readme.txt. add_action( 'in_plugin_update_message-' . plugin_basename( AUTOMATOR_BASE_FILE ), array( $this, 'in_plugin_update_message' ), 10, 2 ); // Load Admin only files. add_filter( 'automator_core_files', array( $this, 'admin_only_classes' ) ); // Load Custom Post Types only files. add_filter( 'automator_core_files', array( $this, 'custom_post_types_classes' ) ); // Load non-admin files. add_filter( 'automator_core_files', array( $this, 'front_only_classes' ) ); // Load both admin & non-admin files. add_filter( 'automator_core_files', array( $this, 'global_classes' ) ); // Add the pro links utm_r attributes. add_action( 'admin_footer', array( $this, 'global_utm_r_links' ) ); // Show 'Upgrade to Pro' on plugins page. add_filter( 'plugin_action_links_' . plugin_basename( AUTOMATOR_BASE_FILE ), array( $this, 'uo_automator_upgrade_to_pro_link', ), 99 ); $this->load_automator(); } /** * Callback function to `plugin_action_links_{$path}` to add our 'Upgrade to Pro' link. * * @param array $links The accepted argument. * * @return array The links. */ public function uo_automator_upgrade_to_pro_link( $links ) { // Check if Automator Pro is not active. if ( ! defined( 'AUTOMATOR_PRO_FILE' ) ) { $link = 'https://automatorplugin.com/pricing/?utm_source=uncanny_automator&utm_medium=plugins_page&utm_content=update_to_pro'; $settings_link = sprintf( '<a href="%s" target="_blank" style="font-weight: bold;">%s</a>', $link, __( 'Upgrade to Pro', 'uncanny-learndash-toolkit' ) ); array_unshift( $links, $settings_link ); } return $links; } /** * */ public function load_automator() { // If it's not required to load automator, bail if ( false === LOAD_AUTOMATOR ) { return; } // Load text domain add_action( 'plugins_loaded', array( $this, 'automator_load_textdomain' ) ); do_action( 'automator_before_configure' ); // Load Assets $this->initialize_assets(); // Load Utilities $this->initialize_utilities(); // Load Configuration $this->initialize_automator_db(); // Load the core files $this->initialize_core_automator(); do_action( 'automator_configuration_complete' ); } /** * */ public function initialize_assets() { // Load same script for free and pro add_action( 'admin_enqueue_scripts', array( $this, 'automator_license_style' ) ); // Load script front-end add_action( 'wp_enqueue_scripts', array( $this, 'automator_closure_scripts' ) ); } /** * Initialize static singleton class that has shared functions and variables * * @since 1.0.0 */ public function initialize_utilities() { require UA_ABSPATH . 'src/core/class-utilities.php'; Utilities::get_instance(); } /** * Initialize static singleton class that configures all constants, utilities variables and handles * activation/deactivation * * @since 1.0.0 */ public function initialize_automator_db() { include_once dirname( AUTOMATOR_BASE_FILE ) . '/src/core/class-automator-db.php'; $config_instance = Automator_DB::get_instance(); register_activation_hook( AUTOMATOR_BASE_FILE, array( Automator_DB::class, 'activation', ) ); $db_version = get_option( 'uap_database_version', null ); if ( null === $db_version || (string) AUTOMATOR_DATABASE_VERSION !== (string) $db_version ) { $config_instance->activation(); $config_instance->mysql_8_auto_increment_fix(); } if ( (string) AUTOMATOR_DATABASE_VIEWS_VERSION !== (string) get_option( 'uap_database_views_version', 0 ) ) { $config_instance->automator_generate_views(); } } /** * */ public function initialize_core_automator() { do_action( 'automator_before_init' ); $classes = apply_filters( 'automator_core_files', array() ); if ( empty( $classes ) ) { return; } $this->load_traits(); foreach ( $classes as $class_name => $file ) { if ( ! file_exists( $file ) ) { continue; } require $file; $class = __NAMESPACE__ . '\\' . $class_name; self::$core_class_inits[ $class_name ] = new $class(); } do_action( 'automator_after_init' ); } /** * Creates singleton instance of class * * @return Automator_Load $instance The Automator_Load Class * @since 1.0.0 * */ public static function get_instance() { if ( null === self::$instance ) { self::$instance = new self(); } return self::$instance; } /** * */ public static function maybe_load_automator() { $run_automator = true; $run_automator = apply_filters_deprecated( 'uap_run_automator_actions', array( $run_automator ), '3.0', 'automator_run_automator_actions' ); return apply_filters( 'automator_run_automator_actions', $run_automator ); } /** * Load plugin textdomain. * * @since 1.0.0 */ public function automator_load_textdomain() { load_plugin_textdomain( 'uncanny-automator', false, basename( dirname( AUTOMATOR_BASE_FILE ) ) . '/languages/' ); } /** * @param $args * @param $response */ public function in_plugin_update_message( $args, $response ) { $upgrade_notice = ''; if ( isset( $response->upgrade_notice ) && ! empty( $response->upgrade_notice ) ) { $upgrade_notice .= '<div class="ua_plugin_upgrade_notice">'; $upgrade_notice .= sprintf( '<strong>%s</strong>', __( 'Heads up!', 'uncanny-automator' ) ); $upgrade_notice .= preg_replace( '~\[([^\]]*)\]\(([^\)]*)\)~', '<a href="${2}">${1}</a>', $response->upgrade_notice ); $upgrade_notice .= '</div>'; } echo apply_filters( 'uap_in_plugin_update_message', $upgrade_notice ? '</p>' . wp_kses_post( $upgrade_notice ) . '<p class="dummy">' : '', $args ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped } /** * Licensing page styles * * @param $hook */ public function automator_license_style( $hook ) { if ( strpos( $hook, 'uncanny-automator-license-activation' ) ) { wp_enqueue_style( 'uap-admin-license', Utilities::automator_get_css( 'admin/license.css' ), array(), Utilities::automator_get_version() ); } } /** * Enqueue script * */ public function automator_closure_scripts() { if ( ! is_user_logged_in() ) { return; } // check if there is a recipe and closure with publish status $check_closure = Automator()->db->closure->get_all(); if ( empty( $check_closure ) ) { return; } $user_id = wp_get_current_user()->ID; $api_setup = array( 'root' => esc_url_raw( rest_url() . AUTOMATOR_REST_API_END_POINT . '/uoa_redirect/' ), 'nonce' => wp_create_nonce( 'wp_rest' ), 'user_id' => $user_id, 'client_secret_key' => md5( 'l6fsX3vAAiJbSXticLBd' . $user_id ), ); wp_register_script( 'uoapp-client', Utilities::automator_get_js( 'uo-sseclient.js' ), array(), '2.1.0' ); //phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NotInFooter wp_localize_script( 'uoapp-client', 'uoAppRestApiSetup', $api_setup ); wp_enqueue_script( 'uoapp-client' ); } /** * @return mixed|void */ public function include_core_files() { /** * Abstracts. */ do_action( 'automator_before_abstract_init' ); do_action( 'automator_after_abstract_init' ); } /** * @param array $classes * * @return array|mixed */ public function admin_only_classes( $classes = array() ) { /** * Admin. */ if ( ! is_admin() ) { return $classes; } do_action( 'automator_before_admin_init' ); $classes['Admin_Menu'] = UA_ABSPATH . 'src/core/admin/class-admin-menu.php'; $classes['Automator_Review'] = UA_ABSPATH . 'src/core/admin/class-automator-review.php'; $classes['Copy_Recipe_Parts'] = UA_ABSPATH . 'src/core/admin/class-copy-recipe-parts.php'; $classes['Add_User_Recipe_Type'] = UA_ABSPATH . 'src/core/classes/class-add-user-recipe-type.php'; do_action( 'automator_after_admin_init' ); /** * Automator Custom Post Types. */ //$classes = $this->custom_post_types_classes( $classes ); /** * Activity Stream / Logs. */ $classes = $this->activity_stream_classes( $classes ); /** * Classes. */ do_action( 'automator_before_classes_init' ); $classes['Populate_From_Query'] = UA_ABSPATH . 'src/core/classes/class-populate-from-query.php'; do_action( 'automator_after_classes_init' ); return $classes; } /** * @param array $classes * * @return array|mixed */ public function custom_post_types_classes( $classes = array() ) { do_action( 'automator_before_automator_post_types_init' ); $classes['Recipe_Post_Type'] = UA_ABSPATH . 'src/core/automator-post-types/uo-recipe/class-recipe-post-type.php'; $classes['Recipe_Post_Metabox'] = UA_ABSPATH . 'src/core/automator-post-types/uo-recipe/class-recipe-post-metabox.php'; $classes['Recipe_Post_Utilities'] = UA_ABSPATH . 'src/core/automator-post-types/uo-recipe/class-recipe-post-utilities.php'; $classes['Recipe_Post_Rest_Api'] = UA_ABSPATH . 'src/core/automator-post-types/uo-recipe/class-recipe-post-rest-api.php'; $classes['Triggers_Post_Type'] = UA_ABSPATH . 'src/core/automator-post-types/uo-trigger/class-triggers-post-type.php'; $classes['Actions_Post_Type'] = UA_ABSPATH . 'src/core/automator-post-types/uo-action/class-actions-post-type.php'; $classes['Closures_Post_Type'] = UA_ABSPATH . 'src/core/automator-post-types/uo-closure/class-closures-post-type.php'; $classes['Automator_Taxonomies'] = UA_ABSPATH . 'src/core/automator-post-types/uo-taxonomies/class-automator-taxonomies.php'; do_action( 'automator_after_automator_post_types_init' ); return $classes; } /** * @param array $classes * * @return array|mixed */ public function activity_stream_classes( $classes = array() ) { do_action( 'automator_before_activity_stream_init' ); $classes['Activity_Log'] = UA_ABSPATH . 'src/core/admin/class-activity-log.php'; do_action( 'automator_after_activity_stream_init' ); return $classes; } /** * @param array $classes * * @return array|mixed */ public function front_only_classes( $classes = array() ) { // if ( is_admin() && ! DOING_AJAX ) { // return $classes; // } $classes['Actionify_Triggers'] = UA_ABSPATH . 'src/core/classes/class-actionify-triggers.php'; return $classes; } /** * @param array $classes * * @return array|mixed */ public function global_classes( $classes = array() ) { /** * Class autoloader. */ do_action( 'automator_before_autoloader' ); $classes['Automator_Autoloader'] = UA_ABSPATH . 'src/core/lib/autoload/class-ua-autoloader.php'; // $classes['A_Cron_Exceptions'] = UA_ABSPATH . 'src/core/classes/class-a-cron-exceptions.php'; $classes['Set_Up_Automator'] = UA_ABSPATH . 'src/core/classes/class-set-up-automator.php'; do_action( 'automator_after_autoloader' ); return $classes; } /** * */ public function load_traits() { do_action( 'automator_before_traits' ); $classes['Integrations'] = UA_ABSPATH . 'src/core/lib/recipe-parts/trait-integrations.php'; $classes['Trait_Closure_Setup'] = UA_ABSPATH . 'src/core/lib/recipe-parts/closures/trait-closure-setup.php'; $classes['Closures'] = UA_ABSPATH . 'src/core/lib/recipe-parts/trait-closures.php'; $classes['Trait_Trigger_Setup'] = UA_ABSPATH . 'src/core/lib/recipe-parts/triggers/trait-trigger-setup.php'; $classes['Trait_Trigger_Filters'] = UA_ABSPATH . 'src/core/lib/recipe-parts/triggers/trait-trigger-filters.php'; $classes['Trait_Trigger_Conditions'] = UA_ABSPATH . 'src/core/lib/recipe-parts/triggers/trait-trigger-conditions.php'; $classes['Trait_Trigger_Process'] = UA_ABSPATH . 'src/core/lib/recipe-parts/triggers/trait-trigger-process.php'; $classes['Triggers'] = UA_ABSPATH . 'src/core/lib/recipe-parts/triggers/trait-triggers.php'; $classes['Trait_Action_Setup'] = UA_ABSPATH . 'src/core/lib/recipe-parts/actions/trait-action-setup.php'; $classes['Trait_Action_Conditions'] = UA_ABSPATH . 'src/core/lib/recipe-parts/actions/trait-action-conditions.php'; $classes['Trait_Action_Parser'] = UA_ABSPATH . 'src/core/lib/recipe-parts/actions/trait-action-parser.php'; $classes['Trait_Action_Process'] = UA_ABSPATH . 'src/core/lib/recipe-parts/actions/trait-action-process.php'; $classes['Trait_Action_Helpers_Email'] = UA_ABSPATH . 'src/core/lib/recipe-parts/actions/trait-action-helpers-email.php'; $classes['Trait_Action_Helpers'] = UA_ABSPATH . 'src/core/lib/recipe-parts/actions/trait-action-helpers.php'; $classes['Actions'] = UA_ABSPATH . 'src/core/lib/recipe-parts/trait-actions.php'; if ( empty( $classes ) ) { return; } // TODO: Generate Class names by filenames foreach ( $classes as $file ) { if ( ! file_exists( $file ) ) { continue; } require $file; } do_action( 'automator_after_traits' ); } /** * Adds `utm_r` parameters to all Automator Pro Links. * * @return void. */ public function global_utm_r_links() { $uncanny_automator_enabled_global_utm = apply_filters( 'uncanny_automator_enabled_global_utm', true ); $uncannyautomator_source = get_option( 'uncannyautomator_source' ); if ( false === $uncannyautomator_source || empty( $uncannyautomator_source ) ) { return; } if ( ! $uncanny_automator_enabled_global_utm ) { return; } ?> <script> jQuery(document).ready(function ($) { "use strict"; var automator_pro_links = 'a[href^="https://automatorplugin.com"]'; var _update_url_parameter = function (uri, key, value) { // remove the hash part before operating on the uri var i = uri.indexOf('#'); var hash = i === -1 ? '' : uri.substr(i); uri = i === -1 ? uri : uri.substr(0, i); var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); var separator = uri.indexOf('?') !== -1 ? "&" : "?"; if (uri.match(re)) { uri = uri.replace(re, '$1' + key + "=" + value + '$2'); } else { uri = uri + separator + key + "=" + value; } return uri + hash; // finally append the hash as well } var source = "<?php echo esc_js( $uncannyautomator_source ); ?>"; // Add utmr to all automator upgrade links. $.each($(automator_pro_links), function () { var link_with_utmr = _update_url_parameter($(this).attr('href'), 'utm_r', '<?php echo esc_js( $uncannyautomator_source ); ?>'); $(this).attr('href', link_with_utmr); }); // Add utmr to all automator upgrade links which are not accessible on document ready. $(document).on('mouseover', automator_pro_links, function (e) { var link_with_utmr = _update_url_parameter($(this).attr('href'), 'utm_r', '<?php echo esc_js( $uncannyautomator_source ); ?>'); $(this).attr('href', link_with_utmr); }); }); </script> <?php } }
Expand full source code Collapse full source code View on Github
Methods Methods
- __construct — class constructor
- activity_stream_classes
- admin_only_classes
- automator_activated
- automator_closure_scripts — Enqueue script
- automator_license_style — Licensing page styles
- automator_load_textdomain — Load plugin textdomain.
- automator_schedule_healthchecks — automator_schedule_healthchecks
- check_automator32_php8_compat_message — check_automator32_php8_compat_message
- custom_post_types_classes
- front_only_classes
- get_instance — Creates singleton instance of class
- global_classes
- global_utm_r_links — Adds `utm_r` parameters to all Automator Pro Links.
- in_plugin_update_message
- include_core_files
- initialize_assets
- initialize_automator_db — Initialize static singleton class that configures all constants, utilities variables and handles activation/deactivation
- initialize_core_automator
- initialize_utilities — Initialize static singleton class that has shared functions and variables
- initiate_setup_wizard — Initiate the set-up wizard.
- is_php8_compat — is_php8_compat
- load_automator
- load_migrations — load_migrations
- load_traits
- maybe_load_automator
- uo_automator_upgrade_to_pro_link — Callback function to `plugin_action_links_{$path}` to add our 'Upgrade to Pro' link.
- wpforms_integration