File "GEOSEARCH.php"
Full Path: /home/pulsehostuk9/public_html/invoicer.pulsehost.co.uk/vendor/predis/predis/src/Cluster/GEOSEARCH.php
File size: 3.33 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Redis;
use Predis\Command\Command as RedisCommand;
use Predis\Command\Traits\By\GeoBy;
use Predis\Command\Traits\Count;
use Predis\Command\Traits\From\GeoFrom;
use Predis\Command\Traits\Sorting;
use Predis\Command\Traits\With\WithCoord;
use Predis\Command\Traits\With\WithDist;
use Predis\Command\Traits\With\WithHash;
/**
* @see https://redis.io/commands/geosearch/
*
* Return the members of a sorted set populated with geospatial information using GEOADD,
* which are within the borders of the area specified by a given shape.
*
* This command extends the GEORADIUS command, so in addition to searching
* within circular areas, it supports searching within rectangular areas.
*/
class GEOSEARCH extends RedisCommand
{
use GeoFrom {
GeoFrom::setArguments as setFrom;
}
use GeoBy {
GeoBy::setArguments as setBy;
}
use Sorting {
Sorting::setArguments as setSorting;
}
use Count {
Count::setArguments as setCount;
}
use WithCoord {
WithCoord::setArguments as setWithCoord;
}
use WithDist {
WithDist::setArguments as setWithDist;
}
use WithHash {
WithHash::setArguments as setWithHash;
}
protected static $sortArgumentPositionOffset = 3;
protected static $countArgumentPositionOffset = 4;
protected static $withCoordArgumentPositionOffset = 6;
protected static $withDistArgumentPositionOffset = 7;
protected static $withHashArgumentPositionOffset = 8;
public function getId()
{
return 'GEOSEARCH';
}
public function setArguments(array $arguments)
{
$this->setSorting($arguments);
$arguments = $this->getArguments();
$this->setWithCoord($arguments);
$arguments = $this->getArguments();
$this->setWithDist($arguments);
$arguments = $this->getArguments();
$this->setWithHash($arguments);
$arguments = $this->getArguments();
$this->setCount($arguments, $arguments[5] ?? false);
$arguments = $this->getArguments();
$this->setFrom($arguments);
$arguments = $this->getArguments();
$this->setBy($arguments);
$this->filterArguments();
}
public function parseResponse($data)
{
$parsedData = [];
$itemKey = '';
foreach ($data as $item) {
if (!is_array($item)) {
$parsedData[] = $item;
continue;
}
foreach ($item as $key => $itemRow) {
if ($key === 0) {
$itemKey = $itemRow;
continue;
}
if (is_string($itemRow)) {
$parsedData[$itemKey]['dist'] = round((float) $itemRow, 5);
} elseif (is_int($itemRow)) {
$parsedData[$itemKey]['hash'] = $itemRow;
} else {
$parsedData[$itemKey]['lng'] = round($itemRow[0], 5);
$parsedData[$itemKey]['lat'] = round($itemRow[1], 5);
}
}
}
return $parsedData;
}
}