PHP code example of emeefe / subscriptions

1. Go to this page and download the library: Download emeefe/subscriptions library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

emeefe / subscriptions example snippets


[
    'tables' => [
        'plans' => 'plans',
        'plan_types' => 'plan_types',
        'plan_features' => 'plan_features',
        'plan_type_feature' => 'plan_type_feature',
        'plan_feature_values' => 'plan_feature_values',
        'plan_periods' => 'plan_periods',
        'plan_subscriptions' => 'plan_subscriptions',
        'plan_subscription_usage' => 'plan_subscription_usage',
    ],

    'models' => [
        'plan' => \Emeefe\Subscriptions\Models\Plan::class,
        'feature' => \Emeefe\Subscriptions\Models\PlanFeature::class,
        'period' => \Emeefe\Subscriptions\Models\PlanPeriod::class,
        'subscription' => \Emeefe\Subscriptions\Models\PlanSubscription::class,
        'type' => \Emeefe\Subscriptions\Models\PlanType::class,
    ]
]

use Emeefe\Subscriptions\Models\PlanType;
...

$planType = new PlanType();
$planType->type = 'user_plan';
$planType->description = 'The user plan for basic subscriptions on profile'
$planType->save();

use Emeefe\Subscriptions\Models\PlanFeature;
...

$planFeature = new PlanFeature();
$planFeature->display_name = 'Allowed images on galery';
$planFeature->code = 'gallery_images';
$planFeature->description = 'The number of images a user can have in his gallery';
$planFeature->type = PlanFeature::TYPE_LIMIT;
$planFeature->metadata = [
    'formats' => ['jpg', 'png'],
    'max_size_bytes' => '1024'
];
$planFeature->save();

$planType->attachFeature($limitFeature)
    ->attachFeature($unlimitFeature);

$planType->features()->saveMany([
    $limitFeature,
    $unlimitFeature
]);

if($planType->hasFeature('gallery_images')){
    $theFeature = $planType->getFeatureByCode('gallery_images')->id
}

use Emeefe\Subscriptions\Models\Plan;
...

$plan = new Plan();
$plan->display_name = 'Free';
$plan->code = 'free';
$plan->description = 'Free plan for users';
$plan->type_id = $planType->id;
$plan->is_default = true;
$plan->metadata = [
    'order' => 1
];
$plan->is_visible = true;
$plan->save();
        
$plan->assignFeatureLimitByCode('images_feature', 10);
$plan->getFeatureLimitByCode('images_feature');

...

if(!$plan->hasFeature('images_feature')){
    throw new \Exception("You do not have the feature");
}

use Subscriptions;
use Emeefe\Subscriptions\Models\PlanPeriod;

...

$period = Subscriptions::period('Monthly', 'monthly', $plan)
    ->setPrice(100)
    ->setTrialDays(10)
    ->setRecurringPeriod(1, PlanPeriod::UNIT_MONTH)
    ->setToleranceDays(5)
    ->create();

use Emeefe\Subscriptions\Traits\CanSubscribe;

...

class User extends Model{
    use CanSubscribe;
}

if($user->subscribeTo($period)){
    echo "Suscrito";
}else{
    echo "No se pueden tener dos suscripciones sobre el mismo tipo de plan";
}

if($user->hasSubscription('user_membership')){
    echo "El usuario está suscrito al tipo de plan con tipo = user_membership";
}else{
    echo "El usuario no está suscrito al tipo de plan con tipo = user_membership";
}

if($user->currentSubscription($planType)){
    echo "El usuario tiene una suscripción";
}else{
    echo "El usuario no tiene una suscripción";
}

$subscription = $user->currentSubscription($planType);

if($subscription->renew(3)){
    echo "La suscripción ha sido renovada 3 periodos";
}else{
    echo "La suscripción no puede ser renovada";
}

$subscription = $user->currentSubscription($planType);

if($subscription->cancel()){
    echo "La suscripción ha sido cancelada";
}else{
    echo "La suscripción ya ha sido cancelada";
}

...

if($user->updateSubscriptionTo($newPeriod)){
    echo "La suscripción ha sido actualizada";
}else{
    echo "La actualización de suscripción no se pudo realizar";
}
shell
    php artisan vendor:publish --provider='Emeefe\Subscriptions\SubscriptionsServiceProvider'
    
shell
    php artisan migrate