示例#1
0
 /**
  * Test creating dates from timestamps, and manipulating timezones.
  *
  * @param int $input
  *   Input argument for DateTimePlus::createFromTimestamp().
  * @param array $initial
  *   An array containing:
  *   - 'timezone_initial' - Timezone argument for DateTimePlus.
  *   - 'format_initial' - Format argument for DateTimePlus.
  *   - 'expected_initial_date' - Expected output from DateTimePlus::format().
  *   - 'expected_initial_timezone' - Expected output from
  *      DateTimePlus::getTimeZone()::getName().
  *   - 'expected_initial_offset' - Expected output from DateTimePlus::getOffset().
  * @param array $transform
  *   An array containing:
  *   - 'timezone_transform' - Argument to transform date to another timezone via
  *     DateTimePlus::setTimezone().
  *   - 'format_transform' - Format argument to use when transforming date to
  *     another timezone.
  *   - 'expected_transform_date' - Expected output from DateTimePlus::format(),
  *     after timezone transform.
  *   - 'expected_transform_timezone' - Expected output from
  *     DateTimePlus::getTimeZone()::getName(), after timezone transform.
  *   - 'expected_transform_offset' - Expected output from
  *      DateTimePlus::getOffset(), after timezone transform.
  *
  * @dataProvider providerTestTimestamp
  */
 public function testTimestamp($input, array $initial, array $transform)
 {
     // Initialize a new date object.
     $date = DateTimePlus::createFromTimestamp($input, $initial['timezone']);
     $this->assertDateTimestamp($date, $input, $initial, $transform);
 }
 /**
  * {@inheritdoc}
  */
 public function render()
 {
     if (empty($this->view->rowPlugin)) {
         debug('Drupal\\views\\Plugin\\views\\style\\VerticalTimeline: Missing row plugin');
         return;
     }
     // If anything needs to be different in preview, do it here.
     if (!empty($this->view->live_preview)) {
         //return;
     }
     $rows = array();
     $options = $this->options;
     $field = $options['date_field'];
     $prev_group = '';
     foreach ($this->view->result as $row_index => $row) {
         $this->view->row_index = $row_index;
         $row = $this->view->rowPlugin->render($row);
         $date = '';
         if (isset($this->view->field[$field])) {
             // Create the group header, when required, and insert it into the rows array.
             $node = $row['#row']->_entity;
             $raw = $node->get($options['date_field'])->value;
             // Massage the date into the format required by the header.
             switch ($options['group_heading']) {
                 case 'century':
                     $obj = is_numeric($raw) ? DateTimePlus::createFromTimestamp($raw) : new DateTimePlus($raw);
                     $date = substr($obj->format('Y'), 0, 2) . '00';
                     break;
                 case 'format':
                     $obj = is_numeric($raw) ? DateTimePlus::createFromTimestamp($raw) : new DateTimePlus($raw);
                     $date = $obj->format($options['group_heading_format']);
                     break;
                 case 'date':
                     $date = $style->getField($id, $field);
                     $date = strip_tags(htmlspecialchars_decode($date));
                     //$date = \Drupal::service('renderer')->render($date);
                     break;
                 default:
                     $date = NULL;
                     break;
             }
             // See if this is a new header, different than the previous one.
             $group = $date;
             if ($group != $prev_group) {
                 $row['group'] = ['#type' => 'markup', '#markup' => $date];
             }
             $prev_group = $group;
         }
         $rows[] = $row;
     }
     $build = array('#theme' => $this->themeFunctions(), '#view' => $this->view, '#options' => $this->options, '#rows' => $rows);
     unset($this->view->row_index);
     return $build;
 }