Esempio n. 1
0
 /**
  * @param  StorageRequest $request
  * @param  ConfigManager $settings
  * @return string
  */
 private static function getSelect($request, $settings)
 {
     /* select base */
     $select = '';
     $searchableFields = $request->getModel()->getSearchableFields();
     if ($request->hasSearch() && count($searchableFields) > 0) {
         $select .= '( ';
         foreach ($searchableFields as $field) {
             $toAdd = self::$SELECT_QUERY_MODEL;
             $likes = '';
             $searchTherms = $request->getSearchTherms();
             foreach ($searchTherms as $therm) {
                 $likes .= ' `' . $field . '` LIKE \'%' . $therm . '%\' OR';
             }
             $likes = rtrim($likes, 'OR');
             $toAdd = str_replace('<identifier>', self::getDbTableIdentifier($settings, $request->getModel()), $toAdd);
             $toAdd = str_replace('<cond>', '(' . self::getCondition($request) . ') AND (' . $likes . ')', $toAdd);
             $toAdd = str_replace('<paging>', '', $toAdd);
             $toAdd .= ' UNION ';
             $select .= $toAdd;
         }
         $select = rtrim($select, 'UNION ');
         $select .= ') AS search_scores';
     } else {
         $select = self::getDbTableIdentifier($settings, $request->getModel());
     }
     return $select;
 }