# Csoportfiókok fejlesztőknek: objektumok, függvények, akciók és szűrők

> A Group Accounts PHP-felülete: a csoport és csoporttag objektumok, a lekérdező függvények, a csoportmeta, az akciók és a szűrők.

Ez a fejezet a Group Accounts programozói felületét foglalja össze. A csoport- és csoporttag-objektumok, valamint a hozzájuk tartozó függvények a Group Accounts 2.0-s vagy újabb változatában érhetők el.

## A csoport objektum (`RCPGA_Group`)

Egy csoport minden adatát tartalmazza. Az `rcpga_get_group()` függvénnyel kapod meg.

| Metódus | Mit ad vissza |
| --- | --- |
| `get_group_id()` | A csoport azonosítóját. |
| `get_owner_id()` | A tulajdonos felhasználói azonosítóját. |
| `get_owner()` | A tulajdonos `WP_User` objektumát. |
| `get_membership_id()` | A csoporthoz kapcsolt tagság azonosítóját, vagyis a tulajdonos tagságáét. |
| `is_active()` | Igaz, ha a csoport aktív, azaz a hozzá tartozó tagság aktív. |
| `get_name()` | A csoport nevét. |
| `get_description()` | A csoport leírását. |
| `get_code()` | A csoportkódot (2.1-től). |
| `get_seats()` | A csoport legnagyobb férőhelyszámát. |
| `get_member_count()` | A csoport jelenlegi tagjainak számát. |
| `get_date_created( $formatted = false )` | A létrehozás dátumát. Ha `$formatted` hamis, `Y-m-d H:i:s` formátumban, ha igaz, megjelenítésre kész szövegként. |
| `get_members()` | A csoport tagjait `RCPGA_Group_Member` objektumok tömbjeként. |
| `update( $args = array() )` | Módosítja a csoportot a megadott adatokkal. |
| `add_member( $args )` | Új tagot ad a csoporthoz. |

```php
$group = rcpga_get_group( 1 );
$group->update( array(
    'name' => 'Új csoportnév'
) );
```

Az `add_member()` paraméterei:

| Paraméter | Típus | Leírás |
| --- | --- | --- |
| `user_email` | string | Kötelező. A hozzáadandó tag e-mail-címe. Létező felhasználó vagy olyan is lehet, aki még nem létezik, ekkor új fiók jön létre. |
| `user_login` | string | Nem kötelező. Az új tag felhasználóneve, megadás nélkül az e-mail-cím. |
| `first_name` | string | Nem kötelező. Keresztnév. |
| `last_name` | string | Nem kötelező. Vezetéknév. |
| `user_pass` | string | Nem kötelező. Jelszó, megadás nélkül véletlenszerű. |
| `role` | string | Nem kötelező. Szerepkör: `owner`, `admin`, `member` vagy `invited`. Alapértelmezés: `invited`. |
| `send_invite` | bool | Nem kötelező. Küldjön-e meghívó e-mailt. Alapértelmezés: igen. |

Siker esetén az új csoporttag azonosítóját adja vissza, hiba esetén `WP_Error` objektumot.

```php
$group = rcpga_get_group( 1 );
$group->add_member( array(
    'user_email'  => 'tag@example.com',
    'role'        => 'invited',
    'send_invite' => true
) );
```

## Csoportfüggvények

| Függvény | Mit csinál |
| --- | --- |
| `rcpga_get_group( $group_id )` | `RCPGA_Group` objektumot ad vissza, vagy hamisat, ha nincs ilyen csoport. |
| `rcpga_get_groups( $args = array() )` | Csoportokat kérdez le, `RCPGA_Group` objektumok tömbjét adja. |
| `rcpga_count_groups( $args = array() )` | Megszámolja a csoportokat, ugyanazokkal az argumentumokkal, mint a lekérdezés. |
| `rcpga_add_group( $args = array() )` | Új csoportot hoz létre. Siker esetén az azonosítót adja, hiba esetén `WP_Error`-t. |

Az `rcpga_get_groups()` argumentumai (mind elhagyható):

