You are here

class CourseObjectFulfillment in Course 7.2

Same name and namespace in other branches
  1. 6 includes/course_object.core.inc \CourseObjectFulfillment
  2. 7 includes/CourseObjectFulfillment.inc \CourseObjectFulfillment

Parent class for course object fulfillment.

Represents the fulfillment record in the database.

Hierarchy

Expanded class hierarchy of CourseObjectFulfillment

2 string references to 'CourseObjectFulfillment'
CourseObjectFulfillmentController::create in includes/CourseObjectFulfillmentController.inc
Overrides EntityAPIController::create().
course_entity_info in ./course.module
Implements hook_entity_info().

File

includes/CourseObjectFulfillment.inc, line 9

View source
class CourseObjectFulfillment extends CourseHandler {

  /**
   * Get the user of this fulfillment.
   *
   * @return stdClass
   */
  function getAccount() {
    return user_load($this->uid);
  }

  /**
   * Is this fulfillment complete?
   *
   * @return bool
   */
  function isComplete() {
    return (bool) $this
      ->getOption('complete');
  }

  /**
   * Set this fulfillment complete.
   *
   * @param bool $complete
   *   Set to 0 to un-complete, 1 or omit to complete.
   *
   * @return CourseObjectFulfillment
   */
  function setComplete($complete = 1) {
    if (!$this
      ->getOption('date_completed')) {
      $this
        ->setOption('date_completed', REQUEST_TIME);
    }
    return $this
      ->setOption('complete', $complete);
  }

  /**
   * Set this fulfillment's grade.
   *
   * @param float $grade
   *
   * @return CourseObjectFulfillment
   */
  function setGrade($grade) {
    return $this
      ->setOption('grade_result', $grade);
  }

  /**
   * Get this fulfillment's grade.
   *
   * @return float
   *   A float value of the user's grade for this fulfillment.
   */
  function getGrade() {
    return $this
      ->getOption('grade_result');
  }

  /**
   * Get this fulfillment's course object.
   *
   * @return CourseObject
   */
  function getCourseObject() {
    return entity_load_single('course_object', $this->coid);
  }

  /**
   * Track course after saving fulfillment.
   */
  public function save() {

    // Make sure the user is enrolled first.
    if (!empty($this
      ->getCourseObject()) && course_enrollment_check($this
      ->getCourseObject()
      ->getCourseNid(), $this->uid)) {
      parent::save();

      // Re-evaluate requirements.
      $account = user_load($this->uid);
      $this
        ->getCourseObject()
        ->getCourse()
        ->getTracker($account)
        ->track();
      return $this;
    }
    else {
      return FALSE;
    }
  }

  /**
   * Allow arbitrary data to be stored on the fulfillment, without explicitly
   * defining optionsDefinition() in a custom class.
   *
   * It is suggested that modules provide their own fulfillment classes and
   * specify the valid extra options through their own optionsDefinition(). See
   * CourseObjectWebformFulfillment for an example of this.
   */
  function optionsDefinition() {
    $options = get_object_vars($this);
    unset($options['entityInfo']);
    return $options;
  }

  /**
   * Get the instance ID. This could be the external component ID, a Node ID...
   *
   * @return string
   */
  function getInstanceId() {
    return $this
      ->getOption('instance');
  }

  /**
   * Grant access to the external course object.
   *
   * For example, adding a user to an access control list.
   *
   * @see CourseObjectNodeFulfillment::grant()
   */
  function grant() {
  }

  /**
   * Revoke access to the external course object.
   *
   * For example, removing a user to an access control list.
   *
   * @see CourseObjectNodeFulfillment::revoke()
   */
  function revoke() {
  }

