fix: can read for metadata section #184
This commit is contained in:
parent
6fe458b1e3
commit
554c462290
|
@ -240,7 +240,13 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
||||||
*/
|
*/
|
||||||
public function get_item( $request ) {
|
public function get_item( $request ) {
|
||||||
$metadata_section_id = $request['metadata_section_id'];
|
$metadata_section_id = $request['metadata_section_id'];
|
||||||
$result = $this->metadata_sections_repository->fetch($metadata_section_id, 'OBJECT');
|
if($metadata_section_id == \Tainacan\Entities\Metadata_Section::$default_section_slug) {
|
||||||
|
$collection_id = is_numeric($request['collection_id']) ? (int)$request['collection_id'] : null;
|
||||||
|
$result = $this->metadata_sections_repository->get_default_section($collection_id);
|
||||||
|
} else {
|
||||||
|
$result = $this->metadata_sections_repository->fetch($metadata_section_id, 'OBJECT');
|
||||||
|
}
|
||||||
|
|
||||||
if (! $result instanceof Entities\Metadata_Section) {
|
if (! $result instanceof Entities\Metadata_Section) {
|
||||||
return new \WP_REST_Response([
|
return new \WP_REST_Response([
|
||||||
'error_message' => __('Metadata section with this ID was not found', 'tainacan'),
|
'error_message' => __('Metadata section with this ID was not found', 'tainacan'),
|
||||||
|
@ -263,8 +269,14 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
$collection = $this->collection_repository->fetch($request['collection_id']);
|
$collection = $this->collection_repository->fetch($request['collection_id']);
|
||||||
if($collection instanceof Entities\Collection && $collection->can_read()){
|
if($collection instanceof Entities\Collection && $collection->can_read()) {
|
||||||
$metadatum_section = $this->metadata_sections_repository->fetch($request['metadata_section_id']);
|
$metadata_section_id = $request['metadata_section_id'];
|
||||||
|
if($metadata_section_id == \Tainacan\Entities\Metadata_Section::$default_section_slug) {
|
||||||
|
$metadatum_section = $this->metadata_sections_repository->get_default_section($collection);
|
||||||
|
} else {
|
||||||
|
$metadatum_section = $this->metadata_sections_repository->fetch($metadata_section_id);
|
||||||
|
}
|
||||||
|
|
||||||
return $metadatum_section instanceof Entities\Metadata_Section && $metadatum_section->can_read();
|
return $metadatum_section instanceof Entities\Metadata_Section && $metadatum_section->can_read();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -455,4 +455,28 @@ class Metadata_Sections extends Repository {
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if $user can read the entity
|
||||||
|
*
|
||||||
|
* @param Entities\Metadata_Section|Entities\Entity $entity
|
||||||
|
* @param int|\WP_User|null $user default is null for the current user
|
||||||
|
*
|
||||||
|
* @return boolean
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
public function can_read( Entities\Entity $entity, $user = null ) {
|
||||||
|
if ( is_null($entity) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if ($entity instanceof Entities\Metadata_Section && $entity->get_id() == Entities\Metadata_Section::$default_section_slug ) {
|
||||||
|
$collection = $entity->get_collection();
|
||||||
|
if($collection instanceof Entities\Collection) {
|
||||||
|
return $collection->can_read();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::can_read($entity, $user);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue