66
77namespace Sugarcrm \REST \Endpoint \Data \Filters \Expression ;
88
9+ use Sugarcrm \REST \Endpoint \Data \Filters \Creator ;
10+ use Sugarcrm \REST \Endpoint \Data \Filters \Favorite ;
11+ use Sugarcrm \REST \Endpoint \Data \Filters \Following ;
912use Sugarcrm \REST \Endpoint \Data \Filters \Operator \Equals ;
13+ use Sugarcrm \REST \Endpoint \Data \Filters \Operator \InRadiusFromCoords ;
14+ use Sugarcrm \REST \Endpoint \Data \Filters \Operator \InRadiusFromZip ;
1015use Sugarcrm \REST \Endpoint \Data \Filters \Operator \NotEquals ;
1116use Sugarcrm \REST \Endpoint \Data \Filters \Operator \Starts ;
1217use Sugarcrm \REST \Endpoint \Data \Filters \Operator \Ends ;
2227use Sugarcrm \REST \Endpoint \Data \Filters \Operator \Between ;
2328use Sugarcrm \REST \Endpoint \Data \Filters \Operator \DateBetween ;
2429use Sugarcrm \REST \Endpoint \Data \Filters \FilterInterface ;
30+ use Sugarcrm \REST \Endpoint \Data \Filters \Owner ;
31+ use Sugarcrm \REST \Endpoint \Data \Filters \Tracker ;
2532use Sugarcrm \REST \Exception \Filter \UnknownFilterOperator ;
2633
2734/**
2835 * The default expression implementation provides an API for acess to all Sugar filter operators
2936 * @package Sugarcrm\REST\Endpoint\Data\Filters\Expression
3037 * @method AndExpression and()
3138 * @method OrExpression or()
32- * @method DateExpression date($field)
33- * @method $this equals($field,$value)
34- * @method $this notEquals($field,$value)
35- * @method $this starts($field,$value)
36- * @method $this ends($field,$value)
37- * @method $this contains($field,$value)
38- * @method $this in($field,array $value)
39- * @method $this notIn($field,array $value)
40- * @method $this isNull($field)
41- * @method $this notNull($field)
42- * @method $this lt($field,$value)
43- * @method $this lessThan($field,$value)
44- * @method $this lte($field,$value)
45- * @method $this lessThanOrEqualTo($field,$value)
46- * @method $this lessThanOrEquals($field,$value)
47- * @method $this greaterThan($field,$value)
48- * @method $this gte($field,$value)
49- * @method $this greaterThanOrEqualTo($field,$value)
50- * @method $this greaterThanOrEquals($field,$value)
51- * @method $this between($field,$value)
52- * @method $this dateBetween($field,$value)
39+ * @method DateExpression date(string $field)
40+ * @method DistanceExpression distance(string $field)
41+ * @method static equals(string $field, mixed $value)
42+ * @method static notEquals(string $field, mixed $value)
43+ * @method static starts(string $field,mixed $value)
44+ * @method static ends(string $field, mixed $value)
45+ * @method static contains(string $field, mixed $value)
46+ * @method static in(string $field, array $value)
47+ * @method static notIn(string $field, array $value)
48+ * @method static isNull(string $field)
49+ * @method static notNull(string $field)
50+ * @method static lt(string $field,int|float $value)
51+ * @method static lessThan(string $field, int|float $value)
52+ * @method static lte(string $field, int|float $value)
53+ * @method static lessThanOrEqualTo(string $field, int|float $value)
54+ * @method static lessThanOrEquals(string $field, int|float $value)
55+ * @method static greaterThan(string $field, int|float $value)
56+ * @method static gte(string $field, int|float $value)
57+ * @method static greaterThanOrEqualTo(string $field, int|float $value)
58+ * @method static greaterThanOrEquals(string $field, int|float$value)
59+ * @method static between(string $field, array $value)
60+ * @method static dateBetween(string $field,array $value)
61+ * @method static inRadiusFromCoords(string $field, array $coords, int|float $radius, string $unitType = 'km')
62+ * @method static inRadiusFromZip(string $field, string $zip, int|float $radius, string $country, string $unitType = 'km')
63+ * @method static favorite()
64+ * @method static following()
65+ * @method static owner()
66+ * @method static creator()
67+ * @method static tracker(string $interval)
5368 */
5469abstract class AbstractExpression implements FilterInterface, ExpressionInterface
5570{
56- /**
57- * @var array
58- */
59- protected $ filters = [];
71+ protected array $ filters = [];
6072
61- private ? \ Sugarcrm \ REST \ Endpoint \ Data \ Filters \ Expression \ AbstractExpression $ parentExpression = null ;
73+ private AbstractExpression $ parentExpression ;
6274
63- /**
64- * @var array
65- */
66- protected $ operators = [
75+ protected array $ operators = [
6776 'equals ' => Equals::class,
6877 'notEquals ' => NotEquals::class,
6978 'starts ' => Starts::class,
@@ -85,15 +94,20 @@ abstract class AbstractExpression implements FilterInterface, ExpressionInterfac
8594 'greaterThanOrEquals ' => GreaterThanOrEqual::class,
8695 'between ' => Between::class,
8796 'dateBetween ' => DateBetween::class,
97+ 'inRadiusFromCoords ' => InRadiusFromCoords::class,
98+ 'inRadiusFromZip ' => InRadiusFromZip::class,
99+ 'favorite ' => Favorite::class,
100+ 'following ' => Following::class,
101+ 'owner ' => Owner::class,
102+ 'tracker ' => Tracker::class,
103+ 'creator ' => Creator::class,
88104 ];
89105
90- /**
91- * @var array
92- */
93- protected $ expressions = [
106+ protected array $ expressions = [
94107 'and ' => AndExpression::class,
95108 'or ' => OrExpression::class,
96109 'date ' => DateExpression::class,
110+ 'distance ' => DistanceExpression::class,
97111 ];
98112
99113 /**
@@ -126,7 +140,7 @@ public function __call($name, $arguments)
126140 * Sets Parent Expression to allow for nested tree structure
127141 * @return $this
128142 */
129- public function setParentExpression (AbstractExpression $ Expression )
143+ public function setParentExpression (AbstractExpression $ Expression ): static
130144 {
131145 $ this ->parentExpression = $ Expression ;
132146 return $ this ;
@@ -156,7 +170,7 @@ public function compile(): array
156170 /**
157171 * @inheritDoc
158172 */
159- public function clear ()
173+ public function clear (): static
160174 {
161175 $ this ->filters = [];
162176 return $ this ;
0 commit comments