2021-12-30 12:05:56 +01:00
package Prelib ;
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
#
#migrate some methodes form Prelogic and Premain to here
#defined methodes are available for web-app and backend
use strict ;
use warnings ;
use POSIX ;
use File::Path qw( make_path remove_tree ) ;
use CGI ':standard' ;
use CGI::Carp qw( fatalsToBrowser ) ;
use Scalar::Util qw( looks_like_number ) ;
use Lib::Config ;
use Mod::Libenzdb ;
use Mod::Libenz ;
use Mod::DBtank ;
use Mod::Basework ;
use Mod::APIfunc ;
use Data::Dumper ;
my $ cf = new Config ;
my $ db = new Libenzdb ;
my $ lb = new Libenz ;
my $ dbt = new DBtank ;
my $ bw = new Basework ;
my $ apif = new APIfunc ;
my $ q = new CGI ;
sub new {
my $ class = shift ;
my $ self = { } ;
bless ( $ self , $ class ) ;
return $ self ;
}
my $ i_rows = 0 ;
my $ u_rows = 0 ;
my $ d_rows = 0 ;
my $ lang = "de" ;
my % varenv = $ cf - > envonline ( ) ;
my $ now_dt = strftime "%Y-%m-%d %H:%M:%S" , localtime ;
my $ debug = 1 ;
2022-03-17 20:28:28 +01:00
#set Faktura workflow like Rechnung to Storno
sub set_workflow {
my $ self = shift ;
my $ users_dms = shift ;
my $ c_id = shift ;
my $ set_main_id = shift || "" ;
my % varenv = $ cf - > envonline ( ) ;
my $ dbh = "" ;
my $ node = $ dbt - > get_node ( $ dbh , $ set_main_id ) ;
my $ pref = {
table = > "contenttrans" ,
fetch = > "one" ,
c_id = > $ c_id ,
} ;
my $ ctt = { c_id = > 0 } ;
$ ctt = $ dbt - > fetch_tablerecord ( $ dbh , $ pref ) ;
#barcode setting logic reset. keep barcode from orignal for backlinking
#counter invoice subnr
if ( $ ctt - > { ct_name } =~ /\d+-\d+/ ) {
my ( $ ct_name , $ subname ) = split ( /-/ , $ ctt - > { ct_name } ) ;
$ subname + + ;
$ ctt - > { ct_name } = "$ct_name-$subname" ;
} else {
$ ctt - > { ct_name } = "$ctt->{ct_name}-1" ;
}
delete $ ctt - > { c_id } ;
delete $ ctt - > { txt00 } ;
delete $ ctt - > { state } ;
delete $ ctt - > { int01 } ;
delete $ ctt - > { int14 } ;
delete $ ctt - > { int15 } ;
2022-03-18 14:51:25 +01:00
delete $ ctt - > { int16 } ;
delete $ ctt - > { int18 } ;
2022-03-17 20:28:28 +01:00
delete $ ctt - > { txt16 } ;
delete $ ctt - > { txt12 } ;
delete $ ctt - > { txt21 } ;
delete $ ctt - > { txt22 } ;
delete $ ctt - > { txt23 } ;
2022-03-18 14:51:25 +01:00
delete $ ctt - > { txt25 } ;
2022-03-17 20:28:28 +01:00
delete $ ctt - > { txt30 } ;
delete $ ctt - > { itime } ;
delete $ ctt - > { mtime } ;
delete $ ctt - > { close_time } ;
delete $ ctt - > { invoice_time } ;
delete $ ctt - > { pay_time } ;
my $ insert_ctt = {
%$ ctt ,
table = > "contenttrans" ,
itime = > 'now()' ,
mtime = > 'now()' ,
owner = > "$users_dms->{u_id}" ,
ct_name = > "$ctt->{ct_name}" ,
txt00 = > "$node->{node_name}" ,
template_id = > "218" ,
main_id = > "$node->{main_id}" ,
} ;
my $ c_idnew = 0 ;
$ c_idnew = $ dbt - > insert_contentoid ( $ dbh , $ insert_ctt , "" ) ;
$ i_rows = 1 if ( $ c_idnew ) ;
#print Dumper($insert_ctt);
#exit;
#position copy
if ( $ c_idnew > 0 ) {
my ( $ cttpos , $ rows ) = $ db - > collect_contentpos ( "contenttrans" , $ c_id ) ;
foreach my $ id ( sort { lc ( $ cttpos - > { $ a } - > { sort } ) cmp lc ( $ cttpos - > { $ b } - > { sort } ) } keys ( %$ cttpos ) ) {
$ cttpos - > { $ id } - > { int02 } = $ cttpos - > { $ id } - > { int02 } * - 1 if ( $ cttpos - > { $ id } - > { int02 } != 0 ) ;
$ cttpos - > { $ id } - > { int07 } = $ cttpos - > { $ id } - > { int07 } * - 1 if ( $ cttpos - > { $ id } - > { int07 } != 0 && $ cttpos - > { $ id } - > { int08 } == 1 ) ; #if Rabatt int08 != 1 alias €;
delete $ cttpos - > { $ id } - > { c_id } ;
delete $ cttpos - > { $ id } - > { ct_id } ;
delete $ cttpos - > { $ id } - > { itime } ;
delete $ cttpos - > { $ id } - > { mtime } ;
my $ insert_pos = {
% { $ cttpos - > { $ id } } ,
table = > "contenttranspos" ,
ct_id = > $ c_idnew ,
itime = > 'now()' ,
mtime = > 'now()' ,
} ;
my $ ctpos_id = $ dbt - > insert_contentoid ( $ dbh , $ insert_pos , "" ) ;
$ i_rows += 1 if ( $ ctpos_id > 0 ) ;
}
}
$ db - > update_users4trans ( $ c_idnew , "218" , "" , $ users_dms - > { u_id } ) ;
my $ uri_path = $ dbt - > recurse_node ( "" , $ node - > { main_id } ) ;
print "$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows\n" ;
print redirect ( "$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows" ) ;
exit 0 ;
} #end set_workflow
2021-12-30 12:05:56 +01:00
#new node relation with option to create subnode for Servicelog
sub new_relation {
my $ self = shift ;
my $ main_id = shift ;
my $ owner = shift ;
my % varenv = $ cf - > envonline ( ) ;
my $ ret = "" ;
my $ dbh = "" ;
#$ret = "failure::temporarily disabled";
#return $ret;
open ( FILE , ">>$varenv{logdir}/new_relation.log" ) if ( $ debug ) ;
print FILE "\n*--> $now_dt| main_id: $main_id | owner: $owner\n" if ( $ debug ) ;
my $ prefix_id = "0" ;
my $ working_parent_id = $ R:: parent_id ;
$ prefix_id = $ 1 if ( $ R:: main_id =~ /^(\d)/ && $ R:: main_id >= "100000" ) ;
$ ret = $ lb - > checkinput ( $ R:: node_name ) ;
return $ ret if ( $ ret =~ /failure/ ) ;
my $ node_name = $ q - > escapeHTML ( $ R:: node_name ) ;
#check multiple node_name
my $ subrelnode = $ dbt - > get_subrelnode ( $ dbh , $ working_parent_id , "" , $ node_name ) ;
if ( $ subrelnode - > { node_name } eq "$R::node_name" ) {
return "failure::Abbruch, der Menuename \"$subrelnode->{node_name}\" ist bereits vorhanden. Bitte eindeutige Menuenamen verwenden." ;
}
if ( $ R:: new_submenu ) {
$ working_parent_id = $ R:: main_id ;
$ prefix_id + + ;
}
my $ new_main_id = $ dbt - > get_freenode ( $ dbh , $ prefix_id ) ;
my $ template_id = 0 ,
my $ n_sort = 1 ;
$ template_id = $ R:: template_id if ( looks_like_number ( $ R:: template_id ) ) ;
$ n_sort = $ R:: n_sort if ( looks_like_number ( $ R:: n_sort ) ) ;
my $ insert = {
main_id = > $ new_main_id ,
parent_id = > $ working_parent_id ,
template_id = > $ template_id ,
content_id = > 0 ,
node_name = > $ node_name ,
n_sort = > $ n_sort ,
lang = > "de" ,
owner = > $ owner ,
change = > "now()" ,
} ;
my $ rel_id = $ dbt - > insert_nodeoid ( $ dbh , $ insert ) ;
$ i_rows = 1 if ( $ rel_id > 0 ) ;
print FILE "new_relation with" . Dumper ( $ insert ) . "\n" if ( $ debug ) ;
#sub Servicelog for rental bikes
if ( $ template_id == 205 ) {
$ prefix_id + + ;
my $ new_submain_id = $ dbt - > get_freenode ( $ dbh , $ prefix_id ) ;
2022-04-04 14:57:43 +02:00
my $ new_subtemplate_id = $ dbt - > get_freetpl ( $ dbh , "401" , "499" ) ;
2021-12-30 12:05:56 +01:00
2022-05-09 12:45:01 +02:00
my $ ret_tpl_id = $ dbt - > copy_template ( $ dbh , "400" , $ new_subtemplate_id , $ owner ) ;
2021-12-30 12:05:56 +01:00
my $ insert_sub = {
main_id = > $ new_submain_id ,
parent_id = > $ new_main_id ,
template_id = > $ new_subtemplate_id ,
content_id = > 0 ,
node_name = > "$node_name-Servicelog" ,
n_sort = > $ n_sort ,
lang = > "de" ,
owner = > $ owner ,
change = > "now()" ,
} ;
my $ subrel_id = $ dbt - > insert_nodeoid ( $ dbh , $ insert_sub ) ;
$ i_rows += 1 if ( $ subrel_id > 0 ) ;
print FILE "new_subrelation with" . Dumper ( $ insert_sub ) . "\nwith template_id=$ret_tpl_id" if ( $ debug ) ;
}
close ( FILE ) if ( $ debug ) ;
my $ uri_path = $ dbt - > recurse_node ( "" , $ new_main_id ) ;
print "$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows\n" ;
print redirect ( "$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows" ) ;
exit 0 ;
}
#end new_relation
#save node relation
sub save_relation {
my $ self = shift ;
my $ main_id = shift ;
my $ owner = shift ;
my % varenv = $ cf - > envonline ( ) ;
2022-05-18 10:53:29 +02:00
my @ keywords = $ q - > param ;
2021-12-30 12:05:56 +01:00
my $ dbh = "" ;
my $ update_node = {
table = > "nodes" ,
main_id = > "$main_id" ,
} ;
my $ update_relation = {
table = > "relation" ,
main_id = > "$main_id" ,
} ;
my $ subrelnode = $ dbt - > get_subrelnode ( $ dbh , $ main_id , "" , "" ) ;
foreach ( @ keywords ) {
my $ val = $ q - > param ( $ _ ) ;
my $ valxx = $ q - > escapeHTML ( "$val" ) ;
$ valxx =~ s/^\s+// ; $ valxx =~ s/\s+$// ;
if ( ( $ _ eq "node_name" ) && $ valxx ) {
#if defined another path
my $ node_name = $ valxx ;
my $ node_path = $ node_name ;
#internal for splitting node_name node_path
( $ node_name , $ node_path ) = split ( /\|/ , $ node_name ) if ( $ node_name =~ /\|/ ) ;
my $ return ;
$ return = $ lb - > checkinput ( $ node_name ) ;
$ return = $ lb - > checkinput ( $ node_path ) ;
return $ return if ( $ return =~ /failure/ ) ;
$ u_rows = $ dbt - > update_one ( $ dbh , $ update_node , "node_name='$node_name'" ) ;
$ u_rows = $ dbt - > update_one ( $ dbh , $ update_node , "node_path='$node_path'" ) ;
if ( $ subrelnode - > { main_id } && $ subrelnode - > { template_id } >= 400 && $ subrelnode - > { template_id } <= 499 ) {
my $ update_subnode = {
table = > "nodes" ,
main_id = > "$subrelnode->{main_id}" ,
} ;
$ u_rows = $ dbt - > update_one ( $ dbh , $ update_subnode , "node_name='$node_name-Servicelog'" ) ;
$ u_rows = $ dbt - > update_one ( $ dbh , $ update_subnode , "node_path='$node_path-Servicelog'" ) ;
}
}
if ( $ _ =~ /template_id/ && $ valxx ) {
$ u_rows = $ dbt - > update_one ( $ dbh , $ update_relation , "template_id=$valxx" ) ;
}
if ( $ _ =~ /int|n_sort|owner|node_public/ ) {
$ valxx =~ s/,/./ ;
$ valxx = "null" if ( ! $ valxx && $ valxx ne "0" ) ; #for empty
$ valxx = "0" if ( $ valxx eq "0" ) ;
$ u_rows = $ dbt - > update_one ( $ dbh , $ update_node , "$_=$valxx" ) if ( $ valxx =~ /^\d+$|null|0/ ) ;
}
if ( $ _ =~ /txt01/ ) {
$ u_rows = $ dbt - > update_one ( $ dbh , $ update_node , "$_='$valxx'" ) ;
}
if ( ! - d "$varenv{data}/$main_id" ) {
mkdir ( "$varenv{data}/$main_id" , 0777 ) ;
mkdir ( "$varenv{data}/$main_id-thumb" , 0777 ) ;
mkdir ( "$varenv{data}/$main_id-resize" , 0777 ) ;
}
}
my $ uri_path = $ dbt - > recurse_node ( "" , $ main_id ) ;
print "$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows\n" ;
print redirect ( "$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows" ) ;
exit 0 ;
}
#delete node relation with some ki deleting sub content
sub delete_relation {
my $ self = shift ;
my $ main_id = shift ;
my $ owner = shift ;
my % varenv = $ cf - > envonline ( ) ;
my $ dbh = "" ;
my $ ret = "" ;
my $ debug = 1 ;
open ( FILE , ">>$varenv{logdir}/delete_relation.log" ) if ( $ debug ) ;
print FILE "\n*--> $now_dt| main_id: $main_id \n" if ( $ debug ) ;
#get all node para
my $ noderef = {
main_id = > $ main_id ,
fetch = > "one" ,
} ;
my $ noderel = $ dbt - > fetch_rel4tpl4nd ( $ dbh , $ noderef ) ;
my $ ctref = {
table = > "$noderel->{ct_table}" ,
main_id = > $ main_id ,
fetch = > "one" ,
c_id = > ">::0" ,
} ;
my $ ct_record = $ dbt - > fetch_record ( $ dbh , $ ctref ) ;
my $ collect_rows = 0 ;
2022-01-27 20:30:35 +01:00
if ( $ noderel - > { template_id } == 205 ) {
( my $ collect_node , $ collect_rows ) = $ dbt - > collect_noderel ( $ dbh , $ noderel - > { parent_id } , $ noderel - > { template_id } ) ;
2021-12-30 12:05:56 +01:00
}
my $ subrelnode = $ dbt - > get_subrelnode ( $ dbh , $ main_id , "" , "" ) ;
#if 1 then deleteable
my $ deleteable_subnode = 1 ;
my $ deleteable_node = 1 ;
my $ deleteable_last_node = 1 ;
2022-01-27 20:30:35 +01:00
#TODO, $subrelnode->{template_id} must be unique in Flotte context
2021-12-30 12:05:56 +01:00
if ( $ subrelnode - > { template_id } >= 400 && $ subrelnode - > { template_id } <= 499 ) {
$ deleteable_subnode = 1 ;
if ( $ collect_rows <= 1 ) {
$ deleteable_last_node = 0 ;
}
} elsif ( $ subrelnode - > { template_id } ) {
$ deleteable_subnode = 0 ;
}
if ( $ ct_record - > { c_id } > 0 ) {
$ deleteable_node = 0 ;
}
2022-01-27 20:30:35 +01:00
#print "$deleteable_subnode|$deleteable_node|$deleteable_last_node|$collect_rows";
print FILE "deleteable_subnode:$deleteable_subnode | deleteable_node:$deleteable_node | deleteable_last_node:$deleteable_last_node --> collect_rows: $collect_rows|c_id: $ct_record->{c_id}\n" if ( $ debug ) ;
2021-12-30 12:05:56 +01:00
if ( $ deleteable_last_node == 0 ) {
$ ret = "failure::Abbruch, es muss mindestens eine Mietrad Flotte definiert sein. ($collect_rows on $noderel->{parent_id})" ;
} elsif ( $ deleteable_subnode == 0 || $ deleteable_node == 0 ) {
$ ret = "failure::Abbruch, der Ordner enthält Daten. Für die referentielle Integrität ist es notwendig die Ordner Inhalte (content) und/oder Relationen des Ordners zu löschen. ($deleteable_subnode == 0 || $deleteable_node == 0 , $subrelnode->{template_id}, $main_id, $ct_record->{c_id}, $noderel->{ct_table})" ;
} else {
print FILE "delete_relation with $subrelnode->{main_id}, $subrelnode->{template_id}\n" if ( $ debug ) ;
if ( $ deleteable_subnode && $ subrelnode - > { main_id } ) {
$ dbt - > delete_content ( $ dbh , "contentpos" , "all" , $ subrelnode - > { template_id } ) if ( $ subrelnode - > { template_id } >= 400 && $ subrelnode - > { template_id } <= 499 ) ;
$ d_rows += $ dbt - > delete_noderel ( $ dbh , $ subrelnode - > { main_id } ) ;
$ d_rows += $ dbt - > delete_template ( $ dbh , $ subrelnode - > { template_id } ) ;
}
$ d_rows += $ dbt - > delete_noderel ( $ dbh , $ main_id ) ;
remove_tree ( "$varenv{data}/$main_id" ) ;
remove_tree ( "$varenv{data}/$main_id-thumb" ) ;
remove_tree ( "$varenv{data}/$main_id-resize" ) ;
my $ uri_path = $ dbt - > recurse_node ( $ dbh , $ noderel - > { parent_id } ) ;
$ uri_path =~ s/\/\w+$// ;
print redirect ( "$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows" ) ;
exit 0 ;
}
close ( FILE ) if ( $ debug ) ;
return $ ret ;
}
#sharee Bonusnummer with Tarif automatic
sub set_usertarif {
my $ self = shift ;
my $ dbh = shift ;
my $ dbname = shift ;
my $ adr_bonus = shift ;
2022-01-16 12:17:11 +01:00
my $ bonus_collect = shift || { } ;
2021-12-30 12:05:56 +01:00
open ( FILE , ">>$varenv{logdir}/save_account.log" ) if ( $ debug ) ;
print FILE "\n*Prelib--> $now_dt| c_id: $adr_bonus->{c_id} \n" if ( $ debug ) ;
my $ ret = $ adr_bonus - > { ret } ;
my $ i = 0 ;
my $ dbh_operator = $ dbt - > dbconnect_extern ( $ dbname ) ; #operator connect
if ( $ adr_bonus - > { txt15 } =~ /\w+/ ) {
if ( 1 == 1 ) {
2022-01-16 12:17:11 +01:00
my @ new_txt30 = ( ) ;
#collect multiple tarif by bonusnr
2021-12-30 12:05:56 +01:00
my $ pref_cc = {
table = > "content" ,
keyfield = > "c_id" ,
fetch = > "all" ,
template_id = > "228" ,
int03 = > ">::0" ,
ct_name = > $ adr_bonus - > { txt15 } ,
} ;
2022-01-16 12:17:11 +01:00
$ bonus_collect = $ dbt - > fetch_record ( $ dbh_operator , $ pref_cc ) if ( ref ( $ bonus_collect - > { 1 } ) ne "HASH" ) ;
#print FILE "Prelib bonus_collect:\n" . Dumper($bonus_collect) . "\n";
foreach my $ id ( keys ( %$ bonus_collect ) ) {
2021-12-30 12:05:56 +01:00
print FILE "-1-> txt15: $adr_bonus->{txt15}\n" if ( $ debug ) ;
$ i + + ;
foreach my $ sourcetarif ( @ { $ adr_bonus - > { txt30_array } } ) {
2022-02-16 15:56:45 +01:00
print FILE "-1.2-> activeTarif:$sourcetarif | Bonus-source:$bonus_collect->{$id}->{int21} | Bonus-target:$bonus_collect->{$id}->{int22}\n" if ( $ debug ) ;
2022-01-16 12:17:11 +01:00
if ( $ sourcetarif eq $ bonus_collect - > { $ id } - > { int22 } ) {
print FILE "-2.1-> still activ Bonusnr ct_name: $bonus_collect->{$id}->{ct_name}\n" if ( $ debug ) ;
2022-02-16 15:56:45 +01:00
$ u_rows = $ dbt - > update_one ( $ dbh_operator , $ adr_bonus , "txt15='$adr_bonus->{txt15}'" ) ;
2021-12-30 12:05:56 +01:00
$ ret = "success::txt15" ;
2022-02-16 15:56:45 +01:00
push ( @ new_txt30 , $ bonus_collect - > { $ id } - > { int22 } ) ;
2022-01-16 12:17:11 +01:00
#push(@new_txt30,$sourcetarif);
2022-02-16 15:56:45 +01:00
} elsif ( $ sourcetarif eq $ bonus_collect - > { $ id } - > { int21 } && $ bonus_collect - > { $ id } - > { int22 } ) {
print FILE "-2.2-> match-update Bonusnr ct_name: $bonus_collect->{$id}->{ct_name}\n" if ( $ debug ) ;
2022-01-16 12:17:11 +01:00
if ( $ id > 3 ) { #means if not file greped with static c_id <= 3
$ dbt - > update_content4comp ( $ dbh_operator , $ bonus_collect - > { $ id } - > { c_id } , "-" , "1" ) ;
}
2021-12-30 12:05:56 +01:00
$ u_rows = $ dbt - > update_one ( $ dbh_operator , $ adr_bonus , "txt15='$adr_bonus->{txt15}'" ) ;
$ ret = "success::txt15" ;
2022-01-16 12:17:11 +01:00
push ( @ new_txt30 , $ bonus_collect - > { $ id } - > { int22 } ) ;
2021-12-30 12:05:56 +01:00
} else {
2022-05-19 06:35:50 +02:00
#if no matching Bonusnr then keep sourcetarif
print FILE "-2.3-> No matching Bonusnr ct_name: $bonus_collect->{$id}->{ct_name}, doing nothing and keep sourcetarif\n" if ( $ debug ) ;
push ( @ new_txt30 , $ sourcetarif ) ;
2021-12-30 12:05:56 +01:00
#$ret = "failure::txt15#top1";
}
}
}
if ( @ new_txt30 ) {
print FILE "-3-> txt30: @new_txt30\n" if ( $ debug ) ;
$ u_rows = $ dbt - > update_one ( $ dbh_operator , $ adr_bonus , "txt30='@new_txt30'" ) ;
}
$ ret = "failure::txt30#top2" if ( ! $ adr_bonus - > { txt30_array } || $ adr_bonus - > { txt30_array } !~ /\d/ ) ;
}
} else {
print FILE "-4-> update Tarif txt30: @{$adr_bonus->{txt30_array}}\n" if ( $ debug ) ;
$ u_rows = $ dbt - > update_one ( $ dbh_operator , $ adr_bonus , "txt30='@{$adr_bonus->{txt30_array}}'" ) ;
$ u_rows = $ dbt - > update_one ( $ dbh_operator , $ adr_bonus , "txt15=''" ) ;
$ ret = "failure::txt30#top3" if ( ! $ adr_bonus - > { txt30_array } || $ adr_bonus - > { txt30_array } !~ /\d/ ) ;
}
#if bonus value doesn't match
if ( $ adr_bonus - > { txt15 } && $ i == 0 ) {
print FILE "-5-> failure txt15: ''\n" if ( $ debug ) ;
$ ret = "failure::txt15#top4" ;
}
close ( FILE ) if ( $ debug ) ;
return $ ret ;
}
2022-05-13 10:38:03 +02:00
#save service-config
2022-05-11 08:05:35 +02:00
sub save_service_desc {
my $ self = shift ;
2022-05-13 10:38:03 +02:00
my $ c_id = shift ;
2022-05-11 08:05:35 +02:00
my $ users_dms = shift ;
my @ keywords = $ q - > param ;
2022-05-13 10:38:03 +02:00
my $ dbh = "" ;
my $ c_tplid = { c_id = > $ c_id } ;
my $ update_ctuser = {
table = > "contentuser" ,
template_id = > "199" ,
mtime = > "now()" ,
owner = > "$users_dms->{u_id}" ,
} ;
my $ update_template = {
table = > "template" ,
tpl_id = > "$c_id" ,
owner = > "$users_dms->{u_id}" ,
} ;
2022-05-11 08:05:35 +02:00
2022-05-13 10:38:03 +02:00
open ( FILE , ">>$varenv{logdir}/save_service_desc.log" ) if ( $ debug ) ;
print FILE "\n*Prelib--> $now_dt | ctpl_id $c_id | owner: $users_dms->{u_id}\n" if ( $ debug ) ;
my $ tpl_order_desc = "c_id=ID=4=0=0,mtime=Zeitstempel=6=0=0,owner=von=3=0=0,barcode=Rad=3=0=0,txt01=Aufgaben=area5-8=0=0" ;
2022-05-11 08:05:35 +02:00
foreach ( @ keywords ) {
my @ val = $ q - > param ( $ _ ) ;
my $ valxx = $ q - > escapeHTML ( "@val" ) ;
2022-05-13 10:38:03 +02:00
$ valxx =~ s/\s/=/g ;
print FILE $ _ . ":" . $ valxx . "<br>\n" ;
2022-05-13 20:00:25 +02:00
my $ count = 0 ;
+ + $ count while $ valxx =~ /=/g ;
return "failure::Abbruch. Die Wartungsnamen dienen als Schlüsselwerte und dürfen somit keine Leer- oder Sonderzeichen enthalten ($valxx). Das Speichern wurde abgebrochen!" if ( $ count > 4 ) ;
2022-05-13 10:38:03 +02:00
#txt01:int01=Reifen-Bremse-Lampe=checkbox=10=2
2022-05-13 20:00:25 +02:00
if ( $ _ =~ /txt\d+/ && $ valxx =~ /int\d+=[a-z-]+=checkbox=\d+=\d/i ) {
2022-05-13 10:38:03 +02:00
$ update_ctuser - > { $ _ } = "$valxx" ;
$ tpl_order_desc . = ",$valxx" ;
2022-05-11 08:05:35 +02:00
}
}
2022-05-13 10:38:03 +02:00
print FILE "update contentuser c_id:$c_id\n" . Dumper ( $ update_ctuser ) . "\n" ;
print FILE "update template tpl_id:$c_id\n" . $ tpl_order_desc . "\n" ;
my $ rows = 0 ;
$ rows = $ dbt - > update_record ( $ dbh , $ update_ctuser , $ c_tplid ) ;
$ rows = $ dbt - > update_one ( $ dbh , $ update_template , "tpl_order='$tpl_order_desc'" ) ;
2022-05-11 08:05:35 +02:00
2022-05-13 10:38:03 +02:00
close ( FILE ) if ( $ debug ) ;
return $ rows ;
2022-05-11 08:05:35 +02:00
}
2021-12-30 12:05:56 +01:00
1 ;