X-Git-Url: http://git.shiar.nl/minimedit.git/blobdiff_plain/ead24d57321f965db99178336e9a72c03c966bd1..f0c8ab294f56f5eccaa57e58fc2b086f3fa71736:/search.php diff --git a/search.php b/search.php index 5bd03bb..0b15607 100644 --- a/search.php +++ b/search.php @@ -1,38 +1,58 @@ $limit) { - shuffle($results); - array_splice($results, $limit); -} +if (!trim($query, '/')) return; + +if (!empty($Place['suggest'])) { + $cmd = "git ls-files -- $path"; + exec($cmd, $ls); + if (!$ls) { + die("fout bij zoeken van bestanden"); + } -$cmd = "git ls-files -- $path"; -exec($cmd, $ls); -if ($ls) { # order files by similarity to query - $ls = array_combine($ls, array_map(function ($row) use ($Page) { + $ls = array_combine($ls, array_map(function ($row) use ($query) { $row = preg_replace('{(?:^|/)index\.html$}', '', $row); - return similar_text($row, $Page) - strlen($row) / 8; + return similar_text($row, $query) - strlen($row) / 8; }, $ls)); arsort($ls); - - # prepend best match, replace unless duplicate - array_unshift($results, key($ls)); - $results = array_unique($results); - array_splice($results, $limit); + $results = array_keys($ls); +} +else { + $cmd = "git grep -li -- ".escapeshellarg($query).$path; + exec($cmd, $results); + if (count($results) > $limit) { + shuffle($results); // avoid alphabetical top set + } } -elseif (!$results) { - $results = ['index.html']; +if (isset($Place['verbose'])) { + printf("

%s gevonden voor %s:

\n", + $results ? count($results).' resultaten' : 'Niets', + htmlspecialchars($query) + ); } require_once('nieuws.inc.php'); -print '\n";