mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-10-27 08:36:51 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Pterodactyl\Transformers\Api\Application;
 | |
| 
 | |
| use Pterodactyl\Models\Location;
 | |
| use Pterodactyl\Services\Acl\Api\AdminAcl;
 | |
| 
 | |
| class LocationTransformer extends BaseTransformer
 | |
| {
 | |
|     /**
 | |
|      * List of resources that can be included.
 | |
|      *
 | |
|      * @var array
 | |
|      */
 | |
|     protected $availableIncludes = ['nodes', 'servers'];
 | |
| 
 | |
|     /**
 | |
|      * Return the resource name for the JSONAPI output.
 | |
|      */
 | |
|     public function getResourceName(): string
 | |
|     {
 | |
|         return Location::RESOURCE_NAME;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Return a generic transformed location array.
 | |
|      */
 | |
|     public function transform(Location $location): array
 | |
|     {
 | |
|         return [
 | |
|             'id' => $location->id,
 | |
|             'short' => $location->short,
 | |
|             'long' => $location->long,
 | |
|             $location->getUpdatedAtColumn() => $this->formatTimestamp($location->updated_at),
 | |
|             $location->getCreatedAtColumn() => $this->formatTimestamp($location->created_at),
 | |
|         ];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Return the nodes associated with this location.
 | |
|      *
 | |
|      * @return \League\Fractal\Resource\Collection|\League\Fractal\Resource\NullResource
 | |
|      *
 | |
|      * @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException
 | |
|      */
 | |
|     public function includeServers(Location $location)
 | |
|     {
 | |
|         if (!$this->authorize(AdminAcl::RESOURCE_SERVERS)) {
 | |
|             return $this->null();
 | |
|         }
 | |
| 
 | |
|         $location->loadMissing('servers');
 | |
| 
 | |
|         return $this->collection($location->getRelation('servers'), $this->makeTransformer(ServerTransformer::class), 'server');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Return the nodes associated with this location.
 | |
|      *
 | |
|      * @return \League\Fractal\Resource\Collection|\League\Fractal\Resource\NullResource
 | |
|      *
 | |
|      * @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException
 | |
|      */
 | |
|     public function includeNodes(Location $location)
 | |
|     {
 | |
|         if (!$this->authorize(AdminAcl::RESOURCE_NODES)) {
 | |
|             return $this->null();
 | |
|         }
 | |
| 
 | |
|         $location->loadMissing('nodes');
 | |
| 
 | |
|         return $this->collection($location->getRelation('nodes'), $this->makeTransformer(NodeTransformer::class), 'node');
 | |
|     }
 | |
| }
 | 
