Changeset 7825 in spip-zone


Ignore:
Timestamp:
Dec 8, 2006, 5:24:24 PM (12 years ago)
Author:
renato@…
Message:

now it possible to modify the configuration of the fields of the tables already indexed;
the configuration of the indexed fields can manage points, min length and filters;
it is possible to configure the fields for tables with the idx field but no configuration.

Location:
_plugins_/_dev_/indicizzazione_tabelle
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_dev_/indicizzazione_tabelle/action/indicizza.php

    r7824 r7825  
    2020        $arg = _request('arg');
    2121
    22         if (!preg_match(",^(-?)(.*)$,", $arg, $r))
    23                 spip_log("action_indicizza ".interdire_scripts($arg)." non corretta");
     22        if (!preg_match(",^([-+*])(.*)$,", $arg, $r))
     23                spip_log("action_indicizza $arg non corretta");
    2424        else indicizza_tabella($r[2],$r[1]);
    2525       
     
    3535        $tabella = corriger_caracteres($tabella);
    3636        //Verifiche di congruenza azioni
    37         if(!$mode) {
    38                 if(in_array($tabella,liste_index_tables())) {
     37        if($mode!="-") {
     38                if($mode=="+" && in_array($tabella,liste_index_tables())) {
    3939                        include_spip('inc/minipres');
    4040                        minipres(_L("La tabella ".interdire_scripts($tabella)." è già indicizzata"));
     
    4545                        $chiavi = explode(",",$descr["key"]["PRIMARY KEY"]);
    4646                        $descr = array_diff(array_keys($descr["field"]),$chiavi);
    47                         $campi = _request("campo");
     47                        $campi = array('importanza' => _request("importanza"),'lungh_min' => _request("lungh_min"),'filtri' => _request("filtri"));
    4848                        //verifica che tutti i campi siano validi e restituisce
    49                         if(!indicizza_tabelle_verify_fields($tabella,$campi,$descr)) {
     49                        if(!indicizza_tabelle_verify_fields($campi,$descr)) {
    5050                                include_spip('inc/minipres');
    51                                 minipres(_L("$campi"));
     51                                minipres(_L("Errore nella definizione dei campi"));
    5252                        } else {
    53                                 indicizza_tabelle_add_idx_field($tabella);
     53                                if($mode=="+") indicizza_tabelle_add_idx_field($tabella);
    5454                                indicizza_tabelle_set_points_fields($tabella,$campi);
    5555                        }               
     
    6262                } else {
    6363                        indicizza_tabelle_remove_idx_field($tabella);
     64                        indicizza_tabelle_remove_points_fields($tabella);
    6465                }
    6566        }
     
    7172}
    7273
    73 function indicizza_tabelle_verify_fields($tabella,&$campi,$descr) {
     74function indicizza_tabelle_verify_fields(&$conf,$descr) {
    7475                $ok = true;
    75                 //verifica che $campi sia un array
    76                 if(!is_array($campi)) {
    77                                 $ok = false;
    78                                 $campi = "Errore";                     
    79                 } else
    80                 //Verifica che ogni campo sia effettivamente nella tabella di origine
    81                 foreach($campi as $nome => $val) {
    82                         $nome = corriger_caracteres($nome);
    83                         if(!in_array($nome,$descr)) {
    84                                 $ok = false;
    85                                 $campi =  "Campo ".interdire_scripts($nome)." inesistente";
    86                                 break;
    87                         } else {
    88                                 //evita sql injections
    89                                 $campi[$nome] = intval($val);
     76                foreach($conf as $campi) {
     77                        //verifica che $campi sia un array
     78                        if(!is_array($campi)) {
     79                                        $ok = false;
     80                                        $campi = "Errore";                     
     81                        } else
     82                        //Verifica che ogni campo sia effettivamente nella tabella di origine
     83                        foreach($campi as $nome => $val) {
     84                                $nome = corriger_caracteres($nome);
     85                                if(!in_array($nome,$descr)) {
     86                                        $ok = false;
     87                                        $campi =  "Campo ".interdire_scripts($nome)." inesistente";
     88                                        break;
     89                                } else {
     90                                        $campi[$nome] = $val;
     91                                }
    9092                        }
    9193                }
     
    102104
    103105                include_spip('inc/meta');
    104                 $INDEX_elements_objet["$tabella"] = $campi;
     106                //preparo la configurazione da salvare
     107                $conf = array();
     108                foreach($campi['importanza'] as $nome => $val) {
     109                        //elimino campi da non indicizzare
     110                        if(!$val) {
     111                                unset($campi[$nome]);
     112                        }       else {
     113                                if($campi['lungh_min'][$nome]) $val = array($val,$campi['lungh_min'][$nome]);
     114                                if($campi['filtri'][$nome]) $nome .= "|".$campi['filtri'][$nome];
     115                                $conf[$nome] = $val;
     116                        }
     117                }
     118                //memorizzo parametri indicizzazione
     119                $INDEX_elements_objet[$tabella] = $conf;
    105120                ecrire_meta('INDEX_elements_objet',serialize($INDEX_elements_objet));
    106121                ecrire_metas();                 
     
    109124                update_index_tables();
    110125}
     126
     127function indicizza_tabelle_remove_points_fields($tabella) {
     128                global $INDEX_elements_objet;
     129
     130                include_spip('inc/meta');
     131                unset($INDEX_elements_objet["$tabella"]);
     132                ecrire_meta('INDEX_elements_objet',serialize($INDEX_elements_objet));
     133                ecrire_metas();                 
     134               
     135                //Aggiorna tabella spip_index e meta index_table per indicizzazione
     136                update_index_tables(); 
     137}
    111138?>
  • _plugins_/_dev_/indicizzazione_tabelle/exec/indicizza_tabella.php

    r7824 r7825  
    2626
    2727        $tabella = _request("tabella");
     28        $aggiungi_indice = _request("new");
    2829        //Controlli di sicurezza, tabella non specificata
    2930        if(!$tabella) {
     
    5859        $res = indicizza_tabelle_debut_page();
    5960        $tabelle = array();
    60         $tabelle[] = array("<strong>"._L("Nome Campo")."</strong>","<strong>"._L("Importanza")."</strong>");
     61        $tabelle[] = array(
     62                "<strong>"._L("Nome Campo")."</strong>",
     63                "<strong>"._L("Importanza")."</strong>",
     64                "<strong>"._L("Lungh. minima")."</strong>",
     65                "<strong>"._L("Filtri")."</strong>",
     66        );
    6167                       
    6268        //recupera descrizione tabella 
    6369        $descr = $tables_principales[$tabella];
    64         //Elimina chiave primaria
     70        //Elimina chiave primaria e campo indice
    6571        $chiavi = explode(",",$descr["key"]["PRIMARY KEY"]);
     72        $chiavi[] = 'idx';
    6673        $descr = array_diff(array_keys($descr["field"]),$chiavi);
    67 
     74        //recupera parametri di indicizzazione
     75        //$config_indice["nome_campo"] = array(importanza oppure array(importanza,lungh_minima),"filtri")
     76        //var_dump($INDEX_elements_objet[$tabella]);
     77        $config_indice = array();
     78        if($INDEX_elements_objet[$tabella])
     79                foreach($INDEX_elements_objet[$tabella] as $nome => $val) {
     80                        $params = explode('|',$nome,2);
     81                        $config_indice[$params[0]] = array('valori' => $val,'filtri' => $params[1]);
     82                }
     83        //var_dump($config_indice);
     84       
     85        $valore_predefinito = $aggiungi_indice=='oui'?'5':'0';
     86       
    6887        foreach($descr as $campo) {
    69                 $tabelle[] = array($campo,"<input type='text' name='campo[$campo]' value='5' />");
     88                $config_campo = $config_indice[$campo];
     89                if(is_array($config_campo['valori'])) {
     90                        $importanza = $config_campo['valori'][0];
     91                        $lungh_minima = $config_campo['valori'][1];
     92                } else if($config_campo['valori']) {
     93                        $importanza = $config_campo['valori'];
     94                        $lungh_minima = 0;
     95                } else {
     96                        $importanza = $valore_predefinito;
     97                        $lungh_minima = 0;             
     98                }
     99                $filtri = $config_campo['filtri'];
     100                 
     101                $tabelle[] = array(
     102                        $campo,
     103                        "<input type='text' size='3' name='importanza[$campo]' value='$importanza' />",
     104                        "<input type='text' size='3' name='lungh_min[$campo]' value='$lungh_minima' />",
     105                        "<input type='text' name='filtri[$campo]' value='$filtri' />",
     106                );
    70107        }
    71108       
    72         $tabelle = afficher_liste_debut_tableau().afficher_liste(array('60%','40%'),$tabelle).afficher_liste_fin_tableau();
     109        $tabelle = afficher_liste_debut_tableau().afficher_liste(array('40%','20%','20%','20%'),$tabelle).afficher_liste_fin_tableau();
    73110
    74111        $tabelle .= "<input type='submit' value='"._T("bouton_valider")."' name='invia' />";
    75112       
    76         $res .= redirige_action_auteur("indicizza",$tabella,'tabelle_aggiuntive','',$tabelle);
     113        $res .= redirige_action_auteur("indicizza",($aggiungi_indice=='oui'?'+':'*').rawurlencode($tabella),'tabelle_aggiuntive','',$tabelle);
    77114       
    78115        $res .= indicizza_tabelle_fin_page();
     
    83120
    84121function indicizza_tabelle_debut_page() {
     122        global $tabella;
     123       
    85124        include_spip('inc/presentation');
    86125
     
    97136        $ret .= debut_droite('',true);
    98137       
    99         $ret .= gros_titre(_L("Indicizzazione tabelle esterne"),'',false);
     138        $ret .= gros_titre(_L("Indicizzazione tabelle"),'',false);
    100139       
    101        
    102         $ret .= debut_cadre_trait_couleur('',true,'',_L("Indicizza tabella"));
     140        $ret .= debut_cadre_trait_couleur('',true,'',_L("Indicizza tabella ").interdire_scripts($tabella));
    103141       
    104142        return $ret;
  • _plugins_/_dev_/indicizzazione_tabelle/exec/tabelle_aggiuntive.php

    r7824 r7825  
    109109                                        $idx = "<div style='color:red'>"._L("tabella non indicizzata")."</div>";
    110110                                        //if (!array_key_exists($tab[0],$tabelle_standard)) $azioni ="<a href='".generer_url_ecrire("indicizza_tabella","tabella=".rawurlencode($tab[0]))."'>indicizza</a>";
    111                                         $azioni ="<a href='".generer_url_ecrire("indicizza_tabella","tabella=".rawurlencode($tab[0]))."'>"._L("indicizza")."</a>";
     111                                        $azioni ="<a href='".generer_url_ecrire("indicizza_tabella","tabella=".rawurlencode($tab[0])."&new=oui")."'>"._L("indicizza")."</a>";
    112112                                        break;
    113113                                case "nocampiind":
    114114                                        $idx = _L("nessun campo indicizzato");
    115                                         $azioni ="<a href='#'>"._L("aggiungi campi")."</a>";
     115                                        $azioni ="<a href='".generer_url_ecrire("indicizza_tabella","tabella=".rawurlencode($tab[0]))."'>"._L("definisci campi")."</a>";
    116116                                        break;
    117117                                case "ind":
    118118                                        $idx = _L("tabella indicizzata");
    119119                                        //if (!array_key_exists($tab[0],$tabelle_standard)) $azioni ="<a href='#'>elimina indice</a>";
    120                                         $azioni ="<a href='".redirige_action_auteur("indicizza","-".rawurlencode($tab[0]),"tabelle_aggiuntive")."'>"._L("elimina indice")."</a>";
     120                                        $azioni ="<a href='".generer_url_ecrire("indicizza_tabella","tabella=".rawurlencode($tab[0]))."'>"._L("modifica campi")."</a><br />";
     121                                        $azioni .="<a href='".redirige_action_auteur("indicizza","-".rawurlencode($tab[0]),"tabelle_aggiuntive")."'>"._L("elimina indice")."</a>";
    121122                                        break;
    122123                        }
Note: See TracChangeset for help on using the changeset viewer.