tbrehm
2008-11-17 2c8f94001b7d1361d504e8f381d5cb11a46249c0
interface/lib/classes/tform.inc.php
@@ -38,9 +38,9 @@
*        Tabellendefinition
*
*        Datentypen:
*        - INTEGER (Wandelt Ausdrücke in Int um)
*        - INTEGER (Wandelt Ausdr�cke in Int um)
*        - DOUBLE
*        - CURRENCY (Formatiert Zahlen nach Währungsnotation)
*        - CURRENCY (Formatiert Zahlen nach W�hrungsnotation)
*        - VARCHAR (kein weiterer Format Check)
*        - DATE (Datumsformat, Timestamp Umwandlung)
*
@@ -54,10 +54,10 @@
*        - Wert oder Array
*
*        SEPARATOR
*        - Trennzeichen für multiple Felder
*        - Trennzeichen f�r multiple Felder
*
*        Hinweis:
*        Das ID-Feld ist nicht bei den Table Values einzufügen.
*        Das ID-Feld ist nicht bei den Table Values einzuf�gen.
*
* @package form
* @author Till Brehm
@@ -97,7 +97,7 @@
        var $table_index;
        /**
        * enthält die Fehlermeldung bei Überprüfung
        * enth�lt die Fehlermeldung bei �berpr�fung
        * der Variablen mit Regex
        * @var errorMessage
        */
@@ -153,9 +153,9 @@
        /**
        * Konvertiert die Daten des übergebenen assoziativen
        * Konvertiert die Daten des �bergebenen assoziativen
        * Arrays in "menschenlesbare" Form.
        * Datentyp Konvertierung, z.B. für Ausgabe in Listen.
        * Datentyp Konvertierung, z.B. f�r Ausgabe in Listen.
        *
        * @param record
        * @return record
@@ -262,7 +262,7 @@
        /**
        * Record für Ausgabe in Formularen vorbereiten.
        * Record f�r Ausgabe in Formularen vorbereiten.
        *
        * @param record = Datensatz als Array
        * @param action = NEW oder EDIT
@@ -344,8 +344,10 @@
                                                                foreach($vals as $tvl) {
                                                                        if(trim($tvl) == trim($k)) $checked = ' CHECKED';
                                                                }
                                                                $out .= "<input name=\"".$key."[]\" type=\"checkbox\" value=\"$k\" $checked>$v <br />\r\n";
                                                                $out .= "<span class=\"wf_oneChoice\">\r\n
                                                                <input type=\"checkbox\" value=\"$k\" id=\"".$key."[]\" name=\"".$key."[]\" $checked>\r\n
                                                                <label for=\"".$key."[]\" id=\"".$key."[]-L\" class=\"wf_postField\">$v</label>\r\n
                                                                </span><br />\r\n";
                                                        }
                                                }
                                                $new_record[$key] = $out;
@@ -358,7 +360,10 @@
                                                        $out = '';
                                                        foreach($field['value'] as $k => $v) {
                                                                $checked = ($k == $val)?' CHECKED':'';
                                                                $out .= "<input name='".$key."[]' type='radio' value='$k'$checked> $v<br>\r\n";
                                                                $out .= "<span class=\"wf_oneChoice\">\r\n
                                                                <input type=\"radio\" value=\"$k\" id=\"".$key."[]\" name=\"".$key."[]\" $checked>\r\n
                                                                <label for=\"".$key."[]\" id=\"".$key."[]-L\" class=\"wf_postField\">$v</label>\r\n
                                                                </span><br />\r\n";
                                                        }
                                                }
                                                $new_record[$key] = $out;
@@ -412,7 +417,7 @@
                                case 'CHECKBOX':
                                        // $checked = (empty($field["default"]))?'':' CHECKED';
                              $checked = ($field["default"] == $field['value'][1])?' CHECKED':'';
                                                  $checked = ($field["default"] == $field['value'][1])?' CHECKED':'';
                                        $new_record[$key] = "<input name=\"".$key."\" type=\"checkbox\" value=\"".$field['value'][1]."\" $checked>\r\n";
                                break;
@@ -430,8 +435,10 @@
                                                        foreach($vals as $tvl) {
                                                                if(trim($tvl) == trim($k)) $checked = ' CHECKED';
                                                        }
                                                        $out .= "<input name=\"".$key."[]\" type=\"checkbox\" value=\"$k\" $checked> $v<br />\r\n";
                                                        $out .= "<span class=\"wf_oneChoice\">\r\n
                                                        <input type=\"checkbox\" value=\"$k\" id=\"".$key."[]\" name=\"".$key."[]\" $checked>\r\n
                                                        <label for=\"".$key."[]\" id=\"".$key."[]-L\" class=\"wf_postField\">$v</label>\r\n
                                                        </span><br />\r\n";
                                                }
                                        }
                                        $new_record[$key] = $out;
@@ -444,7 +451,10 @@
                                                $out = '';
                                                foreach($field['value'] as $k => $v) {
                                                        $checked = ($k == $field["default"])?' CHECKED':'';
                                                        $out .= "<input name='".$key."[]' type='radio' value='$k'$checked> $v<br>\r\n";
                                                        $out .= "<span class=\"wf_oneChoice\">\r\n
                                                        <input type=\"radio\" value=\"$k\" id=\"".$key."[]\" name=\"".$key."[]\" $checked>\r\n
                                                        <label for=\"".$key."[]\" id=\"".$key."[]-L\" class=\"wf_postField\">$v</label>\r\n
                                                        </span><br />\r\n";
                                                }
                                        }
                                        $new_record[$key] = $out;
@@ -463,14 +473,15 @@
        }
        /**
        * Record in "maschinen lesbares" Format überführen
        * und Werte gegen reguläre Ausdrücke prüfen.
        * Record in "maschinen lesbares" Format �berf�hren
        * und Werte gegen regul�re Ausdr�cke pr�fen.
        *
        * @param record = Datensatz als Array
        * @return record
        */
        function encode($record,$tab) {
         global $app;
                if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab).");
                //$this->errorMessage = '';
