You are here

public function DateObject::merge in Date 7

Same name and namespace in other branches
  1. 7.3 date_api/date_api.module \DateObject::merge()
  2. 7.2 date_api/date_api.module \DateObject::merge()

This function will keep this object's values by default.

File

date_api/date_api.module, line 178
This module will make the date API available to other modules. Designed to provide a light but flexible assortment of functions and constants, with more functionality in additional files that are not loaded unless other modules specifically include them.

Class

DateObject
Extend PHP DateTime class with granularity handling, merge functionality and slightly more flexible initialization parameters.

Code

public function merge(FeedsDateTime $other) {
  $other_tz = $other
    ->getTimezone();
  $this_tz = $this
    ->getTimezone();

  // Figure out which timezone to use for combination.
  $use_tz = $this
    ->hasGranularity('timezone') || !$other
    ->hasGranularity('timezone') ? $this_tz : $other_tz;
  $this2 = clone $this;
  $this2
    ->setTimezone($use_tz);
  $other
    ->setTimezone($use_tz);
  $val = $this2
    ->toArray(TRUE);
  $otherval = $other
    ->toArray();
  foreach (self::$allgranularity as $g) {
    if ($other
      ->hasGranularity($g) && !$this2
      ->hasGranularity($g)) {

      // The other class has a property we don't; steal it.
      $this2
        ->addGranularity($g);
      $val[$g] = $otherval[$g];
    }
  }
  $other
    ->setTimezone($other_tz);
  $this2
    ->setDate($val['year'], $val['month'], $val['day']);
  $this2
    ->setTime($val['hour'], $val['minute'], $val['second']);
  return $this2;
}