Merge branch 'feature/483' of https://github.com/tainacan/tainacan into feature/483
This commit is contained in:
commit
2e90e9dfcf
|
@ -35,6 +35,15 @@ class REST_Reports_Controller extends REST_Controller {
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
register_rest_route($this->namespace, $this->rest_base . '/collection/(?P<collection_id>[\d]+)/metadata',
|
||||||
|
array(
|
||||||
|
array(
|
||||||
|
'methods' => \WP_REST_Server::READABLE,
|
||||||
|
'callback' => array($this, 'get_stats_metadata'),
|
||||||
|
'permission_callback' => array($this, 'reports_permissions_check'),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
);
|
||||||
register_rest_route($this->namespace, $this->rest_base . '/repository/summary',
|
register_rest_route($this->namespace, $this->rest_base . '/repository/summary',
|
||||||
array(
|
array(
|
||||||
array(
|
array(
|
||||||
|
@ -209,6 +218,77 @@ class REST_Reports_Controller extends REST_Controller {
|
||||||
return new \WP_REST_Response($response, 200);
|
return new \WP_REST_Response($response, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function get_stats_metadata($request) {
|
||||||
|
$response = array(
|
||||||
|
'totals'=> array(
|
||||||
|
'metadata' => array(
|
||||||
|
'total' => 0,
|
||||||
|
'publish' => 0,
|
||||||
|
'private' => 0
|
||||||
|
),
|
||||||
|
'metadata_per_type' => array()
|
||||||
|
),
|
||||||
|
'distribution' => array(
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if(isset($request['collection_id'])) {
|
||||||
|
$collection_id = $request['collection_id'];
|
||||||
|
$collection = new Entities\Collection( $collection_id );
|
||||||
|
$result_metadatum = $this->metadatum_repository->fetch_by_collection( $collection, [] );
|
||||||
|
$response['totals']['metadata']['total'] = count($result_metadatum);
|
||||||
|
$meta_ids=[];
|
||||||
|
foreach($result_metadatum as $metadatum) {
|
||||||
|
$meta_type = explode('\\', $metadatum->get_metadata_type()) ;
|
||||||
|
$meta_type = strtolower($meta_type[sizeof($meta_type)-1]);
|
||||||
|
|
||||||
|
$response['totals']['metadata'][$metadatum->get_status()]++;
|
||||||
|
$response['totals']['metadata_per_type'][$meta_type]++;
|
||||||
|
$meta_ids[] = $metadatum->get_id();
|
||||||
|
}
|
||||||
|
$response['distribution'] = $this->query_item_metadata_distribution($meta_ids, $collection->get_db_identifier());
|
||||||
|
//wp_count_posts()
|
||||||
|
} else {
|
||||||
|
$args = [
|
||||||
|
'meta_query' => [
|
||||||
|
[
|
||||||
|
'key' => 'collection_id',
|
||||||
|
'value' => 'default',
|
||||||
|
'compare' => '='
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
$result = $this->metadatum_repository->fetch( $args, 'OBJECT' );
|
||||||
|
}
|
||||||
|
return new \WP_REST_Response($response, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function query_item_metadata_distribution($meta_ids, $collection_post_type) {
|
||||||
|
$count_posts = wp_count_posts( $collection_post_type, 'readable' );
|
||||||
|
$total_items = intval($count_posts->trash) + intval($count_posts->draft) +
|
||||||
|
intval($count_posts->publish) + intval($count_posts->private);
|
||||||
|
|
||||||
|
global $wpdb;
|
||||||
|
$string_meta_ids = "'".implode("','", $meta_ids)."'";
|
||||||
|
$sql_statement = $wpdb->prepare(
|
||||||
|
"SELECT p.post_title AS 'name', m.meta_key AS id, ((m.total/$total_items) * 100) as fill_percentage
|
||||||
|
FROM
|
||||||
|
(SELECT meta_key, count(*) AS total
|
||||||
|
FROM $wpdb->postmeta
|
||||||
|
WHERE $wpdb->postmeta.meta_key IN ($string_meta_ids)
|
||||||
|
AND $wpdb->postmeta.post_id IN (
|
||||||
|
SELECT id
|
||||||
|
FROM $wpdb->posts
|
||||||
|
WHERE $wpdb->posts.post_type = '$collection_post_type'
|
||||||
|
)
|
||||||
|
GROUP BY $wpdb->postmeta.meta_key) m
|
||||||
|
INNER JOIN $wpdb->posts p on m.meta_key = p.id;"
|
||||||
|
);
|
||||||
|
$res = $wpdb->get_results($sql_statement);
|
||||||
|
//return $sql_statement;
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
private function query_count_used_taxononomies() {
|
private function query_count_used_taxononomies() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
Loading…
Reference in New Issue