 c9299b5410
			
		
	
	
	c9299b5410
	
	
	
		
			
			* Just commit it all * Require auth * crap * Update homepage * Block AI scrapers * Update cache update script * Add dummy file * Remove unnecessary lastfm config var * Use withQueryParameters for LastFM API * Fix embeds * Update example env * Smard
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers;
 | |
| 
 | |
| use App\Models\BookmarkCategory;
 | |
| use App\Models\BookmarkSite;
 | |
| use App\Models\GuestbookEntry;
 | |
| use Exception;
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\View\View;
 | |
| 
 | |
| class AdminImportController extends Controller
 | |
| {
 | |
|     public function show() : View {
 | |
|         return view('admin.import');
 | |
|     }
 | |
| 
 | |
|     public function submit(Request $request)
 | |
|     {
 | |
|         $request->validate([
 | |
|             'data_file' => 'required|mimes:json',
 | |
|         ]);
 | |
| 
 | |
|         $file = $request->file('data_file');
 | |
|         $jsonContent = file_get_contents($file->getRealPath());
 | |
|         $data = json_decode($jsonContent, true);
 | |
|         $tables = [];
 | |
|         foreach($data as $item) {
 | |
|             if ($item['type'] !== "table") continue;
 | |
|             $tables[$item['name']] = [
 | |
|                 'data' => $item['data'],
 | |
|                 'count' => count($item['data'])
 | |
|             ];
 | |
| 
 | |
|             if ($item['name'] === "guestbook__entries") {
 | |
|                 GuestbookEntry::importGuestbookEntry($item['data']);
 | |
|             }
 | |
|             $this->import($item['data'], $item['name']);
 | |
|         }
 | |
|         return view('admin.import-success', ['tables' => $tables]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Imports the given data to the specified table
 | |
|      *
 | |
|      * @param array $data The data to import
 | |
|      * @param string $table_name The name of the table to import to
 | |
|      * @return void
 | |
|      * @throws Exception Invalid table specified, to be replaced with custom exception
 | |
|      */
 | |
|     public function import(array $data, string $table_name): void {
 | |
|         switch ($table_name) {
 | |
|             case 'guestbook__entries':
 | |
|                 GuestbookEntry::importGuestbookEntry($data);
 | |
|                 break;
 | |
|             case 'bookmark__categories'  :
 | |
|                 BookmarkCategory::importBookmarkCategory($data);
 | |
|                 break;
 | |
|             case 'bookmark__sites':
 | |
|                 BookmarkSite::importBookmark($data);
 | |
|                 break;
 | |
|             case 'guestbook__bans':
 | |
|                 break;
 | |
|             default:
 | |
|                 // TODO: Replace with custom exception
 | |
|                 throw new Exception("Invalid table specified ($table_name)");
 | |
|         }
 | |
|     }
 | |
| }
 |