Changeset 81603 in spip-zone


Ignore:
Timestamp:
Mar 23, 2014, 10:24:58 PM (5 years ago)
Author:
kent1@…
Message:

Le code de la recherche a changé en SPIP >= 3.0

On est en 2014

version 0.4.0

Location:
_plugins_/xmlrpc/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/xmlrpc/trunk/action/xmlrpc_serveur.php

    r81512 r81603  
    44 *
    55 * Auteurs : kent1 (http://www.kent1.info)
    6  * © 2011-2012 - GNU/GPL v3
     6 * © 2011-2014- GNU/GPL v3
    77 *
    88 * Action serveur xml-rpc
     
    593593                        /**
    594594                         * Si on est identifié
    595                          * Si on a un id_rubrique non publié dans la requète on regarde si on a le droit de créer un article dedans
     595                         * Si on a un id_rubrique non publié dans la requète, que l'on n'a pas $tout, on regarde si on a le droit de créer un article dedans
    596596                         */
    597597                        if(!$tout && ($statut != 'publie') && is_array($GLOBALS['visiteur_session']) && autoriser('creerarticledans','rubrique',$args['id_rubrique'],$GLOBALS['visiteur_session'])){
     
    610610                        /**
    611611                         * Cas où l'on n'a pas de user/pass
    612                          * On liste la rubrique uniquement si publié
     612                         * On liste la rubrique uniquement si publié ou que l'on a $tout
    613613                         */
    614614                        else if($tout || $statut == 'publie'){
     
    736736                function spip_liste_articles($args){
    737737                        $objet = 'article';
    738                        
    739                         $what[] = 'articles.id_article';
     738                        $table_objet = 'articles';
     739                       
     740                        $what[] = $table_objet.'.id_article';
    740741                       
    741742                        if (version_compare($GLOBALS['spip_version_branche'], '2.3', '>=')){
     
    748749                       
    749750                        if(intval($args['id_rubrique'])){
    750                                 $where[] = 'articles.id_rubrique='.intval($args['id_rubrique']);
     751                                $where[] = $table_objet.'.id_rubrique='.intval($args['id_rubrique']);
    751752                        }
    752753                        if(intval($args['id_secteur'])){
    753                                 $where[] = 'articles.id_secteur='.intval($args['id_secteur']);
     754                                $where[] = $table_objet.'.id_secteur='.intval($args['id_secteur']);
    754755                        }
    755756                        if(intval($args['id_auteur'])){
     
    759760                        if(is_string($args['recherche']) AND strlen($args['recherche']) > 3){
    760761                                $prepare_recherche = charger_fonction('prepare_recherche', 'inc');
    761                                 list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
     762                                if (version_compare($GLOBALS['spip_version_branche'], '2.3', '>=')){
     763                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $table_objet,false,'', $where);
     764                                        $where[] = $rech_where;
     765                                }
     766                                else{
     767                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
     768                                        $where[] = 'resultats.'.$rech_where;
     769                                }
    762770                                $what[] = $rech_select;
    763                                 $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = articles.id_article ) ';
    764                                 $where[] = 'resultats.'.$rech_where;
    765                         }
    766                        
     771                                $from .= ' INNER JOIN spip_resultats AS resultats ON resultats.id = articles.id_article AND resultats.table_objet = articles ';
     772                        }
     773                       
     774                        spip_log($what,'test.'._LOG_ERREUR);
     775                        spip_log($where,'test.'._LOG_ERREUR);
    767776                        $articles_struct = array();
    768777                       
     
    815824                function spip_liste_auteurs($args){
    816825                        $objet = 'auteur';
    817                        
     826                        $table_objet = 'auteurs';
     827
    818828                        $what[] = 'auteurs.id_auteur';
    819829                        $from = 'spip_auteurs AS auteurs';
     
    823833                        if(is_string($args['recherche']) AND strlen($args['recherche']) > 3){
    824834                                $prepare_recherche = charger_fonction('prepare_recherche', 'inc');
    825                                 list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
     835                                if (version_compare($GLOBALS['spip_version_branche'], '2.3', '>=')){
     836                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $table_objet,false,'', $where);
     837                                        $where[] = $rech_where;
     838                                        $from .= ' INNER JOIN spip_resultats AS resultats ON resultats.id = auteurs.id_auteur AND resultats.table_objet = auteurs ';
     839                                }
     840                                else{
     841                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
     842                                        $where[] = 'resultats.'.$rech_where;
     843                                        $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = auteurs.id_auteur ) ';
     844                                }
    826845                                $what[] = $rech_select;
    827                                 $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = auteurs.id_auteur ) ';
    828                                 $where[] = 'resultats.'.$rech_where;
    829846                        }
    830847                        $auteurs_struct = array();
     
    868885                function spip_liste_documents($args){
    869886                        $objet = 'document';
     887                        $table_objet = "documents";
    870888                       
    871889                        $what[] = 'documents.id_document';
     
    880898                        if(is_string($args['recherche']) AND strlen($args['recherche']) > 3){
    881899                                $prepare_recherche = charger_fonction('prepare_recherche', 'inc');
    882                                 list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
     900                                if (version_compare($GLOBALS['spip_version_branche'], '2.3', '>=')){
     901                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $table_objet,false,'', $where);
     902                                        $where[] = $rech_where;
     903                                        $from .= ' INNER JOIN spip_resultats AS resultats ON resultats.id = documents.id_document AND resultats.table_objet = documents ';
     904                                }
     905                                else{
     906                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
     907                                        $where[] = 'resultats.'.$rech_where;
     908                                        $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = documents.id_document ) ';
     909                                }
    883910                                $what[] = $rech_select;
    884                                 $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = documents.id_document ) ';
    885                                 $where[] = 'resultats.'.$rech_where;
    886                         }
    887 
     911                        }
    888912                        $documents_struct = array();
    889913
     
    917941                function spip_liste_mots($args){
    918942                        $objet = 'mot';
    919                        
     943                        $table_objet = 'mots';
     944
    920945                        $what[] = 'mots.id_mot';
    921946                        $from = 'spip_mots as mots';
     
    926951                                $where[] = 'mots.id_groupe='.intval($args['id_groupe']);
    927952                        }
    928                        
     953
    929954                        if(is_string($args['recherche']) AND strlen($args['recherche']) > 3){
    930955                                $prepare_recherche = charger_fonction('prepare_recherche', 'inc');
    931                                 list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
     956                                if (version_compare($GLOBALS['spip_version_branche'], '2.3', '>=')){
     957                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $table_objet,false,'', $where);
     958                                        $where[] = $rech_where;
     959                                        $from .= ' INNER JOIN spip_resultats AS resultats ON resultats.id = mots.id_mot AND resultats.table_objet = mots ';
     960                                }
     961                                else{
     962                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
     963                                        $where[] = 'resultats.'.$rech_where;
     964                                        $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = mots.id_mot ) ';
     965                                }
    932966                                $what[] = $rech_select;
    933                                 $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = rubriques.id_rubrique ) ';
    934                                 $where[] .= 'resultats.'.$rech_where;
    935967                        }
    936968
     
    9681000                function spip_liste_rubriques($args){
    9691001                        $objet = 'rubrique';
     1002                        $table_objet = 'rubriques';
     1003
    9701004                        $tout = false;
    9711005                        if(isset($args['tout']) && $args['tout'] == 'oui')
     
    9871021                        if(is_string($args['recherche']) AND strlen($args['recherche']) > 3){
    9881022                                $prepare_recherche = charger_fonction('prepare_recherche', 'inc');
    989                                 list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
    990                                 $what = $rech_select;
    991                                 $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = rubriques.id_rubrique ) ';
    992                                 $where[] = 'resultats.'.$rech_where;
     1023                                if (version_compare($GLOBALS['spip_version_branche'], '2.3', '>=')){
     1024                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $table_objet,false,'', $where);
     1025                                        $where[] = $rech_where;
     1026                                        $from .= ' INNER JOIN spip_resultats AS resultats ON resultats.id = rubriques.id_rubrique AND resultats.table_objet = rubriques ';
     1027                                }
     1028                                else{
     1029                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
     1030                                        $where[] = 'resultats.'.$rech_where;
     1031                                        $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = rubriques.id_rubrique ) ';
     1032                                }
     1033                                $what[] = $rech_select;
    9931034                        }
    9941035
     
    10341075                        $where = is_array($args['where']) ? $args['where'] : array();
    10351076                        $order = is_array($args['tri']) ? $args['tri'] : array('!id_forum');
    1036                        
     1077
    10371078                        if(is_string($args['recherche']) AND strlen($args['recherche']) > 3){
    10381079                                $prepare_recherche = charger_fonction('prepare_recherche', 'inc');
    1039                                 list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where,null,true);
     1080                                if (version_compare($GLOBALS['spip_version_branche'], '2.3', '>=')){
     1081                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $table_objet,false,'', $where);
     1082                                        $where[] = $rech_where;
     1083                                        $from .= ' INNER JOIN spip_resultats AS resultats ON resultats.id = forums.id_forum AND resultats.table_objet = forums ';
     1084                                }
     1085                                else{
     1086                                        list($rech_select, $rech_where) = $prepare_recherche($args['recherche'], $objet, $where);
     1087                                        $where[] = 'resultats.'.$rech_where;
     1088                                        $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = forums.id_forum ) ';
     1089                                }
    10401090                                $what[] = $rech_select;
    1041                                 $from .= ' INNER JOIN spip_resultats AS resultats ON ( resultats.id = forums.id_forum ) ';
    1042                                 $where[] = $rech_where;
    1043                         }
    1044                        
     1091                        }
     1092
    10451093                        if($args['id_auteur']){
    10461094                                $where[] = 'forums.id_auteur='.intval($args['id_auteur']);
  • _plugins_/xmlrpc/trunk/paquet.xml

    r78335 r81603  
    22        prefix="xmlrpc"
    33        categorie="outil"
    4         version="0.3.1"
     4        version="0.4.0"
    55        etat="test"
    66        compatibilite="[2.0.10;3.0.*]"
    77        logo="images/xmlrpc.png"
    8 >       
     8>
    99
    1010        <nom>
     
    1515        <auteur>kent1</auteur>
    1616
    17         <copyright>2011-2012</copyright>
     17        <copyright>2011-2014</copyright>
    1818
    1919        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GNU/GPL</licence>
  • _plugins_/xmlrpc/trunk/plugin.xml

    r78335 r81603  
    1212        <auteur>[kent1->http://www.kent1.info]</auteur>
    1313        <licence>
    14                 © 2011-2012 - GNU/GPL v3
     14                © 2011-2014 - GNU/GPL v3
    1515        </licence>
    1616        <version>
    17                 0.3.1
     17                0.4.0
    1818        </version>
    1919        <etat>
Note: See TracChangeset for help on using the changeset viewer.