| Argumentum | Leírás |
| --- | --- |
| `owner_id` | Szűrés a tulajdonos felhasználói azonosítójára. |
| `name` | Keresés a csoport nevében. |
| `code` | Keresés a csoportkódban (2.1-től). |
| `date_created_query` | Szűrés a létrehozás dátumára, a `WP_Date_Query` formátumában. |
| `number` | Legfeljebb ennyi találat. Alapérték: 20. |
| `offset` | Ennyi találat kihagyása. Alapérték: 0. |
| `orderby` | Rendezés: `group_id`, `owner_id`, `name`, `seats`, `member_count`, `date_created`. Alapérték: `group_id`. |
| `order` | `ASC` vagy `DESC`. Alapérték: `DESC`. |
| `search` | Keresés. |

Az `rcpga_add_group()` argumentumai:

| Argumentum | Leírás |
| --- | --- |
| `owner_id` | Kötelező. A tulajdonos felhasználói azonosítója. |
| `membership_id` | Nem kötelező. A hozzá tartozó tagság azonosítója, a tulajdonosé. Ha nem adod meg, a csoport nem lesz teljesen aktív és használható. |
| `name` | Kötelező. A csoport neve. |
| `description` | Nem kötelező. A csoport leírása. |
| `seats` | Nem kötelező. Legnagyobb férőhelyszám. Ha kimarad, és a `membership_id` meg van adva, a tagsági szint beállítása alapján számolódik. |
| `member_count` | Nem kötelező. A jelenlegi tagok száma, alapértelmezés: 1 (a tulajdonossal együtt). |

## Csoportmeta

A csoportmeta a Group Accounts 2.1-es vagy újabb változatában érhető el. A függvények ugyanúgy működnek, mint a bejegyzések metaadatainál.

| Függvény | Megfelelője |
| --- | --- |
| `RCPGA\Groups\get_meta( $group_id, $key = '', $single = false )` | `get_post_meta()` |
| `RCPGA\Groups\add_meta( $group_id, $meta_key, $meta_value, $unique = false )` | `add_post_meta()` |
| `RCPGA\Groups\update_meta( $group_id, $meta_key, $meta_value, $prev_value = '' )` | `update_post_meta()` |
| `RCPGA\Groups\delete_meta( $group_id, $meta_key, $meta_value = '' )` | `delete_post_meta()` |

## A csoporttag objektum (`RCPGA_Group_Member`)

| Metódus | Mit csinál |
| --- | --- |
| `get_id()` | A csoporttag egyedi azonosítóját adja. Ez nem a felhasználói azonosító. |
| `get_user_id()` | A felhasználói azonosítót adja. |
| `get_group_id()` | Annak a csoportnak az azonosítóját adja, amelyben a tag van. |
| `get_role()` | A tag szerepkörét adja: `owner`, `admin`, `member` vagy `invited`. |
| `get_date_added( $formatted = false )` | A csoporthoz adás dátumát adja, a `get_date_created()` mintájára. |
| `update( $data = array() )` | Módosítja a csoporttag rekordját. |
| `remove()` | Eltávolítja a tagot a csoportból. |
| `resend_invite()` | Újra elküldi a meghívó e-mailt. |

## Csoporttag-függvények

| Függvény | Mit csinál |
| --- | --- |
| `rcpga_get_group_member( $user_id, $group_id )` | Egy felhasználó csoporttag-rekordját adja egy adott csoportban. Siker esetén `RCPGA_Group_Member` objektum, különben hamis. |
| `rcpga_get_group_member_by_id( $id )` | A csoporttagot az egyedi azonosítója alapján adja. |
| `rcpga_get_group_members( $args = array() )` | Csoporttag-rekordokat kérdez le. |
| `rcpga_count_group_members( $args = array() )` | Megszámolja a csoporttagokat, ugyanazokkal az argumentumokkal. |
| `rcpga_delete_all_members_of_group( $group_id )` | Törli a megadott csoport összes tagját. |
| `rcpga_user_is_group_member( $user_id = 0, $role = '' )` | Megmondja, hogy a felhasználó tagja-e bármelyik csoportnak. A `$user_id` alapértéke a bejelentkezett felhasználó, a `$role` megadásával egy adott szerepkörre szűkíthetsz. |
| `rcpga_user_is_member_of_group( $user_id, $group_id )` | Megmondja, hogy a felhasználó tagja-e a megadott csoportnak. |

