You are here

class BatEvent in Booking and Availability Management Tools for Drupal 7

The class used for Event entities.

Hierarchy

Expanded class hierarchy of BatEvent

1 string reference to 'BatEvent'
bat_event_entity_info in modules/bat_event/bat_event.module
Implements hook_entity_info().

File

modules/bat_event/bat_event.module, line 1055
Manage Events - Events store the EventValue of a Unit over a period of time.

View source
class BatEvent extends Entity {

  /**
   * DateTime object calculated from start date.
   *
   * @var DateTime
   */
  public $start_date_object;

  /**
   * DateTime object calculated from end date.
   *
   * @var DateTime
   */
  public $end_date_object;

  /**
   *
   */
  public function __construct($values = array()) {
    parent::__construct($values, 'bat_event');
    if (isset($this->start_date)) {
      $this->start_date_object = new DateTime($this->start_date);
    }
    if (isset($this->end_date)) {
      $this->end_date_object = new DateTime($this->end_date);
    }
  }

  /**
   *
   */
  public function delete_event() {
    entity_get_controller($this->entityType)
      ->delete_event($this);
  }

  /**
   * Return the event label.
   */
  protected function defaultLabel() {

    // If the user has configured a field to store the event name, return that
    // field's value.
    $event_type = bat_event_type_load($this->type);
    if (isset($event_type->default_event_label_field_name) && $event_type->default_event_label_field_name != '') {
      $event_wrapper = entity_metadata_wrapper('bat_event', $this);
      $value = $event_wrapper->{$event_type->default_event_label_field_name}
        ->value(array(
        'sanitize' => TRUE,
      ));

      // Handle entity reference fields - if this is an object, return its
      // label.
      if (is_object($value)) {
        $field_info = field_info_field($event_type->default_event_label_field_name);

        // TODO: Support other field types?
        if ($field_info['type'] == 'entityreference') {
          return entity_label($field_info['settings']['target_type'], $value);
        }
      }
      elseif ($value) {
        return $value;
      }
    }

    // If we got this far, a field is not configured, we don't support its
    // type, or the field is empty. Return the state name for the event, if
    // it has a state set.
    if ($state_info = bat_event_load_state($this
      ->getEventValue())) {
      return $state_info['label'];
    }
    return '';
  }

  /**
   *
   */
  protected function defaultUri() {
    return array(
      'path' => 'event/' . $this->event_id,
    );
  }

  /**
   * Returns the value stored for this event in a way that BAT can work with it.
   * @return mixed
   */
  public function getEventValue() {
    if ($field = $this
      ->getEventValueField()) {
      $field_info = field_info_field($field);
      $values = field_get_items('bat_event', $this, $field);
      if (!empty($values)) {
        if ($field_info['type'] == 'bat_event_state_reference') {
          return $values[0]['state_id'];
        }
        elseif ($field_info['type'] == 'commerce_price') {
          return $values[0]['amount'];
        }
        elseif ($field_info['type'] == 'text' || $field_info['type'] == 'number_integer' || $field_info['type'] == 'number_decimal') {
          return $values[0]['value'];
        }
      }
      else {
        return FALSE;
      }
    }
  }

  /**
   * Returns the formatter that can format the event value.
   *
   * @return string|false
   */
  public function getEventValueFormatter() {
    if ($field = $this
      ->getEventValueDefaultField()) {
      $field_info_instance = field_info_instance('bat_event_type', $field, $this->type);
      if (isset($field_info_instance['display']['default']['type'])) {
        return $field_info_instance['display']['default']['type'];
      }
    }
    return FALSE;
  }

  /**
   * Determines which field holds the event value.
   *
   * @return string|false
   */
  public function getEventValueField() {
    $type_bundle = bat_event_type_load($this->type);
    if (isset($type_bundle->default_event_value_field_ids[$this->type])) {
      return $type_bundle->default_event_value_field_ids[$this->type];
    }
    if ($type_bundle->fixed_event_states == 1) {
      return 'event_state_reference';
    }
    return FALSE;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
BatEvent::$end_date_object public property DateTime object calculated from end date.
BatEvent::$start_date_object public property DateTime object calculated from start date.
BatEvent::defaultLabel protected function Return the event label. Overrides Entity::defaultLabel
BatEvent::defaultUri protected function Override this in order to implement a custom default URI and specify 'entity_class_uri' as 'uri callback' hook_entity_info(). Overrides Entity::defaultUri
BatEvent::delete_event public function
BatEvent::getEventValue public function Returns the value stored for this event in a way that BAT can work with it.
BatEvent::getEventValueField public function Determines which field holds the event value.
BatEvent::getEventValueFormatter public function Returns the formatter that can format the event value.
BatEvent::__construct public function Overrides Entity::__construct
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::delete public function Permanently deletes the entity. Overrides EntityInterface::delete
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::save public function Permanently saves the entity. Overrides EntityInterface::save
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.