/**
* @param string $query
* @param string $platform
* @param string $cloudLocation
* @param JsonData $sort
* @param int $start
* @param int $limit
* @throws Exception
*/
public function xListAction($query = null, $platform = null, $cloudLocation = null, JsonData $sort, $start = 0, $limit = 20)
{
$this->request->restrictAccess(Acl::RESOURCE_FARMS_ROLES);
$criteria = [];
$criteria[] = ['envId' => $this->getEnvironmentId()];
if ($query) {
$querySql = '%' . $query . '%';
$criteria[] = ['$or' => [['id' => ['$like' => $querySql]]]];
}
if ($platform) {
$criteria[] = ['platform' => $platform];
}
if ($cloudLocation) {
$criteria[] = ['cloudLocation' => $cloudLocation];
}
$result = Image::find($criteria, \Scalr\UI\Utils::convertOrder($sort, ['id' => 'ASC'], ['id', 'platform', 'cloudLocation', 'os', 'dtAdded', 'architecture', 'source']), $limit, $start, true);
$data = [];
foreach ($result as $image) {
/* @var Image $image */
$s = get_object_vars($image);
$s['dtAdded'] = Scalr_Util_DateTime::convertTz($image->dtAdded);
$s['status'] = $image->isUsed() ? 'In use' : 'Not used';
$data[] = $s;
}
$this->response->data(['total' => $result->totalNumber, 'data' => $data]);
}