Poirsouille
[RECHERCHE] Nouvelle Fonctionalite - Version imprimable

+- Poirsouille (https://forum.poirsouille.org)
+-- Forum : Les forums Poirsouille (https://forum.poirsouille.org/Forum-Les-forums-Poirsouille)
+--- Forum : Questions et soucis (https://forum.poirsouille.org/Forum-Questions-et-soucis)
+--- Sujet : [RECHERCHE] Nouvelle Fonctionalite (/Thread-RECHERCHE-Nouvelle-Fonctionalite)



[RECHERCHE] Nouvelle Fonctionalite - shef - 11-06-2008

Voila, je me suis charge du cas de Chel !
On peut desormais effectuer des recherche par date. Bon, ca reste pas tres "user-friendly", mais bon.

Voila comment on procede: on va sur le panneau de recherche, et dans le champ Recherche par mot-clé on rentre :
date YYYY-MM-DD
en remplacant YYYY par l'annee, par exemple 2008
en remplacant MM par le mois, par exemple 06
en remplacant DD par le jour, par exemple 08
Ce qui donnerait dans l'exemple ici: date 2008-06-08

Le resultat renvoie tous les sujets qui ont eu au moins une reponse depuis la date donnee (on ne peut pas afficher directement le contenu des messages, desole !).

Voila !
En cas de bug, poster ici une description aussi detaillee que possible.


RE: [RECHERCHE] Nouvelle Fonctionalite - Vilbrekin - 11-06-2008

Faudrait que tu me dises ce que tu as modifié, que je ne l'écrase pas lors des mises à jour.


RE: [RECHERCHE] Nouvelle Fonctionalite - shef - 11-06-2008

search.php, j'ai ajouté des lignes pour vérifier le format de l'input:
Code :
...
    $search_data = array(
        "keywords" => $mybb->input['keywords'],
        "author" => $mybb->input['author'],
        "postthread" => $mybb->input['postthread'],
        "matchusername" => $mybb->input['matchusername'],
        "postdate" => $mybb->input['postdate'],
        "pddir" => $mybb->input['pddir'],
        "forums" => $mybb->input['forums'],
        "findthreadst" => $mybb->input['findthreadst'],
        "numreplies" => $mybb->input['numreplies']
    );

// Ca commence ici
if (ereg("date ([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $mybb->input['keywords'], $regs)){

    $date_to_search = mktime(0,0,0,$regs[2],$regs[3],$regs[1]);

    $where_sql = "t.lastpost >= '".$date_to_search."'";

    if($mybb->input['fid'])
    {
        $where_sql .= " AND t.fid='".intval($mybb->input['fid'])."'";
    }
    
    $unsearchforums = get_unsearchable_forums();
    if($unsearchforums)
    {
        $where_sql .= " AND t.fid NOT IN ($unsearchforums)";
    }
    $inactiveforums = get_inactive_forums();
    if($inactiveforums)
    {
        $where_sql .= " AND t.fid NOT IN ($inactiveforums)";
    }

    $sid = md5(uniqid(microtime(), 1));
    $searcharray = array(
        "sid" => $db->escape_string($sid),
        "uid" => $mybb->user['uid'],
        "dateline" => time(),
        "ipaddress" => $db->escape_string($session->ipaddress),
        "threads" => '',
        "posts" => '',
        "searchtype" => "titles",
        "resulttype" => "threads",
        "querycache" => $db->escape_string($where_sql),
    );

    $plugins->run_hooks("search_do_search_process");
    $db->insert_query(TABLE_PREFIX."searchlog", $searcharray);
    redirect("search.php?action=results&sid=".$sid, $lang->redirect_searchresults);
}
// ET ça s'arrête là

    if($config['dbtype'] == "mysql" || $config['dbtype'] == "mysqli")
    {
        if($mybb->settings['searchtype'] == "fulltext" && $db->supports_fulltext_boolean(TABLE_PREFIX."posts") && $db->is_fulltext(TABLE_PREFIX."posts"))
...



RE: [RECHERCHE] Nouvelle Fonctionalite - shef - 06-07-2008

Bon, je uppe pour le Chel, qu'il me confirme qu'il a bien lu ce topic...


RE: [RECHERCHE] Nouvelle Fonctionalite - Le Chel - 06-07-2008

shef a écrit :Bon, je uppe pour le Chel, qu'il me confirme qu'il a bien lu ce topic...

J'ai bien pris connaissance de ton post, Shef .En accord 2
Et ne me reste plus qu'à apprendre à me servir de ce merveilleux outil que tu viens de nous concocter.
Merci en tout cas !


RE: [RECHERCHE] Nouvelle Fonctionalite - shef - 18-08-2008

(11-06-2008, 18:49)Vilbrekin a écrit : Faudrait que tu me dises ce que tu as modifié, que je ne l'écrase pas lors des mises à jour.

Je vois que ca a servi Big Grin

Bon, la nouvelle mouture:

Code :
    $search_data = array(
        "keywords" => $mybb->input['keywords'],
        "author" => $mybb->input['author'],
        "postthread" => $mybb->input['postthread'],
        "matchusername" => $mybb->input['matchusername'],
        "postdate" => $mybb->input['postdate'],
        "pddir" => $mybb->input['pddir'],
        "forums" => $mybb->input['forums'],
        "findthreadst" => $mybb->input['findthreadst'],
        "numreplies" => $mybb->input['numreplies']
    );

// Ca commence ici
if (ereg("date ([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $mybb->input['keywords'], $regs)){

    $date_to_search = mktime(0,0,0,$regs[2],$regs[3],$regs[1]);

    $where_sql = "t.lastpost >= '".$date_to_search."'";

    if($mybb->input['fid'])
    {
        $where_sql .= " AND t.fid='".intval($mybb->input['fid'])."'";
    }
    
    $unsearchforums = get_unsearchable_forums();
    if($unsearchforums)
    {
        $where_sql .= " AND t.fid NOT IN ($unsearchforums)";
    }
    $inactiveforums = get_inactive_forums();
    if($inactiveforums)
    {
        $where_sql .= " AND t.fid NOT IN ($inactiveforums)";
    }

    $sid = md5(uniqid(microtime(), 1));
    $searcharray = array(
        "sid" => $db->escape_string($sid),
        "uid" => $mybb->user['uid'],
        "dateline" => time(),
        "ipaddress" => $db->escape_string($session->ipaddress),
        "threads" => '',
        "posts" => '',
        "searchtype" => "titles",
        "resulttype" => "threads",
        "querycache" => $db->escape_string($where_sql),
    );

    $plugins->run_hooks("search_do_search_process");
    $db->insert_query("searchlog", $searcharray);
    redirect("search.php?action=results&sid=".$sid, $lang->redirect_searchresults);
}
// ET ça s'arrête là


    if($db->can_search == true)
    {
        if($mybb->settings['searchtype'] == "fulltext" && $db->supports_fulltext_boolean("posts") && $db->is_fulltext("posts"))
        {
            $search_results = perform_search_mysql_ft($search_data);
        }
        else
        {
            $search_results = perform_search_mysql($search_data);
        }
    }