PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.10
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.10
4.4.10 4.4.9.1 4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 All 142 releases
← All changes | inc/Ajax/AI/AIAssistantAjax.php +13 -5 4.4.3 → 4.4.10 View file →
@@ -1,14 +1,15 @@
1 1 <?php
2 2
3 3 namespace LearnPress\Ajax\AI;
4 4
5 -use Exception;
6 5 use LearnPress\Ajax\AbstractAjax;
7 6 use LearnPress\AI\Assistant\AIAssistantController;
7 +use LP_Debug;
8 8 use LP_Helper;
9 9 use LP_Request;
10 10 use LP_REST_Response;
11 +use Exception;
11 12 use Throwable;
12 13
13 14 /**
14 15 * Class AIAssistantAjax
@@ -28,15 +29,22 @@
28 29
29 30 /**
30 31 * Handle assistant chat request from a logged-in learner.
31 32 *
32 - * Request data (JSON-encoded in 'data' param):
33 + * Nonce is verified by AbstractAjax::catch_lp_ajax() and is CSRF protection only —
34 + * never authorization. Login is checked here; per-item authorization is the
35 + * controller's job, via AIAssistantController::resolve_item_access().
36 + *
37 + * Request data (JSON-encoded in 'data' param). A course item is addressed by the
38 + * full tuple (course_id, item_type, item_id); all three are required.
33 39 * {
34 40 * "message": string,
35 - * "lesson_id": int,
36 41 * "course_id": int,
42 + * "item_type": string, // lp_lesson | lp_quiz — validated against the curriculum
43 + * "item_id": int,
37 44 * "history": [{role, content}, ...],
38 - * "active_quiz_questions": []
45 + * "active_quiz_questions": {},
46 + * "action_hint": string
39 47 * }
40 48 *
41 49 * Response shape:
42 50 * { "status": "success", "message": "", "data": { "type": "text|quiz", "message": "...", "quiz": {} } }
@@ -66,9 +74,9 @@
66 74
67 75 $response->status = 'success';
68 76 $response->data = $result;
69 77 } catch ( Throwable $e ) {
70 - $response->message = $e->getMessage();
78 + $response->message = __( 'The AI Assistant is unavailable right now. Please try again later.', 'learnpress' );
71 79 $response->data = $this->normalize_response_data( array() );
72 80 }
73 81
74 82 wp_send_json( $response );