# Osztályok: RCP_Payments, RCP_Levels és RCP_Emails

> A fizetési tábla, az elavult tagsági szint osztály és az e-mail küldő osztály metódusai, argumentumai és szűrői.

## RCP_Payments: a fizetések

Az osztály a fizetéstáblával dolgozik.

### Fizetés mentése: `insert()`

Az `insert( $payment_data )` metódus argumentumai:

| Argumentum | Típus | Jelentése |
| --- | --- | --- |
| `subscription` | szöveg | A hozzá tartozó tagsági szint neve. |
| `object_id` | egész | A megvásárolt elem azonosítója (például a szint azonosítója). |
| `object_type` | szöveg | Az `object_id` típusa, alapból `subscription`. |
| `date` | szöveg | A fizetés ideje MySQL-formátumban. Kihagyva a pillanatnyi idő. |
| `amount` | szám | A fizetett összeg. |
| `user_id` | egész | A fizető felhasználó azonosítója. |
| `payment_type` | szöveg | A fizetés típusának leírása, például „Credit Card One Time”. |
| `subscription_key` | szöveg | A hozzá tartozó előfizetési kulcs. |
| `transaction_id` | szöveg | Az átjáró tranzakcióazonosítója. |
| `status` | szöveg | `complete`, `pending`, `failed` vagy `refunded`. |
| `gateway` | szöveg | A használt átjáró azonosítója. |
| `subtotal` | szám | Az alapár a jóváírások, díjak és kedvezmények előtt. |
| `credits` | szám | A beszámított jóváírás. |
| `fees` | szám | A beszámított beiratkozási díjak. |
| `discount_amount` | szám | A levont kedvezmény. |
| `discount_code` | szöveg | Az alkalmazott kedvezménykód. |

```php
$payments = new RCP_Payments();
$payments->insert( array(
    'subscription'   => 'Silver',
    'object_id'      => 3,
    'object_type'    => 'subscription',
    'amount'         => 15.50,
    'user_id'        => 3,
    'payment_type'   => 'Credit Card One Time',
    'transaction_id' => '123456789',
    'status'         => 'complete',
    'gateway'        => 'stripe',
    'subtotal'       => 20.00,
    'credits'        => 4.50
) );
```

### Többi metódus

| Metódus | Mit csinál |
| --- | --- |
| `update( $id, $adatok )` | Módosít egy fizetést, az argumentumai az `insert()` argumentumai. |
| `get_payment( $id )` | Egy fizetést ad adatbázissorként. |
| `get_payment_by( $mezo, $ertek )` | Tetszőleges oszlop szerint keres, például tranzakcióazonosító alapján. |
| `get_payments( $args )` | Fizetések tömbjét adja az argumentumok szerint. |
| `delete( $id )` | Törli a fizetést. |
| `get_earnings( $args )` | Kiszámítja a fizetések összbevételét. Szűrhető `subscription`, `user_id` és `date` szerint. |
| `get_meta( $id, $kulcs, $egy )` | Fizetésmeta értéket ad. |
| `add_meta( $id, $kulcs, $ertek, $egyedi )` | Metaadatot ad a fizetéshez. |
| `update_meta( $id, $kulcs, $ertek, $elozo )` | Frissíti a metaadatot, ha nincs, létrehozza. |
| `delete_meta( $id, $kulcs, $ertek )` | Törli a megfelelő metaadatot. |

A `get_payments()` argumentumai:

| Argumentum | Jelentése |
| --- | --- |
| `number` | Legfeljebb ennyi találat (alapból 20). |
| `offset` | Ennyi találat kihagyása (alapból 0). |
| `subscription` | A tagsági szint neve. |
| `user_id` | A felhasználó azonosítója. |
| `date` | Nap, hónap és év értékek tömbje. |
| `fields` | A visszaadott oszlop(ok), kihagyva mind. |
| `status` | Szűrés állapotra. |
| `s` | Keresés az e-mail-címben, az előfizetési kulcsban, a szint nevében vagy a tranzakcióazonosítóban. |
| `order` | `DESC` vagy `ASC`. |
| `orderby` | A rendezés oszlopa. |

```php
$payments = new RCP_Payments();
$payment_results = $payments->get_payments( array( 'number' => 5, 'user_id' => get_current_user_id() ) );

$july_earnings = $payments->get_earnings( array( 'date' => array( 'day' => 01, 'month' => 07, 'year' => 2016 ) ) );
```

## RCP_Levels: az elavult szintosztály

Az osztály a tagsági szintek táblájával dolgozik, elavult. Használható a `$rcp_levels_db` globális változóval vagy új példánnyal.

### Szintek lekérdezése

| Metódus | Mit csinál |
| --- | --- |
| `get_level( $id )` | Egy szintet ad az azonosítója alapján. |
| `get_level_by( $mezo, $ertek )` | Mező szerint keres, például névre. |
| `get_levels( $args )` | Szintek tömbjét adja, vagy hamisat, ha nincs. |
| `get_level_field( $id, $mezo )` | Egy mező értékét adja. |
| `has_trial( $id )` | Van-e a szinten próbaidőszak. |
| `trial_duration( $id )` | A próbaidőszak hossza. |
| `trial_duration_unit( $id )` | A próbaidőszak egysége. |

A szint objektuma ilyen mezőket tartalmaz: `id`, `name`, `description`, `duration`, `duration_unit`, `price`, `fee`, `list_order`, `level` (hozzáférési szint), `status`, `role`, `trial_duration`, `trial_duration_unit`.

