]> 91.132.146.200 Git - scientia.git/commitdiff
search
authorBanana <mail@bananas-playground.net>
Sat, 12 Nov 2022 12:05:36 +0000 (13:05 +0100)
committerBanana <mail@bananas-playground.net>
Sat, 12 Nov 2022 12:05:36 +0000 (13:05 +0100)
webroot/lib/entry.class.php
webroot/view/list/list.html
webroot/view/list/list.php

index e6ce324f135d44b0609360d772aee663277b50b1..629a9e396110c2fff447cd173f76001242681bed 100644 (file)
@@ -163,7 +163,7 @@ class Entry {
         *
         */
        private function _words(string $data): array {
-               preg_match_all('/\w{3,}+/',$data,$matches);
+               preg_match_all('/\w{3,}+/u',$data,$matches);
                return array_unique($matches[0]);
        }
 }
index 20e44361aea16baa47721b40c2478eb20c2784c1..fc06f1527f056d6fc5db139955fb8c4f5cbd8da6 100644 (file)
@@ -1,3 +1,7 @@
+<form method="post">
+       <input type="text" name="searchInput" size="50" />
+       <input type="submit" name="submitForm" value="Search">
+</form>
 <p>
        <a href="<?php echo PATH_WEBROOT; ?>/">Home</a> | <a href="<?php echo PATH_WEBROOT; ?>/new">New</a>
 </p>
@@ -17,5 +21,6 @@
 </ul>
 <?php
        }
-}
-?>
+} else { ?>
+<p>Nothing here.</p>
+<?php } ?>
index eee4c82ec41ea2d1ddd4fb678aedf2cd649d8553..7ed9806c41c5fcf5677c4b9d59b3366ebeb3b433 100644 (file)
 
 $TemplateData['entries'] = array();
 
-$queryStr = "SELECT `e`.`ident`, `e`.`date`, SUBSTRING(`e`.`body`,1,100) AS body FROM `".DB_PREFIX."_entry` AS e";
+$queryStr = "SELECT e.ident, e.date, e.words, SUBSTRING(e.body,1,100) AS body FROM `".DB_PREFIX."_entry` AS e";
 $queryLimit = " LIMIT 100";
 
+$searchTerm = '';
+if(isset($_POST['submitForm']) && isset($_POST['searchInput'])) {
+       if(Summoner::validate($_POST['searchInput'])) {
+               $searchTerm = trim($_POST['searchInput']);
+       }
+}
+
 // why?
 // mysql knows the dates and validates them. There is no 2020-02-31
 // the single date infos come from index.php
@@ -51,10 +58,16 @@ if(!empty($_requestDateProvided)) {
        }
 
        if(!empty($_intervalStart) && !empty($_intervalEnd)) {
-               $queryStr .= " WHERE `date` >= '".$_intervalStart."' AND `date` <= '".$_intervalEnd."'";
+               $queryStr .= " WHERE e.date >= '".$_intervalStart."' AND e.date <= '".$_intervalEnd."'";
+               if(!empty($searchTerm)) {
+                       $queryStr .= " AND MATCH(e.words) AGAINST('".$DB->real_escape_string($searchTerm)."' IN BOOLEAN MODE)";
+               }
        }
 } else {
        $_requestDateProvided = 'Y';
+       if(!empty($searchTerm)) {
+               $queryStr .= " WHERE MATCH(e.words) AGAINST('".$DB->real_escape_string($searchTerm)."' IN BOOLEAN MODE)";
+       }
 }
 
 $queryStr .= " ORDER BY `created` DESC";