# Függvények: ügyfél és tagság létrehozása

> Az rcp_add_customer(), rcp_add_membership(), rcp_add_user_to_subscription(), rcp_add_member_note() és rcp_get_customer() függvények paraméterei és példái.

Ezek a függvények ügyfelet és tagságot hoznak létre vagy kérnek le kódból. Egyedi kód, ezért a bevezetéséhez érdemes fejlesztő segítségét kérni.

## rcp_add_customer()

Új RCP ügyfélrekordot hoz létre. Megadhatsz egy meglévő WordPress-felhasználói azonosítót (`user_id`), vagy `user_args` tömböt, ebből a bővítmény a `wp_insert_user()` függvénnyel létrehozza a felhasználót is. `false` az eredmény, ha hiányzik egy kötelező felhasználói mező, a felhasználó létrehozása nem sikerül, vagy az adott felhasználóhoz már van ügyfél.

A `$data` tömb elemei (mind elhagyható, hacsak nincs másképp jelölve):

| Kulcs | Típus | Jelentés |
|---|---|---|
| `user_id` | egész | A WordPress-felhasználó azonosítója. |
| `user_args` | tömb | A `wp_insert_user()` argumentumai új fiókhoz. Ha nincs `user_id`, kötelező: `user_login`, `user_email`, `user_pass`. |
| `date_registered` | szöveg | MySQL-dátum és idő. Alapérték: a jelenlegi idő. |
| `email_verification` | szöveg | `none`, `pending` vagy `verified`. Érvénytelen értéket figyelmen kívül hagy. |
| `last_login` | szöveg | Az utolsó belépés ideje (MySQL-dátum). |
| `ips` | tömb | Ismert IP-címek (szerializálva tárolódnak). |
| `notes` | szöveg | Admin jegyzetek. |
| `has_trialed` | egész | Volt-e már próbaidőszaka. Alapérték: `0`. |

Visszatérési érték: az új ügyfél azonosítója (egész), hiba esetén `false`.

Meglévő felhasználó összekötése:

```php
$customer_id = rcp_add_customer( array(
	'user_id' => 42,
) );
```

Felhasználó és ügyfél együtt:

```php
$customer_id = rcp_add_customer( array(
	'user_args' => array(
		'user_login' => 'minta_tag',
		'user_email' => 'tag@example.com',
		'user_pass'  => 'biztonsagos-jelszo',
	),
) );
```

## rcp_get_customer()

Egy ügyfélrekordot kér le azonosító alapján. A `$customer_id` paraméter `0` értékével a bejelentkezett felhasználó ügyfele töltődik be. Siker esetén `RCP_Customer` objektumot ad, ha nincs ilyen ügyfél, `false`-t.

```php
$customer = rcp_get_customer( 12 );
```

## rcp_add_membership()

Új tagságrekordot ír az adatbázisba. A függvényhez Restrict Content Pro 3.0 vagy újabb kell. Egyedi regisztrációs folyamatokhoz, importhoz és admin automatizáláshoz való. Aktív tagságnál a létrehozás után érdemes meghívni az `RCP_Membership::activate()` metódust, hogy a szerepkörök és az üdvözlő e-mail is lefusson. Meglévő tagság módosításához az `rcp_update_membership()` függvényt vagy az `RCP_Membership` objektum metódusait használd.

A `$data` tömb kulcsai:

**Kötelező**

| Kulcs | Jelentés |
|---|---|
| `customer_id` | Az `RCP_Customer` azonosítója, akihez a tagság tartozik. |

**Gyakori**

| Kulcs | Jelentés |
|---|---|
| `object_id` | A tagsági szint azonosítója. Érvényes szintnek kell lennie, különben a létrehozás sikertelen. |
| `object_type` | Az objektum típusa. Alapérték: `membership`. |
| `status` | `pending`, `active`, `cancelled` vagy `expired`. Alapérték: `pending`. A régi `free` értéket `active`-ra alakítja. |
| `signup_method` | `live`, `manual` vagy `imported`. Alapérték: `live`. |

**Összegek és számlázás**

| Kulcs | Jelentés |
|---|---|
| `currency` | Pénznem. Alapérték: az oldal pénzneme (`rcp_get_currency()`). |
| `initial_amount` | A kezdeti díj. Ha kimarad, a szintből számolódik. |
| `recurring_amount` | A megújítás összege. Ha kimarad, a szintből számolódik. |
| `auto_renew` | Be van-e kapcsolva az automatikus megújítás. Alapérték: `false`. |
| `times_billed` | Eddigi számlázások száma. Alapérték: `0`. |
| `maximum_renewals` | Részletfizetésnél a megújítások felső határa (`0` = korlátlan). Alapérték: `0`. |

**Dátumok**

| Kulcs | Jelentés |
|---|---|
| `created_date` | Létrehozás ideje (MySQL-dátum). Alapérték: a jelenlegi idő. |
| `trial_end_date` | A próbaidőszak vége. Automatikusan is beállhat, ha az ügyfél jogosult próbaidőszakra és a szint engedi. |
| `renewed_date` | Az utolsó megújítás ideje. |
| `cancellation_date` | A lemondás ideje. |
| `expiration_date` | A lejárat vagy a következő megújítás ideje. Ha üresen hagyod, a szint (és a váltás körülményei) alapján számolódik. A `none` érték lejárat nélküli tagságot jelent. |

