You are here

function CourseObjectController::load in Course 8.3

Same name and namespace in other branches
  1. 8.2 src/Controller/CourseObjectController.php \Drupal\course\Controller\CourseObjectController::load()

Fork of Entity API's "merge" functionality.

Merge the serialized field to the entity object.

File

src/Controller/CourseObjectController.php, line 61

Class

CourseObjectController

Namespace

Drupal\course\Controller

Code

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;
}