A `get_levels()` argumentumai: `status` (`active`, `inactive` vagy `all`, alapból `all`), `limit` (alapból nincs korlát), `orderby` (alapból `list_order`).

```php
$levels_db = new RCP_Levels();
$levels = $levels_db->get_levels( array( 'status' => 'active' ) );
if ( ! empty( $levels ) ) {
    foreach ( $levels as $level ) {
        echo $level->name;
    }
}
```

### Szint mentése, módosítása, törlése

Az `insert( $args )` új szintet ment, az `update( $id, $args )` ugyanazokkal az argumentumokkal módosít, a `remove( $id )` töröl.

| Argumentum | Típus | Jelentése |
| --- | --- | --- |
| `name` | szöveg | A szint neve. |
| `description` | szöveg | Leírás. |
| `duration` | egész vagy `unlimited` | Az időtartam. |
| `duration_unit` | szöveg | `day`, `month` vagy `year`. |
| `trial_duration` | egész | A próba hossza, 0 = nincs. |
| `trial_duration_unit` | szöveg | `day`, `month` vagy `year`. |
| `price` | szám | A szint ára. |
| `fee` | szám | Beiratkozási díj, 0 = nincs. |
| `list_order` | egész | A listában elfoglalt hely (kisebb = előrébb). |
| `level` | egész | A megadott hozzáférési szint. |
| `status` | szöveg | `active` vagy `inactive`. |
| `role` | szöveg | A megadott felhasználói szerepkör. |

### Szintmeta

A szinteknek is van metatáblájuk, mint a bejegyzéseknek:

| Metódus | Mit csinál |
| --- | --- |
| `get_meta( $id, $kulcs, $egy )` | Meta értéket ad. |
| `add_meta( $id, $kulcs, $ertek, $egyedi )` | Metaadatot ad a szinthez. |
| `update_meta( $id, $kulcs, $ertek, $elozo )` | Frissít, vagy létrehoz. |
| `delete_meta( $id, $kulcs, $ertek )` | Törli a megfelelő metaadatot. |
| `remove_all_meta_for_level_id( $id )` | A szint összes metaadatát törli. |

## RCP_Emails: e-mailek küldése

Az osztály a tagoknak és az adminisztrátoroknak szóló levelek összeállítását és küldését végzi. A bővítmények is használhatják, hogy az RCP e-mailsablonjával küldjenek levelet.

### Küldés négy lépésben

1. Hozz létre egy `RCP_Emails` példányt.
2. Állítsd be a `member_id` értékét. Ez akkor fontos, ha tagsági adatokat mutató sablon címkéket használsz.
3. Ha kell, állítsd be a `payment_id` értékét.
4. Hívd a `send()` metódust.

```php
$emails = new RCP_Emails();
$emails->member_id  = 3;
$emails->payment_id = 5;

$to      = 'cimzett@example.com';
$subject = 'Üdv';
$message = 'Az üzeneted.';

$emails->send( $to, $subject, $message );
```

Mellékletet a negyedik paraméterben adhatsz át, fájlútvonalként (szöveg vagy tömb): `$emails->send( $to, $subject, $message, $attachments );`

### Nyilvános metódusok

| Metódus | Mit csinál |
| --- | --- |
| `__set( $kulcs, $ertek )` | Beállít egy tulajdonságot. |
| `get_from_name()` | A feladó nevét adja. |
| `get_from_address()` | A feladó címét adja. |
| `get_content_type()` | A tartalomtípust adja: `text/html` vagy `text/plain`. |
| `get_headers()` | A levélfejléceket adja. |
| `get_templates()` | Az elérhető e-mailsablonok tömbjét adja. |
| `get_template()` | A kiválasztott sablon azonosítóját adja. |
| `get_heading()` | A levél fejlécszövegét adja (az e-mail beállításokban megadott). |
| `build_email( $uzenet )` | HTML-lé alakítja az üzenetet, és beleteszi a sablonba. |
| `send( $to, $subject, $message, $attachments )` | Elküldi a levelet. |
| `send_before()` | A küldés előtt hozzáadja a szűrőket és akciókat. |
| `send_after()` | A küldés után eltávolítja őket. |
| `text_to_html( $uzenet )` | Formázott HTML-lé alakítja a szöveget, a sortöréseket `<br>` és `<p>` elemekké. |
| `get_tags()` | A regisztrált e-mail címkék tömbje (név, leírás, függvény). |
| `email_tag_exists( $cimke )` | Igaz, ha a címke regisztrált. |

### Szűrők

| Szűrő | Mit módosíthatsz vele |
| --- | --- |
| `rcp_emails_from_name` | A feladó nevét. |
| `rcp_emails_from_address` | A feladó címét. |
| `rcp_email_default_content_type` | Az alapértelmezett tartalomtípust (`text/html`). |
| `rcp_email_content_type` | A levélhez kiválasztott tartalomtípust. |
| `rcp_email_headers` | A levélfejléceket. |
| `rcp_email_templates` | Új sablonválasztékot adhatsz a tömbhöz. |
| `rcp_email_template` | A kiválasztott sablont. |
| `rcp_email_heading` | A levél fejlécszövegét. |
| `rcp_email_message` | A levél üzenetét. |
| `rcp_email_attachments` | A mellékleteket küldés előtt. |
| `rcp_email_template_tags` | Új sablon címkét adhatsz hozzá. |
