Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs/installer/includes/class-otgs-installer-subscription-warning-message.php
2023-09-12 21:41:04 +02:00

80 lines
3.5 KiB
PHP

<?php
namespace OTGS\Installer;
use OTGS\Installer\FP\Obj;
use OTGS\Installer\FP\Str;
use OTGS_Installer_Subscription;
use function OTGS\Installer\FP\pipe;
class Subscription_Warning_Message {
private $wpInstaller;
private $settings;
private $menuURL;
public function __construct( \WP_Installer $wpInstaller ) {
$this->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 = "<a style='margin-left:0px;' href='{$repositoryURL}' target='_blank'>" . __( 'Renew now or signup for automatic renewals', 'installer' ) . '</a>' . ' ' . __( 'to continue receiving support and updates and never risk losing your renewal discount.', 'installer' ) . '<br>';
}
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 '';
}
}