Beispiel #1
0
 /**
  * Convert variable format
  *
  * @param string $varName Name of the variable
  * @param array $parameter Array contains format parameters
  * @param array $pool Data that may needed for compile
  * @param DataContainer $dataContainer Parser data container
  *
  * @throws Exception\VariableDateMustSet
  * @throws Exception\VariableDateFormatNotFound
  *
  * @return string Compiled PHP code
  */
 public static function convert($varName, array $parameter, array $pool, DataContainer $dataContainer)
 {
     $phpCode = '';
     if (!isset($parameter[0]) || !$parameter[0]) {
         throw new Exception\VariableDateMustSet($varName);
     }
     if (!isset($pool['LanguageMap']['FORMAT_DATE_' . $parameter[0]])) {
         throw new Exception\VariableDateFormatNotFound($parameter[0], $varName);
     }
     if (!$dataContainer->hasDefineBlock('Header', 'Variable:InitDateTime')) {
         $dataContainer->setDefineBlock('Header', 'Variable:InitDateTime', '<?php $____dateTimeZones_____ = ' . var_export(static::$timeZones, true) . '; $____dateTime_____ = new DateTime(); ?>');
         $dataContainer->setDefineBlock('Footer', 'Variable:DeInitDateTime', '<?php unset($____dateTimeZones_____); unset($____dateTime_____); ?>');
         $dataContainer->setMutex('Overwrite!$____dateTimeZones_____');
         $dataContainer->setMutex('Overwrite!$____dateTime_____');
     }
     $phpCode .= '<?php ';
     if (isset($parameter[1]) && $parameter[1]) {
         $parameters = new Parameters('var="' . $parameter[1] . '"', array('var' => 'variable'));
         $phpCode .= 'if (isset(' . $parameters->get('var') . ', $____dateTimeZones_____[' . $parameters->get('var') . '])) {';
         $phpCode .= '$____dateTime_____->setTimezone(new DateTimeZone(';
         $phpCode .= '$____dateTimeZones_____[' . $parameters->get('var') . '])';
         $phpCode .= '); }';
     }
     $phpCode .= '$____dateTime_____->setTimestamp((int)' . $varName . '); ' . 'echo($____dateTime_____->format(\'' . str_replace('\'', '\\\'', $pool['LanguageMap']['FORMAT_DATE_' . $parameter[0]]) . '\')); ?>';
     return $phpCode;
 }
