@@ -214,6 +214,77 @@ public function update($tablename, $form, $bedingung, $debug = 0)
214214 if ($ debug == 1 ){ echo 'mySQL Error Message: ' .$ this ->errorMessage ; }
215215 }
216216 }
217+
218+ //** Function to fill the datalog with a full differential record.
219+ public function datalogSave ($ db_table , $ action , $ primary_field , $ primary_id , $ record_old , $ record_new ) {
220+ global $ app ,$ conf ;
221+
222+ // Insert backticks only for incomplete table names.
223+ if (stristr ($ db_table ,'. ' )) {
224+ $ escape = '' ;
225+ } else {
226+ $ escape = '` ' ;
227+ }
228+
229+ $ diffrec_full = array ();
230+ $ diff_num = 0 ;
231+
232+ if (is_array ($ record_old ) && count ($ record_old ) > 0 ) {
233+ foreach ($ record_old as $ key => $ val ) {
234+ if (isset ($ record_new [$ key ]) && $ record_new [$ key ] != $ val ) {
235+ // Record has changed
236+ $ diffrec_full ['old ' ][$ key ] = $ val ;
237+ $ diffrec_full ['new ' ][$ key ] = $ record_new [$ key ];
238+ $ diff_num ++;
239+ } else {
240+ $ diffrec_full ['old ' ][$ key ] = $ val ;
241+ $ diffrec_full ['new ' ][$ key ] = $ val ;
242+ }
243+ }
244+ } elseif (is_array ($ record_new )) {
245+ foreach ($ record_new as $ key => $ val ) {
246+ if (isset ($ record_new [$ key ]) && $ record_old [$ key ] != $ val ) {
247+ // Record has changed
248+ $ diffrec_full ['new ' ][$ key ] = $ val ;
249+ $ diffrec_full ['old ' ][$ key ] = $ record_old [$ key ];
250+ $ diff_num ++;
251+ } else {
252+ $ diffrec_full ['new ' ][$ key ] = $ val ;
253+ $ diffrec_full ['old ' ][$ key ] = $ val ;
254+ }
255+ }
256+ }
257+
258+ // Insert the server_id, if the record has a server_id
259+ $ server_id = (isset ($ record_old ["server_id " ]) && $ record_old ["server_id " ] > 0 )?$ record_old ["server_id " ]:0 ;
260+ if (isset ($ record_new ["server_id " ])) $ server_id = $ record_new ["server_id " ];
261+
262+ if ($ diff_num > 0 ) {
263+ $ diffstr = $ app ->db ->quote (serialize ($ diffrec_full ));
264+ $ username = $ app ->db ->quote ($ _SESSION ["s " ]["user " ]["username " ]);
265+ $ dbidx = $ primary_field .": " .$ primary_id ;
266+
267+ if ($ action == 'INSERT ' ) $ action = 'i ' ;
268+ if ($ action == 'UPDATE ' ) $ action = 'u ' ;
269+ if ($ action == 'DELETE ' ) $ action = 'd ' ;
270+ $ sql = "INSERT INTO sys_datalog (dbtable,dbidx,server_id,action,tstamp,user,data) VALUES (' " .$ db_table ."',' $ dbidx',' $ server_id',' $ action',' " .time ()."',' $ username',' $ diffstr') " ;
271+ $ app ->db ->query ($ sql );
272+ }
273+
274+ return true ;
275+ }
276+
277+ //** Updates a record and saves the cahnges into the datalog
278+ public function datalogUpdate ($ tablename , $ update_data , $ index_field , $ index_value ) {
279+ global $ app ;
280+
281+ $ old_rec = $ this ->queryOneRecord ("SELECT * FROM $ tablename WHERE $ index_field = ' $ index_value' " );
282+ $ this ->query ("UPDATE $ tablename SET $ update_data WHERE $ index_field = ' $ index_value' " );
283+ $ new_rec = $ this ->queryOneRecord ("SELECT * FROM $ tablename WHERE $ index_field = ' $ index_value' " );
284+ $ this ->datalogSave ($ tablename , 'UPDATE ' , $ index_field , $ index_value , $ old_rec , $ new_rec );
285+
286+ return true ;
287+ }
217288
218289 public function closeConn ()
219290 {
0 commit comments