class Course in Course 7
Same name and namespace in other branches
- 6 includes/course.core.inc \Course
- 7.2 includes/Course.inc \Course
An object that holds CourseObjects and tracker functions?
Hierarchy
- class \Entity implements EntityInterface
- class \CourseHandler
- class \Course
- class \CourseHandler
Expanded class hierarchy of Course
34 string references to 'Course'
- course.course_report.view.inc in views/
default/ course.course_report.view.inc - CourseAccessTestCase::getInfo in tests/
CourseAccessTestCase.test - CourseContextTestCase::getInfo in tests/
CourseContextTestCase.test - CourseEnrollmentTestCase::getInfo in tests/
CourseEnrollmentTestCase.test - CourseGradeTestCase::getInfo in tests/
CourseGradeTestCase.test
File
- includes/
Course.inc, line 6
View source
class Course extends CourseHandler {
// Node of course.
private $node;
// User in course.
/** @deprecated */
private $user;
// Ordered list of course objects.
private $courseObjects = array();
// Course report tracker
private $tracker;
// The active course object.
private $active = NULL;
// The next course object.
private $next;
// The previous course object.
private $prev;
/**
* Get the course tracker for this course/user.
*
* @return CourseReport
*/
public function getTracker($account = NULL) {
if (!$account) {
/** @deprecated */
if (!empty($this->user)) {
$account = $this->user;
}
else {
global $user;
$account = $user;
}
}
if ($entities = entity_load('course_report', FALSE, array(
'nid' => $this
->getNode()->nid,
'uid' => $account->uid,
), TRUE)) {
return reset($entities);
}
else {
return entity_create('course_report', array(
'nid' => $this
->getNode()->nid,
'uid' => $account->uid,
));
}
}
/**
* The Drupal path to take this course.
*
* @return string
*/
public function getUrl() {
return "node/{$this->nid}/takecourse";
}
/**
* Set the active CourseObject in this Course.
*
* @param int $id
* A numeric course object ID.
*/
public function setActive($id = NULL) {
if (!$id && isset($_SESSION['course'][$this
->getNode()->nid]['taking']['active'])) {
$id = $_SESSION['course'][$this
->getNode()->nid]['taking']['active'];
}
$old = NULL;
$storeNext = FALSE;
foreach ($this
->getObjects() as $courseObject) {
if (!$courseObject
->getOption('enabled')) {
// Skip disabled objects.
continue;
}
if ($id == $courseObject
->getId()) {
// Active - save old, store next.
if ($old) {
$this->prev = $old;
}
$storeNext = TRUE;
$this->active = $courseObject;
}
elseif ($storeNext) {
$this->next = clone $courseObject;
$storeNext = FALSE;
}
$old = clone $courseObject;
}
}
/**
* Get the active CourseObject.
*
* @return CourseObject
*/
public function getActive() {
if (!$this->active) {
$this
->setActive();
}
return $this->active;
}
/**
* Get the next course object, from the active course object.
*
* @return CourseObject
*/
public function getNext() {
if (!$this->active) {
$this
->setActive();
}
return $this->next;
}
/**
* Get the previous course object, from the active course object.
*
* @return CourseObject
*/
public function getPrev() {
if (!$this->active) {
$this
->setActive();
}
return $this->prev;
}
/**
* Generate navigation links.
*/
public function getNavigation() {
// Initialize the active Course.
$this
->setActive();
$prev = $this
->getPrev();
$next = $this
->getNext();
$links = array();
if ($prev && $prev
->access('take')) {
$links['prev'] = l(t('Previous'), $prev
->getUrl(), array(
'html' => TRUE,
));
}
$links['back'] = l(t('Back to course'), $this
->getUrl());
if ($next && $next
->access('take')) {
$links['next'] = l(t('Next'), $next
->getUrl(), array(
'html' => TRUE,
));
}
elseif (!$next && $this
->getTracker()
->getOption('complete')) {
$links['next'] = l(t('Next'), 'node/' . $this
->getOption('nid') . '/course-complete', array(
'html' => TRUE,
));
}
// Ask course objects if they want to override the navigation.
if ($active = $this
->getActive()) {
foreach ($active
->overrideNavigation() as $key => $link) {
$links[$key] = $link;
}
}
return $links;
}
/**
* Track the course (scan required objects, update progress, completion, etc).
*/
public function track($account = NULL) {
$this
->resetCache();
$this
->getTracker($account)
->track();
}
/**
* Get the course objects in this course.
*
* @return CourseObject[]
* An array of course objects.
*/
public function getObjects() {
if (empty($this->courseObjects)) {
$efq = new EntityFieldQuery();
$result = $efq
->entityCondition('entity_type', 'course_object')
->propertyCondition('nid', $this
->getNode()->nid)
->propertyOrderBy('weight')
->execute();
if (!empty($result['course_object'])) {
if ($this->courseObjects = entity_load('course_object', array_keys($result['course_object']))) {
foreach ($this->courseObjects as $courseObject) {
/** @deprecated do not use set|getUser() */
$courseObject
->setUser($this
->getUser());
}
}
}
}
return $this->courseObjects;
}
function resetCache() {
// Reset this course's cache.
$this->courseObjects = array();
return $this;
}
public function getNode() {
return node_load($this->nid);
}
/**
* Un-enroll the user from all course objects and revoke access.
*
* Course object should clean up
* and delete records related to this Course and user.
*
* NOT a top level class of CourseObject::unEnroll.
*
* @see CourseObjectNode::revoke()
*/
public function unEnroll() {
foreach ($this
->getObjects() as $courseObject) {
// Remove access.
$courseObject
->revoke();
$courseObject
->unEnroll();
}
}
/**
* @deprecated
*/
public function setUser($account) {
$this->user = $account;
}
/**
* @deprecated
*/
public function getUser() {
return $this->user;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Course:: |
private | property | ||
Course:: |
private | property | ||
Course:: |
private | property | ||
Course:: |
private | property | ||
Course:: |
private | property | ||
Course:: |
private | property | ||
Course:: |
private | property | ||
Course:: |
public | function | Get the active CourseObject. | |
Course:: |
public | function | Generate navigation links. | |
Course:: |
public | function | Get the next course object, from the active course object. | |
Course:: |
public | function | ||
Course:: |
public | function | Get the course objects in this course. | |
Course:: |
public | function | Get the previous course object, from the active course object. | |
Course:: |
public | function | Get the course tracker for this course/user. | |
Course:: |
public | function | The Drupal path to take this course. | |
Course:: |
public | function | ||
Course:: |
function | |||
Course:: |
public | function | Set the active CourseObject in this Course. | |
Course:: |
public | function | ||
Course:: |
public | function | Track the course (scan required objects, update progress, completion, etc). | |
Course:: |
public | function | Un-enroll the user from all course objects and revoke access. | |
CourseHandler:: |
final public | function | Merge an array of options onto the existing options. | |
CourseHandler:: |
public | function | Get an array of access messages. | |
CourseHandler:: |
protected | function | Return an array of database fields. This determines what fields should be serialized instead of stored. | |
CourseHandler:: |
function | |||
CourseHandler:: |
public | function | Get an handler option's value. | |
CourseHandler:: |
public | function | Get an object's configuration. | 1 |
CourseHandler:: |
public | function | Get the summary of an object's options. | 1 |
CourseHandler:: |
public | function | Return a list of warning strings about this handler. | 1 |
CourseHandler:: |
protected | function | Handlers can declare their defaults if they have a configuration form. | 2 |
CourseHandler:: |
public | function | Handlers can declare a form. | 1 |
CourseHandler:: |
private | function | Merge arrays with replace, not append. | |
CourseHandler:: |
public | function | Save data somewhere. | 1 |
CourseHandler:: |
public | function | Validate? | 1 |
CourseHandler:: |
public | function |
Permanently saves the entity. Overrides Entity:: |
2 |
CourseHandler:: |
public | function | Set an access message to be displayed along with the course object when it is in the outline. For example, "This activity will open on XYZ" or "Please complete Step 1 to take this activity." | |
CourseHandler:: |
public | function | Set an option for this handler. | |
CourseHandler:: |
final public | function | Set this entire handler's options. | |
CourseHandler:: |
function |
Overrides Entity:: |
1 | |
Entity:: |
protected | property | 1 | |
Entity:: |
protected | property | ||
Entity:: |
protected | property | ||
Entity:: |
protected | property | ||
Entity:: |
protected | property | ||
Entity:: |
public | function |
Builds a structured array representing the entity's content. Overrides EntityInterface:: |
1 |
Entity:: |
public | function |
Returns the bundle of the entity. Overrides EntityInterface:: |
|
Entity:: |
protected | function | Defines the entity label if the 'entity_class_label' callback is used. | 1 |
Entity:: |
protected | function | Override this in order to implement a custom default URI and specify 'entity_class_uri' as 'uri callback' hook_entity_info(). | |
Entity:: |
public | function |
Permanently deletes the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the info of the type of the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the type of the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Exports the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Gets the raw, translated value of a property or field. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Checks if the entity has a certain exportable status. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the entity identifier, i.e. the entities name or numeric id. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the internal, numeric identifier. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Checks whether the entity is the default revision. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the label of the entity. Overrides EntityInterface:: |
|
Entity:: |
protected | function | Set up the object instance on construction or unserializiation. | |
Entity:: |
public | function |
Returns the uri of the entity just as entity_uri(). Overrides EntityInterface:: |
|
Entity:: |
public | function |
Generate an array for rendering the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function |
Returns the EntityMetadataWrapper of the entity. Overrides EntityInterface:: |
|
Entity:: |
public | function | Magic method to only serialize what's necessary. | |
Entity:: |
public | function | Magic method to invoke setUp() on unserialization. |