function course_uc_enroll_user_in_ordered_courses in Course 8.2
Same name and namespace in other branches
- 8.3 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()
- 3.x 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.
File
- modules/
course_uc/ course_uc.module, line 325
Code
function course_uc_enroll_user_in_ordered_courses($order) {
foreach ($order->products as $product) {
if (!is_array($product->data)) {
$product->data = unserialize($product->data);
}
$node = \Drupal\node\Entity\Node::load($product->nid);
if (empty($product->data['uid'])) {
$account = Drupal\user\Entity\User::load($order->uid);
}
else {
$account = Drupal\user\Entity\User::load($product->data['uid']);
}
if (course_node_is_course($node)) {
// This product is an actual course. They have to be enrolled.
// This will also satisfy the first payment requirement.
// @see course_uc_course_enroll()
if (!($course_enrollment = course_enrollment_load($node
->id(), $account->uid))) {
// Maybe they were already enrolled.
$course_enrollment = entity_create('course_enrollment', array());
}
if (!empty($product->data['course_enrollment'])) {
// Attach enrollment bundle fields.
foreach ($product->data['course_enrollment'] as $field => $value) {
$course_enrollment->{$field} = $value;
}
}
// Set enrollment data.
$course_enrollment->type = $node->course['enrollment_type'];
$course_enrollment->nid = $node
->id();
$course_enrollment->uid = $account->uid;
$course_enrollment->enrollmenttype = 'ubercart';
// Activate this enrollment.
$course_enrollment->status = 1;
course_enrollment_save($course_enrollment);
}
if ($courseNode = course_determine_context('uc_payment', $node
->id())) {
// This product is also a course object, other than the first one.
// Satisfy it!
$course = course_get_course($courseNode);
$courseObjects = $course
->getObjects();
$first = reset($courseObjects);
foreach ($course
->getObjects() as $courseObject) {
if ($first
->identifier() != $courseObject
->identifier() && $courseObject
->getComponent() == 'payment' && $courseObject
->getInstanceId() == $node
->id()) {
// Found the course object that matched the instance (product).
$courseObject
->getFulfillment($account)
->setComplete(TRUE)
->save();
}
}
}
}
}