From d967a1fa14237648fc63c44f6a28c9c077b3e1bc Mon Sep 17 00:00:00 2001 From: tcit Date: Wed, 2 Apr 2014 17:44:47 +0200 Subject: [PATCH] Important fixes for search engine (thx @mariroz) So sorry for the mess... :( * search only in users' own articles * sanitized what is searched * display what is searched * pagination, sorting available when searching * use existing function to query db * bad encoding caracters fixed * link to JQuery into default theme, no longer in each theme * some spaces instead of tabs --- inc/poche/Database.class.php | 13 +++++++------ inc/poche/Poche.class.php | 18 ++++++++++++------ install/index.php | 6 +++--- themes/baggy/home.twig | 8 +++++++- themes/courgette/home.twig | 8 +++++++- themes/default/_sorting.twig | 4 ++-- themes/default/home.twig | 8 +++++++- 7 files changed, 45 insertions(+), 20 deletions(-) diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index 6f5c9ac..2257f28 100755 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php @@ -389,12 +389,13 @@ class Database { return $this->getHandle()->lastInsertId($column); } - public function search($term){ - $search = '%'.$term.'%'; - $query = $this->getHandle()->prepare("SELECT * FROM entries WHERE content LIKE ? OR title LIKE ? OR url LIKE ?"); //searches in content, title and URL - $query->execute(array($search,$search,$search)); - $entries = $query->fetchAll(); - return $entries; + public function search($term,$id,$limit = ''){ + $search = '%'.$term.'%'; + $sql_action = ("SELECT * FROM entries WHERE user_id=? AND (content LIKE ? OR title LIKE ? OR url LIKE ?) "); //searches in content, title and URL + $sql_action .= $this->getEntriesOrder().' ' . $limit; + $params_action = array($id,$search,$search,$search); + $query = $this->executeQuery($sql_action, $params_action); + return $query->fetchAll(); } public function retrieveAllTags($user_id, $term = null) { diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 7d9faed..42a2dd9 100755 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -604,12 +604,18 @@ class Poche ); break; - case 'search': - if (isset($_GET['search'])){ - $search = $_GET['search']; - $tpl_vars['entries'] = $this->store->search($search); - $tpl_vars['nb_results'] = count($tpl_vars['entries']); - } + case 'search': + if (isset($_GET['search'])){ + $search = filter_var($_GET['search'], FILTER_SANITIZE_STRING); + $tpl_vars['entries'] = $this->store->search($search,$this->user->getId()); + $count = count($tpl_vars['entries']); + $this->pagination->set_total($count); + $page_links = str_replace(array('previous', 'next'), array(_('previous'), _('next')), + $this->pagination->page_links('?view=' . $view . '?search=' . $search . '&sort=' . $_SESSION['sort'] . '&' )); + $tpl_vars['page_links'] = $page_links; + $tpl_vars['nb_results'] = $count; + $tpl_vars['search_term'] = $search; + } break; case 'view': $entry = $this->store->retrieveOneById($id, $this->user->getId()); diff --git a/install/index.php b/install/index.php index e63b242..e02952e 100644 --- a/install/index.php +++ b/install/index.php @@ -24,7 +24,7 @@ if (isset($_GET['clean'])) { if (isset($_POST['download'])) { if (!file_put_contents("cache/vendor.zip", fopen("http://static.wallabag.org/files/vendor.zip", 'r'))) { - $errors[] = 'Impossible to download vendor.zip. Please download it manually<∕a> and unzip it in your wallabag folder.'; + $errors[] = 'Impossible to download vendor.zip. Please download it manually and unzip it in your wallabag folder.'; } else { if (extension_loaded('zip')) { @@ -165,7 +165,7 @@ else if (isset($_POST['install'])) { - wallabag — installation + wallabag - installation @@ -176,7 +176,7 @@ else if (isset($_POST['install'])) { - + diff --git a/themes/baggy/home.twig b/themes/baggy/home.twig index e34897f..5dd9130 100755 --- a/themes/baggy/home.twig +++ b/themes/baggy/home.twig @@ -25,9 +25,15 @@ {% block pager %} {% if nb_results > 1 %}
-
{{ nb_results }} {% trans "results" %}
+
{{ nb_results }} {% trans "results" %}{% if search_term is defined %}{% trans " found for « " %} {{ search_term }} »{% endif %}
{{ page_links | raw }}
+ {% elseif nb_results == 1 %} + {% if search_term is defined %} +
+
{% trans "Only one result found for " %} « {{ search_term }} »
+
+ {% endif %} {% endif %} {% endblock %}
diff --git a/themes/courgette/home.twig b/themes/courgette/home.twig index 5b229ce..6ba72d3 100755 --- a/themes/courgette/home.twig +++ b/themes/courgette/home.twig @@ -26,9 +26,15 @@ {% block pager %} {% if nb_results > 1 %}
-
{{ nb_results }} {% trans "results" %}
+
{{ nb_results }} {% trans "results" %}{% if search_term is defined %}{% trans " found for « " %} {{ search_term }} »{% endif %}
{{ page_links | raw }}
+ {% elseif nb_results == 1 %} + {% if search_term is defined %} +
+
{% trans "Only one result found for " %} « {{ search_term }} »
+
+ {% endif %} {% endif %} {% endblock %} {% for entry in entries %} diff --git a/themes/default/_sorting.twig b/themes/default/_sorting.twig index dfa5cfe..ce3d38b 100755 --- a/themes/default/_sorting.twig +++ b/themes/default/_sorting.twig @@ -1,6 +1,6 @@ {% if entries|length > 1 %} {% endif %} diff --git a/themes/default/home.twig b/themes/default/home.twig index b6185df..7bee883 100755 --- a/themes/default/home.twig +++ b/themes/default/home.twig @@ -26,9 +26,15 @@ {% block pager %} {% if nb_results > 1 %}
-
{{ nb_results }} {% trans "results" %}
+
{{ nb_results }} {% trans "results" %}{% if search_term is defined %}{% trans " found for « " %} {{ search_term }} »{% endif %}
{{ page_links | raw }}
+ {% elseif nb_results == 1 %} + {% if search_term is defined %} +
+
{% trans "Only one result found for " %} « {{ search_term }} »
+
+ {% endif %} {% endif %} {% endblock %} {% for entry in entries %}