PluginProbe
Depicter — Popup & Slider Builder / 1.3.2
Depicter — Popup & Slider Builder v1.3.2
4.8.1 trunk 1.0.0 1.1.0 1.1.2 1.1.4 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.5 1.3.8 1.5.0 1.5.1 1.5.2 1.5.5 1.6.0 1.6.1 1.6.2 1.7.0 All 76 releases
depicter / app / src / Controllers / Ajax / MediaAssetsAPIAjaxController.php

MediaAssetsAPIAjaxController.php in Depicter — Popup & Slider Builder 1.3.2, at app/src/Controllers/Ajax/MediaAssetsAPIAjaxController.php

181 lines 5.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Depicter\Controllers\Ajax;
3
4 use Depicter;
5 use Depicter\GuzzleHttp\Exception\ConnectException;
6 use Depicter\Services\AssetsAPIService;
7 use Depicter\Utility\Sanitize;
8 use Psr\Http\Message\RequestInterface;
9 use Psr\Http\Message\ResponseInterface;
10 use WPEmerge\Requests\Request;
11
12 /**
13 * Retrieves data from depicter server
14 *
15 * Class MediaAssetsAPIAjaxController
16 *
17 * @package Depicter\Controllers\Ajax
18 */
19 class MediaAssetsAPIAjaxController
20 {
21
22 /**
23 * search Photos
24 *
25 * @param RequestInterface $request
26 * @param string $view
27 *
28 * @return ResponseInterface
29 * @throws \Depicter\GuzzleHttp\Exception\GuzzleException
30 */
31 public function searchImages( RequestInterface $request, $view )
32 {
33 // available values are => "landscape", "portrait", "squarish"
34 $search = ! empty( $request->query('s') ) ? Sanitize::textfield( $request->query('s') ) : '';
35
36 $page = !empty( $request->query('page') ) ? Sanitize::int( $request->query('page') ) : 1;
37 $perpage = !empty( $request->query('perpage') ) ? Sanitize::int( $request->query('perpage') ) : 20;
38
39 // available values are => "landscape", "portrait", "squarish"
40 $orientation = !empty( $request->query('orientation') ) ? Sanitize::textfield( $request->query('orientation') ) : null;
41
42 // available values are => Default: null / If multiple, comma-separated
43 $collections = !empty( $request->query('collections') ) ? Sanitize::textfield( $request->query('collections') ) : null;
44
45 // available values are => relevant, latest
46 $orderBy = !empty( $request->query('orderBy') ) ? Sanitize::textfield( $request->query('orderBy') ) : 'relevant';
47
48 $options = [
49 's' => $search,
50 'page' => $page,
51 'perpage' => $perpage,
52 'orientation' => $orientation,
53 'collections' => $collections,
54 'orderBy' => $orderBy
55 ];
56 try {
57 $result = AssetsAPIService::searchAssets( 'photos', $options );
58 return \Depicter::json( $result );
59
60 } catch ( ConnectException $exception ) {
61 return \Depicter::json([
62 'errors' => [ 'Connection error ..', $exception->getMessage() ]
63 ])->withStatus(503);
64 } catch ( \Exception $exception ) {
65 return \Depicter::json([
66 'errors' => [ $exception->getMessage() ]
67 ]);
68 }
69
70 }
71
72 /**
73 * Search pixabay Videos
74 *
75 * @param RequestInterface $request
76 * @param $view
77 *
78 * @return ResponseInterface
79 * @throws \Depicter\GuzzleHttp\Exception\GuzzleException
80 */
81 public function searchVideos( RequestInterface $request, $view ) {
82 $options = $this->getPixabayQueryParams( $request );
83 try {
84 $result = AssetsAPIService::searchAssets( 'videos', $options );
85 return \Depicter::json( $result );
86
87 } catch ( ConnectException $exception ) {
88 return \Depicter::json([
89 'errors' => [ 'Connection error ..', $exception->getMessage() ]
90 ])->withStatus(503);
91 } catch ( \Exception $exception ) {
92 return \Depicter::json([
93 'errors' => [ $exception->getMessage() ]
94 ]);
95 }
96
97 }
98
99 /**
100 * Query pixabay vectors
101 *
102 * @param Request $request
103 * @param string $view
104 *
105 * @return \Psr\Http\Message\ResponseInterface
106 * @throws \Depicter\GuzzleHttp\Exception\GuzzleException
107 */
108 public function searchVectors( Request $request, $view ) {
109
110 $options = $this->getPixabayQueryParams( $request );
111 try {
112 $result = AssetsAPIService::searchAssets( 'vectors', $options );
113 return \Depicter::json( $result );
114
115 } catch ( ConnectException $exception ) {
116 return \Depicter::json([
117 'errors' => [ 'Connection error ..', $exception->getMessage() ]
118 ])->withStatus(503);
119 } catch ( \Exception $exception ) {
120 return \Depicter::json([
121 'errors' => [ $exception->getMessage() ]
122 ]);
123 }
124
125 }
126
127 /**
128 * Return Pixabay vector hot links
129 *
130 * @param Request $request
131 * @param string $view
132 *
133 * @return ResponseInterface
134 * @throws \Exception
135 */
136 public function getMedia( Request $request, $view ) {
137 $id = ! empty( $request->query('id' ) ) ? Sanitize::textfield( $request->query('id' ) ) : '';
138 $size = ! empty( $request->query('size') ) ? Sanitize::textfield( $request->query('size') ) : '';
139 $forcePreview = ! empty( $request->query('forcePreview') ) ? Sanitize::textfield( $request->query('forcePreview') ) : 'false';
140
141 $mediaHotlinkUrl = \Depicter::media()->getSourceUrl( $id, $size, $forcePreview );
142 $clientKey = \Depicter::options()->get( 'client_key' );
143
144 return Depicter::redirect()->to( $mediaHotlinkUrl )
145 ->withHeader( 'Access-Control-Allow-Origin', '*' )
146 ->withHeader( 'X-DEPICTER-CKEY', $clientKey );
147 }
148
149
150 /**
151 * Get sanitized query params
152 *
153 * @param RequestInterface $request
154 *
155 * @return array
156 */
157 protected function getPixabayQueryParams( RequestInterface $request ){
158
159 $args = [
160 'page' => !empty( $request->query('page') ) ? Sanitize::int( $request->query('page') ) : 1,
161 'perpage' => !empty( $request->query('perpage') ) ? Sanitize::int( $request->query('perpage') ) : 20,
162 'videoType' => ! empty( $request->query('videoType') ) ? Sanitize::textfield( $request->query('videoType') ) : 'all',
163 'minWidth' => ! empty( $request->query('minWidth') ) ? Sanitize::int( $request->query('minWidth') ) : 0,
164 'minHeight' => ! empty( $request->query('minHeight') ) ? Sanitize::int( $request->query('minHeight') ) : 0,
165 'editorsChoice' => ! empty( $request->query('editorsChoice') ) ? Sanitize::textfield( $request->query('editorsChoice') ) : 'false',
166 'safe' => ! empty( $request->query('safe') ) ? Sanitize::textfield( $request->query('safe') ) : 'false',
167 'order' => ! empty( $request->query('orderBy') ) ? Sanitize::textfield( $request->query('orderBy') ) : 'popular',
168 ];
169
170 if( ! empty( $request->query('s') ) ){
171 $args['s'] = Sanitize::textfield( $request->query('s') );
172 }
173
174 if( ! empty( $request->query('category') ) ){
175 $args['category'] = Sanitize::textfield( $request->query('category') );
176 }
177
178 return $args;
179 }
180 }
181