tbrehm
2007-06-21 18341ee35973a5a825a3ef8852076a1fdca2f149
interface/lib/classes/tform.inc.php
@@ -644,11 +644,11 @@
                if(count($this->formDef['tabs'][$tab]['fields']) == 0) return '';
                // checking permissions
                if($this->formDef['auth'] == 'yes') {
                if($this->formDef['auth'] == 'yes' && $_SESSION["s"]["user"]["typ"] != 'admin') {
                        if($action == "INSERT") {
                                if(!$this->checkPerm($primary_id,'i')) $this->errorMessage .= "Insert denied.<br>\r\n";
                        } else {
                                if(!$this->checkPerm($primary_id,'u')) $this->errorMessage .= "Insert denied.<br>\r\n";
                                if(!$this->checkPerm($primary_id,'u')) $this->errorMessage .= "Update denied.<br>\r\n";
                        }
                }
@@ -673,15 +673,23 @@
                                                if($field['formtype'] == 'PASSWORD') {
                                                        $sql_insert_key .= "`$key`, ";
                                                        if($field['encryption'] == 'CRYPT') {
                                                                // $sql_insert_val .= "encrypt('".$record[$key]."'), ";
                                                $sql_insert_val .= "'".crypt($record[$key],substr(md5(time()),0,2))."', ";
                                                                $salt="$1$";
                                                for ($n=0;$n<8;$n++) {
                                                   $salt.=chr(mt_rand(64,126));
                                                }
                                                $salt.="$";
                                                // $salt = substr(md5(time()),0,2);
                                                $record[$key] = crypt($record[$key],$salt);
                                                        } else {
                                                                $sql_insert_val .= "md5('".$record[$key]."'), ";
                                                                $record[$key] = md5($record[$key]);
                                                        }
                                          $sql_insert_val .= "'".$record[$key]."', ";
                                                } elseif ($field['formtype'] == 'CHECKBOX') {
                                                        $sql_insert_key .= "`$key`, ";
                                          if($record[$key] == '') {
                                             // if a checkbox is not set, we set it to the unchecked value
                                             $sql_insert_val .= "'".$field['value'][0]."', ";
                                             $record[$key] = $field['value'][0];
                                          } else {
                                             $sql_insert_val .= "'".$record[$key]."', ";
                                          }
@@ -691,15 +699,23 @@
                                                }
                                        } else {
                                                if($field['formtype'] == 'PASSWORD') {
                                                        if($field['encryption'] == 'CRYPT') {
                                                                // $sql_update .= "`$key` = encrypt('".$record[$key]."'), ";
                                                $sql_update .= "`$key` = '".crypt($record[$key],substr(md5(time()),0,2))."', ";
                                          if($field['encryption'] == 'CRYPT') {
                                                                $salt="$1$";
                                                for ($n=0;$n<8;$n++) {
                                                   $salt.=chr(mt_rand(64,126));
                                                }
                                                $salt.="$";
                                                // $salt = substr(md5(time()),0,2);
                                                $record[$key] = crypt($record[$key],$salt);
                                                        } else {
                                                                $sql_update .= "`$key` = md5('".$record[$key]."'), ";
                                                                $record[$key] = md5($record[$key]);
                                                        }
                                                        $sql_update .= "`$key` = '".$record[$key]."', ";
                                                } elseif ($field['formtype'] == 'CHECKBOX') {
                                          if($record[$key] == '') {
                                             // if a checkbox is not set, we set it to the unchecked value
                                             $sql_update .= "`$key` = '".$field['value'][0]."', ";
                                             $record[$key] = $field['value'][0];
                                          } else {
                                             $sql_update .= "`$key` = '".$record[$key]."', ";
                                          }
@@ -707,7 +723,11 @@
                                                        $sql_update .= "`$key` = '".$record[$key]."', ";
                                                }
                                        }
                                }
                                } else {
                           // we unset the password filed, if empty to tell the datalog function
                           // that the password has not been changed
                            unset($record[$key]);
                        }
                        }
        }
