Ejemplo n.º 1
0
 public function postIndex()
 {
     if (Auth::action('system.update')) {
         $settings = Request::all();
         unset($settings['_token']);
         foreach ($settings as $setting => $value) {
             $setting = str_replace($this->dot_replace, '.', $setting);
             $current_setting = Setting::where('name', '=', $setting)->where('editable', '=', 1)->first();
             if (!empty($current_setting)) {
                 if ($setting == 'site.secure_folders') {
                     $newValues = explode(',', $value);
                     foreach ($newValues as $k => $folder) {
                         $folder = trim($folder);
                         if (empty($folder)) {
                             unset($newValues[$k]);
                         } else {
                             $newValues[$k] = '/' . trim($folder, '/') . '/';
                         }
                     }
                     foreach ($newValues as $k => $folder) {
                         foreach ($newValues as $kCheck => $folderCheck) {
                             if ($k != $kCheck && strpos($folder, $folderCheck) === 0) {
                                 unset($newValues[$k]);
                             }
                         }
                     }
                     $oldValues = explode(',', $current_setting->value);
                     foreach ($oldValues as $k => $folder) {
                         $folder = trim($folder);
                         if (empty($folder)) {
                             unset($oldValues[$k]);
                         } else {
                             $oldValues[$k] = '/' . trim($folder, '/') . '/';
                         }
                     }
                     $toSecure = array_diff($newValues, $oldValues);
                     $toUnSecure = array_diff($oldValues, $newValues);
                     foreach ($toSecure as $newSecureFolder) {
                         if (is_dir(public_path() . '/uploads' . $newSecureFolder)) {
                             Directory::copy(public_path() . '/uploads' . $newSecureFolder, storage_path() . '/uploads' . $newSecureFolder);
                             Directory::remove(public_path() . '/uploads' . $newSecureFolder, true);
                         } else {
                             @mkdir(storage_path() . '/uploads' . $newSecureFolder, 0777, true);
                         }
                     }
                     foreach ($toUnSecure as $newUnSecureFolder) {
                         if (is_dir(storage_path() . '/uploads' . $newUnSecureFolder)) {
                             Directory::copy(storage_path() . '/uploads' . $newUnSecureFolder, public_path() . '/uploads' . $newUnSecureFolder);
                             Directory::remove(storage_path() . '/uploads' . $newUnSecureFolder);
                         } else {
                             @mkdir(public_path() . '/uploads' . $newUnSecureFolder, 0777, true);
                         }
                     }
                     $value = implode(',', $newValues);
                 }
                 $current_setting->value = $value;
                 $current_setting->save();
                 if (in_array($setting, ['frontend.theme', 'admin.default_template'])) {
                     Theme::templateIdUpdate();
                 }
             }
         }
         AdminLog::new_log('System settings updated');
         $this->addAlert('success', 'System Settings Updated');
     }
     return \redirect()->route('coaster.admin.system');
 }