@@ -482,14 +493,14 @@
                                switch ($field['datatype']) {
                                case 'VARCHAR':
                                        if(!@is_array($record[$key])) {
                                                $new_record[$key] = (isset($record[$key]))?addslashes($record[$key]):'';
                                                $new_record[$key] = (isset($record[$key]))?$app->db->quote($record[$key]):'';
                                        } else {
                                                $new_record[$key] = implode($field['separator'],$record[$key]);
                                        }
                                break;
                                case 'TEXT':
                                        if(!is_array($record[$key])) {
                                                $new_record[$key] = addslashes($record[$key]);
                                                $new_record[$key] = $app->db->quote($record[$key]);
                                        } else {
                                                $new_record[$key] = implode($field['separator'],$record[$key]);
                                        }
@@ -503,12 +514,12 @@
                              }
                                break;
                                case 'INTEGER':
                                        $new_record[$key] = (isset($record[$key]))?intval($record[$key]):0;
                                        $new_record[$key] = (isset($record[$key]))?$record[$key]:0;
                                        //if($new_record[$key] != $record[$key]) $new_record[$key] = $field['default'];
                                        //if($key == 'refresh') die($record[$key]);
                                break;
                                case 'DOUBLE':
                                        $new_record[$key] = addslashes($record[$key]);
                                        $new_record[$key] = $app->db->quote($record[$key]);
                                break;
                                case 'CURRENCY':
                                        $new_record[$key] = str_replace(",",".",$record[$key]);