  /**
   * Do any sort of cleanup that the fulfillment needs. Example: deleting quiz
   * results, webform submissions, etc.
   */
  function delete() {
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CourseHandler::addOptions final public function Merge an array of options onto the existing options.
CourseHandler::getAccessMessages public function Get an array of access messages.
CourseHandler::getDatabaseFields protected function Return an array of database fields. This determines what fields should be serialized instead of stored.
CourseHandler::getId function
CourseHandler::getOption public function Get an handler option's value.
CourseHandler::getOptions public function Get an object's configuration. 1
CourseHandler::getOptionsSummary public function Get the summary of an object's options. 1
CourseHandler::getWarnings public function Return a list of warning strings about this handler. 1
CourseHandler::optionsForm public function Handlers can declare a form. 1
CourseHandler::optionsMerge private function Merge arrays with replace, not append.
CourseHandler::optionsSubmit public function Save data somewhere. 1
CourseHandler::optionsValidate public function Validate? 1
CourseHandler::setAccessMessage 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::setOption public function Set an option for this handler. 1
CourseHandler::setOptions final public function Set this entire handler's options.
CourseHandler::__construct function Overrides Entity::__construct 1
CourseObjectFulfillment::delete function Do any sort of cleanup that the fulfillment needs. Example: deleting quiz results, webform submissions, etc. Overrides Entity::delete 1
CourseObjectFulfillment::getAccount function Get the user of this fulfillment.
CourseObjectFulfillment::getCourseObject function Get this fulfillment's course object.
CourseObjectFulfillment::getGrade function Get this fulfillment's grade.
CourseObjectFulfillment::getInstanceId function Get the instance ID. This could be the external component ID, a Node ID...
CourseObjectFulfillment::grant function Grant access to the external course object. 1
CourseObjectFulfillment::isComplete function Is this fulfillment complete?
CourseObjectFulfillment::optionsDefinition function Allow arbitrary data to be stored on the fulfillment, without explicitly defining optionsDefinition() in a custom class. Overrides CourseHandler::optionsDefinition 3
CourseObjectFulfillment::revoke function Revoke access to the external course object. 1
CourseObjectFulfillment::save public function Track course after saving fulfillment. Overrides CourseHandler::save
CourseObjectFulfillment::setComplete function Set this fulfillment complete.
CourseObjectFulfillment::setGrade function Set this fulfillment's grade.
Entity::$defaultLabel protected property 1
Entity::$entityInfo protected property
Entity::$entityType protected property
Entity::$idKey protected property
Entity::$wrapper protected property
Entity::buildContent public function Builds a structured array representing the entity's content. Overrides EntityInterface::buildContent 1
Entity::bundle public function Returns the bundle of the entity. Overrides EntityInterface::bundle
Entity::defaultLabel protected function Defines the entity label if the 'entity_class_label' callback is used. 1
Entity::defaultUri protected function Override this in order to implement a custom default URI and specify 'entity_class_uri' as 'uri callback' hook_entity_info().
Entity::entityInfo public function Returns the info of the type of the entity. Overrides EntityInterface::entityInfo
Entity::entityType public function Returns the type of the entity. Overrides EntityInterface::entityType
Entity::export public function Exports the entity. Overrides EntityInterface::export
Entity::getTranslation public function Gets the raw, translated value of a property or field. Overrides EntityInterface::getTranslation
Entity::hasStatus public function Checks if the entity has a certain exportable status. Overrides EntityInterface::hasStatus
Entity::identifier public function Returns the entity identifier, i.e. the entities name or numeric id. Overrides EntityInterface::identifier
Entity::internalIdentifier public function Returns the internal, numeric identifier. Overrides EntityInterface::internalIdentifier
Entity::isDefaultRevision public function Checks whether the entity is the default revision. Overrides EntityInterface::isDefaultRevision
Entity::label public function Returns the label of the entity. Overrides EntityInterface::label
Entity::setUp protected function Set up the object instance on construction or unserializiation.
Entity::uri public function Returns the uri of the entity just as entity_uri(). Overrides EntityInterface::uri
Entity::view public function Generate an array for rendering the entity. Overrides EntityInterface::view
Entity::wrapper public function Returns the EntityMetadataWrapper of the entity. Overrides EntityInterface::wrapper
Entity::__sleep public function Magic method to only serialize what's necessary.
Entity::__wakeup public function Magic method to invoke setUp() on unserialization.