**Fizetési átjáró**

| Kulcs | Jelentés |
|---|---|
| `gateway` | Az átjáró azonosítója (slug). |
| `gateway_customer_id` | Az ügyfél azonosítója az átjárónál (például Stripe `cus_…`). |
| `gateway_subscription_id` | Az előfizetés azonosítója az átjárónál (például Stripe `sub_…`). |
| `subscription_key` | Egyedi kulcs. Ha kimarad, a tagság metódusain át mentve generálódik. |

**Egyéb**

| Kulcs | Jelentés |
|---|---|
| `user_id` | WordPress-felhasználói azonosító. Ha kimarad, az ügyfélből töltődik ki. |
| `upgraded_from` | Annak a tagságnak az azonosítója, amelyből ezt a tagságot frissítéssel hozták létre. |
| `notes` | Jegyzetek a tagsághoz. Utólagos jegyzethez a `RCP_Membership::add_note()` metódust használd. |
| `disabled` | `0` engedélyezett, `1` letiltott (puha törlés). Alapérték: `0`. |

Visszatérési érték: az új tagság azonosítója, hiba esetén `false` (hiányzó `customer_id`, érvénytelen szint vagy adatbázishiba).

Aktív tagság létrehozása az 50-es ügyfélnek a 2-es szinten:

```php
$membership_id = rcp_add_membership( array(
	'customer_id' => 50,
	'object_id'   => 2,
	'status'      => 'active',
) );

if ( $membership_id ) {
	$membership = rcp_get_membership( $membership_id );
	$membership->activate();
}
```

Kézi hozzáadás megadott lejárattal:

```php
$membership_id = rcp_add_membership( array(
	'customer_id'     => 50,
	'object_id'       => 2,
	'status'          => 'active',
	'signup_method'   => 'manual',
	'expiration_date' => '2026-12-31 23:59:59',
) );
```

## rcp_add_user_to_subscription()

Egy WordPress-felhasználóhoz tagsági szintet rendel: ha kell, létrehozza az RCP ügyfelet, majd új tagságot ad hozzá, vagy megújítja a meglévőt. Ha az ügyfélnek már van ilyen szintű tagsága, nem készül másolat, hanem a meglévő megújul. Siker esetén lefut az `rcp_successful_registration` akció.

A függvény a 3.0-s verziótól elavult. Új kódban az `rcp_add_membership()` vagy az `RCP_Customer::add_membership()` metódus a javasolt.

Paraméterek:

- `$user_id` (egész): a WordPress-felhasználó azonosítója.
- `$args` (tömb): a tagság adatai. Csak a `subscription_id` kötelező.

| Kulcs | Jelentés |
|---|---|
| `subscription_id` | Kötelező. A tagsági szint azonosítója. |
| `status` | `active`, `cancelled`, `expired` vagy a régi `free` (aktívként kezeli). Alapértéke a szint alapján számolódik. |
| `expiration` | Lejárat (MySQL-dátum). Ha kimarad, kiszámolódik. |
| `discount_code` | Kedvezménykód. Rögzíti a használatot és növeli a kód használatszámát. |
| `subscription_key` | Előfizetési kulcs. |
| `trial_duration` | Próbaidőszak hossza. Megadásakor a tagság próbaidőszakos lesz. |
| `trial_duration_unit` | `day`, `month` vagy `year`. Alapérték: `day`. |
| `recurring` | Az `auto_renew` beállítása. Alapérték: `false`. |
| `payment_profile_id` | Az átjáró előfizetés- vagy profilazonosítója. |

Visszatérési érték: `true` siker esetén, `false`, ha hiányzik vagy érvénytelen a szint azonosítója, vagy a tagság létrehozása nem sikerül.

```php
$added = rcp_add_user_to_subscription(
	$user_id,
	array(
		'subscription_id' => 2,
		'status'          => 'active',
	)
);
```

Az új megoldás ugyanerre:

```php
$customer = rcp_get_customer_by_user_id( $user_id );
if ( $customer ) {
	rcp_add_membership(
		array(
			'customer_id' => $customer->get_id(),
			'object_id'   => 2,
			'status'      => 'active',
		)
	);
}
```

A kézi tagságfelvételről az admin felületen a „Tagság kézi hozzáadása” fejezet szól.

## rcp_add_member_note()

Admin jegyzetet fűz a felhasználó RCP ügyfélrekordjához, amely az ügyfél adminisztrációs képernyőjén látszik. Ha a felhasználónak még nincs ügyfélrekordja, nem csinál semmit.

A függvény a 3.0-s verziótól elavult. Ha ismered az ügyfél azonosítóját, az `rcp_add_customer_note( $customer_id, $note )` függvényt használd. Ugyanez elérhető az `RCP_Customer` objektum `add_note()` metódusával is.

- `$user_id` (egész): a WordPress-felhasználó azonosítója. Alapérték: `0`.
- `$note` (szöveg): a jegyzet szövege. Alapérték: üres.

Nincs visszatérési értéke.

```php
rcp_add_member_note( $user_id, 'Kézi hosszabbítás az év végéig.' );
```

```php
$customer = rcp_get_customer_by_user_id( $user_id );
if ( $customer ) {
	rcp_add_customer_note( $customer->get_id(), 'Személyazonosság ellenőrizve az ügyfélszolgálaton.' );
}
```
