%PDF- %PDF-
Direktori : /home/tradesc/www/relax/wp-content/plugins/envato-elements/inc/api/ |
Current File : /home/tradesc/www/relax/wp-content/plugins/envato-elements/inc/api/class-photos-search.php |
<?php /** * Envato Elements: Search API * * Search API * * @package Envato/Envato_Elements * @since 2.0.0 */ namespace Envato_Elements\API; use Envato_Elements\Utils\Extensions_API; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * Search API * * @since 2.0.0 */ class Photos_Search extends API { /** * @param $request \WP_REST_Request * * @return \WP_REST_Response */ public function fetch_photos_search_results( $request ) { $search = $request->get_params(); // Elements API maxes out around page 50, so lets not even attempt to query pages beyond that number: $max_pages = 49; $api_parameters = [ 'type' => 'photos', 'page' => empty( $search['page'] ) || (int) $search['page'] < 1 || (int) $search['page'] > $max_pages ? 1 : (int) $search['page'], ]; // 'our_query' => 'elements_query' $parameter_mapping = [ 'text' => 'search_terms', 'orientation' => 'orientation', 'background' => 'background', 'colors' => 'colors', 'tag' => 'tags', ]; foreach ( $parameter_mapping as $our_query_key => $elements_query_key ){ if ( ! empty( $search[ $our_query_key ] ) && strlen( trim( $search[ $our_query_key ] ) ) > 0 ) { $api_parameters[ $elements_query_key ] = sanitize_text_field( trim( $search[ $our_query_key ] ) ); } } $data = Extensions_API::get_instance()->api_call( '/extensions/search?' . http_build_query( $api_parameters ) ); if ( is_wp_error( $data ) ) { return $this->format_error( 'fetchPhotosSearchResults', 'generic_api_error', 'Failed to fetch photo search results: ' . $data->get_error_message() ); } return new \WP_REST_Response( $data, 200 ); } public function register_api_endpoints() { $this->register_endpoint( 'fetchPhotosSearchResults', [ $this, 'fetch_photos_search_results' ] ); } }