Example #1
0
 /**
  * Timezones and Locales composer.
  *
  * @param \Illuminate\Contracts\View\View $view
  *
  * @return void
  */
 public function compose(View $view)
 {
     $enabledLangs = $this->config->get('langs');
     $langs = array_map(function ($lang) use($enabledLangs) {
         $locale = basename($lang);
         return [$locale => $enabledLangs[$locale]];
     }, glob(base_path('resources/lang') . '/*'));
     $langs = call_user_func_array('array_merge', $langs);
     $regions = ['Africa' => DateTimeZone::AFRICA, 'America' => DateTimeZone::AMERICA, 'Antarctica' => DateTimeZone::ANTARCTICA, 'Asia' => DateTimeZone::ASIA, 'Atlantic' => DateTimeZone::ATLANTIC, 'Australia' => DateTimeZone::AUSTRALIA, 'Europe' => DateTimeZone::EUROPE, 'Indian' => DateTimeZone::INDIAN, 'Pacific' => DateTimeZone::PACIFIC, 'UTC' => DateTimeZone::UTC];
     $timezones = [];
     foreach ($regions as $name => $mask) {
         $zones = DateTimeZone::listIdentifiers($mask);
         foreach ($zones as $timezone) {
             // Lets sample the time there right now
             $time = new DateTime(null, new DateTimeZone($timezone));
             $ampm = $time->format('H') > 12 ? ' (' . $time->format('g:i a') . ')' : '';
             // Remove region name and add a sample time
             $timezones[$name][$timezone] = substr($timezone, strlen($name) + 1) . ' - ' . $time->format('H:i') . $ampm;
             $timezones[$name] = str_replace('_', ' ', $timezones[$name]);
         }
     }
     $view->withTimezones($timezones);
     $view->withLangs($langs);
 }