function course_cron in Course 7.2
Same name and namespace in other branches
- 8.3 course.module \course_cron()
- 8.2 course.module \course_cron()
- 6 course.module \course_cron()
- 7 course.module \course_cron()
Implements hook_cron().
Revoke access to inaccessible objects.
File
- ./
course.module, line 2665 - course.module Core functionality for Courses.
Code
function course_cron() {
$handlers = course_get_handlers('object');
$modules = array();
foreach ($handlers as $module => $object) {
foreach ($object as $key => $info) {
if (is_subclass_of($info['class'], 'CourseObjectNode')) {
// This module provides an object of type CourseObjectNode.
$modules[] = $module;
}
}
}
if ($modules) {
// Get a list of fulfillments for CourseObjectNodes.
$sql = "SELECT * FROM {course_outline}\n INNER JOIN {course_outline_fulfillment} USING (coid)\n WHERE module IN (:modules)";
$result = db_query($sql, array(
':modules' => $modules,
));
while ($row = $result
->fetch()) {
$extra = unserialize($row->data);
if (!empty($extra['private'])) {
// This fulfillment used private content.
$user = user_load($row->uid);
$courseObject = course_get_course_object_by_id($row->coid);
if (!$courseObject
->access('take', $user)) {
// User has no access to take this course object. Revoke access.
$courseObject
->getFulfillment($user)
->revoke();
}
}
}
}
}