@@ -139,6 +139,47 @@ public function greater_than_equal_to(string $str = null, string $min, array $da
139
139
140
140
//--------------------------------------------------------------------
141
141
142
+ /**
143
+ * Checks the database to see if the given value exist.
144
+ * Can ignore records by field/value to filter (currently
145
+ * accept only one filter).
146
+ *
147
+ * Example:
148
+ * in_db[table.field,where_field,where_value]
149
+ * in_db[menu.id,active,1]
150
+ *
151
+ * @param string $str
152
+ * @param string $field
153
+ * @param array $data
154
+ *
155
+ * @return boolean
156
+ */
157
+ public function in_db (string $ str = null , string $ field , array $ data ): bool
158
+ {
159
+ // Grab any data for exclusion of a single row.
160
+ list ($ field , $ where_field , $ where_value ) = array_pad (explode (', ' , $ field ), 3 , null );
161
+
162
+ // Break the table and field apart
163
+ sscanf ($ field , '%[^.].%[^.] ' , $ table , $ field );
164
+
165
+ $ db = Database::connect ($ data ['DBGroup ' ] ?? null );
166
+
167
+ $ row = $ db ->table ($ table )
168
+ ->select ('1 ' )
169
+ ->where ($ field , $ str )
170
+ ->limit (1 );
171
+
172
+ if (! empty ($ where_field ) && ! empty ($ where_value ))
173
+ {
174
+ $ row = $ row ->where ($ where_field , $ where_value );
175
+ }
176
+
177
+ return (bool ) ($ row ->get ()
178
+ ->getRow () !== null );
179
+ }
180
+
181
+ //--------------------------------------------------------------------
182
+
142
183
/**
143
184
* Value should be within an array of values
144
185
*
0 commit comments