Helpdesk da PluGzOne, baseado no osTicket
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

75 lines
1.9 KiB

<?php
class IntlMigrator extends MigrationTask {
var $description = "Date format migration from date() to ICU";
static $dateToIntl = array(
'd' => 'dd',
'D' => 'EEE',
'j' => 'd',
'l' => 'EEEE',
'N' => 'e',
'w' => 'c',
'z' => 'D',
'W' => 'w',
'F' => 'MMMM',
'm' => 'MM',
'M' => 'MMM',
'n' => 'M',
'o' => 'Y',
'Y' => 'y',
'y' => 'yy',
'A' => 'a',
'g' => 'h',
'G' => 'H',
'h' => 'hh',
'H' => 'HH',
'i' => 'mm',
's' => 'ss',
'u' => 'SSSSSS',
'e' => 'VV',
'O' => 'ZZZ',
'P' => 'ZZZZZ',
'T' => 'z',
'c' => "yyyy-MM-dd'T'HH:mm:ssXXXXX",
'r' => 'EEE, d MMM yyyy HH:mm:ss XXXXX',
);
function run($max_time) {
global $cfg;
// Detect rough install date — rationale: the schema_signature is
// touched by the database migrater; however the updated timestamp
// associated with it is not touched.
$install_date = $cfg->lastModified('schema_signature');
$touched = false;
// Upgrade date formats
foreach (
array('datetime_format', 'daydatetime_format', 'time_format', 'date_format')
as $key
) {
$new_format = '';
$format = $cfg->get($key);
foreach (str_split($format) as $char) {
$new_format .= @self::$dateToIntl[$char] ?: $char;
}
$cfg->set($key, $new_format);
// Consider the last-updated time of the key to see if the
// format has been modified since installation
$touched |= $cfg->lastModified($key) != $install_date;
}
// Add in new custom date format flag
$cfg->set('date_formats', $touched ? 'custom' : '' );
}
}
return 'IntlMigrator';