Az `rcpga_get_group_members()` argumentumai (mind elhagyható):

| Argumentum | Leírás |
| --- | --- |
| `user_id` | Szűrés felhasználói azonosítóra. |
| `user_id__in` | Felhasználói azonosítók tömbje. |
| `group_id` | Szűrés csoportazonosítóra. |
| `group_id__in` | Csoportazonosítók tömbje. |
| `role` | Szűrés a csoporton belüli szerepkörre. |
| `number` | Legfeljebb ennyi rekord. Alapérték: 20. |
| `offset` | Ennyi rekord kihagyása. Alapérték: 0. |
| `orderby` | Rendezés: `id`, `user_id`, `group_id`, `role`, `date_created`. Alapérték: `id`. |
| `order` | `ASC` vagy `DESC`. Alapérték: `DESC`. |

Példa: az aktuális felhasználó azon csoporttagságainak lekérdezése, ahol „member” vagy „admin”, és a csoport tulajdonosának azonosítója:

```php
$group_memberships = rcpga_get_group_members( array(
    'user_id'  => get_current_user_id(),
    'role__in' => array( 'member', 'admin' )
) );
foreach ( $group_memberships as $group_membership ) {
    $group = $group_membership->get_group();
    if ( $group instanceof RCPGA_Group ) {
        // A csoport tulajdonosának felhasználói azonosítója.
        $group_owner_user_id = $group->get_owner_id();
    }
}
```

Annak ellenőrzése, hogy az aktuális felhasználó tagja-e valamelyik csoportnak, illetve admin-e valamelyikben:

```php
$is_group_member       = rcpga_user_is_group_member( get_current_user_id() );
$is_admin_group_member = rcpga_user_is_group_member( get_current_user_id(), 'admin' );
```

## Egyéb függvények

| Függvény | Mit csinál |
| --- | --- |
| `rcpga_send_group_invite( $user_id )` | Elküldi a csoportmeghívó hivatkozást a megadott felhasználónak. |
| `rcpga_get_level_group_seats_allowed( $level_id )` | A tagsági szinthez engedélyezett férőhelyek számát adja. |
| `rcpga_is_level_group_accounts_enabled( $level_id )` | Igazat ad, ha a szinten be van kapcsolva a csoportfiók. |
| `rcpga_get_group_enabled_levels()` | Azoknak a tagsági szinteknek az azonosítóit adja, amelyeken a csoportfiók be van kapcsolva. |

## Elavult függvények

A 2.0-s változatban elavultak lettek az alábbiak. Új kódban használd helyettük a fenti függvényeket.

