@@ -154,7 +154,8 @@ class Rest extends WebService
154
154
public const DELETE_GROUP_SUB_COURSE = 'delete_group_sub_course ' ;
155
155
public const DELETE_GROUP_SUB_SESSION = 'delete_group_sub_session ' ;
156
156
public const GET_AUDIT_ITEMS = 'get_audit_items ' ;
157
- public const SUBSCRIBE_COURSE_TO_SESSION_XF = 'subscribe_course_to_session_from_extra_field ' ;
157
+ public const SUBSCRIBE_COURSE_TO_SESSION_FROM_EXTRA_FIELD = 'subscribe_course_to_session_from_extra_field ' ;
158
+ public const SUBSCRIBE_USER_TO_SESSION_FROM_EXTRA_FIELD = 'subscribe_user_to_session_from_extra_field ' ;
158
159
159
160
/**
160
161
* @var Session
@@ -4473,6 +4474,96 @@ public function subscribeCourseToSessionFromExtraField($params)
4473
4474
}
4474
4475
}
4475
4476
4477
+ /**
4478
+ * Subscribe a specific user to a specific session, identified via extra field values.
4479
+ *
4480
+ * This method:
4481
+ * - Locates the session ID using the provided session extra field name/value via ExtraFieldValue('session').
4482
+ * - Locates the user ID using the provided user extra field name/value via ExtraFieldValue('user').
4483
+ * - Adds the user to the session using SessionManager::subscribe_users_to_session() (similar to subscribeUsersToSession()).
4484
+ *
4485
+ * Required parameters:
4486
+ * - session_field_name: Name of the extra field for sessions (e.g., 'peoplesoft_sid').
4487
+ * - session_field_value: Value of the session extra field (e.g., '123450').
4488
+ * - user_field_name: Name of the extra field for users (e.g., 'peoplesoft_uid').
4489
+ * - user_field_value: Value of the user extra field (e.g., '1').
4490
+ *
4491
+ * @param array $params Associative array of POST parameters.
4492
+ * @return array Response in format: ['error' => bool, 'data' => array] on success, or ['error' => true, 'message' => string] on failure.
4493
+ */
4494
+ public function subscribeUserToSessionFromExtraField ($ params )
4495
+ {
4496
+ // Validate required parameters (redundant with v2.php but for safety)
4497
+ $ required = ['session_field_name ' , 'session_field_value ' , 'user_field_name ' , 'user_field_value ' ];
4498
+ foreach ($ required as $ key ) {
4499
+ if (empty ($ params [$ key ])) {
4500
+ return [
4501
+ 'error ' => true ,
4502
+ 'message ' => 'Missing required parameter: ' . $ key
4503
+ ];
4504
+ }
4505
+ }
4506
+
4507
+ $ sessionFieldName = $ params ['session_field_name ' ];
4508
+ $ sessionFieldValue = $ params ['session_field_value ' ];
4509
+ $ userFieldName = $ params ['user_field_name ' ];
4510
+ $ userFieldValue = $ params ['user_field_value ' ];
4511
+
4512
+ // Get session ID from extra field value using ExtraFieldValue model
4513
+ $ sessionValueModel = new ExtraFieldValue ('session ' );
4514
+ $ sessionIdList = $ sessionValueModel ->get_item_id_from_field_variable_and_field_value (
4515
+ $ sessionFieldName ,
4516
+ $ sessionFieldValue ,
4517
+ false ,
4518
+ false ,
4519
+ true
4520
+ );
4521
+ if (empty ($ sessionIdList )) {
4522
+ return [
4523
+ 'error ' => true ,
4524
+ 'message ' => 'No session found with extra field value " ' . $ sessionFieldValue . '". '
4525
+ ];
4526
+ }
4527
+ $ sessionId = (int ) $ sessionIdList [0 ]['item_id ' ]; // Extract item_id from sub-array, assume single match
4528
+
4529
+ // Get user ID from extra field value using ExtraFieldValue model
4530
+ $ userValueModel = new ExtraFieldValue ('user ' );
4531
+ $ userIdList = $ userValueModel ->get_item_id_from_field_variable_and_field_value (
4532
+ $ userFieldName ,
4533
+ $ userFieldValue ,
4534
+ false ,
4535
+ false ,
4536
+ true
4537
+ );
4538
+ if (empty ($ userIdList )) {
4539
+ return [
4540
+ 'error ' => true ,
4541
+ 'message ' => 'No user found with extra field value " ' . $ userFieldValue . '". '
4542
+ ];
4543
+ }
4544
+ $ userId = (int ) $ userIdList [0 ]['item_id ' ]; // Extract item_id from sub-array, assume single match
4545
+
4546
+ // Add user to session using existing core method (mirrors subscribeUsersToSession logic)
4547
+ $ success = SessionManager::subscribeUsersToSession ($ sessionId , [$ userId ]);
4548
+
4549
+ if ($ success ) {
4550
+ return [
4551
+ 'error ' => false ,
4552
+ 'data ' => [
4553
+ 'status ' => true ,
4554
+ 'message ' => 'User subscribed to session ' ,
4555
+ 'id_session ' => $ sessionId ,
4556
+ 'user_id ' => $ userId
4557
+ ]
4558
+ ];
4559
+ } else {
4560
+ return [
4561
+ 'error ' => true ,
4562
+ 'message ' => 'Failed to subscribe user to session. '
4563
+ ];
4564
+ }
4565
+ }
4566
+
4476
4567
/**
4477
4568
* Generate an API key for webservices access for the given user ID.
4478
4569
*/
0 commit comments