File "MediaLibraryAjaxController.php"
Full path: C:/Inetpub/vhosts/drshti.com/httpdocs/wp-content/plugins/depicter/app/src/Controllers/Ajax/MediaLibraryAjaxController.php
File
size: 3.18 B (3.18 KB bytes)
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor &nnbsp; Back
<?php
namespace Depicter\Controllers\Ajax;
use Depicter\Services\MediaLibraryService;
use Depicter\Utility\Sanitize;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
class MediaLibraryAjaxController
{
/**
* @var MediaLibraryService
*/
private $mediaLibraryService;
public function __construct()
{
$this->mediaLibraryService = \Depicter::app()->mediaLibrary();
}
/**
* Get search result of images from media library
*
* @param RequestInterface $request
* @param string $view
*
* @return ResponseInterface
*/
public function images( RequestInterface $request, $view )
{
return $this->query( $request, $view, 'photos');
}
/**
* Get search result of videos from media library
*
* @param RequestInterface $request
* @param string $view
*
* @return ResponseInterface
*/
public function videos( RequestInterface $request, $view )
{
return $this->query( $request, $view, 'video');
}
/**
* Get search result of audios from media library
*
* @param RequestInterface $request
* @param string $view
*
* @return ResponseInterface
*/
public function audios( RequestInterface $request, $view )
{
return $this->query( $request, $view, 'audio');
}
/**
* Get search result of vectors from media library
*
* @param RequestInterface $request
* @param string $view
*
* @return ResponseInterface
*/
public function vectors( RequestInterface $request, $view )
{
return $this->query( $request, $view, 'vector');
}
/**
* Get media results from media library
*
* @param RequestInterface $request
* @param string $view
*
* @param string $assetType
*
* @return ResponseInterface
*/
public function query( RequestInterface $request, $view, $assetType = 'all' )
{
// sanitize incoming params
$perPage = ! empty( $request->query( 'perpage' ) ) ? Sanitize::int( $request->query('perpage') ) : 20;
$page = ! empty( $request->query( 'page' ) ) ? Sanitize::int( $request->query('page' ) ) : 1;
$search = ! empty( $request->query( 's' ) ) ? Sanitize::textfield( $request->query('s' ) ) : '';
$queryParams = [
'post_type' => 'attachment',
'post_status' => 'inherit',
'posts_per_page' => $perPage,
'paged' => $page
];
// add search term to query params if was defined
if( ! empty( $search ) ){
$queryParams['s'] = $search;
}
// change "images" to "image" for accurate mime_type
$assetType = rtrim( $assetType, 's' );
if( $mimTypes = $this->mediaLibraryService->getSupportedMimeTypes( $assetType ) ){
$queryParams['post_mime_type'] = $mimTypes;
}
$attachments = $this->mediaLibraryService->query( $queryParams );
$result = $this->mediaLibraryService->getQueryOutput( $attachments, $assetType );
if( empty( $result ) ){
return \Depicter::json(['errors' => ['Search not found.'] ])->withStatus(404);
}
$totalPages = $result['totalPages'];
unset( $result['totalPages'] );
$total = $result['total'];
unset( $result['total'] );
return \Depicter::json( $result )
->withHeader('X-Total-Pages', $totalPages )
->withHeader('X-Total', $total )
->withStatus(200 );
}
}