phpDocumentor VFront
Function-Libraries
[ class tree: VFront ] [ index: VFront ] [ all elements ]

Source for file func.tratta_campo.php

Documentation is available at func.tratta_campo.php

  1. <?php
  2. /**
  3. * Libreria di funzioni per la gestione dei campi in area di amministrazione.
  4. * Si tratta delle funzioni che generano le scelte possibili per le impostazioni dei campi,
  5. * viste le caratteristiche dei campi definiti in database.
  6. @package VFront
  7. @subpackage Function-Libraries
  8. @author Mario Marcello Verona <marcelloverona@gmail.com>
  9. @copyright 2007 Mario Marcello Verona
  10. @version 0.90
  11. @license http://www.gnu.org/licenses/gpl.html GNU Public License
  12. */
  13.  
  14.  
  15. /**
  16.  * Utilità che imposta se un option di una select debba essere selezionato
  17.  *
  18.  * @param string $tipo Valore dell'option nella tendina
  19.  * @param string $def Valore definito
  20.  * @return string 
  21.  */
  22. function selected_def($tipo,$def){
  23.     
  24.     return ($tipo==$def"selected=\"selected\"" "";    
  25. }
  26.  
  27.  
  28. /**
  29.  * Funzione che attribuisce i tipi possibili di campo per una tabella
  30.  * E' utilizzata nell'amministrazione dei registri/gruppi
  31.  *
  32.  * @param array $ar_campo 
  33.  * @param array $pk Campo/i chiave/i primaria
  34.  * @param array $fk Campo/i chiave esterna
  35.  * @param string $colref_fk Colonne di riferimento nella relazione delle chiavi esterne
  36.  * @return void 
  37.  */
  38. function tratta_campo($ar_campo,$pk,$fk,$colref_fk=array()){
  39.     
  40.     global $link,$gid;
  41.     
  42.     
  43.     // estrai i valori come variabili
  44.     extract($ar_campo);
  45.     
  46.     
  47.  
  48.     /*
  49.     id_reg
  50.     table_oid
  51.     column_name
  52.     column_default
  53.     is_nullable
  54.     data_type
  55.     character_maximum_length
  56.     column_type
  57.     extra
  58.     in_tipo
  59.     in_default
  60.     in_visibile
  61.     in_richiesto
  62.     commento
  63.     */
  64.     
  65.     
  66.     // caratteristiche di default per la visibilità
  67.     $campo_visibile=true;
  68.     $campo_visibile_disabled=false;
  69.     $select_tipo_disable false;
  70.     $column_default (strlen($column_default)>0$column_default "<em class=\"na\">non specificato</em>";
  71.     $max_length(ereg('char',$data_type)) "(".$character_maximum_length ." caratteri)" "";
  72.     
  73.     // Impostazioni campo obbligatorio
  74.     if(is_null($in_richiesto|| $in_richiesto==""){
  75.         $in_richiesto (trim($is_nullable)=="NO"true:false;
  76.         // se l'impostazione deriva dal database ed è richiesto imponi la scelta
  77.         $campo_richiesto_disabled$in_richiesto;
  78.     }
  79.     else{
  80.         $in_richiesto ($in_richiesto=="1" || $in_richiesto=='t'true:false;
  81.         // se l'impostazione deriva del l'utente lascia la scelta
  82.         $campo_richiesto_disabledfalse;
  83.     }
  84.     
  85.     
  86.     // Impostazioni campo visibile
  87.     if($in_visibile=='1' || $in_visibile=='t'){
  88.         $campo_visibile=true;
  89.     }
  90.     elseif($in_visibile=='0' || $in_visibile=='f'){
  91.         $campo_visibile=false;
  92.     }
  93.     
  94.     // Impostazioni del campo search
  95.     if($in_search=='1' || $in_search=='t'){
  96.         $campo_search=true;
  97.     }
  98.     elseif($in_search=='0' || $in_search=='f'){
  99.         $campo_search=false;
  100.     }
  101.     
  102.     // Impostazioni del campo suggest
  103.     if($in_suggest=='1' || $in_suggest=='t'){
  104.         $campo_suggest=true;
  105.     }
  106.     elseif($in_suggest=='0' || $in_suggest=='f'){
  107.         $campo_suggest=false;
  108.     }
  109.     
  110.     
  111.     // Impostazioni del campo suggest
  112.     $campo_in_table($in_table=='1' || $in_table=='t'  ?    true:false;
  113.     
  114.     
  115.     // A seconda del tipo di campo fa delle proposte:
  116.     
  117.     $sel=array_flip(array('int','float','double','char','password','text','mediumtext','date','datetime','bool','bit','hidden','select','select_from'));
  118.     
  119.     
  120.     switch ($data_type){
  121.         
  122.         case 'tinyint'  :
  123.         case 'smallint' $options (ereg("tinyint\(1\)",$column_type)) "\t\t\t<option value=\"bool\" ".selected_def('bool',$in_tipo).">booleano (vero|falso)</option>
  124.                                     <option value=\"int\" ".selected_def('int',$in_tipo).">numero intero</option>\n" 
  125.                                     :
  126.                                     "\t\t\t<option value=\"int\" ".selected_def('int',$in_tipo).">numero intero</option>\n" ;
  127.         break;
  128.         case 'int' :     
  129.         case 'integer' 
  130.         case 'biginteger' :
  131.         case 'bigint' :    
  132.                             $options "\t\t\t<option value=\"int\" ".selected_def('int',$in_tipo).">numero intero</option>\n";
  133.         break;
  134.         
  135.         case 'float' 
  136.         case 'double':        $options "\t\t\t<option value=\"float\" ".selected_def('float',$in_tipo).">numero con virgola</option>\n";
  137.         break;
  138.         
  139.         case 'varchar' 
  140.         case 'char' :     
  141.         case 'character' :     
  142.         case 'character varying' :     
  143.         case 'bpchar' :     $options "\t\t\t<option value=\"char\" ".selected_def('char',$in_tipo).">testo libero corto</option>\n";
  144.                             $options.= "\t\t\t<option value=\"password\" ".selected_def('password',$in_tipo).">password</option>\n";
  145.         break;
  146.         
  147.         case 'mediumtext' 
  148.         case 'text' :$options "\t\t\t<option value=\"text\" ".selected_def('text',$in_tipo).">testo libero lungo</option>
  149.                                   <option value=\"char\" ".selected_def('char',$in_tipo).">testo libero corto</option>
  150.                                   <option value=\"richtext\" ".selected_def('richtext',$in_tipo).">testo formattato HTML</option>
  151.                                   \n";
  152.         break;
  153.         
  154.         case 'date' $options "\t\t\t<option value=\"date\" ".selected_def('date',$in_tipo).">data formattata</option>\n";
  155.         break;
  156.         
  157.         case 'datetime' 
  158.         case 'timestamp without time zone' 
  159.         case 'timestamp' :             $options "\t\t\t<option value=\"datetime\" ".selected_def('datetime',$in_tipo).">data ed ora formattata</option>
  160.                                     <option value=\"date\" ".selected_def('date',$in_tipo).">data formattata</option>\n";
  161.         break;
  162.         
  163.         case 'time' $options "\t\t\t<option value=\"time\" ".selected_def('time',$in_tipo).">orario formattato</option>\n";
  164.         break;
  165.         
  166.         case 'bool' 
  167.         case 'boolean' 
  168.         case 'bit' $options "\t\t\t<option value=\"bool\" ".selected_def('bool',$in_tipo).">booleano (vero|falso)</option>\n";
  169.         break;
  170.         
  171.         default$options="";
  172.     }
  173.     
  174.     
  175.     
  176.     
  177.     $aggiunta_options="
  178.                 <option value=\"hidden\" ".selected_def('hidden',$in_tipo).">nascosto</option>
  179.                 <option value=\"select\" ".selected_def('select',$in_tipo).">valori definiti</option>
  180.                 <option value=\"select_from\" ".selected_def('select_from',$in_tipo).">valori definiti da tabella</option>
  181.         ";
  182.  
  183.     
  184.     
  185.     
  186.     
  187.     
  188.  
  189.                        
  190.     /* Impostazioni nel caso di valore autoincrement:
  191.     Imposta il campo come bloccato    ed invisibile in fase di insert    */
  192.     if($extra=="auto_increment"){
  193.         $campo_visibile false;
  194.         $campo_visibile_disabled true;
  195.         $campo_richiesto_disabled true;
  196.         $select_tipo_disable true;
  197.         $campo_search false;
  198.         $campo_suggest false;
  199.     }
  200.     
  201.     
  202.     
  203.     
  204.     //TODO: da mettere le indicazioni di chiave primaria, 
  205.     //         così che se il valore non è autoincrement sia comunque richiesto un inserimento
  206.     
  207.     $obbligatorio ($is_nullable=="YES""NO":"SI";
  208.     
  209.     $commento (strlen(trim($commento))>0"<br /><em class=\"commento\">".htmlentities($commento,ENT_QUOTES)."</em>""";
  210.     
  211.     
  212.     
  213.     // Immagine delle chiavette per le chiavi primarie
  214.     if(in_array($column_name,$pk)){
  215.         $img_campo=" campopk";
  216.     }
  217.     else{
  218.         $img_campo=" camponorm";
  219.     }
  220.     
  221.     
  222.     if(in_array($column_name,$fk)){
  223.         
  224.         if($img_campo==" campopk"){
  225.             $img_campo=" campopkfk";
  226.         }
  227.         else{
  228.             $img_campo=" campofk";
  229.             
  230.         }
  231.         
  232.         
  233.         ###############
  234.         #
  235.         #    Prende le informazioni sulla chiave esterna
  236.         #    Questa informazione è utile per chi configura la tabella al fine 
  237.         #    di impostare la query esterna per recuperare i dati
  238.         #
  239.         
  240.         
  241.         // Cerca la chiave della FK
  242.         $k_fk array_search($column_name,$fk);
  243.         
  244.         $info_fk " - chiave esterna (rif:<strong>".$colref_fk[$k_fk]."</strong>)";
  245.     }
  246.     else{
  247.         $info_fk="";
  248.     }
  249.  
  250.  
  251.     
  252.     
  253.     // Gestione search | suggest
  254.     
  255.     
  256.     
  257.     
  258.     
  259.     $OUT"\t<div class=\"campo\">
  260.                 <div class=\"campo-head\">
  261.                     <strong class=\"var\">".$column_name."</strong> - $data_type ".$max_length." ".$info_fk."
  262.                     $commento
  263.                 
  264.                 </div>
  265.                 
  266.                 ";
  267.     
  268.     
  269.     if($GLOBALS['_VARIABILI']['js_test']){
  270.     
  271.         if($jstest!='' && $jstest!=null){
  272.             
  273.             $jstest_pezzi=explode("|",$jstest);
  274.             
  275.             $attuale_jstest=$jstest_pezzi[1];
  276.         }else{
  277.             $attuale_jstest='';
  278.         }
  279.         
  280.         $testo_js_control "Controlli avanzati";
  281.         $testo_js_control .= ($attuale_jstest!=''" <strong>(".$attuale_jstest.")</strong>" "";
  282.         
  283.         $OUT.="<div style=\"float:right;width:170px;text-align:right\" class=\"campo-controlli\">
  284.         
  285.                 <br /><span id=\"controlli_$id_reg\" class=\"fakelink\" onclick=\"openWindow('adv_js_control.php?id_reg=".$id_reg."', 'controlli_js', 65)\">$testo_js_control</span>
  286.                 </div>
  287.         ";
  288.     }
  289.                 
  290.     $OUT.="\t\t<div class=\"campo-body$img_campo\">
  291.                 
  292.                     <br/>obbligatorio(sql): <strong>$obbligatorio</strong>
  293.                     <br/>default(sql): <strong>$column_default</strong>\n";
  294.         
  295.         // inizia la parte form
  296.         
  297.         // Disabilitazioni checkbox
  298.         $att_dis_visibile=($campo_visibile_disabled"disabled=\"disabled\"" "";
  299.         $att_dis_richiesto=($campo_richiesto_disabled"disabled=\"disabled\"" "";
  300.         $att_dis_select ($select_tipo_disable"disabled=\"disabled\"" "";
  301.         
  302.         
  303.         // vero|falso dei checkbox
  304.         $att_visibile_checked=($campo_visibile"checked=\"checked\"" "";
  305.         $att_richiesto_checked=($in_richiesto"checked=\"checked\"" "";
  306.         
  307.                 
  308.     
  309.         $valore_visibile=($campo_visibile_disabled0:1;
  310.         $valore_obbligatorio=($att_dis_richiesto1:0;
  311.         
  312.         $OUT.="\t\t<input type=\"hidden\" name=\"campo[$id_reg][in_visibile]\" id=\"in_visibile_hid_$id_reg\" value=\"0\" />\n";
  313.         $OUT.="\t\t<br/><label for=\"in_visibile_$id_reg\">campo visibile</label>
  314.         \t\t\t<input type=\"checkbox\" name=\"campo[$id_reg][in_visibile]\" id=\"in_visibile_$id_reg\" value=\"1\" $att_dis_visibile $att_visibile_checked  />\n";
  315.                 
  316.         $OUT.="\t\t<input type=\"hidden\" name=\"campo[$id_reg][in_richiesto]\" id=\"in_richiesto_hid_$id_reg\" value=\"0\" />\n";
  317.         $OUT.="\t\t<br/><label for=\"in_richiesto_$id_reg\">campo obbligatorio</label>
  318.         \t\t\t<input type=\"checkbox\" name=\"campo[$id_reg][in_richiesto]\" id=\"in_richiesto_$id_reg\" value=\"1\" $att_richiesto_checked $att_dis_richiesto/>\n";
  319.     
  320.         
  321.         // Campi search
  322.         
  323.                 
  324.         $valore_search=($campo_search1:0;
  325.         $att_valore_search=($campo_search"checked=\"checked\"" "";
  326.         
  327.         $valore_suggest=($campo_suggest1:0;
  328.         $att_valore_suggest=($campo_suggest"checked=\"checked\"" "";
  329.         
  330.         $valore_table=($campo_in_table1:0;
  331.         $att_valore_table=($campo_in_table"checked=\"checked\"" "";
  332.     
  333.         
  334.         // Campo ricercabile
  335.         
  336.         $OUT.="\t\t<input type=\"hidden\" name=\"campo[$id_reg][in_search]\" id=\"in_search_hid_$id_reg\" value=\"0\" />\n";
  337.         $OUT.="\t\t<br/><label for=\"in_search_$id_reg\">campo con ricerca</label>
  338.         \t\t\t<input type=\"checkbox\" name=\"campo[$id_reg][in_search]\" id=\"in_search_$id_reg\" value=\"1\" $att_valore_search />\n";
  339.     
  340.         
  341.         // campo con suggerimenti di ricerca
  342.         
  343.         $OUT.="\t\t<input type=\"hidden\" name=\"campo[$id_reg][in_suggest]\" id=\"in_suggest_hid_$id_reg\" value=\"0\" />\n";
  344.         $OUT.="\t\t<br/><label for=\"in_suggest_$id_reg\">imposta i suggerimenti</label>
  345.         \t\t\t<input type=\"checkbox\" name=\"campo[$id_reg][in_suggest]\" id=\"in_suggest_$id_reg\" value=\"1\" $att_valore_suggest />\n";
  346.         
  347.     
  348.         // campo in_table: cosa mostrare nella vista tabella
  349.         
  350.         $OUT.="\t\t<input type=\"hidden\" name=\"campo[$id_reg][in_table]\" id=\"in_table_hid_$id_reg\" value=\"0\" />\n";
  351.         $OUT.="\t\t<br/><label for=\"in_table_$id_reg\">visibile in vista tabella</label>
  352.         \t\t\t<input type=\"checkbox\" name=\"campo[$id_reg][in_table]\" id=\"in_table_$id_reg\" value=\"1\" $att_valore_table />\n";
  353.         
  354.         
  355.         $OUT.="\t\t<br/><label for=\"in_tipo_$id_reg\">Tipo di input</label
  356.             <select name=\"campo[$id_reg][in_tipo]\" id=\"in_tipo_$id_reg\" onchange=\"mostra_hid(this.value,$id_reg)\" $att_dis_select>\n";
  357.         
  358.     //            $selected = ($in_tipo==$k) ? "selected=\"selected\" " : "";
  359.             
  360.         $OUT.= $options.$aggiunta_options;
  361.         
  362.         $OUT.="\t\t</select>\n";
  363.         
  364.         
  365.         
  366.         
  367.         $OUT.="\t\t<div id=\"hid_$id_reg\" >\n";
  368.         
  369.         
  370.         
  371.         // TIPO SELECT 
  372.         $value_select ($in_tipo=='select')str_replace("[|]","\n",$in_default"";
  373.         $style_select ($in_tipo=='select')"" "display:none;";
  374.         $disabled_select ($in_tipo=='select')"" "disabled=\"disabled\"";
  375.         
  376.         $OUT.="
  377.             
  378.             <div id=\"default-select-$id_reg\" style=\"$style_select\">
  379.                 <label class=\"var\">Inserireuno per rigai valori possibili per la selezione - <a href=\"javascript:;\" onclick=\"openWindow('help.select.php',60,40)\">Regole</a></label>
  380.                 <br/>
  381.                 <textarea name=\"campo[$id_reg][tipo_altro]\" cols=\"50\" rows=\"7\" $disabled_select>$value_select</textarea>
  382.             </div>\n";
  383.             
  384.         
  385.         // TIPO PASSWORD 
  386.         $style_password ($in_tipo=='password')"" "display:none;";
  387.         $val_password_0 ($in_tipo=='password' && ($in_default=='' || $in_default=='null'))"checked=\"checked\"" "";
  388.         $val_password_1 ($in_tipo=='password' && $in_default=='md5')"checked=\"checked\"" "";
  389.         $val_password_2 ($in_tipo=='password' && $in_default=='sha1')"checked=\"checked\"" "";
  390.         
  391.         $OUT.="
  392.             
  393.             <div id=\"default-password-$id_reg\" style=\"$style_password\">
  394.                 <label class=\"var\">Inserire il tipo di codifica da operare sulla password</label>
  395.                 <br />
  396.                 <input type=\"radio\" name=\"campo[$id_reg][tipo_altro]\" value=\"null\" $val_password_0 /> Nessuna codifica <br />
  397.                 <input type=\"radio\" name=\"campo[$id_reg][tipo_altro]\" value=\"md5\" $val_password_1 /> Hash MD5<br />
  398.                 <input type=\"radio\" name=\"campo[$id_reg][tipo_altro]\" value=\"sha1\" $val_password_2 /> Hash SHA1
  399.             </div>\n";
  400.             
  401.         
  402.         // TIPO select_from 
  403.         $value_select_from ($in_tipo=='select_from')$in_default "";
  404.         $style_select_from ($in_tipo=='select_from')"" "display:none;";
  405.         $disabled_select_from ($in_tipo=='select_from')"" "disabled=\"disabled\"";
  406.         
  407.         $OUT.="
  408.             <div id=\"default-selectfrom-$id_reg\" style=\"$style_select_from\">
  409.                 
  410.                 <label class=\"var\">Inserire l'SQL che richiama i valori per questo campo</label>
  411.                 <input type=\"button\" value=\"Editor\" onclick=\"openWindow('query_editor.php?gid={$_GET['gid']}&amp;id_campo=$id_reg&amp;id_table=$id_table','query_editor','50');\" />                
  412.                 <input type=\"button\" value=\"Test\" onclick=\"try_query(document.getElementById('tipo_altro_".$id_reg."').value,".$id_reg.")\" />                
  413.                 <span id=\"feed_altro_".$id_reg."\" class=\"feed_altro\">&nbsp;</span>
  414.                 <br/><textarea name=\"campo[".$id_reg."][tipo_altro]\" id=\"tipo_altro_".$id_reg."\" cols=\"50\" rows=\"7\" $disabled_select_from >$value_select_from</textarea>
  415.             </div>";
  416.         
  417.         
  418.         // Tipo Hidden
  419.         $value_hidden ($in_tipo=='hidden')$in_default "";
  420.         $style_hidden ($in_tipo=='hidden')"" "display:none;";
  421.         $disabled_hidden ($in_tipo=='hidden')"" "disabled=\"disabled\"";
  422.         $sovrascrivi_extra($in_tipo=='hidden' && $extra=='1'"checked=\"checked\"" "";
  423.         
  424.     
  425.             
  426.         $OUT.="
  427.             <div id=\"default-hidden-$id_reg\" style=\"$style_hidden\">
  428.                 <br />
  429.                 <label class=\"var\">Inserire il valore di default del campo nascosto - <a href=\"javascript:;\" onclick=\"openWindow('help.variabili_hidden.php',60,40)\">vedi le variabili</a></label>
  430.                 <br/><input type=\"text\" name=\"campo[$id_reg][tipo_altro]\" $disabled_hidden value=\"$value_hidden\" />    
  431.                 <br /><br />
  432.                 <input type=\"hidden\" name=\"campo[$id_reg][extra]\" value=\"0\" />    
  433.                 <input type=\"checkbox\" name=\"campo[$id_reg][extra]\" value=\"1\" id=\"extra_".$id_reg."\" $sovrascrivi_extra />    
  434.                 <label for=\"extra_".$id_reg."\">Sovrascrivi con il valore di default anche in caso di modifica del record</label>
  435.             </div>
  436.         
  437.         </div>\n";
  438.         
  439.     $OUT.="    
  440.     
  441.         
  442.         
  443.         </div>
  444.     
  445.     </div>\n\n";
  446.     
  447.     
  448.     
  449.     return $OUT;
  450. }
  451.  
  452. ?>

Documentation generated on Sat, 22 Sep 2007 11:50:24 +0200 by phpDocumentor 1.4.0a2