40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| namespace BookStack\Entities\Tools;
 | |
| 
 | |
| use BookStack\Entities\EntityProvider;
 | |
| use BookStack\Entities\Models\Entity;
 | |
| 
 | |
| class MixedEntityRequestHelper
 | |
| {
 | |
|     public function __construct(
 | |
|         protected EntityProvider $entities,
 | |
|     ) {
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Query out an entity, visible to the current user, for the given
 | |
|      * entity request details (this provided in a request validated by
 | |
|      * this classes' validationRules method).
 | |
|      * @param array{type: string, id: string} $requestData
 | |
|      */
 | |
|     public function getVisibleEntityFromRequestData(array $requestData): Entity
 | |
|     {
 | |
|         $entityType = $this->entities->get($requestData['type']);
 | |
| 
 | |
|         return $entityType->newQuery()->scopes(['visible'])->findOrFail($requestData['id']);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the validation rules for an abstract entity request.
 | |
|      * @return array{type: string[], id: string[]}
 | |
|      */
 | |
|     public function validationRules(): array
 | |
|     {
 | |
|         return [
 | |
|                 'type' => ['required', 'string'],
 | |
|                 'id'   => ['required', 'integer'],
 | |
|         ];
 | |
|     }
 | |
| }
 |