function course_uc_enroll_user_in_ordered_courses in Course 3.x
Same name and namespace in other branches
- 8.3 modules/course_uc/course_uc.module \course_uc_enroll_user_in_ordered_courses()
- 8.2 modules/course_uc/course_uc.module \course_uc_enroll_user_in_ordered_courses()
- 7.2 modules/course_uc/course_uc.module \course_uc_enroll_user_in_ordered_courses()
- 7 modules/course_uc/course_uc.module \course_uc_enroll_user_in_ordered_courses()
Loops through items in an Ubercart order and enrolls the user in courses purchased.
Parameters
Order $order:
3 calls to course_uc_enroll_user_in_ordered_courses()
- course_uc_uc_order_update in modules/
course_uc/ course_uc.module - Implements hook_uc_order_update().
- EnrollUserInOrderedCourses::doExecute in modules/
course_uc/ src/ Plugin/ RulesAction/ EnrollUserInOrderedCourses.php - Adds a comment to an order.
- EnrollUserInOrderedCourses::doExecute in modules/
course_commerce/ src/ Plugin/ RulesAction/ EnrollUserInOrderedCourses.php - Adds a comment to an order.
File
- modules/
course_uc/ course_uc.module, line 331
Code
function course_uc_enroll_user_in_ordered_courses(Order $order) {
$products = Drupal::entityTypeManager()
->getStorage('uc_order_product')
->loadByProperties([
'order_id' => $order
->id(),
]);
foreach ($products as $product) {
$node = $product
->get('nid')
->referencedEntities()[0];
$course = course_get_course($node);
// Load a different user if purchasing a course for another user.
$data = $product
->get('data');
if (!empty($data['uid'])) {
$account = User::load($data['uid']);
}
else {
$account = $order
->getOwner();
}
$course_enrollment = $course
->enroll($account, [
'enrollmenttype' => 'ubercart',
]);
// Fill out questions
if (!empty($data['course_enrollment'])) {
// Attach enrollment bundle fields.
foreach ($data['course_enrollment'] as $field => $value) {
$course_enrollment->{$field} = $value;
}
$course_enrollment
->save();
}
if ($course = course_determine_context('ubercart', $course
->id())) {
// This product is also a course object, other than the first one.
// Satisfy it!
$courseObjects = $course
->getObjects();
foreach ($course
->getObjects() as $courseObject) {
if ($courseObject
->getComponent() == 'ubercart' && $courseObject
->getInstanceId() == $course
->id()) {
// Found the course object that matched the instance (product).
$courseObject
->getFulfillment($account)
->setComplete(TRUE)
->save();
}
}
}
}
}