Beispiel #2
0
 /**
  * Convert variable format
  *
  * @param string $varName Name of the variable
  * @param array $parameter Array contains format parameters
  * @param array $pool Data that may needed for compile
  * @param DataContainer $dataContainer Parser data container
  *
  * @throws Exception\VariableFriendlyTimeFormatMissed
  *
  * @return string Compiled PHP code
  */
 public static function convert($varName, array $parameter, array $pool, DataContainer $dataContainer)
 {
     $phpCode = '';
     if (!isset($pool['LanguageMap']['FORMAT_TIME_BEFORE_DAY'], $pool['LanguageMap']['FORMAT_TIME_BEFORE_HR'], $pool['LanguageMap']['FORMAT_TIME_BEFORE_MIN'], $pool['LanguageMap']['FORMAT_TIME_BEFORE_SND'], $pool['LanguageMap']['FORMAT_TIME_AFTER_SND'], $pool['LanguageMap']['FORMAT_TIME_AFTER_MIN'], $pool['LanguageMap']['FORMAT_TIME_AFTER_HR'], $pool['LanguageMap']['FORMAT_TIME_AFTER_DAY'])) {
         throw new Exception\VariableFriendlyTimeFormatMissed($varName, implode(', ', array('FORMAT_TIME_BEFORE_DAY', 'FORMAT_TIME_BEFORE_HR', 'FORMAT_TIME_BEFORE_MIN', 'FORMAT_TIME_BEFORE_SND', 'FORMAT_TIME_AFTER_SND', 'FORMAT_TIME_AFTER_MIN', 'FORMAT_TIME_AFTER_HR', 'FORMAT_TIME_AFTER_DAY')));
     }
     if (!$dataContainer->hasDefineBlock('Header', 'Variable:InitDateTime')) {
         $dataContainer->setDefineBlock('Header', 'Variable:InitDateTime', '<?php $____dateTimeZones_____ = ' . var_export(static::$timeZones, true) . '; $____dateTime_____ = new DateTime(); ?>');
         $dataContainer->setDefineBlock('Footer', 'Variable:DeInitDateTime', '<?php unset($____dateTimeZones_____); unset($____dateTime_____); ?>');
         $dataContainer->setMutex('Overwrite!$____dateTimeZones_____');
         $dataContainer->setMutex('Overwrite!$____dateTime_____');
     }
     if (!$dataContainer->hasDefineBlock('Header', 'Variable:InitFriendlyTime')) {
         $dataContainer->setDefineBlock('Header', 'Variable:InitFriendlyTime', '<?php $____tempFriendlyTime_____ = 0; ?>');
         $dataContainer->setDefineBlock('Footer', 'Variable:DeInitFriendlyTime', '<?php unset($____tempFriendlyTime_____); ?>');
         $dataContainer->setMutex('Overwrite!$____tempFriendlyTime_____');
     }
     $phpCode .= '<?php ' . '$____tempFriendlyTime_____ = $Time - (int)(' . $varName . ');' . 'if ($____tempFriendlyTime_____ < 0) { ' . '$____tempFriendlyTime_____ = abs($____tempFriendlyTime_____); ' . 'if ($____tempFriendlyTime_____ < 60) { printf(\'' . str_replace('\'', '\\\'', $pool['LanguageMap']['FORMAT_TIME_AFTER_SND']) . '\', $____tempFriendlyTime_____); ' . '} elseif ($____tempFriendlyTime_____ < 3600) { printf(\'' . str_replace('\'', '\\\'', $pool['LanguageMap']['FORMAT_TIME_AFTER_MIN']) . '\', (int)($____tempFriendlyTime_____ / 60)); ' . '} elseif ($____tempFriendlyTime_____ < 86400) { printf(\'' . str_replace('\'', '\\\'', $pool['LanguageMap']['FORMAT_TIME_AFTER_HR']) . '\', (int)($____tempFriendlyTime_____ / 3600)); ' . '} elseif ($____tempFriendlyTime_____ < 604800) { printf(\'' . str_replace('\'', '\\\'', $pool['LanguageMap']['FORMAT_TIME_AFTER_DAY']) . '\', (int)($____tempFriendlyTime_____ / 86400)); ' . '} elseif ($____tempFriendlyTime_____) {';
     $phpCode .= static::getTimeCode($varName, $parameter, $pool);
     $phpCode .= '}} else {' . 'if ($____tempFriendlyTime_____ < 60) { printf(\'' . str_replace('\'', '\\\'', $pool['LanguageMap']['FORMAT_TIME_BEFORE_SND']) . '\', $____tempFriendlyTime_____); ' . '} elseif ($____tempFriendlyTime_____ < 3600) { printf(\'' . str_replace('\'', '\\\'', $pool['LanguageMap']['FORMAT_TIME_BEFORE_MIN']) . '\', (int)($____tempFriendlyTime_____ / 60)); ' . '} elseif ($____tempFriendlyTime_____ < 86400) { printf(\'' . str_replace('\'', '\\\'', $pool['LanguageMap']['FORMAT_TIME_BEFORE_HR']) . '\', (int)($____tempFriendlyTime_____ / 3600)); ' . '} elseif ($____tempFriendlyTime_____ < 604800) { printf(\'' . str_replace('\'', '\\\'', $pool['LanguageMap']['FORMAT_TIME_BEFORE_DAY']) . '\', (int)($____tempFriendlyTime_____ / 86400)); ' . '} elseif ($____tempFriendlyTime_____) {';
     $phpCode .= static::getTimeCode($varName, $parameter, $pool);
     $phpCode .= '}} ?>';
     return $phpCode;
 }