# Függvények: tagsági állapot, próbaidőszak és elavult ellenőrzések

> Az rcp_get_subscription_id(), rcp_get_subscription_member_count(), rcp_get_user_payments(), rcp_has_used_trial(), rcp_is_active(), rcp_is_expired(), rcp_is_recurring() és rcp_is_pending_verification() függvény.

Egyedi kódhoz tartozó függvények, ezért a bevezetésükhöz érdemes fejlesztő segítségét kérni. A tagságok több példányos kezelése miatt a régi, felhasználóra épülő függvények többsége elavult: lent mindegyiknél ott a javasolt helyettesítő.

## rcp_get_subscription_id()

Elavult. A felhasználó elsődleges tagságának tagsági szint-azonosítóját adja vissza (a tagság `object_id` értéke). Belül a régi `RCP_Member` osztályt és az ügyfél egyetlen, elsődleges tagságát használja. A régi szűrője: `rcp_member_get_subscription_id`.

Ha egy felhasználónak több tagsága is lehet, használd helyette az `rcp_get_customer_membership_level_ids()` függvényt.

- `$user_id` (egész): a felhasználó azonosítója. Alapérték: `0`, vagyis a bejelentkezett felhasználó.

Visszatérési érték: a tagsági szint azonosítója (egész), vagy `false`, ha nincs.

```php
$level_id = rcp_get_subscription_id();

if ( 2 === (int) $level_id ) {
	// Az elsődleges tagság a 2-es szintű.
}
```

Az ajánlott megoldás:

```php
$customer  = rcp_get_customer_by_user_id( $user_id );
$level_ids = $customer ? rcp_get_customer_membership_level_ids( $customer->get_id() ) : array();
```

## rcp_get_subscription_member_count()

Megadja, hány tagság van egy tagsági szinten egy adott állapotban. A számokat a tagsági szint metaadatai között gyorsítótárazza, és üres érték esetén újraszámolja.

Az `active` és a `free` állapotnál a bővítmény szétválasztja a fizetős és az ingyenes aktív tagokat (az összeg alapján). A többi állapotot az `rcp_count_memberships()` függvény számolja az `object_id` és a `status` alapján. Szűrő: `rcp_get_subscription_member_count`.

- `$id` (egész): a tagsági szint azonosítója.
- `$status` (szöveg): az állapot. Alapérték: `active`. Az aktív, ingyenes tagságokat a `free` adja.

Visszatérési érték: a tagok száma (egész), legalább `0`.

```php
$paid_active = rcp_get_subscription_member_count( 3, 'active' );
$free_active = rcp_get_subscription_member_count( 3, 'free' );
$expired     = rcp_get_subscription_member_count( 3, 'expired' );
```

Ha nem szintenként kell számolni, hanem szűrőkkel, használd az `rcp_count_memberships()` függvényt:

```php
$total_on_level = rcp_count_memberships(
	array(
		'object_id' => 3,
		'status'    => 'active',
	)
);
```

## rcp_get_user_payments()

Elavult. Egy felhasználó fizetéseit adja vissza az `RCP_Payments::get_payments()` metóduson át. Új kódban az ügyfél `get_payments()` metódusát használd.

- `$user_id` (egész): a WordPress-felhasználó azonosítója. Alapérték: `0`, vagyis a bejelentkezett felhasználó.
- `$args` (tömb): nem kötelező lekérdezési felülbírálások, ezeket a bővítmény összefésüli a `user_id` értékkel.

Visszatérési érték (tömb): a fizetések az adatbázisból. Üres tömb, ha hiányzik vagy érvénytelen a `$user_id`.

```php
$payments = rcp_get_user_payments( $user_id );

foreach ( $payments as $payment ) {
	// Jellemző tulajdonságok: id, amount, date, status, transaction_id, membership_id stb.
}
```

Az ajánlott megoldás:

```php
$customer = rcp_get_customer_by_user_id( $user_id );
$payments = $customer ? $customer->get_payments() : array();
```

Kapcsolódik hozzá az `RCP_Payments` osztály és a fizetések meta API-ja.

## rcp_has_used_trial()

Elavult. Megmondja, hogy a felhasználó használt-e már ingyenes próbaidőszakot (vagy rajta van-e a „próba felhasználva” jelölő). A bővítmény a regisztrációnál ezzel akadályozza meg az ismételt ingyenes próbát. A függvény visszafelé kompatibilitásból még az `RCP_Member::has_trialed()` metódust hívja.

- `$user_id` (egész): a felhasználó azonosítója. Alapérték: `0`, vagyis a bejelentkezett felhasználó.

