# acymailing/11.0.5/back/Controllers/Users/Subscription.php

AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress, version 11.0.5. 153 lines.

- Page: https://pluginprobe.com/plugins/acymailing/11.0.5/code/back/Controllers/Users/Subscription.php
- Raw: https://pluginprobe.com/plugins/acymailing/11.0.5/raw/back/Controllers/Users/Subscription.php
- Modified: 2026-08-03T10:18:54+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/acymailing/11.0.5/code/back/Controllers/Users/Subscription.php#L10-L20`.

```php
<?php

namespace AcyMailing\Controllers\Users;

use AcyMailing\Classes\UserClass;

trait Subscription
{
    public function resetSubscription(): void
    {
        wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');

        $userId = acym_getVar('int', 'userId');

        if (empty($userId)) {
            $this->listing();

            return;
        }

        $userClass = new UserClass();
        if (!$userClass->hasUserAccess($userId)) {
            die('Access denied for subscription reset of this user');
        }

        $lists = json_decode(acym_getVar('string', 'acym__entity_select__selected', '[]'), true);
        if (empty($lists)) {
            $lists = [];
        }
        $userClass->resetSubscription([$userId], $lists);

        $this->edit();
    }

    public function unsubscribeUser(): void
    {
        wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');

        $userId = acym_getVar('int', 'userId');
        if (empty($userId)) {
            $this->listing();

            return;
        }

        $userClass = new UserClass();
        if (!$userClass->hasUserAccess($userId)) {
            die('Access denied for unsubscribing this user');
        }

        $lists = json_decode(acym_getVar('string', 'acym__entity_select__selected', '[]'), true);
        if (empty($lists)) {
            $lists = [];
        }
        $userClass->unsubscribe([$userId], $lists);

        $this->edit();
    }

    public function unsubscribeUserFromAll(): void
    {
        wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');

        $userId = acym_getVar('int', 'userId');

        if (empty($userId)) {
            $this->listing();

            return;
        }

        $userClass = new UserClass();
        if (!$userClass->hasUserAccess($userId)) {
            die('Access denied for unsubscribing this user');
        }

        $lists = [];
        $subscriptions = $userClass->getSubscriptionStatus($userId);
        foreach ($subscriptions as $i => $oneList) {
            if ($oneList->status == 1) {
                $lists[] = $oneList->list_id;
            }
        }

        $userClass->unsubscribe([$userId], $lists);

        $this->edit();
    }

    public function resubscribeUserToAll(): void
    {
        wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');

        $userId = acym_getVar('int', 'userId');
        if (empty($userId)) {
            $this->listing();

            return;
        }

        $userClass = new UserClass();
        if (!$userClass->hasUserAccess($userId)) {
            die('Access denied for resubscribing this user');
        }

        $lists = [];
        $subscriptions = $userClass->getSubscriptionStatus($userId);
        foreach ($subscriptions as $i => $oneList) {
            if ($oneList->status == 0) {
                $lists[] = $oneList->list_id;
            }
        }

        $userClass->subscribe([$userId], $lists);

        $this->edit();
    }

    public function subscribeUser(bool $returnOnEdit = true, array $lists = [], bool $frontCreation = false): void
    {
        // Called as a task (no argument) → require a CSRF token. Internal calls from apply() are already token-checked.
        if (func_num_args() === 0) {
            wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');
        }

        $userId = acym_getVar('int', 'userId');
        if (empty($userId)) {
            $this->listing();

            return;
        }

        $userClass = new UserClass();
        if (!$frontCreation && !$userClass->hasUserAccess($userId)) {
            die('Access denied for subscribing this user');
        }

        // Can be called from the user's edition page when re-subscribing to a list
        if (empty($lists)) {
            $lists = json_decode(acym_getVar('string', 'acym__entity_select__selected', '[]'), true);
            if (empty($lists)) {
                $lists = [];
            }
        }

        $userClass->subscribe([$userId], $lists);

        if ($returnOnEdit) {
            $this->edit();
        }
    }
}

```
