@@ -30,12 +30,18 @@ public function __construct(array $dsl) {
30
30
* @return string
31
31
*/
32
32
public function __toString () {
33
- $ dsl = $ this ->dsl ['query ' ];
33
+ $ dsl = $ this ->dsl ;
34
+ $ query = $ dsl ['query ' ];
35
+
34
36
$ string = "" ;
35
- if (array_key_exists ("term " , $ dsl ))
36
- $ string .= $ this ->transformDSLTermToString ($ dsl ['term ' ]);
37
- if (array_key_exists ("wildcard " , $ dsl ))
38
- $ string .= $ this ->transformDSLTermToString ($ dsl ['wildcard ' ]);
37
+ if (array_key_exists ("term " , $ query ))
38
+ $ string .= $ this ->transformDSLTermToString ($ query ['term ' ]);
39
+ if (array_key_exists ("wildcard " , $ query ))
40
+ $ string .= $ this ->transformDSLTermToString ($ query ['wildcard ' ]);
41
+ if (array_key_exists ("sort " , $ dsl ))
42
+ $ string .= $ this ->transformDSLSortToString ($ dsl ['sort ' ]);
43
+ if (array_key_exists ("fields " , $ dsl ))
44
+ $ string .= $ this ->transformDSLFieldsToString ($ dsl ['fields ' ]);
39
45
return $ string ;
40
46
}
41
47
@@ -51,20 +57,60 @@ protected function transformDSLTermToString($dslTerm) {
51
57
if (is_array ($ dslTerm )) {
52
58
$ key = key ($ dslTerm );
53
59
$ value = $ dslTerm [$ key ];
54
-
55
- /**
56
- * If a specific key is used as key in the array
57
- * this should translate to searching in a specific field (field:term)
58
- */
59
60
if (is_string ($ key ))
60
61
$ string .= "$ key: " ;
61
- if (strpos (" " , $ value ) !== false )
62
- $ string .= '" ' . $ value . '" ' ;
63
- else
64
- $ string .= $ value ;
65
62
}
66
63
else
67
- $ string .= $ dslTerm ;
64
+ $ value = $ dslTerm ;
65
+ /**
66
+ * If a specific key is used as key in the array
67
+ * this should translate to searching in a specific field (field:term)
68
+ */
69
+ if (strpos ($ value , " " ) !== false )
70
+ $ string .= '" ' . $ value . '" ' ;
71
+ else
72
+ $ string .= $ value ;
73
+ return $ string ;
74
+ }
75
+
76
+ /**
77
+ * Transform search parameters to string
78
+ *
79
+ * @return string
80
+ * @param mixed $dslSort
81
+ */
82
+ protected function transformDSLSortToString ($ dslSort ) {
83
+ $ string = "" ;
84
+ if (is_array ($ dslSort )) {
85
+ foreach ($ dslSort as $ sort ) {
86
+ if (is_array ($ sort )) {
87
+ $ field = key ($ sort );
88
+ $ info = current ($ sort );
89
+ }
90
+ else
91
+ $ field = $ sort ;
92
+ $ string .= "&sort= " . $ field ;
93
+ if (isset ($ info )) {
94
+ if (is_string ($ info ) && $ info == "desc " )
95
+ $ string .= ":reverse " ;
96
+ elseif (is_array ($ info ) && array_key_exists ("reverse " , $ info ) && $ info ['reverse ' ])
97
+ $ string .= ":reverse " ;
98
+ }
99
+ }
100
+ }
101
+ return $ string ;
102
+ }
103
+
104
+ /**
105
+ * Transform a selection of fields to return to string form
106
+ *
107
+ * @return string
108
+ * @param mixed $dslFields
109
+ */
110
+ protected function transformDSLFieldsToString ($ dslFields ) {
111
+ $ string = "" ;
112
+ if (is_array ($ dslFields ))
113
+ $ string .= "&fields= " . join (", " , $ dslFields );
68
114
return $ string ;
69
115
}
70
116
}
0 commit comments