/**
  * time_array_to_timestamp function
  *
  * Converts time array to time string.
  * Passed array: Array( 'year', 'month', 'day', ['hour', 'min', 'sec', ['tz']] )
  * Return int: UNIX timestamp in GMT
  *
  * @param array $t iCalcreator's time property array (*full* format expected)
  * @param string $def_timezone Default time zone in case not defined in $t
  *
  * @return int UNIX timestamp
  **/
 function time_array_to_timestamp($t, $def_timezone)
 {
     $ret = $t['value']['year'] . '-' . $t['value']['month'] . '-' . $t['value']['day'];
     if (isset($t['value']['hour'])) {
         $ret .= ' ' . $t['value']['hour'] . ':' . $t['value']['min'] . ':' . $t['value']['sec'];
     }
     $timezone = '';
     if (isset($t['value']['tz']) && $t['value']['tz'] == 'Z') {
         $timezone = 'Z';
     } elseif (isset($t['params']['TZID'])) {
         $timezone = $t['params']['TZID'];
     }
     if (empty($timezone)) {
         $timezone = $def_timezone;
     } else {
         $timezone = Ai1ec_Tzparser::instance()->get_name($timezone);
         if (false === $timezone) {
             return false;
         }
     }
     if ($timezone) {
         $ret .= ' ' . $timezone;
     }
     return strtotime($ret);
 }
 /**
  * instance method
  *
  * Singleton factory method.
  *
  * @return Ai1ec_Tzparser Instance of self
  */
 public static function instance()
 {
     if (NULL === self::$_instance) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
 public function __construct()
 {
     $parser = Ai1ec_Tzparser::instance();
     $methodList = get_class_methods($this);
     foreach ($methodList as $method) {
         if (0 === strncmp($method, 'test', 4)) {
             $nameList = $this->{$method}();
             foreach ($nameList as $search => $match) {
                 if (is_int($search)) {
                     $search = $match;
                 }
                 $result = $parser->get_name($search);
                 if ($result !== $match) {
                     echo 'Invalid [', $search, '] mapping to [', $result, '] instead of [', $match, '].', PHP_EOL;
                 } else {
                     echo 'Recognized [', $search, '] as [', $result, '].', PHP_EOL;
                 }
             }
         }
     }
 }
 /**
  * time_array_to_timestamp function
  *
  * Converts time array to time string.
  * Passed array: Array( 'year', 'month', 'day', ['hour', 'min', 'sec', ['tz']] )
  * Return int: UNIX timestamp in GMT
  *
  * @param array  $time         iCalcreator time property array (*full* format expected)
  * @param string $def_timezone Default time zone in case not defined in $time
  *
  * @return int UNIX timestamp
  **/
 function time_array_to_timestamp(array $time, $def_timezone)
 {
     $parseable = sprintf('%4d-%02d-%02d', $time['value']['year'], $time['value']['month'], $time['value']['day']);
     if (isset($time['value']['hour'])) {
         $parseable .= sprintf(' %02d:%02d:%02d', $time['value']['hour'], $time['value']['min'], $time['value']['sec']);
     }
     $timezone = '';
     if (isset($time['params']['TZID'])) {
         $timezone = $time['params']['TZID'];
     } elseif (isset($time['value']['tz']) && 'Z' === $time['value']['tz']) {
         $timezone = 'UTC';
     }
     if (empty($timezone)) {
         $timezone = $def_timezone;
     }
     if (!empty($timezone)) {
         $timezone = Ai1ec_Tzparser::instance()->get_name($timezone);
         if (false === $timezone) {
             return false;
         }
         $parseable .= ' ' . $timezone;
     }
     return strtotime($parseable);
 }