wpInstaller = $wpInstaller; $this->settings = $wpInstaller->settings; $this->menuURL = $wpInstaller::menu_url(); } public function get( $repositoryId, $subscriptionId ) { $subscription = Obj::path( [ 'repositories', $repositoryId, 'subscription' ], $this->settings ); $subscriptionData = Obj::prop( 'data', $subscription ); $repositoryData = Obj::path( [ 'repositories', $repositoryId, 'data' ], $this->settings ); $repositoryURL = Obj::prop( 'url', $repositoryData ) . '/account/?utm_source=plugin&utm_medium=gui&utm_campaign=wpmlinstaller'; $subscriptionId = $subscriptionId ?: Obj::propOr( 'subscription_type', $subscriptionData ); $expires = Obj::prop( 'expires', $subscriptionData ); $doesntHaveAutoRenewal = isset( $subscriptionData ) && Obj::has( 'hasAutoRenewal', $subscriptionData ) && Obj::prop( 'hasAutoRenewal', $subscriptionData ) === false; $neverExpires = isset( $subscription ) && isset( $subscriptionData ) && ! isset( $expires ) && ( (int) $subscriptionData->status === OTGS_Installer_Subscription::SUBSCRIPTION_STATUS_ACTIVE_NO_EXPIRATION || (int) $subscriptionData->status === OTGS_Installer_Subscription::SUBSCRIPTION_STATUS_ACTIVE ); if ( $this->wpInstaller->repository_has_valid_subscription( $repositoryId ) && ! $neverExpires ) { $subscriptionExpirationPath = [ 'subscriptions_meta', 'expiration', $subscriptionId ]; // Returns true if warning property length > 0 and false otherwise $warningPropertyLength = function ( $propertyName ) use ( $repositoryData, $subscriptionExpirationPath ) { if ( Obj::hasPath( $subscriptionExpirationPath, $repositoryData ) ) { $warningPropertyPath = array_merge( $subscriptionExpirationPath, [ $propertyName ] ); $warningPropertyPathLength = pipe( Obj::path( $warningPropertyPath ), Str::len() ); return $warningPropertyPathLength( $repositoryData ) > 0; } return false; }; $warningDaysSet = $warningPropertyLength( 'days_warning' ); $warningMessageSet = $warningPropertyLength( 'warning_message' ); if ( $warningDaysSet && $warningMessageSet ) { $daysWarning = Obj::path( array_merge( $subscriptionExpirationPath, [ 'days_warning' ] ), $repositoryData ); $customMessage = Obj::path( array_merge( $subscriptionExpirationPath, [ 'warning_message' ] ), $repositoryData ); } else { // defaults $daysWarning = 30; $customMessage = "" . __( 'Renew now or signup for automatic renewals', 'installer' ) . '' . ' ' . __( 'to continue receiving support and updates and never risk losing your renewal discount.', 'installer' ) . '
'; } if ( strtotime( $expires ) < strtotime( sprintf( '+%d day', $daysWarning ) ) ) { if ( $doesntHaveAutoRenewal || ! Obj::has( 'hasAutoRenewal', $subscriptionData ) ) { $daysToExpiration = ceil( ( strtotime( $expires ) - time() ) / 86400 ); $message = sprintf( _n( 'Your subscription expires in %d day.', 'Your subscription expires in %d days.', $daysToExpiration, 'installer' ), $daysToExpiration ); return $message . ' ' . $customMessage; } } } return ''; } }