is_from_partner( $product ) ) { return false; } return true; } /** * Load module logic. * * @param Product $product Product to load. * * @return Dependancy Module object. */ public function load( $product ) { $this->product = $product; $this->setup_actions(); return $this; } /** * Setup actions. */ private function setup_actions() { add_filter( 'themeisle_sdk_dependency_script_handler', [ $this, 'get_script_handler' ], 10, 1 ); add_action( 'themeisle_sdk_dependency_enqueue_script', [ $this, 'enqueue_script' ], 10, 1 ); } /** * Get the script handler. * * @param string $slug The slug of the script. * * @return string The script handler. Empty if slug is not a string or not implemented. */ public function get_script_handler( $slug ) { if ( ! is_string( $slug ) ) { return ''; } if ( 'tracking' !== $slug && 'survey' !== $slug ) { return ''; } return apply_filters( 'themeisle_sdk_dependency_script_handler_name', 'themeisle_sdk_' . $slug . '_script', $slug ); } /** * Enqueue the script. * * @param string $slug The slug of the script. */ public function enqueue_script( $slug ) { $handler = apply_filters( 'themeisle_sdk_dependency_script_handler', $slug ); if ( empty( $handler ) ) { return; } if ( 'tracking' === $slug ) { $this->load_tracking( $handler ); } elseif ( 'survey' === $slug ) { $this->load_survey( $handler ); } } /** * Load the survey script. * * @param string $handler The script handler. * * @return void */ public function load_survey( $handler ) { global $themeisle_sdk_max_path; $asset_file = require $themeisle_sdk_max_path . '/assets/js/build/survey/survey_deps.asset.php'; wp_enqueue_script( $handler, $this->get_sdk_uri() . 'assets/js/build/survey/survey_deps.js', $asset_file['dependencies'], $asset_file['version'], true ); } /** * Load the tracking script. * * @param string $handler The script handler. * * @return void */ public function load_tracking( $handler ) { global $themeisle_sdk_max_path; $asset_file = require $themeisle_sdk_max_path . '/assets/js/build/tracking/tracking.asset.php'; wp_enqueue_script( $handler, $this->get_sdk_uri() . 'assets/js/build/tracking/tracking.js', $asset_file['dependencies'], $asset_file['version'], true ); } }