You are here

public static function OfficeHoursDatetime::isEmpty in Office Hours 8

Determines whether the data structure is empty.

Parameters

mixed $element: A string or array for time slot. Example from HTML5 input, without comments enabled.


    array:3 [
      "day" => "3"
      "starthours" => array:1 [
        "time" => "19:30"
      ]
      "endhours" => array:1 [
        "time" => ""
      ]
    ]
  

Return value

bool TRUE if the data structure is empty, FALSE otherwise.

4 calls to OfficeHoursDatetime::isEmpty()
OfficeHoursDatetimeUnitTest::testDateTimeIsEmpty in tests/src/Unit/OfficeHoursDatetimeUnitTest.php
Tests using entity fields of the datetime field type.
OfficeHoursItem::isEmpty in src/Plugin/Field/FieldType/OfficeHoursItem.php
Determines whether the data structure is empty.
OfficeHoursList::validateOfficeHoursSlot in src/Element/OfficeHoursList.php
Render API callback: Validates the element.
OfficeHoursWidgetBase::massageFormValues in src/Plugin/Field/FieldWidget/OfficeHoursWidgetBase.php
Massages the form values into the format expected for field values.

File

src/Element/OfficeHoursDatetime.php, line 173

Class

OfficeHoursDatetime
Provides a one-line HTML5 time element.

Namespace

Drupal\office_hours\Element

Code

public static function isEmpty($element) {

  // Note: in Week-widget, day is <> '', in List-widget, day can be ''.
  // And in Exception day, day can be ''.
  // Note: test every change with Week/List widget and Select/HTML5 element!
  if ($element === NULL) {
    return TRUE;
  }
  if ($element === '') {
    return TRUE;
  }
  if ($element === '-1') {

    // Empty hours/minutes, but comment enabled.
    return TRUE;
  }
  if (is_array($element)) {
    if (isset($element['time'])) {
      if ($element['time'] === '') {
        return TRUE;
      }
      return FALSE;
    }
    if (!isset($element['day']) && !isset($element['time'])) {
      return TRUE;
    }
    if ($element['day'] !== '' && strlen($element['day']) > 1) {
      if (isset($element['day_delta']) && $element['day_delta'] == 0) {

        // @todo Why is day_delta sometimes not set?
        // First slot is never empty if an Exception date is set.
        return FALSE;
      }
      if (isset($element['starthours']) && OfficeHoursDatetime::isEmpty($element['starthours']) && (isset($element['endhours']) && OfficeHoursDatetime::isEmpty($element['endhours'])) && (!isset($element['comment']) || empty($element['comment']))) {
        return TRUE;
      }
    }

    // Check normal weekday element.
    if (isset($element['day']) && (int) $element['day'] < 7 && (isset($element['starthours']) && OfficeHoursDatetime::isEmpty($element['starthours'])) && (isset($element['endhours']) && OfficeHoursDatetime::isEmpty($element['endhours'])) && (!isset($element['comment']) || empty($element['comment']))) {
      return TRUE;
    }

    // Check HTML5 datetime element.
    if (isset($element['starthours']['time']) && OfficeHoursDatetime::isEmpty($element['starthours']['time']) && (isset($element['endhours']['time']) && OfficeHoursDatetime::isEmpty($element['endhours']['time'])) && (!isset($element['comment']) || empty($element['comment']))) {
      return TRUE;
    }
  }
  return FALSE;
}