Add folders containing matching files to the contents list when searching

This commit is contained in:
Junior 2024-11-12 09:36:38 -05:00
parent 8e8df39ec5
commit 2e85705a20

View File

@ -30,6 +30,7 @@ if ( $row = $sth->fetch() ) {
} }
$data['contents'] = array(); $data['contents'] = array();
$foldermatch = array();
if ( !$searching ) { if ( !$searching ) {
$contents = glob(BOOKDIR . $_SESSION['bookdir'] . "/*"); $contents = glob(BOOKDIR . $_SESSION['bookdir'] . "/*");
@ -72,6 +73,7 @@ if ( !$searching ) {
$item['folder'] = true; $item['folder'] = true;
$item['fullpath'] = $row['path']; $item['fullpath'] = $row['path'];
$item['displayname'] = htmlspecialchars(basename($row['path'])); $item['displayname'] = htmlspecialchars(basename($row['path']));
if ( !in_array($row['path'], $foldermatch) ) $foldermatch[] = $row['path'];
$data['contents'][] = $item; $data['contents'][] = $item;
} }
$query = "SELECT id, path, filename FROM books WHERE LOWER(filename) LIKE :searchfor ORDER BY path, filename"; $query = "SELECT id, path, filename FROM books WHERE LOWER(filename) LIKE :searchfor ORDER BY path, filename";
@ -80,6 +82,14 @@ if ( !$searching ) {
$sth->execute(); $sth->execute();
while ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) { while ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
if ( $row['path'] == "/" ) continue; if ( $row['path'] == "/" ) continue;
if ( !in_array($row['path'], $foldermatch) ) {
$foldermatch[] = $row['path'];
$item = array();
$item['folder'] = true;
$item['fullpath'] = $row['path'];
$item['displayname'] = htmlspecialchars(basename($row['path']));
$data['contents'][] = $item;
}
$item = array(); $item = array();
$item['folder'] = false; $item['folder'] = false;
$item['fullpath'] = $row['path'] . "/" . $row['filename']; $item['fullpath'] = $row['path'] . "/" . $row['filename'];