number_license_keys = is_array( $edd_licensed_products ) ? count( $edd_licensed_products ) : 0; $this->pass_manager = new Pass_Manager(); } /** * This notice lasts 90 days. * * @return int */ public static function dismiss_duration() { return 3 * MONTH_IN_SECONDS; } /** * Determines if the current page is an EDD admin page. * * @return bool */ private function is_edd_admin_page() { if ( defined( 'EDD_DOING_TESTS' ) && EDD_DOING_TESTS ) { return true; } $screen = get_current_screen(); if ( ! $screen instanceof \WP_Screen || 'dashboard' === $screen->id || ! edd_is_admin_page( '', '', false ) ) { return false; } return true; } /** * @inheritDoc * * @return bool */ protected function _should_display() { if ( ! $this->is_edd_admin_page() ) { return false; } // Someone with no license keys entered always sees a notice. if ( 0 === $this->number_license_keys ) { return true; } // If we have no pass data yet, don't show the notice because we don't yet know what it should say. if ( ! $this->pass_manager->has_pass_data ) { return false; } // If someone has an extended pass or higher, and has an active AffiliateWP license, don't show. try { if ( $this->pass_manager->has_pass() && Pass_Manager::pass_compare( $this->pass_manager->highest_pass_id, Pass_Manager::EXTENDED_PASS_ID, '>=' ) && $this->has_affiliate_wp_license() && $this->has_mi_license() ) { return false; } } catch ( \Exception $e ) { return true; } return true; } /** * Determines whether or not AffiliateWP is installed and has a license key. * * @since 2.10.6 * * @return bool */ private function has_affiliate_wp_license() { if ( ! function_exists( 'affiliate_wp' ) ) { return false; } return (bool) affiliate_wp()->settings->get( 'license_key' ); } /** * Determines whether or not MonsterInsights is installed and has a license key. * * @since 2.11.6 * * @return bool */ private function has_mi_license() { if ( ! class_exists( 'MonsterInsights' ) ) { return false; } $mi_license = \MonsterInsights::$instance->license->get_license_key(); return ! empty( $mi_license ); } /** * @inheritDoc */ protected function _display() { try { if ( 0 === $this->number_license_keys ) { $utm_parameters = $this->query_args( 'core' ); $link_url = $this->build_url( 'https://easydigitaldownloads.com/lite-upgrade/', $utm_parameters ); $help_url = edd_link_helper( 'https://easydigitaldownloads.com/what-is-an-edd-pass/', array( 'utm_medium' => 'top-promo', 'utm_content' => 'what-is-a-pass', ) ); // No license keys active at all. printf( /* Translators: %1$s opening anchor tag; %2$s closing anchor tag */ __( 'You are using the free version of Easy Digital Downloads. %1$sPurchase a pass%2$s to get email marketing tools and recurring payments. %3$sAlready have a Pass?%4$s', 'easy-digital-downloads' ), '', '', '', '' ); } elseif ( ! $this->pass_manager->highest_pass_id ) { $utm_parameters = $this->query_args( 'extension-license' ); $link_url = $this->build_url( 'https://easydigitaldownloads.com/your-account/', $utm_parameters ); // Individual product license active, but no pass. printf( /* Translators: %1$s opening anchor tag; %2$s closing anchor tag */ __( 'For access to additional Easy Digital Downloads extensions to grow your store, consider %1$spurchasing a pass%2$s.', 'easy-digital-downloads' ), '', '' ); } elseif ( Pass_Manager::pass_compare( $this->pass_manager->highest_pass_id, Pass_Manager::PERSONAL_PASS_ID, '=' ) ) { $utm_parameters = $this->query_args( 'personal-pass' ); $link_url = $this->build_url( 'https://easydigitaldownloads.com/your-account/', $utm_parameters ); // Personal pass active. printf( /* Translators: %1$s opening anchor tag; %2$s closing anchor tag */ __( 'You are using Easy Digital Downloads with a Personal Pass. Consider %1$supgrading%2$s to get recurring payments and more.', 'easy-digital-downloads' ), '', '' ); } elseif ( Pass_Manager::pass_compare( $this->pass_manager->highest_pass_id, Pass_Manager::EXTENDED_PASS_ID, '>=' ) ) { if ( ! $this->has_affiliate_wp_license() ) { $link_url = edd_link_helper( 'https://affiliatewp.com', array( 'utm_medium' => 'top-promo', 'utm_content' => 'affiliate-wp', ) ); printf( /* Translators: %1$s opening anchor tag; %2$s closing anchor tag */ __( 'Grow your business and make more money with affiliate marketing. %1$sGet AffiliateWP%2$s', 'easy-digital-downloads' ), '', '' ); } elseif( ! $this->has_mi_license() ) { printf( /* Translators: %1$s opening anchor tag; %2$s closing anchor tag */ __( 'Gain access to powerful insights to grow your traffic and revenue. %1$sGet MonsterInsights%2$s', 'easy-digital-downloads' ), '', '' ); } } } catch ( \Exception $e ) { // If we're in here, that means we have an invalid pass ID... what should we do? :thinking:. } } /** * Builds the UTM parameters for the URLs. * * @since 2.10.6 * * @param string $upgrade_from License type upgraded from. * @param string $source Current page. * * @return string[] */ private function query_args( $upgrade_from, $source = '' ) { return array( 'utm_medium' => 'top-promo', 'utm_content' => 'upgrade-from-' . urlencode( $upgrade_from ), ); } /** * Build a link with UTM parameters * * @since 3.1 * * @param string $url The Base URL. * @param array $utm_parameters The UTM tags for the URL. * * @return string */ private function build_url( $url, $utm_parameters ) { return esc_url( edd_link_helper( $url, $utm_parameters ) ); } }