@@ -673,15 +673,23 @@ function getSQL($record, $tab, $action = 'INSERT', $primary_id = 0, $sql_ext_whe
673673 if ($ field ['formtype ' ] == 'PASSWORD ' ) {
674674 $ sql_insert_key .= "` $ key`, " ;
675675 if ($ field ['encryption ' ] == 'CRYPT ' ) {
676- // $sql_insert_val .= "encrypt('".$record[$key]."'), ";
677- $ sql_insert_val .= "' " .crypt ($ record [$ key ],substr (md5 (time ()),0 ,2 ))."', " ;
676+ $ salt ="$1$ " ;
677+ for ($ n =0 ;$ n <8 ;$ n ++) {
678+ $ salt .=chr (mt_rand (64 ,126 ));
679+ }
680+ $ salt .="$ " ;
681+ // $salt = substr(md5(time()),0,2);
682+ $ record [$ key ] = crypt ($ record [$ key ],$ salt );
678683 } else {
679- $ sql_insert_val .= " md5(' " . $ record [$ key ]. " '), " ;
684+ $ record [ $ key ] = md5 ($ record [$ key ]) ;
680685 }
686+ $ sql_insert_val .= "' " .$ record [$ key ]."', " ;
681687 } elseif ($ field ['formtype ' ] == 'CHECKBOX ' ) {
682688 $ sql_insert_key .= "` $ key`, " ;
683689 if ($ record [$ key ] == '' ) {
690+ // if a checkbox is not set, we set it to the unchecked value
684691 $ sql_insert_val .= "' " .$ field ['value ' ][0 ]."', " ;
692+ $ record [$ key ] = $ field ['value ' ][0 ];
685693 } else {
686694 $ sql_insert_val .= "' " .$ record [$ key ]."', " ;
687695 }
@@ -691,23 +699,35 @@ function getSQL($record, $tab, $action = 'INSERT', $primary_id = 0, $sql_ext_whe
691699 }
692700 } else {
693701 if ($ field ['formtype ' ] == 'PASSWORD ' ) {
694- if ($ field ['encryption ' ] == 'CRYPT ' ) {
695- // $sql_update .= "`$key` = encrypt('".$record[$key]."'), ";
696- $ sql_update .= "` $ key` = ' " .crypt ($ record [$ key ],substr (md5 (time ()),0 ,2 ))."', " ;
702+ if ($ field ['encryption ' ] == 'CRYPT ' ) {
703+ $ salt ="$1$ " ;
704+ for ($ n =0 ;$ n <8 ;$ n ++) {
705+ $ salt .=chr (mt_rand (64 ,126 ));
706+ }
707+ $ salt .="$ " ;
708+ // $salt = substr(md5(time()),0,2);
709+ $ record [$ key ] = crypt ($ record [$ key ],$ salt );
697710 } else {
698- $ sql_update .= " ` $ key` = md5(' " . $ record [$ key ]. " '), " ;
711+ $ record [ $ key] = md5 ($ record [$ key ]) ;
699712 }
713+ $ sql_update .= "` $ key` = ' " .$ record [$ key ]."', " ;
700714 } elseif ($ field ['formtype ' ] == 'CHECKBOX ' ) {
701715 if ($ record [$ key ] == '' ) {
716+ // if a checkbox is not set, we set it to the unchecked value
702717 $ sql_update .= "` $ key` = ' " .$ field ['value ' ][0 ]."', " ;
718+ $ record [$ key ] = $ field ['value ' ][0 ];
703719 } else {
704720 $ sql_update .= "` $ key` = ' " .$ record [$ key ]."', " ;
705721 }
706722 } else {
707723 $ sql_update .= "` $ key` = ' " .$ record [$ key ]."', " ;
708724 }
709725 }
710- }
726+ } else {
727+ // we unset the password filed, if empty to tell the datalog function
728+ // that the password has not been changed
729+ unset($ record [$ key ]);
730+ }
711731 }
712732 }
713733
@@ -840,30 +860,46 @@ function datalogSave($action,$primary_id,$record_new) {
840860 }
841861
842862 $ diffrec = array ();
843-
863+
844864 if (is_array ($ record_new )) {
845865 foreach ($ record_new as $ key => $ val ) {
846866 if ($ record_old [$ key ] != $ val ) {
847- // Datensatz hat sich geändert
867+ // Record has changed
848868 $ diffrec [$ key ] = array ('old ' => $ record_old [$ key ],
849- 'new ' => $ val );
869+ 'new ' => $ val );
850870 }
851871 }
852872 }
873+ $ this ->diffrec = $ diffrec ;
874+
875+ // Full diff records for ISPConfig, they have a different format then the simple diffrec
876+ $ diffrec_full = array ();
877+
878+ if (is_array ($ record_old )) {
879+ foreach ($ record_old as $ key => $ val ) {
880+ if (isset ($ record_new [$ key ]) && $ record_new [$ key ] != $ val ) {
881+ // Record has changed
882+ $ diffrec_full ['old ' ][$ key ] = $ val ;
883+ $ diffrec_full ['new ' ][$ key ] = $ record_new [$ key ];
884+ } else {
885+ $ diffrec_full ['old ' ][$ key ] = $ val ;
886+ $ diffrec_full ['new ' ][$ key ] = $ val ;
887+ }
888+ }
889+ }
890+
891+ /*
892+ echo "<pre>";
893+ print_r($diffrec_full);
894+ echo "</pre>";
895+ */
853896
854897 // Insert the server_id, if the record has a server_id
855898 $ server_id = ($ record_old ["server_id " ] > 0 )?$ record_old ["server_id " ]:0 ;
856899 if (isset ($ record_new ["server_id " ])) $ server_id = $ record_new ["server_id " ];
857-
858- $ this ->diffrec = $ diffrec ;
859900
860- if (count ($ diffrec ) > 0 ) {
861-
862- // We need the full records in ISPConfig, not only the diffs
863- $ diffrec = array ( 'old ' => $ record_old ,
864- 'new ' => $ record_new );
865-
866- $ diffstr = $ app ->db ->quote (serialize ($ diffrec ));
901+ if (count ($ this ->diffrec ) > 0 ) {
902+ $ diffstr = $ app ->db ->quote (serialize ($ diffrec_full ));
867903 $ username = $ app ->db ->quote ($ _SESSION ["s " ]["user " ]["username " ]);
868904 $ dbidx = $ this ->formDef ['db_table_idx ' ].": " .$ primary_id ;
869905 $ action = ($ action == 'INSERT ' )?'i ' :'u ' ;
0 commit comments