function course_init in Course 7.2
Same name and namespace in other branches
- 8.3 course.module \course_init()
- 8.2 course.module \course_init()
- 6 course.module \course_init()
- 7 course.module \course_init()
- 3.x course.module \course_init()
Implements hook_init().
Detect and set course context. Adds javascript for course objects that require polling. Hack for #1902104.
File
- ./
course.module, line 2168 - course.module Core functionality for Courses.
Code
function course_init() {
course_context();
if (!($courseNode = course_get_context())) {
// Set course context for all modules that define course context handlers.
// @see hook_course_handlers().
$modules = course_get_handlers('object');
foreach ($modules as $module => $handlers) {
if (is_array($handlers)) {
foreach ($handlers as $handler) {
// We expect query parameters suitable for course_determine_context().
if ($params = call_user_func(array(
$handler['class'],
'context',
))) {
if (is_array($params) && isset($params['object_type']) && isset($params['instance'])) {
if ($courseNode = course_determine_context($module, $params['object_type'], $params['instance'])) {
// Set the course context.
course_set_context($courseNode);
// Find and set the active object.
$efq = new EntityFieldQuery();
$result = $efq
->entityCondition('entity_type', 'course_object')
->propertyCondition('nid', $courseNode->nid)
->propertyCondition('instance', $params['instance'])
->propertyCondition('module', $module)
->propertyCondition('object_type', $params['object_type'])
->execute();
$coid = key($result['course_object']);
$_SESSION['course'][$courseNode->nid]['taking']['active'] = $coid;
}
}
}
}
}
}
}
}