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
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							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';
 |