class CourseObjectFulfillmentController in Course 8.2
Same name and namespace in other branches
- 8.3 src/Controller/CourseObjectFulfillmentController.php \Drupal\course\Controller\CourseObjectFulfillmentController
Hierarchy
- class \Drupal\Core\Entity\Controller\EntityController implements ContainerInjectionInterface uses UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\course\Controller\CourseObjectFulfillmentController
Expanded class hierarchy of CourseObjectFulfillmentController
File
- src/
Controller/ CourseObjectFulfillmentController.php, line 7
Namespace
Drupal\course\ControllerView source
class CourseObjectFulfillmentController extends EntityController {
/**
* 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) {
$reflect = new ReflectionClass($courseObject);
foreach ($reflect
->getProperties(ReflectionProperty::IS_PRIVATE | ReflectionProperty::IS_PROTECTED) as $prop) {
$props[] = $prop
->getName();
}
if (isset($courseObject->{$serialized_field}) && is_array($courseObject->{$serialized_field})) {
foreach ($courseObject->{$serialized_field} as $field => $value) {
if (!in_array($field, $props)) {
$courseObject
->setOption($field, $value);
}
}
}
$courseObject
->setOption('is_new', 0);
}
return $entities;
}
/**
* Overrides EntityAPIController::query().
*/
public function query($ids, $conditions, $revision_id = FALSE) {
$query = $this
->buildQuery($ids, $conditions, $revision_id);
$query
->join('course_outline', 'co', 'base.coid = co.coid');
$query
->fields('co', array(
'module',
'object_type',
));
$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;
}
/**
* Overrides EntityAPIController::create().
*/
public function create(array $values = array()) {
// Add is_new property if it is not set.
$values += array(
'is_new' => TRUE,
);
$available = course_get_handlers('object');
$ret = $available[$values['object_type']];
if (isset($ret['fulfillment class'])) {
$class = $ret['fulfillment class'];
}
else {
// Base class which minimally handles fulfillments.
$class = 'CourseObjectFulfillment';
}
return new $class($values, $this->entityType);
}
/**
* Overriding because https://www.drupal.org/project/entity/issues/1993818
*
* @param type $ids
* @param \DatabaseTransaction $transaction
*/
function delete($ids, \DatabaseTransaction $transaction = NULL) {
$entities = $ids ? $this
->load($ids) : FALSE;
foreach ($entities as $entity) {
$entity
->delete();
}
parent::delete($ids, $transaction);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CourseObjectFulfillmentController:: |
public | function |
Overrides EntityAPIController::create(). Overrides EntityController:: |
|
CourseObjectFulfillmentController:: |
function | Overriding because https://www.drupal.org/project/entity/issues/1993818 | ||
CourseObjectFulfillmentController:: |
function | Fork of Entity API's "merge" functionality. | ||
CourseObjectFulfillmentController:: |
public | function | Overrides EntityAPIController::query(). | |
EntityController:: |
protected | property | The entity repository. | |
EntityController:: |
protected | property | The entity type bundle info. | |
EntityController:: |
protected | property | The entity manager. | |
EntityController:: |
protected | property | The renderer. | |
EntityController:: |
public | function | Provides a generic add title callback for entities with bundles. | |
EntityController:: |
public | function | Displays add links for the available bundles. | |
EntityController:: |
public | function | Provides a generic add title callback for an entity type. | |
EntityController:: |
public | function | Provides a generic delete title callback. | |
EntityController:: |
protected | function | Determines the entity. | |
EntityController:: |
public | function | Provides a generic edit title callback. | |
EntityController:: |
protected | function | Expands the bundle information with descriptions, if known. | |
EntityController:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
EntityController:: |
public | function | Provides a generic title callback for a single entity. | |
EntityController:: |
public | function | Constructs a new EntityController. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |