Esempio n. 1
0
 /**
  * @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;
 }