diff --git a/src/admin/tainacan-admin-i18n.php b/src/admin/tainacan-admin-i18n.php index 2317db8de..866c80ae6 100644 --- a/src/admin/tainacan-admin-i18n.php +++ b/src/admin/tainacan-admin-i18n.php @@ -403,21 +403,21 @@ return apply_filters( 'tainacan-admin-i18n', [ 'label_previous_page' => __( 'Previous page', 'tainacan' ), 'label_page' => __( 'Page', 'tainacan' ), 'label_current_page' => __( 'Current page', 'tainacan' ), - 'label_shrink_menu' => __( 'Shrink menu', 'tainacan' ), - 'label_document_uploaded' => __( 'Document uploaded', 'tainacan' ), - 'label_repository_filter' => __( 'Repository filter', 'tainacan' ), - 'label_repository_metadatum' => __( 'Repository metadatum', 'tainacan' ), - 'label_collection_filter' => __( 'Collection filter', 'tainacan' ), - 'label_collection_metadatum' => __( 'Collection metadatum', 'tainacan' ), + 'label_shrink_menu' => __( 'Shrink menu', 'tainacan' ), + 'label_document_uploaded' => __( 'Document uploaded', 'tainacan' ), + 'label_repository_filter' => __( 'Repository filter', 'tainacan' ), + 'label_repository_metadatum' => __( 'Repository metadatum', 'tainacan' ), + 'label_collection_filter' => __( 'Collection filter', 'tainacan' ), + 'label_collection_metadatum' => __( 'Collection metadatum', 'tainacan' ), 'label_collection_capabilities' => __( 'Collection capabilities', 'tainacan' ), - 'label_recover_from_trash' => __( 'Recover from trash', 'tainacan' ), - 'label_show_children_terms' => __( 'Show children terms', 'tainacan' ), - 'label_begin_slide_transition' => __( 'Begin slide transition', 'tainacan' ), - 'label_pause_slide_transition' => __( 'Pause slide transition', 'tainacan' ), - 'label_next_group_slides' => __( 'Next group of slides', 'tainacan' ), - 'label_previous_group_slides' => __( 'Previous group of slides', 'tainacan' ), - 'label_plugin_home_page' => __( 'Plugin home page', 'tainacan' ), - 'label_wordpress_admin_page' => __( 'WordPress Admin Page', 'tainacan' ), + 'label_recover_from_trash' => __( 'Recover from trash', 'tainacan' ), + 'label_show_children_terms' => __( 'Show children terms', 'tainacan' ), + 'label_begin_slide_transition' => __( 'Begin slide transition', 'tainacan' ), + 'label_pause_slide_transition' => __( 'Pause slide transition', 'tainacan' ), + 'label_next_group_slides' => __( 'Next group of slides', 'tainacan' ), + 'label_previous_group_slides' => __( 'Previous group of slides', 'tainacan' ), + 'label_plugin_home_page' => __( 'Plugin home page', 'tainacan' ), + 'label_wordpress_admin_page' => __( 'WordPress Admin Page', 'tainacan' ), 'label_view_all_%s_collections' => __( 'View all %s collections', 'tainacan' ), 'label_view_collections_list' => __( 'View collections list', 'tainacan' ), 'label_comparator' => __( 'Comparator', 'tainacan' ), @@ -440,7 +440,6 @@ return apply_filters( 'tainacan-admin-i18n', [ 'label_year' => __( 'Year', 'tainacan' ), 'label_related_to' => __( 'Related to', 'tainacan' ), 'label_associated_roles' => __( 'Associated roles', 'tainacan' ), - // Instructions. More complex sentences to guide user and placeholders 'instruction_delete_selected_collections' => __( 'Delete selected collections', 'tainacan' ), 'instruction_delete_selected_items' => __( 'Delete selected items', 'tainacan' ), @@ -489,7 +488,7 @@ return apply_filters( 'tainacan-admin-i18n', [ 'instruction_type_value_year' => __( 'Type year value', 'tainacan' ), 'instruction_select_the_amount_of_copies' => __( 'Select the amount of copies of the item that you want to create', 'tainacan'), 'instruction_select_a_interval' => __( 'Select an interval', 'tainacan'), - + // Info. Other feedback to user. 'info_items_tab_all' => __( 'Every published item, including those visible only to editors.', 'tainacan' ), @@ -515,22 +514,22 @@ return apply_filters( 'tainacan-admin-i18n', [ 'info_search_criteria' => __( 'Advanced Search Criteria', 'tainacan' ), 'info_name_is_required' => __( 'Name is required.', 'tainacan' ), 'info_no_collection_created' => __( 'No collection was created in this repository.', 'tainacan' ), - + 'info_no_items_publish' => __( 'No public items found.', 'tainacan' ), 'info_no_items_private' => __( 'No private items found.', 'tainacan' ), 'info_no_items_draft' => __( 'No draft items found.', 'tainacan' ), 'info_no_items_trash' => __( 'No items found on trash.', 'tainacan' ), - + 'info_no_collections_publish' => __( 'No public collections found.', 'tainacan' ), 'info_no_collections_private' => __( 'No private collections found.', 'tainacan' ), 'info_no_collections_draft' => __( 'No draft collections found.', 'tainacan' ), 'info_no_collections_trash' => __( 'No collections found on trash.', 'tainacan' ), - + 'info_no_taxonomies_publish' => __( 'No public taxonomies found.', 'tainacan' ), 'info_no_taxonomies_private' => __( 'No private taxonomies found.', 'tainacan' ), 'info_no_taxonomies_draft' => __( 'No draft taxonomies found.', 'tainacan' ), 'info_no_taxonomies_trash' => __( 'No taxonomies found on trash.', 'tainacan' ), - + 'info_no_taxonomy_created' => __( 'No taxonomy was created in this repository.', 'tainacan' ), 'info_no_terms_created_on_taxonomy' => __( 'No term was created for this taxonomy.', 'tainacan' ), 'info_no_terms_found' => __( 'No term was found here', 'tainacan' ), @@ -699,6 +698,6 @@ return apply_filters( 'tainacan-admin-i18n', [ 'datepicker_short_friday' => __( 'F', 'tainacan' ), /* translators: This refers to the short label that will appear on datepickers for Saturday */ 'datepicker_short_saturday' => __( 'Sa', 'tainacan' ) - + ] ); ?> diff --git a/src/api/endpoints/class-tainacan-rest-collections-controller.php b/src/api/endpoints/class-tainacan-rest-collections-controller.php index a591deb8c..e6cc7b88a 100644 --- a/src/api/endpoints/class-tainacan-rest-collections-controller.php +++ b/src/api/endpoints/class-tainacan-rest-collections-controller.php @@ -25,7 +25,7 @@ class REST_Collections_Controller extends REST_Controller { parent::__construct(); add_action('init', array(&$this, 'init_objects'), 11); } - + /** * Initialize objects after post_type register */ @@ -59,7 +59,7 @@ class REST_Collections_Controller extends REST_Controller { 'callback' => array($this, 'get_item'), 'permission_callback' => array($this, 'get_item_permissions_check'), 'args' => $this->get_wp_query_params(), - + ), array( 'methods' => \WP_REST_Server::EDITABLE, @@ -165,29 +165,10 @@ class REST_Collections_Controller extends REST_Controller { $item_arr = $item->_toArray(); if ( $request['context'] === 'edit' ) { - $moderators_ids = $item_arr['moderators_ids']; - - $moderators = []; - - foreach ($moderators_ids as $id){ - $user_data = get_userdata($id); - - if($user_data){ - $user['name'] = $user_data->display_name; - //$user['roles'] = $user_data->roles; - $user['id'] = $user_data->ID; - - $moderators[] = $user; - } - } - - $item_arr['moderators'] = $moderators; - $item_arr['current_user_can_edit'] = $item->can_edit(); $item_arr['current_user_can_delete'] = $item->can_delete(); } - unset($item_arr['moderators_ids']); } else { $attributes_to_filter = $request['fetch_only']; @@ -206,12 +187,12 @@ class REST_Collections_Controller extends REST_Controller { $item_arr['current_user_can_edit'] = $item->can_edit(); $item_arr['current_user_can_delete'] = $item->can_delete(); } - + $item_arr['url'] = get_permalink( $item_arr['id'] ); } $total_items = wp_count_posts( $item->get_db_identifier(), 'readable' ); - + if (isset($total_items->publish) || isset($total_items->private) || isset($total_items->trash) || @@ -227,7 +208,7 @@ class REST_Collections_Controller extends REST_Controller { * 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-collection-meta', [], $request); @@ -235,7 +216,7 @@ class REST_Collections_Controller extends REST_Controller { foreach ($extra_metadata as $extra_meta) { $item_arr[$extra_meta] = get_post_meta($item_arr['id'], $extra_meta, true); } - + return $item_arr; } @@ -273,7 +254,7 @@ class REST_Collections_Controller extends REST_Controller { } return $collection->can_read(); - } + } return false; } @@ -295,7 +276,7 @@ class REST_Collections_Controller extends REST_Controller { 'collection' => $body ], 400); } - + $this->collection = new Collection(); try { @@ -308,7 +289,7 @@ class REST_Collections_Controller extends REST_Controller { $collection = $this->collections_repository->insert( $prepared_post ); $response = $this->prepare_item_for_response($collection, $request); - + do_action('tainacan-api-collection-created', $response, $request); return new \WP_REST_Response($response, 201); @@ -475,14 +456,14 @@ class REST_Collections_Controller extends REST_Controller { public function get_endpoint_args_for_item_schema( $method = null ) { $endpoint_args = []; if($method === \WP_REST_Server::READABLE) { - + $endpoint_args['name'] = array( 'description' => __('Limits the result set to collections with a specific name'), 'type' => 'string', ); - + $endpoint_args = array_merge( - $endpoint_args, + $endpoint_args, parent::get_wp_query_params(), parent::get_fetch_only_param(), parent::get_meta_queries_params() @@ -505,29 +486,25 @@ class REST_Collections_Controller extends REST_Controller { return $endpoint_args; } - + function get_schema() { $schema = [ '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'collection', 'type' => 'object' ]; - + $main_schema = parent::get_repository_schema( $this->collections_repository ); $permissions_schema = parent::get_permissions_schema(); - - // transformation done in $this->prepare_item_for_response() - $main_schema['moderators'] = $main_schema['moderators_ids']; - $main_schema['moderators']['contex'] = 'edit'; - + $schema['properties'] = array_merge( parent::get_base_properties_schema(), $main_schema, $permissions_schema ); - + return $schema; - + } } diff --git a/src/classes/entities/class-tainacan-collection.php b/src/classes/entities/class-tainacan-collection.php index 7d537d991..bf0c74124 100644 --- a/src/classes/entities/class-tainacan-collection.php +++ b/src/classes/entities/class-tainacan-collection.php @@ -33,7 +33,6 @@ class Collection extends Entity { $cover_page_id, $header_image_id, $header_image, - $moderators_ids, $comment_status, $allow_comments; @@ -451,15 +450,6 @@ class Collection extends Entity { return $this->get_mapped_property( 'filters_order' ); } - /** - * Get collection moderators ids - * - * @return array - */ - function get_moderators_ids() { - return $this->get_mapped_property( 'moderators_ids' ); - } - /** * Get collection DB identifier * @@ -708,27 +698,6 @@ class Collection extends Entity { $this->set_mapped_property( 'header_image_id', $value ); } - /** - * Set collection moderators ids - * - * @param [string] $value - * - * @return void - */ - function set_moderators_ids( $value ) { - if(!is_array($value)) { - if(empty($value)) { - $value = []; - } else { - throw new \Exception('moderators_ids must be a array of users ids'); - } - } - // make sure you never have duplicated moderators - $value = array_unique($value); - - $this->set_mapped_property( 'moderators_ids', $value ); - } - /** * Sets if comments are allowed for the current Collection. * @@ -747,59 +716,6 @@ class Collection extends Entity { $this->set_mapped_property('allow_comments', $value ); } - // Moderators methods - - /** - * Add a moderator ID to the moderators_ids list - * - * @param int $user_id The user ID to be added - * - * @return boolean Wether the ID was added or not. (if it already existed in the list it returns false) - */ - function add_moderator_id( $user_id ) { - if ( is_integer( $user_id ) ) { - $current_moderators = $this->get_moderators_ids(); - if ( ! in_array( $user_id, $current_moderators ) ) { - $current_moderators[] = $user_id; - $this->set_moderators_ids( $current_moderators ); - - return true; - } - } - - return false; - } - - /** - * Remove a moderator ID to the moderators_ids list - * - * @param int $user_id The user ID to be removed - * - * @return boolean Wether the ID was added or not. (if it did not exist in the list it returns false) - */ - function remove_moderator_id( $user_id ) { - if ( is_integer( $user_id ) ) { - $current_moderators = $this->get_moderators_ids(); - if ( ( $key = array_search( $user_id, $current_moderators ) ) !== false ) { - unset( $current_moderators[ $key ] ); - $this->set_moderators_ids( $current_moderators ); - - return true; - } - } - - return false; - } - - /** - * TODO implement the following methods to handle moderators_ids - * - * set_moderators - * get_moderators - * (the same as moderators_ids but gets and sets WP_User objects) - * - */ - /** * Validate Collection * diff --git a/src/classes/repositories/class-tainacan-collections.php b/src/classes/repositories/class-tainacan-collections.php index ed40e03c9..2d556dfa5 100644 --- a/src/classes/repositories/class-tainacan-collections.php +++ b/src/classes/repositories/class-tainacan-collections.php @@ -174,15 +174,6 @@ class Collections extends Repository { //'validation' => v::numeric(), 'default' => '' ], - // deprecated - 'moderators_ids' => [ - 'map' => 'meta_multi', - 'title' => __( 'Moderators', 'tainacan' ), - 'type' => 'array/object/string', - 'items' => [ 'type' => 'array/string/integer/object' ], - 'description' => __( 'Moderators of this collection', 'tainacan' ), - 'validation' => '' - ], '_thumbnail_id' => [ 'map' => 'meta', 'title' => __( 'Thumbnail', 'tainacan' ), @@ -293,7 +284,7 @@ class Collections extends Repository { * to learn all args accepted in the $args parameter (@see https://developer.wordpress.org/reference/classes/wp_query/) * You can also use a mapped property, such as name and description, as an argument and it will be mapped to the * appropriate WP_Query argument - * + * * If a number is passed to $args, it will return a \Tainacan\Entities\Collection object. But if the post is not found or * does not match the entity post type, it will return an empty array * @@ -366,15 +357,15 @@ class Collections extends Repository { $Tainacan_Metadata->register_core_metadata( $collection ); - if ( $this->old_collection instanceof Entities\Collection && + if ( $this->old_collection instanceof Entities\Collection && $this->old_collection->get_parent() != $collection->get_parent() && $this->old_core_title instanceof Entities\Metadatum && - $this->old_core_description instanceof Entities\Metadatum + $this->old_core_description instanceof Entities\Metadatum ) { $Tainacan_Metadata->maybe_update_core_metadata_meta_keys( $collection, $this->old_collection, $this->old_core_title, $this->old_core_description ); } } - -} \ No newline at end of file + +}