You are here

class CourseObjectController in Course 8.2

Same name and namespace in other branches
  1. 8.3 src/Controller/CourseObjectController.php \Drupal\course\Controller\CourseObjectController
  2. 3.x src/Controller/CourseObjectController.php \Drupal\course\Controller\CourseObjectController

Hierarchy

Expanded class hierarchy of CourseObjectController

File

src/Controller/CourseObjectController.php, line 15

Namespace

Drupal\course\Controller
View source
class CourseObjectController extends EntityController {

  /**
   * AJAX handler to restore a deleted object.
   *
   * @param Course $course
   *   The course.
   * @param string $coid
   *   Course object ID, which may be a temporary string.
   *
   * @return AjaxResponse
   */
  public function restoreObject(Course $course, $course_object) {

    // Set the session value.
    $_SESSION['course'][$course
      ->id()]['editing'][$course_object]['delete'] = 0;
    $_SESSION['course'][$course
      ->id()]['editing'][$course_object]['delete_instance'] = 0;
    $response = new AjaxResponse();
    $currentURL = Url::fromRoute('course.outline', [
      'course' => $course
        ->id(),
    ]);
    $response
      ->addCommand(new RedirectCommand($currentURL
      ->toString()));
    return $response;
  }

  /**
   * Overrides EntityAPIController::query().
   */
  public function query($ids, $conditions, $revision_id = FALSE) {
    $query = $this
      ->buildQuery($ids, $conditions, $revision_id);
    $result = $query
      ->execute();
    $result
      ->setFetchMode(PDO::FETCH_ASSOC);

    // Build the resulting objects ourselves, since the standard PDO ways of
    // doing that are completely useless.
    $objects = array();
    foreach ($result as $row) {
      $row['is_new'] = FALSE;
      $objects[] = $this
        ->create($row);
    }
    return $objects;
  }

  /**
   * Fork of Entity API's "merge" functionality.
   *
   * Merge the serialized field to the entity object.
   */
  function load($ids = array(), $conditions = array()) {
    $entities = parent::load($ids, $conditions);
    $base_table = $this->entityInfo['base table'];
    $schema = drupal_get_schema($base_table);
    foreach ($schema['fields'] as $field_name => $info) {
      if (!empty($info['serialize'])) {
        $serialized_field = $field_name;
      }
    }
    foreach ($entities as $courseObject) {
      if (isset($courseObject->{$serialized_field}) && is_array($courseObject->{$serialized_field})) {
        $reflect = new ReflectionClass($courseObject);
        foreach ($reflect
          ->getProperties(ReflectionProperty::IS_PRIVATE | ReflectionProperty::IS_PROTECTED) as $prop) {
          $props[$prop
            ->getName()] = $prop
            ->getName();
        }
        foreach ($courseObject->{$serialized_field} as $field => $value) {
          if (!isset($props[$field])) {
            $courseObject
              ->setOption($field, $value);
          }
        }
        unset($courseObject->{$serialized_field});
      }
    }
    return $entities;
  }

  /**
   * Render the take course object page.
   */
  public function render(CourseObject $course_object) {
    $build = $course_object
      ->takeObject();
    if (is_array($build)) {

      // This is a render array, do not cache the content.
      $build['#cache']['max-age'] = 0;
      return $build;
    }
    return $build;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CourseObjectController::load function Fork of Entity API's "merge" functionality.
CourseObjectController::query public function Overrides EntityAPIController::query().
CourseObjectController::render public function Render the take course object page.
CourseObjectController::restoreObject public function AJAX handler to restore a deleted object.
EntityController::$entityRepository protected property The entity repository.
EntityController::$entityTypeBundleInfo protected property The entity type bundle info.
EntityController::$entityTypeManager protected property The entity manager.
EntityController::$renderer protected property The renderer.
EntityController::addBundleTitle public function Provides a generic add title callback for entities with bundles.
EntityController::addPage public function Displays add links for the available bundles.
EntityController::addTitle public function Provides a generic add title callback for an entity type.
EntityController::create public static function Instantiates a new instance of this class. Overrides ContainerInjectionInterface::create
EntityController::deleteTitle public function Provides a generic delete title callback.
EntityController::doGetEntity protected function Determines the entity.
EntityController::editTitle public function Provides a generic edit title callback.
EntityController::loadBundleDescriptions protected function Expands the bundle information with descriptions, if known.
EntityController::redirect protected function Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait::redirect
EntityController::title public function Provides a generic title callback for a single entity.
EntityController::__construct public function Constructs a new EntityController.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
UrlGeneratorTrait::$urlGenerator protected property The url generator.
UrlGeneratorTrait::getUrlGenerator Deprecated protected function Returns the URL generator service.
UrlGeneratorTrait::setUrlGenerator Deprecated public function Sets the URL generator service.
UrlGeneratorTrait::url Deprecated protected function Generates a URL or path for a specific route based on the given parameters.