# Abilities, szűrők, akciók

> Az LW LMS öt abilityje, valamint a hozzáférést, a kvízt, a REST-válaszokat és a letöltést módosító szűrők és akciók.

## Abilities

WordPress 6.9-től az LW LMS öt képességet regisztrál, `lms` kategóriában. Ha az [LW Site Manager](https://hub.hellowp.io/hu/docs/lw-plugins/lw-site-manager/) is aktív, rajta keresztül MCP-n is elérhetők. WordPress 6.6 és 6.8 között a képességek csendben hiányoznak.

A WordPress Abilities REST-felületén hívhatók: `/wp-json/wp-abilities/v1/abilities/<név>/run`, olvasáshoz GET, íráshoz POST `{"input": {...}}` törzzsel.

| Ability | Típus | Jogosultság | Bemenet (kötelező **félkövér**) |
|---|---|---|---|
| `lw-lms/list-courses` | olvasó | `edit_posts` | `per_page` (alap **20**, nem a REST 10-es alapja), `page` |
| `lw-lms/get-course` | olvasó | `edit_posts` | **`course_id`** |
| `lw-lms/get-progress` | olvasó | `manage_lms` vagy `manage_options` | **`user_id`**, **`course_id`** |
| `lw-lms/set-progress` | író | `manage_lms` vagy `manage_options` | **`user_id`**, **`course_id`**, **`lesson_id`**, **`status`** |
| `lw-lms/get-options` | olvasó | `manage_options` | nincs |

A `set-progress` `status` értéke `completed`, `in_progress` vagy `not_started`. Visszaállításkor az elvégzés időbélyege elvész.

```bash title="Terminál"
curl -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" "https://pelda.hu/wp-json/wp-abilities/v1/abilities/lw-lms/list-courses/run"
```

```json title="Válasz"
{ "success": true,
  "courses": [
    { "id": 36, "title": "Haladó mázazás", "status": "publish", "url": "https://pelda.hu/?post_type=course&p=36",
      "access_type": "paid", "duration": "4h", "instructor": "" },
    { "id": 35, "title": "Kerámiakészítés kezdőknek", "status": "publish", "url": "https://pelda.hu/?post_type=course&p=35",
      "access_type": "free", "duration": "6h", "instructor": "" } ],
  "total": 2, "total_pages": 1, "page": 1, "per_page": 20 }
```

Az `url` a WordPress belső hivatkozása. A látogatónak ezen a címen nem jelenik meg kurzusoldal.

Olvasó képesség bemenete query-paraméterben megy:

```bash title="Terminál"
curl -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" -G \
  --data-urlencode "input[user_id]=2" --data-urlencode "input[course_id]=35" \
  "https://pelda.hu/wp-json/wp-abilities/v1/abilities/lw-lms/get-progress/run"
```

## Szűrők

| Szűrő | Paraméterek | Mire jó |
|---|---|---|
| `lw_lms_has_course_access` | `bool $has_access, int $course_id, int $user_id` | A kurzus-hozzáférés végső felülírása, pl. saját fizetési rendszerhez. **Csak fizetős kurzusnál fut**, a beépített ellenőrzések után. |
| `lw_lms_has_lesson_access` | `bool, int $lesson_id, int $user_id` | A lecke-hozzáférés felülírása |
| `lw_lms_pre_grant` | `bool $allow, $user_id, $course_id, $source, $source_id, $expires_at` | Egy hozzáférés-adás megvétózása |
| `lw_lms_admin_access_capability` | `string` (alap `manage_lms`) | Melyik jogosultság nyit meg mindent **Az LMS kezelők minden kurzushoz hozzáférnek** beállításnál |
| `lw_lms_lesson_locks` | `array $locks, int $course_id, int $user_id` | Az ütemezés zárolásainak módosítása |
| `lw_lms_quiz_attempt_cooldown` | `int` (alap 15 mp), `$user_id`, `$lesson_id` | Várakozás két kvízbeküldés között |
| `lw_lms_quiz_daily_attempt_limit` | `int` (alap 20 / 24 óra), `$user_id`, `$lesson_id` | Napi kísérletkorlát leckénként |
| `lw_lms_download_link_ttl` | `int` (alap 3600 mp, legalább 60) | Az aláírt letöltési link élettartama |
| `lw_lms_rest_course_list_item` | `array $data, WP_Post, int $user_id` | Saját mezők a `GET /courses` elemeibe; a beépített kulcsok nem írhatók felül |
| `lw_lms_rest_course` | `array $data, WP_Post, int $user_id, bool $has_access` | Saját mezők a `GET /courses/{id}` válaszba |
| `lw_lms_rest_lesson` | `array $data, WP_Post, int $user_id` | Saját mezők a `GET /lessons/{id}` válaszba |
| `lw_lms_video_html` | `string $html, array $video` | A `video.html` lejátszó-markup |
| `lw_lms_privacy_erase_active_enrollments` | `bool` (alap false), `$user_id` | A személyesadat-törlés az aktív feliratkozásokat is törölje-e |

## Akciók

| Akció | Paraméterek | Mikor fut |
|---|---|---|
| `lw_lms_after_grant` | `$user_id, $course_id, $source, $source_id, $expires_at` | Hozzáférés-adás után; ingyenes kurzusnál az első megnyitáskor is |
| `lw_lms_after_revoke` | `$user_id, $course_id, $source` | Visszavonás után |
| `lw_lms_lesson_completed` | `$lesson_id, $user_id` | Lecke elvégzésekor |
| `lw_lms_course_completed` | `$course_id, $user_id` | Egyszer, amikor a kurzus eléri a 100%-ot |
| `lw_lms_quiz_submitted` | `$lesson_id, $user_id, $percentage, $passed` | Minden kvízbeküldés után |
| `lw_lms_quiz_passed` | `$lesson_id, $user_id, $percentage` | Sikeres kvíz után |
| `lw_lms_attachment_downloaded` | `$attachment_id, $user_id` | Melléklet letöltésekor |

Tipikus felhasználás: üdvözlő e-mail vagy CRM-esemény a `lw_lms_after_grant`-re, tanúsítvány a `lw_lms_course_completed`-re.

## Konstansok

wp-config-konstans nincs.
