/** * @param StorageRequest $request * @return string */ private static function getCondition($request) { $where = '\'1\'=\'1\''; // where custom if ($request->hasWhere()) { $where .= ' AND (' . $request->getRequestSettings()['where'] . ')'; } //where in AND per operatori definiti if (!$request->hasSearch() && !$request->hasWhere()) { $clauses = ' AND'; $fields = $request->getModel()->getFlatDbValues(); foreach ($fields as $field => $value) { $op = $request->getOperator($field); $clauses .= ' `' . $field . '` ' . $op . ' ' . $value . ' AND'; } $clauses = rtrim($clauses, 'AND'); $where .= $clauses; } //Where per ricerche selvagge if ($request->hasSearch() && count($request->getModel()->getSearchableFields()) === 0) { $likes = ''; $searchTherms = $request->getSearchTherms(); $fields = $request->getModel()->getFlatTypes(); foreach ($fields as $field => $value) { if ($field !== 'id' and $field !== 'version') { foreach ($searchTherms as $therm) { $likes .= ' `' . $field . '` LIKE \'%' . $therm . '%\' OR'; } } } $likes = rtrim($likes, 'OR'); $where = '( ' . $where . ' ) AND ( ' . $likes . ' ) '; } return $where; }