public function MerciDefaultController::__construct in MERCI (Manage Equipment Reservations, Checkout and Inventory) 7.3
File
- merci_core/
reservation.handler.inc, line 38 - Abstraction of the selection logic of an entity reference field.
Class
- MerciDefaultController
- A null implementation of EntityReference_SelectionHandler.
Code
public function __construct($entity, $item_type, $context) {
$this->context = $context;
$this->item_type = $item_type;
$this->entity = $entity;
$this->items = array();
// Determine if dealing with multiple values.
if (substr($entity->{$context['item_field']}
->type(), 0, 5) == 'list<') {
foreach ($entity->{$context['item_field']}
->getIterator() as $delta => $item) {
if ($item
->getIdentifier()) {
$this->items[$delta] = $item;
}
}
$this->items_is_list = TRUE;
}
else {
$this->items[0] = $entity->{$context['item_field']};
}
if (substr($entity->{$context['date_field']}
->type(), 0, 5) == 'list<') {
foreach ($entity->{$context['date_field']}
->getIterator() as $delta => $item) {
$this->dates[$delta] = $item
->value();
}
}
else {
$this->dates[0] = $entity->{$context['date_field']}
->value();
}
// Storage location for date field.
$date_field_info = field_info_field($context['date_field']);
$date_storage = $date_field_info['storage']['details']['sql']['FIELD_LOAD_CURRENT'];
$keys = array_keys($date_storage);
$this->date_table = reset($keys);
$this->date_column = $date_storage[$this->date_table]['value'];
$this->date_column2 = $date_storage[$this->date_table]['value2'];
// Storage location for item field.
$item_field_info = field_info_field($context['item_field']);
$item_storage = $item_field_info['storage']['details']['sql']['FIELD_LOAD_CURRENT'];
$keys = array_keys($item_storage);
$this->item_table = reset($keys);
$keys = array_keys($item_field_info['indexes']);
$item_key = reset($keys);
$this->item_column = $item_storage[$this->item_table][$item_key];
$entity_info = $entity
->entityInfo();
$this->parent_index = $entity
->entityKey('id');
$this->parent_table = $entity_info['base table'];
$this->parent_has_quantity = in_array('quantity', $entity_info['schema_fields_sql']['base table']);
$this->parent_has_status = in_array('status', $entity_info['schema_fields_sql']['base table']);
try {
$this->entity_quantity = $entity->quantity
->value();
} catch (EntityMetadataWrapperException $e) {
$this->entity_quantity = 1;
}
}