@@ -740,7 +760,7 @@
                } 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;
                                $sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->getAuthSQL('u')." AND ".$this->formDef['db_table_idx']." = ".$primary_id;
                                if($sql_ext_where != '') $sql .= " and ".$sql_ext_where;
                        } else {
                                $app->error("Primary ID fehlt!");
@@ -776,20 +796,21 @@
        // definiere Tabs
        foreach( $this->formDef["tabs"] as $key => $tab) {
                        $tab['name'] = $key;
            $tab['name'] = $key;
            if($tab['name'] == $active_tab) {
                                // Wenn Modul gesetzt, dann setzte template pfad relativ zu modul.
                                if($this->module != '') $tab["template"] = "../".$this->module."/".$tab["template"];
                // 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
                                // dann generiere das Template
                                if(!is_file($tab["template"])) {
                                        $app->uses('tform_tpl_generator');
                                        $app->tform_tpl_generator->buildHTML($this->formDef,$tab['name']);
                                }
                // überprüfe, ob das Template existiert, wenn nicht
                // dann generiere das Template
                if(!is_file($tab["template"])) {
                     $app->uses('tform_tpl_generator');
                     $app->tform_tpl_generator->buildHTML($this->formDef,$tab['name']);
                }
                    $app->tpl->setInclude('content_tpl',$tab["template"]);
                $app->tpl->setInclude('content_tpl',$tab["template"]);
                $tab["active"] = 1;
                $_SESSION["s"]["form"]["tab"] = $tab['name'];
            } else {
@@ -840,29 +861,46 @@
                }
                $diffrec = array();
                if(is_array($record_new)) {
                        foreach($record_new as $key => $val) {
                                if($record_old[$key] != $val) {
                                        // Datensatz hat sich geändert
                              // Record has changed
                                        $diffrec[$key] = array('old' => $record_old[$key],
                                                                           'new' => $val);
                                                               'new' => $val);
                                }
                        }
                }
            $this->diffrec = $diffrec;
            // Full diff records for ISPConfig, they have a different format then the simple diffrec
            $diffrec_full = array();
                if(is_array($record_old)) {
                        foreach($record_old as $key => $val) {
                                if(isset($record_new[$key]) && $record_new[$key] != $val) {
                                    // Record has changed
                           $diffrec_full['old'][$key] = $val;
                           $diffrec_full['new'][$key] = $record_new[$key];
                                } else {
                           $diffrec_full['old'][$key] = $val;
                           $diffrec_full['new'][$key] = $val;
                        }
                        }
                }
            /*
            echo "<pre>";
            print_r($diffrec_full);
            echo "</pre>";
            */
            
            // Insert the server_id, if the record has a server_id
            $server_id = ($record_old["server_id"] > 0)?$record_old["server_id"]:0;
            $this->diffrec = $diffrec;
            if(isset($record_new["server_id"])) $server_id = $record_new["server_id"];
                if(count($diffrec) > 0) {
                  // We need the full records in ISPConfig, not only the diffs
                  $diffrec = array(   'old' => $record_old,
                                 'new' => $record_new);
                  $diffstr = $app->db->quote(serialize($diffrec));
                if(count($this->diffrec) > 0) {
                  $diffstr = $app->db->quote(serialize($diffrec_full));
                        $username = $app->db->quote($_SESSION["s"]["user"]["username"]);
                        $dbidx = $this->formDef['db_table_idx'].":".$primary_id;
                        $action = ($action == 'INSERT')?'i':'u';
@@ -875,14 +913,17 @@
        }
        function getAuthSQL($perm) {
            if($_SESSION["s"]["user"]["typ"] == 'admin') {
               return '1';
            } else {
                   $sql = '(';
                   $sql .= "(sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND sys_perm_user like '%$perm%') OR  ";
                   $sql .= "(sys_groupid IN (".$_SESSION["s"]["user"]["groups"].") AND sys_perm_group like '%$perm%') OR ";
                   $sql .= "sys_perm_other like '%$perm%'";
                   $sql .= ')';
                $sql = '(';
                $sql .= "(sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND sys_perm_user like '%$perm%') OR  ";
                $sql .= "(sys_groupid IN (".$_SESSION["s"]["user"]["groups"].") AND sys_perm_group like '%$perm%') OR ";
                $sql .= "sys_perm_other like '%$perm%'";
                $sql .= ')';
                return $sql;
                   return $sql;
            }
        }
        /*