public function getList()
 {
     $thumbs = [];
     $themesPath = base_path('resources/views/themes');
     if (is_dir($themesPath)) {
         foreach (Theme::all() as $databaseTheme) {
             $databaseThemes[$databaseTheme->theme] = $databaseTheme;
         }
         foreach (scandir($themesPath) as $themeFile) {
             if (!is_dir($themesPath . '/' . $themeFile) && substr($themeFile, -4) == '.zip') {
                 Theme::unzip($themeFile);
             }
         }
         foreach (scandir($themesPath) as $themeFolder) {
             if (is_dir($themesPath . '/' . $themeFolder) && strpos($themeFolder, '.') !== 0) {
                 $theme = new \stdClass();
                 $theme->name = $themeFolder;
                 $theme->image = 'https://placeholdit.imgix.net/~text?txtsize=19&bg=efefef&txtclr=aaaaaa%26text%3Dno%2Bimage&txt=no+image&w=200&h=150';
                 $publicLocations = [public_path('themes/' . $themeFolder), $themesPath . '/' . $themeFolder . '/public'];
                 foreach ($publicLocations as $k => $publicLocation) {
                     if (is_dir($publicLocation)) {
                         foreach (scandir($publicLocation) as $file) {
                             if (!is_dir($publicLocation . '/' . $file)) {
                                 if (strpos($file, 'screenshot.') === 0) {
                                     if ($k == 0) {
                                         $theme->image = \Croppa::url(URL::to('themes/' . $themeFolder . '/' . $file), 252, 142);
                                     } else {
                                         $saveInCache = public_path('coaster/tmp/themes/' . $themeFolder);
                                         @mkdir($saveInCache, 0777, true);
                                         copy($publicLocation . '/' . $file, $saveInCache . '/' . $file);
                                         $theme->image = \Croppa::url(URL::to('coaster/tmp/themes/' . $themeFolder . '/' . $file), 252, 142);
                                     }
                                 }
                             }
                         }
                     }
                 }
                 if (isset($databaseThemes[$themeFolder])) {
                     $theme->id = $databaseThemes[$themeFolder]->id;
                     if ($databaseThemes[$themeFolder]->id != config('coaster::frontend.theme')) {
                         $theme->activate = 1;
                     } else {
                         $theme->active = 1;
                     }
                 } else {
                     $theme->install = 1;
                 }
                 $thumbs[] = $theme;
             }
         }
     }
     $theme_auth = ['update' => Auth::action('themes.update'), 'manage' => Auth::action('themes.manage'), 'export' => Auth::action('themes.export'), 'edit' => Auth::action('themes.edit')];
     $themes_installed = View::make('coaster::partials.themes.thumbs', ['thumbs' => $thumbs, 'auth' => $theme_auth]);
     if (!empty(self::$_error)) {
         $this->addAlert('danger', self::$_error);
     }
     $this->layoutData['content'] = View::make('coaster::pages.themes.list', ['themes_installed' => $themes_installed, 'can_upload' => $theme_auth['manage']]);
     $this->layoutData['modals'] = View::make('coaster::modals.themes.delete')->render() . View::make('coaster::modals.themes.export')->render() . View::make('coaster::modals.themes.install')->render() . View::make('coaster::modals.themes.install_confirm')->render() . View::make('coaster::modals.themes.install_error')->render();
 }