PrivateBin\Filter::formatHumanReadableTime PHP Метод

formatHumanReadableTime() публичный статический Метод

accepts times in the format "[integer][time unit]"
public static formatHumanReadableTime ( string $time ) : string
$time string
Результат string
    public static function formatHumanReadableTime($time)
    {
        if (preg_match('/^(\\d+) *(\\w+)$/', $time, $matches) !== 1) {
            throw new Exception("Error parsing time format '{$time}'", 30);
        }
        switch ($matches[2]) {
            case 'sec':
                $unit = 'second';
                break;
            case 'min':
                $unit = 'minute';
                break;
            default:
                $unit = rtrim($matches[2], 's');
        }
        return I18n::_(array('%d ' . $unit, '%d ' . $unit . 's'), (int) $matches[1]);
    }

Usage Example

Пример #1
0
 /**
  * Display PrivateBin frontend.
  *
  * @access private
  * @return void
  */
 private function _view()
 {
     // set headers to disable caching
     $time = gmdate('D, d M Y H:i:s \\G\\M\\T');
     header('Cache-Control: no-store, no-cache, no-transform, must-revalidate');
     header('Pragma: no-cache');
     header('Expires: ' . $time);
     header('Last-Modified: ' . $time);
     header('Vary: Accept');
     header('Content-Security-Policy: ' . $this->_conf->getKey('cspheader'));
     header('X-Xss-Protection: 1; mode=block');
     header('X-Frame-Options: DENY');
     header('X-Content-Type-Options: nosniff');
     // label all the expiration options
     $expire = array();
     foreach ($this->_conf->getSection('expire_options') as $time => $seconds) {
         $expire[$time] = $seconds == 0 ? I18n::_(ucfirst($time)) : Filter::formatHumanReadableTime($time);
     }
     // translate all the formatter options
     $formatters = array_map('PrivateBin\\I18n::_', $this->_conf->getSection('formatter_options'));
     // set language cookie if that functionality was enabled
     $languageselection = '';
     if ($this->_conf->getKey('languageselection')) {
         $languageselection = I18n::getLanguage();
         setcookie('lang', $languageselection);
     }
     $page = new View();
     $page->assign('CIPHERDATA', $this->_data);
     $page->assign('ERROR', I18n::_($this->_error));
     $page->assign('STATUS', I18n::_($this->_status));
     $page->assign('VERSION', self::VERSION);
     $page->assign('DISCUSSION', $this->_conf->getKey('discussion'));
     $page->assign('OPENDISCUSSION', $this->_conf->getKey('opendiscussion'));
     $page->assign('MARKDOWN', array_key_exists('markdown', $formatters));
     $page->assign('SYNTAXHIGHLIGHTING', array_key_exists('syntaxhighlighting', $formatters));
     $page->assign('SYNTAXHIGHLIGHTINGTHEME', $this->_conf->getKey('syntaxhighlightingtheme'));
     $page->assign('FORMATTER', $formatters);
     $page->assign('FORMATTERDEFAULT', $this->_conf->getKey('defaultformatter'));
     $page->assign('NOTICE', I18n::_($this->_conf->getKey('notice')));
     $page->assign('BURNAFTERREADINGSELECTED', $this->_conf->getKey('burnafterreadingselected'));
     $page->assign('PASSWORD', $this->_conf->getKey('password'));
     $page->assign('FILEUPLOAD', $this->_conf->getKey('fileupload'));
     $page->assign('ZEROBINCOMPATIBILITY', $this->_conf->getKey('zerobincompatibility'));
     $page->assign('LANGUAGESELECTION', $languageselection);
     $page->assign('LANGUAGES', I18n::getLanguageLabels(I18n::getAvailableLanguages()));
     $page->assign('EXPIRE', $expire);
     $page->assign('EXPIREDEFAULT', $this->_conf->getKey('default', 'expire'));
     $page->assign('EXPIRECLONE', !$this->_doesExpire || $this->_doesExpire && $this->_conf->getKey('clone', 'expire'));
     $page->assign('URLSHORTENER', $this->_conf->getKey('urlshortener'));
     $page->draw($this->_conf->getKey('template'));
 }