ggg
This commit is contained in:
@@ -26,18 +26,13 @@ final class Search
|
||||
foreach ($tokens as $tok) {
|
||||
$tok = trim($tok);
|
||||
if ($tok === '') continue;
|
||||
$ph = [
|
||||
':t' . $i . 'a',
|
||||
':t' . $i . 'b',
|
||||
':t' . $i . 'c',
|
||||
':t' . $i . 'd',
|
||||
':t' . $i . 'e',
|
||||
':t' . $i . 'f',
|
||||
];
|
||||
$conditions[] = "(title LIKE {$ph[0]} OR teaser_public LIKE {$ph[1]} OR description LIKE {$ph[2]} OR city LIKE {$ph[3]} OR region LIKE {$ph[4]} OR zip LIKE {$ph[5]})";
|
||||
foreach ($ph as $p) {
|
||||
$params[$p] = '%' . $tok . '%';
|
||||
}
|
||||
$conditions[] = "(title LIKE :t{$i}a OR teaser_public LIKE :t{$i}b OR description LIKE :t{$i}c OR city LIKE :t{$i}d OR region LIKE :t{$i}e OR zip LIKE :t{$i}f)";
|
||||
$params["t{$i}a"] = '%' . $tok . '%';
|
||||
$params["t{$i}b"] = '%' . $tok . '%';
|
||||
$params["t{$i}c"] = '%' . $tok . '%';
|
||||
$params["t{$i}d"] = '%' . $tok . '%';
|
||||
$params["t{$i}e"] = '%' . $tok . '%';
|
||||
$params["t{$i}f"] = '%' . $tok . '%';
|
||||
$i++;
|
||||
}
|
||||
|
||||
@@ -68,13 +63,13 @@ final class Search
|
||||
$whereParts[] = "(lat IS NOT NULL AND lng IS NOT NULL)";
|
||||
$whereParts[] = "(lat BETWEEN :latMin AND :latMax)";
|
||||
$whereParts[] = "(lng BETWEEN :lngMin AND :lngMax)";
|
||||
$params[':glat'] = $lat;
|
||||
$params[':glng'] = $lng;
|
||||
$params[':latMin'] = $lat - $latRange;
|
||||
$params[':latMax'] = $lat + $latRange;
|
||||
$params[':lngMin'] = $lng - $lngRange;
|
||||
$params[':lngMax'] = $lng + $lngRange;
|
||||
$params[':radius'] = $radius;
|
||||
$params['glat'] = $lat;
|
||||
$params['glng'] = $lng;
|
||||
$params['latMin'] = $lat - $latRange;
|
||||
$params['latMax'] = $lat + $latRange;
|
||||
$params['lngMin'] = $lng - $lngRange;
|
||||
$params['lngMax'] = $lng + $lngRange;
|
||||
$params['radius'] = $radius;
|
||||
}
|
||||
|
||||
$where = $whereParts ? ('WHERE ' . implode(' AND ', $whereParts)) : '';
|
||||
@@ -88,8 +83,20 @@ final class Search
|
||||
$sql .= " LIMIT :lim";
|
||||
|
||||
$stmt = $this->pdo->prepare($sql);
|
||||
$params[':lim'] = $limit;
|
||||
$stmt->execute($params);
|
||||
foreach ($params as $k => $v) {
|
||||
$stmt->bindValue(':' . $k, $v, \PDO::PARAM_STR);
|
||||
}
|
||||
$stmt->bindValue(':lim', (int)$limit, \PDO::PARAM_INT);
|
||||
if ($distanceFiltering) {
|
||||
$stmt->bindValue(':radius', $params['radius'], \PDO::PARAM_STR);
|
||||
$stmt->bindValue(':glat', $params['glat'], \PDO::PARAM_STR);
|
||||
$stmt->bindValue(':glng', $params['glng'], \PDO::PARAM_STR);
|
||||
$stmt->bindValue(':latMin', $params['latMin'], \PDO::PARAM_STR);
|
||||
$stmt->bindValue(':latMax', $params['latMax'], \PDO::PARAM_STR);
|
||||
$stmt->bindValue(':lngMin', $params['lngMin'], \PDO::PARAM_STR);
|
||||
$stmt->bindValue(':lngMax', $params['lngMax'], \PDO::PARAM_STR);
|
||||
}
|
||||
$stmt->execute();
|
||||
return $stmt->fetchAll(\PDO::FETCH_ASSOC) ?: [];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user