feat: remove metadata_list mapped property #184
This commit is contained in:
parent
c16f37a3a7
commit
a93899529e
|
@ -148,22 +148,14 @@ class REST_Metadata_Controller extends REST_Controller {
|
|||
* @return \WP_Error|\WP_REST_Response
|
||||
*/
|
||||
public function get_item( $request ) {
|
||||
$collection_id = isset($request['collection_id']) ? $request['collection_id'] : false;
|
||||
$metadatum_id = $request['metadatum_id'];
|
||||
|
||||
$offset = '';
|
||||
$number = '';
|
||||
if($request['offset'] >= 0 && $request['number'] >= 1){
|
||||
$offset = $request['offset'];
|
||||
$number = $request['number'];
|
||||
}
|
||||
|
||||
$result = $this->metadatum_repository->fetch($metadatum_id, 'OBJECT');
|
||||
|
||||
if (! $result instanceof Entities\Metadatum) {
|
||||
return new \WP_REST_Response([
|
||||
'error_message' => __('Metadata with this ID was not found', 'tainacan'),
|
||||
'item_id' => $item_id
|
||||
'item_id' => $metadatum_id
|
||||
], 400);
|
||||
}
|
||||
|
||||
|
@ -187,7 +179,7 @@ class REST_Metadata_Controller extends REST_Controller {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param \WP_REST_Request $request
|
||||
* @param String $request
|
||||
*
|
||||
* @param null $collection_id
|
||||
*
|
||||
|
@ -444,7 +436,7 @@ class REST_Metadata_Controller extends REST_Controller {
|
|||
if (! $metadatum instanceof Entities\Metadatum) {
|
||||
return new \WP_REST_Response([
|
||||
'error_message' => __('Metadata with this ID was not found', 'tainacan'),
|
||||
'item_id' => $item_id
|
||||
'item_id' => $metadatum_id
|
||||
], 400);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
public function init_objects() {
|
||||
$this->metadata_sections_repository = Repositories\Metadata_Sections::get_instance();
|
||||
$this->metadata_repository = Repositories\Metadata::get_instance();
|
||||
$this->collection_repository = Repositories\Collections::get_instance();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,7 +36,7 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
* @throws \Exception
|
||||
*/
|
||||
public function register_routes() {
|
||||
register_rest_route($this->namespace, '/collection/(?P<collection_id>[\d]+)/' . $this->rest_base . '/(?P<metadatum_id>[\d]+)',
|
||||
register_rest_route($this->namespace, '/collection/(?P<collection_id>[\d]+)/' . $this->rest_base . '/(?P<metadata_section_id>[\d]+)',
|
||||
array(
|
||||
array(
|
||||
'methods' => \WP_REST_Server::READABLE,
|
||||
|
@ -109,50 +110,6 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
* @return \WP_Error|\WP_REST_Response
|
||||
*/
|
||||
public function get_item( $request ) {
|
||||
$collection_id = isset($request['collection_id']) ? $request['collection_id'] : false;
|
||||
$metadatum_id = $request['metadatum_id'];
|
||||
|
||||
$offset = '';
|
||||
$number = '';
|
||||
if($request['offset'] >= 0 && $request['number'] >= 1){
|
||||
$offset = $request['offset'];
|
||||
$number = $request['number'];
|
||||
}
|
||||
|
||||
$result = $this->metadata_sections_repository->fetch($metadatum_id, 'OBJECT');
|
||||
|
||||
if (! $result instanceof Entities\Metadatum) {
|
||||
return new \WP_REST_Response([
|
||||
'error_message' => __('Metadata with this ID was not found', 'tainacan'),
|
||||
'item_id' => $item_id
|
||||
], 400);
|
||||
}
|
||||
|
||||
return new \WP_REST_Response($this->prepare_item_for_response($result, $request), 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
* @return bool|\WP_Error
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function get_item_permissions_check( $request ) {
|
||||
$metadatum = $this->metadata_sections_repository->fetch($request['metadatum_id']);
|
||||
|
||||
if ( $metadatum instanceof Entities\Metadatum ) {
|
||||
return $metadatum->can_read();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \WP_REST_Request|string $request
|
||||
*
|
||||
|
@ -176,6 +133,137 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
return $metadata_section;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Entities\Metadata_Section $item
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
* @return array|\WP_Error|\WP_REST_Response
|
||||
*/
|
||||
public function prepare_item_for_response( $item, $request ) {
|
||||
if (!empty($item)){
|
||||
$item_arr = $item->_toArray();
|
||||
if ($request['context'] === 'edit') {
|
||||
$item_arr['current_user_can_edit'] = $item->can_edit();
|
||||
$item_arr['current_user_can_delete'] = $item->can_delete();
|
||||
$item_arr['enabled'] = $item->get_enabled_for_collection();
|
||||
}
|
||||
|
||||
$metadata_list = $item->get_metadata_object_list();
|
||||
$item_arr['metadata_object_list'] = [];
|
||||
if($metadata_list != false) {
|
||||
foreach($metadata_list as $metadata) {
|
||||
$meta_arr = $this->prepare_metadata_for_response($metadata, $request);
|
||||
$item_arr['metadata_object_list'][] = $meta_arr;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this filter to add additional post_meta to the api response
|
||||
* Use the $request object to get the context of the request and other variables
|
||||
* For example, id context is edit, you may want to add your meta or not.
|
||||
*
|
||||
* Also take care to do any permissions verification before exposing the data
|
||||
*/
|
||||
$extra_metadata = apply_filters('tainacan-api-response-metadata-section-meta', [], $request);
|
||||
|
||||
foreach ($extra_metadata as $extra_meta) {
|
||||
$item_arr[$extra_meta] = get_post_meta($item_arr['id'], $extra_meta, true);
|
||||
}
|
||||
return $item_arr;
|
||||
}
|
||||
return $item;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Entities\Metadata $item
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
* @return array|\WP_Error|\WP_REST_Response
|
||||
*/
|
||||
public function prepare_metadata_for_response( $item, $request ) {
|
||||
if(!empty($item)){
|
||||
$item_arr = $item->_toArray();
|
||||
$item_arr['metadata_type_object'] = $item->get_metadata_type_object()->_toArray();
|
||||
|
||||
if ( isset($request['include_options_as_html']) && $request['include_options_as_html'] == 'yes' )
|
||||
$item_arr['options_as_html'] = $item->get_metadata_type_object()->get_options_as_html();
|
||||
|
||||
if ( isset($item_arr['metadata_type_options']) && isset($item_arr['metadata_type_options']['taxonomy_id']) ) {
|
||||
$taxonomy = Repositories\Taxonomies::get_instance()->get_db_identifier_by_id( $item_arr['metadata_type_options']['taxonomy_id'] );
|
||||
$item_arr['metadata_type_options']['taxonomy'] = $taxonomy;
|
||||
}
|
||||
|
||||
if ($request['context'] === 'edit') {
|
||||
$item_arr['current_user_can_edit'] = $item->can_edit();
|
||||
$item_arr['current_user_can_delete'] = $item->can_delete();
|
||||
ob_start();
|
||||
$item->get_metadata_type_object()->form();
|
||||
$form = ob_get_clean();
|
||||
$item_arr['edit_form'] = $form;
|
||||
$item_arr['enabled'] = $item->get_enabled_for_collection();
|
||||
|
||||
if(isset($item_arr['metadata_type_options']) && isset($item_arr['metadata_type_options']['children_objects'])) {
|
||||
foreach ($item_arr['metadata_type_options']['children_objects'] as $index => $children) {
|
||||
$item_arr['metadata_type_options']['children_objects'][$index]['current_user_can_edit'] = $item->can_edit();
|
||||
$item_arr['metadata_type_options']['children_objects'][$index]['current_user_can_delete'] = $item->can_delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this filter to add additional post_meta to the api response
|
||||
* Use the $request object to get the context of the request and other variables
|
||||
* For example, id context is edit, you may want to add your meta or not.
|
||||
*
|
||||
* Also take care to do any permissions verification before exposing the data
|
||||
*/
|
||||
$extra_metadata = apply_filters('tainacan-api-response-metadatum-meta', [], $request);
|
||||
|
||||
foreach ($extra_metadata as $extra_meta) {
|
||||
$item_arr[$extra_meta] = get_post_meta($item_arr['id'], $extra_meta, true);
|
||||
}
|
||||
$item_arr['inherited'] = $item_arr['collection_id'] != $request['collection_id'];
|
||||
|
||||
return $item_arr;
|
||||
}
|
||||
|
||||
return $item;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
* @return \WP_Error|\WP_REST_Response
|
||||
*/
|
||||
public function get_item( $request ) {
|
||||
$metadata_section_id = $request['metadata_section_id'];
|
||||
$result = $this->metadata_sections_repository->fetch($metadata_section_id, 'OBJECT');
|
||||
if (! $result instanceof Entities\Metadata_Section) {
|
||||
return new \WP_REST_Response([
|
||||
'error_message' => __('Metadata section with this ID was not found', 'tainacan'),
|
||||
'item_id' => $metadata_section_id
|
||||
], 400);
|
||||
}
|
||||
|
||||
return new \WP_REST_Response($this->prepare_item_for_response($result, $request), 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
* @return bool|\WP_Error
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function get_item_permissions_check( $request ) {
|
||||
$metadatum_section = $this->metadata_sections_repository->fetch($request['metadata_section_id']);
|
||||
|
||||
if ( $metadatum_section instanceof Entities\Metadata_Section ) {
|
||||
return $metadatum_section->can_read();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
|
@ -236,104 +324,6 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $item
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
* @return array|\WP_Error|\WP_REST_Response
|
||||
*/
|
||||
public function prepare_item_for_response( $item, $request ) {
|
||||
if (!empty($item)){
|
||||
$item_arr = $item->_toArray();
|
||||
if ($request['context'] === 'edit') {
|
||||
$item_arr['current_user_can_edit'] = $item->can_edit();
|
||||
$item_arr['current_user_can_delete'] = $item->can_delete();
|
||||
$item_arr['enabled'] = $item->get_enabled_for_collection();
|
||||
}
|
||||
|
||||
$metadata_list = !empty($item_arr['metadata_list']) ? $item_arr['metadata_list'] : [];
|
||||
$item_arr['metadata_object_list'] = [];
|
||||
foreach($metadata_list as $metadatum_id) {
|
||||
$meta = $this->metadata_repository->fetch($metadatum_id, 'OBJECT');
|
||||
$meta_arr = $this->prepare_metadata_for_response($meta, $request);
|
||||
$item_arr['metadata_object_list'][] = $meta_arr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this filter to add additional post_meta to the api response
|
||||
* Use the $request object to get the context of the request and other variables
|
||||
* For example, id context is edit, you may want to add your meta or not.
|
||||
*
|
||||
* Also take care to do any permissions verification before exposing the data
|
||||
*/
|
||||
$extra_metadata = apply_filters('tainacan-api-response-metadata-section-meta', [], $request);
|
||||
|
||||
foreach ($extra_metadata as $extra_meta) {
|
||||
$item_arr[$extra_meta] = get_post_meta($item_arr['id'], $extra_meta, true);
|
||||
}
|
||||
return $item_arr;
|
||||
}
|
||||
return $item;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $item
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
* @return array|\WP_Error|\WP_REST_Response
|
||||
*/
|
||||
public function prepare_metadata_for_response( $item, $request ) {
|
||||
if(!empty($item)){
|
||||
$item_arr = $item->_toArray();
|
||||
$item_arr['metadata_type_object'] = $item->get_metadata_type_object()->_toArray();
|
||||
|
||||
if ( isset($request['include_options_as_html']) && $request['include_options_as_html'] == 'yes' )
|
||||
$item_arr['options_as_html'] = $item->get_metadata_type_object()->get_options_as_html();
|
||||
|
||||
if ( isset($item_arr['metadata_type_options']) && isset($item_arr['metadata_type_options']['taxonomy_id']) ) {
|
||||
$taxonomy = Repositories\Taxonomies::get_instance()->get_db_identifier_by_id( $item_arr['metadata_type_options']['taxonomy_id'] );
|
||||
//$taxonomy = new Entities\Taxonomy($item_arr['metadata_type_options']['taxonomy_id']);
|
||||
//$item_arr['metadata_type_options']['taxonomy'] = $taxonomy->get_db_identifier();
|
||||
$item_arr['metadata_type_options']['taxonomy'] = $taxonomy;
|
||||
}
|
||||
|
||||
if ($request['context'] === 'edit') {
|
||||
$item_arr['current_user_can_edit'] = $item->can_edit();
|
||||
$item_arr['current_user_can_delete'] = $item->can_delete();
|
||||
ob_start();
|
||||
$item->get_metadata_type_object()->form();
|
||||
$form = ob_get_clean();
|
||||
$item_arr['edit_form'] = $form;
|
||||
$item_arr['enabled'] = $item->get_enabled_for_collection();
|
||||
|
||||
if(isset($item_arr['metadata_type_options']) && isset($item_arr['metadata_type_options']['children_objects'])) {
|
||||
foreach ($item_arr['metadata_type_options']['children_objects'] as $index => $children) {
|
||||
$item_arr['metadata_type_options']['children_objects'][$index]['current_user_can_edit'] = $item->can_edit();
|
||||
$item_arr['metadata_type_options']['children_objects'][$index]['current_user_can_delete'] = $item->can_delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this filter to add additional post_meta to the api response
|
||||
* Use the $request object to get the context of the request and other variables
|
||||
* For example, id context is edit, you may want to add your meta or not.
|
||||
*
|
||||
* Also take care to do any permissions verification before exposing the data
|
||||
*/
|
||||
$extra_metadata = apply_filters('tainacan-api-response-metadatum-meta', [], $request);
|
||||
|
||||
foreach ($extra_metadata as $extra_meta) {
|
||||
$item_arr[$extra_meta] = get_post_meta($item_arr['id'], $extra_meta, true);
|
||||
}
|
||||
$item_arr['inherited'] = $item_arr['collection_id'] != $request['collection_id'];
|
||||
|
||||
return $item_arr;
|
||||
}
|
||||
|
||||
return $item;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
|
@ -370,7 +360,6 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
* @throws \Exception
|
||||
*/
|
||||
public function get_items_permissions_check( $request ) {
|
||||
return true;
|
||||
|
||||
if(!isset($request['collection_id'])) {
|
||||
return true;
|
||||
|
@ -396,21 +385,17 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
* @return \WP_Error|\WP_REST_Response
|
||||
*/
|
||||
public function delete_item( $request ) {
|
||||
$metadatum_id = $request['metadatum_id'];
|
||||
|
||||
$metadatum = $this->metadata_sections_repository->fetch($metadatum_id);
|
||||
|
||||
if (! $metadatum instanceof Entities\Metadatum) {
|
||||
$metadata_section_id = $request['metadata_section_id'];
|
||||
$metadatum_section = $this->metadata_sections_repository->fetch($metadata_section_id);
|
||||
if (! $metadatum_section instanceof Entities\Metadatum) {
|
||||
return new \WP_REST_Response([
|
||||
'error_message' => __('Metadata with this ID was not found', 'tainacan'),
|
||||
'item_id' => $item_id
|
||||
'item_id' => $metadata_section_id
|
||||
], 400);
|
||||
}
|
||||
|
||||
$metadatum_trashed = $this->metadata_sections_repository->trash($metadatum);
|
||||
|
||||
$prepared = $this->prepare_item_for_response($metadatum_trashed, $request);
|
||||
|
||||
$metadatum_section_trashed = $this->metadata_sections_repository->trash($metadatum_section);
|
||||
$prepared = $this->prepare_item_for_response($metadatum_section_trashed, $request);
|
||||
return new \WP_REST_Response($prepared, 200);
|
||||
}
|
||||
|
||||
|
@ -421,10 +406,10 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
* @throws \Exception
|
||||
*/
|
||||
public function delete_item_permissions_check( $request ) {
|
||||
$metadatum = $this->metadata_sections_repository->fetch($request['metadatum_id']);
|
||||
$metadata_section = $this->metadata_sections_repository->fetch($request['metadata_section_id']);
|
||||
|
||||
if ($metadatum instanceof Entities\Metadatum) {
|
||||
return $metadatum->can_delete();
|
||||
if ($metadata_section instanceof Entities\Metadata_Section) {
|
||||
return $metadata_section->can_delete();
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -441,64 +426,39 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
$body = json_decode($request->get_body(), true);
|
||||
|
||||
if(!empty($body)){
|
||||
$attributes = [];
|
||||
$metadata_section_id = $request['metadata_section_id'];
|
||||
$metadata_section = $this->metadata_sections_repository->fetch($metadata_section_id);
|
||||
|
||||
$metadatum_id = $request['metadatum_id'];
|
||||
$confirm_repository = false;
|
||||
foreach ($body as $att => $value){
|
||||
if ($att === "repository_level" && $value === "yes") {
|
||||
$confirm_repository = true;
|
||||
continue;
|
||||
if ( $collection_id != $metadata_section->get_collection_id() ) {
|
||||
return new \WP_REST_Response( [
|
||||
'error_message' => __('This metadata section not found in collection', 'tainacan'),
|
||||
'metadata_section_id' => $metadata_section_id
|
||||
] );
|
||||
}
|
||||
|
||||
if ($metadata_section) {
|
||||
$attributes = [];
|
||||
foreach ($body as $att => $value) {
|
||||
$attributes[$att] = $value;
|
||||
}
|
||||
|
||||
$metadatum = $this->metadata_sections_repository->fetch($metadatum_id);
|
||||
|
||||
$error_message = __('Metadata with this ID was not found', 'tainacan');
|
||||
|
||||
if ($metadatum) {
|
||||
// These conditions are for verify if endpoints are used correctly
|
||||
if(!$collection_id && $metadatum->get_collection_id() !== 'default') {
|
||||
$error_message = __('This metadata is not a default metadata', 'tainacan');
|
||||
|
||||
return new \WP_REST_Response( [
|
||||
'error_message' => $error_message,
|
||||
'metadatum_id' => $metadatum_id
|
||||
] );
|
||||
} elseif ($collection_id && $metadatum->get_collection_id() === 'default'){
|
||||
$error_message = __('This metadata is not a collection metadata', 'tainacan');
|
||||
|
||||
return new \WP_REST_Response( [
|
||||
'error_message' => $error_message,
|
||||
'metadatum_id' => $metadatum_id
|
||||
] );
|
||||
}
|
||||
|
||||
if (isset($request['repository_level']) && $confirm_repository) {
|
||||
$attributes['collection_id'] = "default";
|
||||
}
|
||||
|
||||
$prepared_metadata = $this->prepare_item_for_updating($metadatum, $attributes);
|
||||
|
||||
if($prepared_metadata->validate()){
|
||||
$updated_metadata = $this->metadata_sections_repository->update($prepared_metadata);
|
||||
|
||||
$response = $this->prepare_item_for_response($updated_metadata, $request);
|
||||
|
||||
$prepared = $this->prepare_item_for_updating($metadata_section, $attributes);
|
||||
if($prepared->validate()) {
|
||||
$updated_metadata_section = $this->metadata_sections_repository->update($prepared);
|
||||
$response = $this->prepare_item_for_response($updated_metadata_section, $request);
|
||||
return new \WP_REST_Response($response, 200);
|
||||
}
|
||||
|
||||
return new \WP_REST_Response([
|
||||
'error_message' => __('One or more values are invalid.', 'tainacan'),
|
||||
'errors' => $prepared_metadata->get_errors(),
|
||||
'metadatum' => $this->prepare_item_for_response($prepared_metadata, $request)
|
||||
'errors' => $prepared->get_errors(),
|
||||
'metadatum_section' => $this->prepare_item_for_response($prepared, $request)
|
||||
], 400);
|
||||
}
|
||||
|
||||
return new \WP_REST_Response( [
|
||||
'error_message' => $error_message,
|
||||
'metadatum_id' => $metadatum_id
|
||||
'error_message' => __('Metadata with this ID was not found', 'tainacan'),
|
||||
'metadata_section_id' => $metadata_section_id
|
||||
] );
|
||||
}
|
||||
|
||||
|
@ -565,7 +525,7 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
$metadata_section_id = $request['metadata_section_id'];
|
||||
|
||||
try {
|
||||
$result = $this->metadata_sections_repository->get_metadata_list($metadata_section_id);
|
||||
$result = $this->metadata_sections_repository->get_metadata_object_list($metadata_section_id);
|
||||
$prepared_item = [];
|
||||
foreach ( $result as $item ) {
|
||||
$prepared_item[] = $item->_toArray();
|
||||
|
|
|
@ -15,8 +15,7 @@ class Metadata_Section extends Entity {
|
|||
protected
|
||||
$name,
|
||||
$slug,
|
||||
$description,
|
||||
$metadata_list;
|
||||
$description;
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
|
@ -63,8 +62,9 @@ class Metadata_Section extends Entity {
|
|||
*
|
||||
* @return [int]
|
||||
*/
|
||||
function get_metadata_list() {
|
||||
return $this->get_mapped_property('metadata_list');
|
||||
function get_metadata_object_list() {
|
||||
$tainacan_metadata_sections = \Tainacan\Repositories\Metadata_Sections::get_instance();
|
||||
return $tainacan_metadata_sections->get_metadata_object_list($this->get_id());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -104,16 +104,6 @@ class Metadata_Section extends Entity {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set metadata list of the section
|
||||
*
|
||||
* @param [string|int] $value The array of metadata in this section
|
||||
* @return void
|
||||
*/
|
||||
function set_metadata_list($value) {
|
||||
$this->set_mapped_property('metadata_list', array_unique($value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Transient property used to store the status of the metadatum section for a particular collection
|
||||
*
|
||||
|
@ -138,7 +128,6 @@ class Metadata_Section extends Entity {
|
|||
*/
|
||||
public function validate() {
|
||||
$no_errors = true;
|
||||
$metadata_list = $this->get_metadata_list();
|
||||
$name = $this->get_name();
|
||||
$collection = $this->get_collection();
|
||||
|
||||
|
@ -151,14 +140,6 @@ class Metadata_Section extends Entity {
|
|||
$this->add_error($this->get_id(), __("name is required", 'tainacan'));
|
||||
$no_errors = false;
|
||||
}
|
||||
if( !empty($metadata_list) ) {
|
||||
foreach($metadata_list as $metadatum_id) {
|
||||
if(get_post_type($metadatum_id) != \Tainacan\Entities\Metadatum::$post_type ) {
|
||||
$this->add_error($this->get_id(), __("is not a valid metadata", 'tainacan'));
|
||||
$no_errors = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if($no_errors) {
|
||||
$this->set_as_valid();
|
||||
}
|
||||
|
|
|
@ -67,16 +67,6 @@ class Metadata_Sections extends Repository {
|
|||
'title' => __( 'Collection', 'tainacan' ),
|
||||
'type' => ['integer', 'string'],
|
||||
'description' => __( 'The collection ID', 'tainacan' ),
|
||||
],
|
||||
'metadata_list' => [
|
||||
'map' => 'meta',
|
||||
'title' => __( 'Inner metadata list', 'tainacan' ),
|
||||
'type' => 'array',
|
||||
'items' => [
|
||||
'type' => 'integer'
|
||||
],
|
||||
'description' => __( 'The list of metadata IDs inside this section.', 'tainacan' ),
|
||||
'default' => []
|
||||
]
|
||||
] );
|
||||
}
|
||||
|
@ -279,15 +269,6 @@ class Metadata_Sections extends Repository {
|
|||
*/
|
||||
public function insert( $metadata_section ) {
|
||||
$new_metadata_section = parent::insert( $metadata_section );
|
||||
$metadata_list = $new_metadata_section->get_metadata_list();
|
||||
$id = strval($new_metadata_section->get_id());
|
||||
foreach($metadata_list as $metadata_id) {
|
||||
// $metadata_section_ids = get_post_meta( $metadata_id, 'metadata_section_id');
|
||||
// $metadata_section_ids = array_values(array_filter($metadata_section_ids, function($value) { return !is_null($value) && !empty($value); }));
|
||||
// $metadata_section_ids = $metadata_section_ids === false ? [$id] : array_merge($metadata_section_ids, [$id]) ;
|
||||
//add_post_meta($metadata_id, 'metadata_section_id', $id);
|
||||
update_post_meta($metadata_id, 'metadata_section_id', $id);
|
||||
}
|
||||
return $new_metadata_section;
|
||||
}
|
||||
|
||||
|
@ -303,41 +284,46 @@ class Metadata_Sections extends Repository {
|
|||
}
|
||||
|
||||
public function add_metadata($metadata_section_id, $metadata_list) {
|
||||
$metadata_section = $this->fetch($metadata_section_id);
|
||||
$metadata_section = $this->fetch($metadata_section_id, 'OBJECT');
|
||||
if ($metadata_section) {
|
||||
$list = $metadata_section->get_metadata_list();
|
||||
$metadata_list = array_merge($list, $metadata_list);
|
||||
$metadata_section->set_metadata_list($metadata_list);
|
||||
if ($metadata_section->validate()) {
|
||||
$metadata_section = $this->update($metadata_section);
|
||||
return $metadata_section;
|
||||
foreach($metadata_list as $metadata_id) {
|
||||
//update_post_meta($metadata_id, 'metadata_section_id', $metadata_section_id);
|
||||
add_post_meta($metadata_id, 'metadata_section_id', $metadata_section_id);
|
||||
}
|
||||
return $metadata_section;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function delete_metadata($metadata_section_id, $metadata_list) {
|
||||
$metadata_section = $this->fetch($metadata_section_id);
|
||||
$metadata_section = $this->fetch($metadata_section_id, 'OBJECT');
|
||||
if ($metadata_section) {
|
||||
$list = $metadata_section->get_metadata_list();
|
||||
$list = array_diff($list, $metadata_list);
|
||||
$metadata_section->set_metadata_list($list);
|
||||
if ($metadata_section->validate()) {
|
||||
$metadata_section = $this->update($metadata_section);
|
||||
return $metadata_section;
|
||||
foreach($metadata_list as $metadata_id) {
|
||||
delete_post_meta($metadata_id, 'metadata_section_id', $metadata_section_id);
|
||||
}
|
||||
return $metadata_section;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function get_metadata_list($metadata_section_id) {
|
||||
public function get_metadata_object_list($metadata_section_id) {
|
||||
$metadata_section = $this->fetch($metadata_section_id);
|
||||
$list = $metadata_section->get_metadata_list();
|
||||
$args = array('post__in' => $list);
|
||||
if ($metadata_section) {
|
||||
$args = array(
|
||||
'meta_query' => [
|
||||
[
|
||||
'key' => 'metadata_section_id',
|
||||
'value' => $metadata_section_id,
|
||||
'compare' => '='
|
||||
]
|
||||
]
|
||||
);
|
||||
$metadata_repository = \Tainacan\Repositories\Metadata::get_instance();
|
||||
$metadata_list = $metadata_repository->fetch($args, 'OBJECT');
|
||||
return $metadata_list;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
|
|
|
@ -667,13 +667,9 @@ class Metadata extends Repository {
|
|||
*/
|
||||
public function insert( $metadatum ) {
|
||||
$this->pre_update_taxonomy_metadatum( $metadatum );
|
||||
$this->pre_update_metadata_section( $metadatum );
|
||||
$new_metadatum = parent::insert( $metadatum );
|
||||
|
||||
$this->update_taxonomy_metadatum( $new_metadatum );
|
||||
$this->update_metadata_type_index( $new_metadatum );
|
||||
$this->update_metadata_section( $new_metadatum );
|
||||
|
||||
return $new_metadatum;
|
||||
}
|
||||
|
||||
|
@ -773,7 +769,7 @@ class Metadata extends Repository {
|
|||
*/
|
||||
private function get_data_core_metadata( Entities\Collection $collection ) {
|
||||
|
||||
return $data_core_metadata = [
|
||||
$data_core_metadata = [
|
||||
'core_title' => [
|
||||
'name' => __('Title', 'tainacan'),
|
||||
'collection_id' => $collection->get_id(),
|
||||
|
@ -788,6 +784,7 @@ class Metadata extends Repository {
|
|||
'status' => 'publish',
|
||||
]
|
||||
];
|
||||
return $data_core_metadata;
|
||||
|
||||
}
|
||||
|
||||
|
@ -1607,7 +1604,6 @@ class Metadata extends Repository {
|
|||
*/
|
||||
public function delete( Entities\Entity $entity, $permanent = true ) {
|
||||
$this->delete_taxonomy_metadatum($entity);
|
||||
$this->update_metadata_section($entity, true);
|
||||
return parent::delete($entity, $permanent);
|
||||
}
|
||||
|
||||
|
@ -1738,21 +1734,4 @@ class Metadata extends Repository {
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
public function pre_update_metadata_section(Entities\Metadatum $metadatum) {
|
||||
if($metadatum->get_id() && $metadatum->get_collection_id() != 'default') {
|
||||
$meta = $this->fetch($metadatum->get_id(), 'OBJECT');
|
||||
$this->update_metadata_section( $meta, true );
|
||||
}
|
||||
}
|
||||
|
||||
public function update_metadata_section( Entities\Metadatum $metadatum, $remove = false ) {
|
||||
$metadata_section_repository = Metadata_Sections::get_instance();
|
||||
if (!$remove) {
|
||||
$metadata_section_repository->add_metadata($metadatum->get_metadata_section_id(), [$metadatum->get_id()]);
|
||||
} else {
|
||||
$metadata_section_repository->delete_metadata($metadatum->get_metadata_section_id(), [$metadatum->get_id()]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
*/
|
||||
$bootstrap_cfg = require('bootstrap-config.php');
|
||||
|
||||
$_tests_dir = getenv( 'WP_TESTS_DIR' );
|
||||
// $_tests_dir = getenv( 'WP_TESTS_DIR' );
|
||||
$_tests_dir = '/tainacan_test/wordpress-tests-lib';
|
||||
if ( ! $_tests_dir ) {
|
||||
$_tests_dir = $bootstrap_cfg['tests_dir'];
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
$metadata_section_added = $response->get_data();
|
||||
$this->assertTrue(is_array($metadata_section_added) && array_key_exists('name', $metadata_section_added), sprintf('cannot create metadata section, response: %s', print_r($metadata_section_added, true)));
|
||||
$this->assertEquals('Dados Pessoais', $metadata_section_added['name']);
|
||||
$this->assertTrue(empty($metadata_section_added['metadata_list']));
|
||||
$this->assertTrue(empty($metadata_section_added['metadata_object_list']));
|
||||
}
|
||||
|
||||
public function test_create_fill_metadata_section() {
|
||||
|
@ -42,6 +42,7 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'description' => 'description-1',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish',
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -53,6 +54,7 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'description' => 'description-2',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish',
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -62,7 +64,6 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'name' => 'Dados Pessoais',
|
||||
'description' => 'Informações e detalhes.',
|
||||
'collection_id' => $collection->get_id(),
|
||||
'metadata_list' => [$metadatum_1->get_id(), $metadatum_2->get_id(), $metadatum_2->get_id()]
|
||||
)
|
||||
);
|
||||
|
||||
|
@ -71,18 +72,41 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
$this->namespace . '/collection/' . $collection->get_id() . '/metadata-sections'
|
||||
);
|
||||
$request->set_body($metadata_section);
|
||||
|
||||
$response = $this->server->dispatch($request);
|
||||
|
||||
$metadata_section_added = $response->get_data();
|
||||
$this->assertTrue(is_array($metadata_section_added) && array_key_exists('name', $metadata_section_added), sprintf('cannot create metadata section, response: %s', print_r($metadata_section_added, true)));
|
||||
$this->assertEquals('Dados Pessoais', $metadata_section_added['name']);
|
||||
$this->assertEquals(2, count($metadata_section_added['metadata_list']));
|
||||
|
||||
$metadata_list = json_encode(
|
||||
array(
|
||||
'metadata_list' => [$metadatum_1->get_id(), $metadatum_2->get_id(), $metadatum_2->get_id()]
|
||||
)
|
||||
);
|
||||
$request = new \WP_REST_Request(
|
||||
'POST',
|
||||
$this->namespace . '/collection/' . $collection->get_id() . '/metadata-sections/' . $metadata_section_added['id'] . '/metadata'
|
||||
);
|
||||
$request->set_body($metadata_list);
|
||||
$response = $this->server->dispatch($request);
|
||||
$metadata_section = $response->get_data();
|
||||
$this->assertEquals(2, count($metadata_section['metadata_object_list']));
|
||||
}
|
||||
|
||||
public function test_add_metadata_metadata_section() {
|
||||
$collection = $this->tainacan_entity_factory->create_entity('collection', '', true);
|
||||
|
||||
|
||||
$metadata_section = $this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
'name' => 'Section',
|
||||
'description' => 'Section Description',
|
||||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_1 = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
|
@ -91,6 +115,7 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'metadata_section_id' => $metadata_section->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -119,18 +144,6 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
true
|
||||
);
|
||||
|
||||
$metadata_section = $this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
'name' => 'Section',
|
||||
'description' => 'Section Description',
|
||||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_list' => [$metadatum_1->get_id(), $metadatum_1->get_id()]
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadata_list = json_encode(
|
||||
array(
|
||||
'metadata_list' => [$metadatum_2->get_id(), $metadatum_3->get_id()]
|
||||
|
@ -147,10 +160,10 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
|
||||
$this->assertTrue(is_array($metadata_section_added) && array_key_exists('name', $metadata_section_added), sprintf('cannot create metadata section, response: %s', print_r($metadata_section_added, true)));
|
||||
$this->assertEquals('Section', $metadata_section_added['name']);
|
||||
$this->assertEquals(3, count($metadata_section_added['metadata_list']));
|
||||
$this->assertContains($metadatum_1->get_id(), $metadata_section_added['metadata_list']);
|
||||
$this->assertContains($metadatum_2->get_id(), $metadata_section_added['metadata_list']);
|
||||
$this->assertContains($metadatum_3->get_id(), $metadata_section_added['metadata_list']);
|
||||
$this->assertEquals(3, count($metadata_section_added['metadata_object_list']));
|
||||
$this->assertContains($metadatum_1->get_id(), array_column($metadata_section_added['metadata_object_list'],'id'));
|
||||
$this->assertContains($metadatum_2->get_id(), array_column($metadata_section_added['metadata_object_list'],'id'));
|
||||
$this->assertContains($metadatum_3->get_id(), array_column($metadata_section_added['metadata_object_list'],'id'));
|
||||
|
||||
$metadatum = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
|
@ -200,6 +213,16 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
public function test_delete_metadata_metadata_section() {
|
||||
$collection = $this->tainacan_entity_factory->create_entity('collection', '', true);
|
||||
|
||||
$metadata_section = $this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
'name' => 'Section',
|
||||
'description' => 'Section Description',
|
||||
'collection' => $collection,
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_1 = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
|
@ -207,6 +230,8 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'description' => 'description-1',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish',
|
||||
'metadata_section_id' => $metadata_section->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -218,6 +243,8 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'description' => 'description-2',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish',
|
||||
'metadata_section_id' => $metadata_section->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -229,17 +256,8 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'description' => 'description-3',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadata_section = $this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
'name' => 'Section',
|
||||
'description' => 'Section Description',
|
||||
'collection' => $collection,
|
||||
'metadata_list' => [$metadatum_1->get_id(), $metadatum_2->get_id(), $metadatum_3->get_id()]
|
||||
'status' => 'publish',
|
||||
'metadata_section_id' => $metadata_section->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -260,17 +278,27 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
|
||||
$this->assertTrue(is_array($metadata_section_added) && array_key_exists('name', $metadata_section_added), sprintf('cannot create metadata section, response: %s', print_r($metadata_section_added, true)));
|
||||
$this->assertEquals('Section', $metadata_section_added['name']);
|
||||
$this->assertEquals(1, count($metadata_section_added['metadata_list']));
|
||||
$this->assertNotContains($metadatum_1->get_id(), $metadata_section_added['metadata_list']);
|
||||
$this->assertContains($metadatum_2->get_id(), $metadata_section_added['metadata_list']);
|
||||
$this->assertNotContains($metadatum_3->get_id(), $metadata_section_added['metadata_list']);
|
||||
$this->assertEquals(1, count($metadata_section_added['metadata_object_list']));
|
||||
$this->assertNotContains($metadatum_1->get_id(), array_column($metadata_section_added['metadata_object_list'], 'id'));
|
||||
$this->assertContains($metadatum_2->get_id(), array_column($metadata_section_added['metadata_object_list'], 'id'));
|
||||
$this->assertNotContains($metadatum_3->get_id(), array_column($metadata_section_added['metadata_object_list'], 'id'));
|
||||
|
||||
}
|
||||
|
||||
public function test_get_metadata_metadata_section() {
|
||||
$collection = $this->tainacan_entity_factory->create_entity('collection', '', true);
|
||||
|
||||
$metadatum_1 = $this->tainacan_entity_factory->create_entity(
|
||||
$metadata_section = $this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
'name' => 'Section',
|
||||
'description' => 'Section Description',
|
||||
'collection' => $collection
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'name-1',
|
||||
|
@ -278,11 +306,12 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'metadata_section_id' => $metadata_section->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_2 = $this->tainacan_entity_factory->create_entity(
|
||||
$this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'name-2',
|
||||
|
@ -290,11 +319,12 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'metadata_section_id' => $metadata_section->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_3 = $this->tainacan_entity_factory->create_entity(
|
||||
$this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'name-3',
|
||||
|
@ -302,17 +332,7 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadata_section = $this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
'name' => 'Section',
|
||||
'description' => 'Section Description',
|
||||
'collection' => $collection,
|
||||
'metadata_list' => [$metadatum_1->get_id(), $metadatum_2->get_id(), $metadatum_3->get_id()]
|
||||
'metadata_section_id' => $metadata_section->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -330,6 +350,31 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
public function test_get_metadata_section() {
|
||||
$collection = $this->tainacan_entity_factory->create_entity('collection', '', true);
|
||||
|
||||
|
||||
$section1 = $this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
'name' => 'Section',
|
||||
'description' => 'Section Description',
|
||||
'collection' => $collection,
|
||||
// 'metadata_list' => [$metadatum_1->get_id(), $metadatum_2->get_id()]
|
||||
),
|
||||
true,
|
||||
true
|
||||
);
|
||||
|
||||
$section2 = $this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
'name' => 'Section',
|
||||
'description' => 'Section Description',
|
||||
'collection' => $collection,
|
||||
// 'metadata_list' => [$metadatum_3->get_id(), $metadatum_4->get_id()]
|
||||
),
|
||||
true,
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_1 = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
|
@ -338,6 +383,8 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'metadata_section_id' => $section1->get_id()
|
||||
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -350,6 +397,7 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'metadata_section_id' => $section1->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -362,6 +410,7 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'metadata_section_id' => $section2->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -374,34 +423,11 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'metadata_section_id' => $section2->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
'name' => 'Section',
|
||||
'description' => 'Section Description',
|
||||
'collection' => $collection,
|
||||
'metadata_list' => [$metadatum_1->get_id(), $metadatum_2->get_id()]
|
||||
),
|
||||
true,
|
||||
true
|
||||
);
|
||||
|
||||
$this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
'name' => 'Section',
|
||||
'description' => 'Section Description',
|
||||
'collection' => $collection,
|
||||
'metadata_list' => [$metadatum_3->get_id(), $metadatum_4->get_id()]
|
||||
),
|
||||
true,
|
||||
true
|
||||
);
|
||||
|
||||
$request = new \WP_REST_Request(
|
||||
'GET',
|
||||
$this->namespace . '/collection/' . $collection->get_id() . '/metadata-sections'
|
||||
|
@ -410,5 +436,13 @@ class TAINACAN_REST_Metadata_Sections_Controller extends TAINACAN_UnitApiTestCas
|
|||
$response_data = $response->get_data();
|
||||
|
||||
$this->assertEquals(2, count($response_data));
|
||||
|
||||
$metadata_list_1 = $response_data[0]['metadata_object_list'];
|
||||
$metadata_list_2 = $response_data[1]['metadata_object_list'];
|
||||
|
||||
$this->assertContains($metadatum_1->get_id(), array_column($metadata_list_1, 'id'));
|
||||
$this->assertContains($metadatum_2->get_id(), array_column($metadata_list_1, 'id'));
|
||||
$this->assertContains($metadatum_3->get_id(), array_column($metadata_list_2, 'id'));
|
||||
$this->assertContains($metadatum_4->get_id(), array_column($metadata_list_2, 'id'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ class MetadataSection extends TAINACAN_UnitTestCase {
|
|||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'metadata_section_id' => $metadata_section->get_id(),
|
||||
),
|
||||
true,
|
||||
true
|
||||
);
|
||||
|
||||
|
@ -61,9 +62,9 @@ class MetadataSection extends TAINACAN_UnitTestCase {
|
|||
$this->assertEquals($test->get_collection_id(), $collection->get_id());
|
||||
$this->assertEquals($test->get_metadata_section_id(), $metadata_section->get_id());
|
||||
|
||||
$metadata_list = $metadata_section->get_metadata_list();
|
||||
$metadata_list = $metadata_section->get_metadata_object_list();
|
||||
$this->assertEquals(count($metadata_list), 1);
|
||||
$this->assertEquals($test->get_id(), $metadata_list[0]);
|
||||
$this->assertEquals($test->get_id(), $metadata_list[0]->get_id());
|
||||
|
||||
$this->assertTrue((bool) $test->get_accept_suggestion());
|
||||
}
|
||||
|
@ -112,6 +113,7 @@ class MetadataSection extends TAINACAN_UnitTestCase {
|
|||
'name' => 'metadado',
|
||||
'description' => 'descricao',
|
||||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'metadata_section_id' => $metadata_section_a->get_id(),
|
||||
),
|
||||
|
@ -123,10 +125,17 @@ class MetadataSection extends TAINACAN_UnitTestCase {
|
|||
$section_a = $Tainacan_Metadata_Section->fetch($metadata_section_a->get_id());
|
||||
$section_b = $Tainacan_Metadata_Section->fetch($metadata_section_b->get_id());
|
||||
|
||||
$metadata_list_a = $section_a->get_metadata_list();
|
||||
$metadata_list_b = $section_b->get_metadata_list();
|
||||
$this->assertContains($test->get_id(), $metadata_list_a);
|
||||
$this->assertNotContains($test->get_id(), $metadata_list_b);
|
||||
$metadata_list_a = $section_a->get_metadata_object_list();
|
||||
$metadata_list_b = $section_b->get_metadata_object_list();
|
||||
$metadata_list_a = array_map(function($e) {
|
||||
return $e->_toArray();
|
||||
}, $metadata_list_a);
|
||||
$metadata_list_b = array_map(function($e) {
|
||||
return $e->_toArray();
|
||||
}, $metadata_list_b);
|
||||
|
||||
$this->assertContains($test->get_id(), array_column($metadata_list_a, 'id'));
|
||||
$this->assertNotContains($test->get_id(), array_column($metadata_list_b, 'id'));
|
||||
|
||||
$test->set_metadata_section_id($metadata_section_b->get_id());
|
||||
$this->assertTrue($test->validate(), json_encode($test->get_errors()));
|
||||
|
@ -134,10 +143,17 @@ class MetadataSection extends TAINACAN_UnitTestCase {
|
|||
|
||||
$test = $Tainacan_Metadata->fetch($metadatum->get_id());
|
||||
|
||||
$metadata_list_a = $section_a->get_metadata_list();
|
||||
$metadata_list_b = $section_b->get_metadata_list();
|
||||
$this->assertNotContains($test->get_id(), $metadata_list_a);
|
||||
$this->assertContains($test->get_id(), $metadata_list_b);
|
||||
$metadata_list_a = $section_a->get_metadata_object_list();
|
||||
$metadata_list_b = $section_b->get_metadata_object_list();
|
||||
$metadata_list_a = array_map(function($e) {
|
||||
return $e->_toArray();
|
||||
}, $metadata_list_a);
|
||||
$metadata_list_b = array_map(function($e) {
|
||||
return $e->_toArray();
|
||||
}, $metadata_list_b);
|
||||
|
||||
$this->assertNotContains($test->get_id(), array_column($metadata_list_a, 'id'));
|
||||
$this->assertContains($test->get_id(), array_column($metadata_list_b, 'id'));
|
||||
|
||||
}
|
||||
|
||||
|
@ -156,78 +172,6 @@ class MetadataSection extends TAINACAN_UnitTestCase {
|
|||
true
|
||||
);
|
||||
|
||||
$metadatum1 = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum1',
|
||||
'description' => 'descricao',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum2 = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum2',
|
||||
'description' => 'metadatum2',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum3 = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum3',
|
||||
'description' => 'metadatum3',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_a = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum_a',
|
||||
'description' => 'descricao_a',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_b = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum_b',
|
||||
'description' => 'metadatum_b',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_c = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum_c',
|
||||
'description' => 'metadatum_c',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadata_section_1 = $this->tainacan_entity_factory->create_entity(
|
||||
'Metadata_Section',
|
||||
array(
|
||||
|
@ -235,7 +179,6 @@ class MetadataSection extends TAINACAN_UnitTestCase {
|
|||
'description' => 'Section 1 Description',
|
||||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_list' => [$metadatum1->get_id(), $metadatum3->get_id(), $metadatum2->get_id()]
|
||||
),
|
||||
true
|
||||
);
|
||||
|
@ -247,7 +190,84 @@ class MetadataSection extends TAINACAN_UnitTestCase {
|
|||
'description' => 'Section A Description',
|
||||
'collection' => $collection,
|
||||
'status' => 'publish',
|
||||
'metadata_list' => [$metadatum_a->get_id(), $metadatum_b->get_id(), $metadatum_c->get_id()]
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum1 = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum1',
|
||||
'description' => 'descricao',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish',
|
||||
'metadata_section_id' => $metadata_section_1->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum2 = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum2',
|
||||
'description' => 'metadatum2',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish',
|
||||
'metadata_section_id' => $metadata_section_1->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum3 = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum3',
|
||||
'description' => 'metadatum3',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish',
|
||||
'metadata_section_id' => $metadata_section_1->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_a = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum_a',
|
||||
'description' => 'descricao_a',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish',
|
||||
'metadata_section_id' => $metadata_section_a->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_b = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum_b',
|
||||
'description' => 'metadatum_b',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish',
|
||||
'metadata_section_id' => $metadata_section_a->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$metadatum_c = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'metadatum_c',
|
||||
'description' => 'metadatum_c',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish',
|
||||
'metadata_section_id' => $metadata_section_a->get_id()
|
||||
),
|
||||
true
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue