PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 3.4.3
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v3.4.3
3.7.5 3.7.4 3.7.3 3.7.2 1-final 3.7.1 3.7.0 3.6.8 3.6.7 3.6.6 3.6.5 3.6.4 3.6.3 3.6.2 3.6.1 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 All 111 releases
← All changes | includes/API/Items.php +94 -6 3.0.33.4.3 View file →
@@ -62,8 +62,10 @@
62 62 $this->post( 'items/favourite', [ $this, 'set_favourite' ] );
63 63 $this->post( 'items/rating', [ $this, 'set_rating' ] );
64 64 $this->get( 'items-count', [ $this, 'get_counts' ] );
65 65 $this->get( 'featured-items', [ $this, 'featured_items' ] );
66 + $this->get( 'trending-items', [ $this, 'trending_items' ] );
67 + $this->get( 'related-items', [ $this, 'related_items' ]);
66 68 }
67 69
68 70 /**
69 71 * @param string $type
@@ -155,17 +157,24 @@
155 157 if( $type === false ) {
156 158 return $this->error( 'invalid_type_call', __( 'Invalid Type Call', 'templately' ) );
157 159 }
158 160
159 - $items_params = 'id, name, rating, type, description, slug, price, features, favourite_count, thumbnail, downloads, categories{ id, name, slug }, dependencies{ id, name, icon, plugin_file, plugin_original_slug, is_pro, link }, tags{ name, id }, categories{ name, id }, screenshots{ url }, banner, pack{ id, name, slug, items{ id, price, name, type, slug, thumbnail } }, live_url, template_type{ id, name, slug }';
161 + $items_params = 'id, name, rating, type, description, slug, price, features, favourite_count, is_favourite, is_reviewed, thumbnail, downloads, categories{ id, name, slug }, dependencies{ id, name, icon, plugin_file, plugin_original_slug, is_pro, link }, tags{ name, id }, categories{ name, id }, screenshots{ url }, banner, published_at, updated_at, is_trending, badges, pack{ id, name, slug, items{ id, price, name, type, slug, thumbnail } }, live_url, template_type{ id, name, slug }';
160 162 $params = 'data { ' . $items_params . ', variations { name, slug, type, platform } }';
161 163
162 164 if ( $type == 'packs' ) {
163 - $params = 'data { id, fullsite_import, name, rating, type, slug, live_url, price, features, favourite_count, thumbnail, downloads, categories{ id, name, slug }, items { ' . $items_params . ' }, variations { name, slug, type, platform } }';
165 + $params = 'data { id, fullsite_import, ai_compatible, has_settings, has_attachments, name, rating, type, slug, live_url, price, features, favourite_count, is_favourite, is_reviewed, thumbnail, description, tags{ name, id }, banner, published_at, updated_at, is_trending, badges, template_type{ id, name, slug } downloads, categories{ id, name, slug }, items { ' . $items_params . ' }, variations { name, slug, type, platform } }';
164 166 }
165 167
166 - $response = $this->http()->query( $type, $params, [ 'slug' => $slug ] )->post();
168 + $args = [
169 + 'slug' => $slug,
170 + ];
171 + if (!empty($this->api_key)) {
172 + $args['api_key'] = $this->api_key;
173 + }
167 174
175 + $response = $this->http()->query( $type, $params, $args )->post();
176 +
168 177 if ( is_wp_error( $response ) ) {
169 178 return $response;
170 179 }
171 180
@@ -274,9 +283,9 @@
274 283 'id' => $id,
275 284 'type' => $type == 'block' || $type == 'page' ? 'item' : 'pack'
276 285 ];
277 286
278 - if( $response == 1 ) {
287 + if( $response == 1 || $response === false ) {
279 288 $_favourites = $this->utils('options')->get('favourites');
280 289 $_favourites = $this->utils('helper')->normalizeFavourites( $_temp_data, $_favourites, true );
281 290 $this->utils('options')->set('favourites', $_favourites);
282 291
@@ -435,14 +444,14 @@
435 444 * @param WP_REST_Request $request
436 445 * @return mixed
437 446 */
438 447 public function featured_items(WP_REST_Request $request){
439 - $defaults = Database::get_transient( 'featuredItems' );
448 + $platform = $request->get_param( 'platform' );
449 + $defaults = Database::get_transient( "featuredItems_{$platform}" );
440 450 if( $defaults ) {
441 451 return $defaults;
442 452 }
443 453
444 - $platform = $request->get_param( 'platform' );
445 454 $funcArgs = [
446 455 // 'page' => 1,
447 456 // 'per_page' => 10,
448 457 'platform' => $platform,
@@ -457,6 +466,85 @@
457 466 Database::set_transient( 'featuredItems', $response );
458 467 }
459 468
460 469 return $response;
470 + }
471 +
472 + /**
473 + * Get Trending Item List
474 + * @param WP_REST_Request $request
475 + * @return mixed
476 + */
477 + public function trending_items(WP_REST_Request $request){
478 + $platform = $request->get_param( 'platform' );
479 + $defaults = Database::get_transient( "trendingItems_{$platform}" );
480 + if( $defaults ) {
481 + return $defaults;
482 + }
483 +
484 + $funcArgs = [
485 + // 'page' => 1,
486 + // 'per_page' => 10,
487 + 'platform' => $platform,
488 + ];
489 + $response = $this->http()->query(
490 + 'trendingItems',
491 + 'data{ id, name, slug, price, type, thumbnail }',
492 + $funcArgs
493 + )->post();
494 +
495 + if( ! is_wp_error( $response ) ) {
496 + Database::set_transient( 'trendingItems', $response );
497 + }
498 +
499 + return $response;
500 + }
501 +
502 + /**
503 + * Get Related Item List
504 + * @param WP_REST_Request $request
505 + * @return mixed
506 + */
507 + public function related_items(WP_REST_Request $request){
508 + $item_id = (int) $request->get_param( 'item_id' );
509 + $type = $request->get_param( '_type' );
510 +
511 + if ( empty( $item_id ) ) {
512 + return $this->error(
513 + 'invalid_item_id',
514 + __( 'Item ID cannot be empty.', 'templately' ),
515 + 'related-items',
516 + '400'
517 + );
518 + }
519 +
520 + if ( empty( $type ) ) {
521 + return $this->error(
522 + 'invalid_type',
523 + __( 'Type cannot be empty.', 'templately' ),
524 + 'related-items',
525 + '400'
526 + );
527 + }
528 +
529 + $funcArgs = [
530 + 'id' => $item_id,
531 + 'type' => $type,
532 + 'limit' => 3, // Limit to 3 related items
533 + ];
534 +
535 + $response = $this->http()->query(
536 + 'relatedItems',
537 + 'id, name, slug, price, type, thumbnail',
538 + $funcArgs
539 + )->post();
540 +
541 + if( is_wp_error( $response ) ) {
542 + return $response;
543 + }
544 +
545 + return [
546 + 'status' => 'success',
547 + 'data' => $response,
548 + ];
461 549 }
462 550 }