Visszatérési érték (logikai): `true`, ha a felhasználó már próbálkozott; különben `false`.

```php
if ( rcp_has_used_trial() ) {
	// Rejtsd el a próbaidőszakos árat, vagy mutass váltásra ösztönző üzenetet.
}
```

Új kódban az ügyfél metódusát használd:

```php
$customer = rcp_get_customer_by_user_id( $user_id );
if ( $customer && $customer->has_trialed() ) {
	// Az ajánlott ellenőrzés.
}
```

Összehasonlításul: az `rcp_is_trialing()` azt mondja meg, hogy a tagság éppen próbaidőszakban van-e.

## rcp_is_active()

Elavult. Azt ellenőrzi, hogy a felhasználónak van-e aktív, fizetős előfizetése (a próbaidőszakot is beleértve). Belül az `rcp_user_has_paid_membership()` függvényt hívja. Használd közvetlenül azt, vagy az `rcp_user_has_active_membership()` függvényt, ha bármilyen aktív tagság számít, az ingyenes szintek is.

- `$user_id` (egész): a felhasználó azonosítója. Alapérték: `0`, vagyis a bejelentkezett felhasználó.

Visszatérési érték (logikai): `true`, ha aktív fizetős tagsága van (vagy próbaidőszakban van), különben `false`.

```php
if ( rcp_user_has_paid_membership( $user_id ) ) {
	// Fizetős (vagy próbaidőszakos) tag.
}
```

```php
if ( rcp_user_has_active_membership( $user_id ) ) {
	// Bármilyen aktív tagság, az ingyenes is.
}
```

## rcp_is_expired()

Elavult. A régi `RCP_Member` objektummal ellenőrzi, hogy a felhasználó tagsága lejárt-e. Egy konkrét tagságnál az `rcp_membership_is_expired()`, annak eldöntésére pedig, hogy az ügyfélnek van-e bármilyen lejárt (`expired` állapotú) tagsága, az `rcp_user_has_expired_membership()` való.

- `$user_id` (egész): a felhasználó azonosítója. Alapérték: `0`, vagyis a bejelentkezett felhasználó.

Visszatérési érték (logikai): `true`, ha a régi ellenőrzés szerint lejárt, különben `false`.

Egy tagság ellenőrzése:

```php
if ( rcp_membership_is_expired( 456 ) ) {
	// A 456-os tagság lejárt.
}
```

Annak ellenőrzése, hogy a felhasználónak van-e lejárt tagsága:

```php
if ( rcp_user_has_expired_membership( $user_id ) ) {
	// Az ügyfélnek legalább egy lejárt tagsága van.
}
```

## rcp_is_recurring()

Elavult. A régi `RCP_Member` objektummal ellenőrzi, hogy a felhasználónak ismétlődő előfizetése van-e.

- `$user_id` (egész): a felhasználó azonosítója. Alapérték: `0`, vagyis a bejelentkezett felhasználó.

Visszatérési érték (logikai): `true`, ha a régi ellenőrzés szerint ismétlődő az előfizetés, különben `false`.

Egy konkrét tagságnál töltsd be a tagságot az `rcp_get_membership()` függvénnyel, és hívd a `$membership->is_recurring()` metódust (vagy az `rcp_membership_is_recurring()` segédfüggvényt):

```php
$membership = rcp_get_membership( 123 );
if ( $membership && $membership->is_recurring() ) {
	// A 123-as tagság ismétlődő.
}
```

## rcp_is_pending_verification()

Megmondja, hogy a felhasználó ügyfélrekordjának e-mail-megerősítési állapota `pending` (függőben) van-e. Ez akkor értelmezhető, ha az e-mail-beállításoknál be van kapcsolva az e-mail-cím megerősítésének kérése. Az ügyfelet az `rcp_get_customer_by_user_id()` függvénnyel tölti be.

- `$user_id` (egész): a felhasználó azonosítója. Alapérték: `0`, vagyis a bejelentkezett felhasználó.

Visszatérési érték (logikai): `true`, ha van ügyfél, és megerősítésre vár. `false`, ha nem vár, nincs ügyfél, vagy a `$user_id` üres és senki sincs bejelentkezve.

```php
if ( rcp_is_pending_verification() ) {
	// A bejelentkezett felhasználónak előbb meg kell erősítenie az e-mail-címét.
}
```

```php
if ( rcp_is_pending_verification( $user_id ) ) {
	// Megerősítést kérő üzenet vagy sablonlogika.
}
```

Kapcsolódó szűrő: `rcp_require_email_verification`. Az ügyfél megfelelő metódusa: `RCP_Customer::is_pending_verification()`.