@@ -648,7 +659,7 @@
        }
        /**
        * SQL Statement für Record erzeugen.
        * SQL Statement f�r Record erzeugen.
        *
        * @param record = Datensatz als Array
        * @param action = INSERT oder UPDATE
@@ -699,10 +710,16 @@
                                                $salt.="$";
                                                // $salt = substr(md5(time()),0,2);
                                                $record[$key] = crypt($record[$key],$salt);
                                                $sql_insert_val .= "'".$app->db->quote($record[$key])."', ";
                                          } elseif ($field['encryption'] == 'MYSQL') {
                                                $sql_insert_val .= "PASSWORD('".$app->db->quote($record[$key])."'), ";
                                          } elseif ($field['encryption'] == 'CLEARTEXT') {
                                                $sql_insert_val .= "'".$app->db->quote($record[$key])."', ";
                                                        } else {
                                                                $record[$key] = md5($record[$key]);
                                                $sql_insert_val .= "'".$app->db->quote($record[$key])."', ";
                                                        }
                                          $sql_insert_val .= "'".addslashes($record[$key])."', ";
                                                } elseif ($field['formtype'] == 'CHECKBOX') {
                                                        $sql_insert_key .= "`$key`, ";
                                          if($record[$key] == '') {
@@ -726,10 +743,16 @@
                                                $salt.="$";
                                                // $salt = substr(md5(time()),0,2);
                                                $record[$key] = crypt($record[$key],$salt);
                                                $sql_update .= "`$key` = '".$app->db->quote($record[$key])."', ";
                                          } elseif (isset($field['encryption']) && $field['encryption'] == 'MYSQL') {
                                                $sql_update .= "`$key` = PASSWORD('".$app->db->quote($record[$key])."'), ";
                                          } elseif (isset($field['encryption']) && $field['encryption'] == 'CLEARTEXT') {
                                                $sql_update .= "`$key` = '".$app->db->quote($record[$key])."', ";
                                                        } else {
                                                                $record[$key] = md5($record[$key]);
                                                $sql_update .= "`$key` = '".$app->db->quote($record[$key])."', ";
                                                        }
                                                        $sql_update .= "`$key` = '".addslashes($record[$key])."', ";
                                                } elseif ($field['formtype'] == 'CHECKBOX') {
                                          if($record[$key] == '') {
                                             // if a checkbox is not set, we set it to the unchecked value
@@ -751,7 +774,7 @@
        }
                // Füge Backticks nur bei unvollständigen Tabellennamen ein
                // F�ge Backticks nur bei unvollst�ndigen Tabellennamen ein
                if(stristr($this->formDef['db_table'],'.')) {
                        $escape = '';
                } else {
@@ -777,6 +800,7 @@
                        $sql_insert_val = substr($sql_insert_val,0,-2);
                        $sql = "INSERT INTO ".$escape.$this->formDef['db_table'].$escape." ($sql_insert_key) VALUES ($sql_insert_val)";
                } else {
               if($this->formDef['auth'] == 'yes') {
                        if($primary_id != 0) {
                                $sql_update = substr($sql_update,0,-2);
                                $sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->getAuthSQL('u')." AND ".$this->formDef['db_table_idx']." = ".$primary_id;
@@ -784,6 +808,15 @@
                        } else {
                                $app->error("Primary ID fehlt!");
                        }
               } else {
                  if($primary_id != 0) {
                                $sql_update = substr($sql_update,0,-2);
                                $sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id;
                                if($sql_ext_where != '') $sql .= " and ".$sql_ext_where;
                        } else {
                                $app->error("Primary ID fehlt!");
                        }
               }
                }
                
                return $sql;
@@ -819,7 +852,7 @@
                // Wenn Modul gesetzt, dann setzte template pfad relativ zu modul.
                if($this->module != '') $tab["template"] = "../".$this->module."/".$tab["template"];
                // überprüfe, ob das Template existiert, wenn nicht
                // �berpr�fe, ob das Template existiert, wenn nicht
                // dann generiere das Template
            
            // Translate the title of the tab
@@ -837,7 +870,7 @@
                    $tab["active"] = 0;
            }
                        // Die Datenfelder werden für die Tabs nicht benötigt
                        // Die Datenfelder werden f�r die Tabs nicht ben�tigt
                        unset($tab["fields"]);
                        unset($tab["plugins"]);
@@ -852,8 +885,8 @@
                $app->tpl->setVar('form_active_tab',$active_tab);
                // Set form title
                $form_hint = '<b>'.$this->lng($this->formDef["title"]).'</b>';
                if($this->formDef["description"] != '') $form_hint .= '<br><br>'.$this->lng($this->formDef["description"]);
                $form_hint = $this->lng($this->formDef["title"]);
                if($this->formDef["description"] != '') $form_hint .= '<div class="pageForm_description">'.$this->lng($this->formDef["description"]).'</div>';
                $app->tpl->setVar('form_hint',$form_hint);
                // Set Wordbook for this form
@@ -872,7 +905,7 @@
        function datalogSave($action,$primary_id, $record_old, $record_new) {
                global $app,$conf;
                // Füge Backticks nur bei unvollständigen Tabellennamen ein
                // F�ge Backticks nur bei unvollst�ndigen Tabellennamen ein
                if(stristr($this->formDef['db_table'],'.')) {
                        $escape = '';
                } else {
@@ -966,14 +999,14 @@
        }
        /*
        Diese funktion überprüft, ob ein User die Berechtigung $perm für den Datensatz mit der ID $record_id
        Diese funktion �berpr�ft, ob ein User die Berechtigung $perm f�r den Datensatz mit der ID $record_id
        hat. It record_id = 0, dann wird gegen die user Defaults des Formulares getestet.
        */
        function checkPerm($record_id,$perm) {
                global $app;
                if($record_id > 0) {
                        // Füge Backticks nur bei unvollständigen Tabellennamen ein
                        // F�ge Backticks nur bei unvollst�ndigen Tabellennamen ein
                        if(stristr($this->formDef['db_table'],'.')) {
                                $escape = '';
                        } else {
@@ -1006,7 +1039,7 @@
                if($this->errorMessage == '') {
                    // wenn kein Fehler vorliegt
                    if(isset($_REQUEST["next_tab"]) && $_REQUEST["next_tab"] != '') {
                                // wenn nächster Tab bekannt
                                // wenn n�chster Tab bekannt
                                $active_tab = $_REQUEST["next_tab"];
                    } else {
                        // ansonsten ersten tab nehmen
@@ -1024,6 +1057,14 @@
                return $_SESSION["s"]["form"]["tab"];
        }
      
      function isReadonlyTab($tab) {
         if(isset($this->formDef['tabs'][$tab]['readonly']) && $this->formDef['tabs'][$tab]['readonly'] == true) {
            return true;
         } else {
            return false;
         }
        }
      
      // translation function for forms, tries the form wordbook first and if this fails, it tries the global wordbook
      function lng($msg) {