| Függvény | Mit csinált |
| --- | --- |
| `rcpga_group_accounts()->groups->get_owner_id( $group_id = 0 )` | A csoport tulajdonosának azonosítóját adta. |
| `rcpga_group_accounts()->groups->get_group_by_owner( $owner_id )` | A tulajdonos azonosítójából adta a csoport adatait. |
| `rcpga_group_accounts()->groups->is_group_active( $group_id = 0 )` | Igaz, ha a tulajdonos előfizetése még aktív. |
| `rcpga_group_accounts()->groups->get_groups( $args = array() )` | Csoportokat kérdezett le (`number` 20, `offset` 0, `status`, `order` `DESC`, `orderby` `group_id`, `where`). |
| `rcpga_group_accounts()->groups->add( $args = array() )` | Új csoportot hozott létre (`owner_id` kötelező, `description`, `name`, `seats`, `member_count`, `date_created`). |
| `rcpga_group_accounts()->groups->update( $group_id, $args = array() )` | Módosította a csoport adatait. |
| `rcpga_group_accounts()->members->get_members( $group_id, $args = array() )` | A csoport tagjait adta (`number` 20, `offset` 0). |
| `rcpga_group_accounts()->members->is_group_owner( $user_id = 0 )` | Igaz, ha a felhasználó csoporttulajdonos. |
| `rcpga_group_accounts()->members->is_group_admin( $user_id = 0 )` | Igaz, ha a felhasználó csoportadmin. |
| `rcpga_group_accounts()->members->is_group_member( $user_id = 0 )` | Igaz, ha a felhasználó csoporttag. |
| `rcpga_group_accounts()->members->get_role( $user_id = 0 )` | A felhasználó szerepkörét adta, vagy hamisat, ha nincs csoportban. |
| `rcpga_group_accounts()->members->get_group_name( $user_id = 0 )` | A felhasználó csoportjának nevét adta. |
| `rcpga_group_accounts()->members->get_group_id( $user_id = 0 )` | A felhasználó csoportjának azonosítóját adta. |
| `rcpga_group_accounts()->members->add( $args = array() )` | Tagot adott a csoporthoz (`user_id`, `group_id`, `role`, `date_added`). |
| `rcpga_group_accounts()->members->remove( $user_id )` | Eltávolította a felhasználót minden csoportból. |
| `rcpga_group_accounts()->members->remove_all_from_group( $group_id )` | Minden tagot eltávolított egy csoportból. |
| `rcpga_add_member_to_group( $args )` | Tagot adott a csoporthoz, és ha a felhasználó nem létezett, létrehozta (`user_email`, `group_id`, `send_invite`). Siker esetén a felhasználó azonosítóját adta. |

## Akciók

| Akció | Mikor fut le | Paraméterek |
| --- | --- | --- |
| `rcpga_add_member_to_group_after` | Közvetlenül azután, hogy új felhasználó került a csoportba. A `$_POST` adatok elérhetők. | `$user_id` (int): az új tag felhasználói azonosítója. `$args` (array): a hozzáadás argumentumai, például `group_id`, `user_email`, `user_login`, `first_name`, `last_name`, `user_pass`, `send_invite`, `role`. |
| `rcpga_send_group_invite` | Közvetlenül a meghívó e-mail elküldése után. | `$user_id` (int): akinek a meghívót küldték. `$email` (string): a cím, ahová küldték. |
| `rcpga_remove_member` | Közvetlenül azután, hogy egy tagot eltávolítottak a csoportból. | `$user_id` (int): a tag felhasználói azonosítója. `$group_id` (int): a csoport azonosítója. |

## Szűrők

| Szűrő | Mit módosíthatsz vele | Paraméterek |
| --- | --- | --- |
| `rcpga_invite_user_args` | A csoporthoz adott új tag argumentumait. | `$args` (array): `group_id`, `user_email`, `user_login`, `first_name`, `last_name`, `user_pass`, `send_invite`, `role`. |
| `rcpga_send_group_invite_args` | A meghívó e-mailt: a címzettet, a tárgyat és az üzenetet. | `$email_info` (array): `to`, `subject`, `message`, `headers`. `$user_id` (int): a címzett felhasználó azonosítója. |
| `rcpga_get_level_group_seats_allowed` | Egy tagsági szinthez engedélyezett férőhelyek számát. | `$number` (int): a férőhelyek száma. `$level_id` (int): a szint azonosítója. |
| `rcpga_is_level_group_accounts_enabled` | Azt, hogy egy szinten be van-e kapcsolva a csoportfiók. | `$enabled` (bool). `$level_id` (int). |
| `rcpga_get_member_role_label` | A szerepkörök megjelenített nevét (Owner, Admin, Member, Invited). | `$label` (string): a megjelenő név. `$role` (string): a szerepkör kulcsa (`owner`, `admin`, `member`, `invited`). |

Példa: az „Owner” felirat átnevezése „Vezető”-re:

```php
function pelda_rcpga_get_member_role_label( $label, $role ) {
    if ( 'owner' === $role ) {
        $label = __( 'Vezető' );
    }

    return $label;
}
add_filter( 'rcpga_get_member_role_label', 'pelda_rcpga_get_member_role_label', 10, 2 );
```
