sub users_list_screen {
&db_open_ro;
$db_ignore_open_close=1;
&users_list_vars ;
$db_ignore_open_close=0 ;
&db_close_conn ;
foreach my $id (keys %{$db{$table}}) {
$delete_button = ($seen_operator{$id}) ? qq~~ : qq~~ ;
my $disp_blocked = qq~~;
if ($db{$table}{$id}{block} || $db{$table}{$id}{inactive} ) { $disp_blocked = qq~~; }
# if (!$useropts{it}{$username} && (substr($db{$table}{$id}{username},0,4) eq 'rory' || substr($db{$table}{$id}{username},0,6) eq 'handre')) { next ; }
my $it_username_subs_4 = substr($db{$table}{$id}{username},0,4) ; # rory / jean
my $it_username_subs_6 = substr($db{$table}{$id}{username},0,6) ; # handre
if (($useropts{it}{$it_username_subs_4} || $useropts{it}{$it_username_subs_6}) && !$useropts{it}{$username} && $useremail =~ /re8it/g) { next ; }
next if $glod_user_level < 4 && $level{$db{$table}{$id}{user_type}} > 1 && $user_type eq 'casual' ;
$opts{$lcpage} .= qq~~ ;
$print_tbody .= qq~
| $id |
$db{$table}{$id}{username} |
$db{$table}{$id}{name} |
$db{$table}{$id}{email} |
$disp_blocked |
$db{$table}{$id}{based_in} | ~ ;
$print_tbody .= qq~
$level{$db{$table}{$id}{user_type}} | ~ if $user_type eq 'casual' ;
$print_tbody .= qq~
$db{$table}{$id}{lastupdate} |
$db{$table}{$id}{lastvisitdate} |
$delete_button
|
~ ;
}
} #------------------------------------------------------------------------------------------
sub users_list_vars {
our %seen = () ; our %seen_operator = () ; our $delete_button = '' ;
&db_min_ro('events','id, user_id','','','') ;
foreach my $id (keys %{$db{'events'}}) {
next if $seen{$db{'events'}{$id}{user_id}} ;
$seen{$db{'events'}{$id}{user_id}} = 1 ;
}
&db_min_ro('event_quotes','id,user_id,operator_ids,daily_operator_ids','','','') ;
foreach my $id (keys %{$db{event_quotes}}) {
# next if $seen{$db{event_quotes}{$id}{user_id}} ;
$seen{$db{event_quotes}{$id}{user_id}} = 1 ;
my $op_ids = $db{event_quotes}{$id}{operator_ids} ;
next unless $op_ids ;
my @op_ids = ($op_ids =~ /;/) ? split(/;/,$op_ids) : split(/,/,$op_ids) ;
for my $op_id (@op_ids) {
next if $seen_operator{$op_id} || !$op_id ;
$seen_operator{$op_id} = 1 ;
}
foreach my $op_ids_list (split(/\|/,$db{event_quotes}{$id}{daily_operator_ids})) {
next unless $op_ids_list ;
foreach my $op_id (split(/\;/,$op_ids_list)) {
next if $seen_operator{$op_id} || !$op_id ;
$seen_operator{$op_id} = 1 if $op_id ;
}
}
}
&db_min_ro('quotes','id,user_id','','','') ;
foreach my $id (keys %{$db{quotes}}) {
next if $seen{$db{quotes}{$id}{user_id}} ;
$seen{$db{quotes}{$id}{user_id}} = 1 ;
}
$level{casual_a} = 1 ;
$level{casual_b} = 2 ;
$level{casual_c} = 3 ;
if ($user_type eq 'coding_provider') {
&db_min_ro('analytics_event_bookings','id,fixtures_saved_values','','','') ;
foreach my $id (keys %{$db{analytics_event_bookings}}) {
my @split1 = split(/\|/,$db{analytics_event_bookings}{$id}{fixtures_saved_values}) ;
foreach my $row (@split1) {
my @split2 = split(/\;/,$row) ;
$seen{$split2[-2]} = 1 ;
}
}
}
if ($user_type eq 'analytics_client') {
&db_min_ro('analytics_event_bookings','id,client_id','','','') ;
foreach (keys %{$db{analytics_event_bookings}}) {
$seen{$db{analytics_event_bookings}{$_}{client_id}} = 1 ;
}
}
# my $cust_sql_where = "user_type = '$user_type'" if $user_type ;
my $cust_sql_where = ($user_type) ? "user_type LIKE '$user_type%'" : "user_type NOT LIKE 'casual%' AND user_type <> 'schools_manager' AND user_type <> 'installation_partner'" ;
&db_min_ro($table,'*',$cust_sql_where,'username','') ;
} #------------------------------------------------------------------------------------------
sub users_sort_fields {
my $fcnt = 1 ;
$sort_field{$fcnt} = 'name' ; $fcnt++ ;
$sort_field{$fcnt} = 'email' ; $fcnt++ ;
$sort_field{$fcnt} = 'phone' ; $fcnt++ ;
if ($user_type eq 'casual') {
$sort_field{$fcnt} = 'bank' ; $fcnt++ ;
$sort_field{$fcnt} = 'bank_acc_no' ; $fcnt++ ;
}
$sort_field{$fcnt} = 'based_in' ; $fcnt++ ;
$sort_field{$fcnt} = 'user_type' ; $fcnt++ ;
# $sort_field{$fcnt} = 'organisation_ids' ; $fcnt++ ;
if ($user_type eq 'schools_manager' || $user_type eq 'installation_partner' || $user_type eq 'casual') {
$sort_field{$fcnt} = 'region_ids' ;
$fcnt++ ;
}
if ($user_type eq 'installation_partner') {
$sort_field{$fcnt} = 'customer_ids' ;
$fcnt++ ;
}
$sort_field{$fcnt} = 'block' ; $fcnt++ ;
$sort_field{$fcnt} = 'inactive' ; $fcnt++ ;
# if ($dialog) {
# $sort_field{$fcnt} = 'sel_field' ; $fcnt++ ;
# }
$sort_field{$fcnt} = 'username' ; $fcnt++ ;
$sort_field{$fcnt} = 'password' if $iaction eq 'add' ;
} #-------------------------------------------------------------------------------
sub users_add_db_fields {
$ignore{lastvisitdate} = 1 ;
$ignore{iaction} = 1 ;
$ignore{block} = 1 ;
$ignore{inactive} = 1 ;
# $ignore{id} = 1 ;
$hidden{lastupdate} = 2 ;
$required{email} = 1 ;
$required{username} = 1 ;
$required{name} = 1 ;
$required{password} = 1 ;
&sort_fields ;
} #------------------------------------------------------------------------------------------
sub users_edit_db_fields {
$ignore{lastvisitdate} = 1 ;
$ignore{password} = 1 ;
$ignore{iaction} = 1 ;
$hidden{id} = 1 ; # 1 = bypass for db update
$hidden{username} = 1 ; # 1 = bypass for db update
$hidden{lastupdate} = 2 ; # 2 = update db
# $readonly{username} = 'READONLY' ;
$checkbox{block} = 1 ;
$checkbox{inactive} = 1 ;
# $required{username} = 1 ;
$required{email} = 1 ;
&sort_fields ;
} #------------------------------------------------------------------------------------------
sub users_add_screen {
# called from common_add_screen
$selected{user_type}{$user_type} = "SELECTED" if $user_type ;
&users_select_opts ;
our $savjqy = 1 if $user_type ; # incorporate jquery into the save event to accommodate the multiple chosen options
} #------------------------------------------------------------------------------------------
sub users_edit_screen {
our ($lcol,$fcol) = &common_min_columns($label_col,$field_col) ;
$selected{based_in}{$db{$table}{$i{id}}{based_in}} = "SELECTED" ;
$selected{user_type}{$db{$table}{$i{id}}{user_type}} = "SELECTED" ;
$extra_form_fields .= &common_min_form_input('new_password','','password') ;
&users_select_opts ;
our $savjqy = 1 if $user_type ; # incorporate jquery into the save event to accommodate the multiple chosen options
} #------------------------------------------------------------------------------------------
sub users_thead {
$print_thead = qq~| ID | USERNAME | NAME | EMAIL | ACTIVE | BASE | ~;
$print_thead .= qq~LEVEL | ~ if $user_type eq 'casual' ;
$print_thead .= qq~LASTUPDATE | LASTVISITDATE | |
~ ;
} #-------------------------------------------------------------------------------
sub users_process_multi_select {
# local @organisationids = split(/\,/,$i{organisationids}) ;
# my $organisationids = join(",",@organisationids) ;
# $organisationids =~ s/\s//g; # remove white space
# $ignore{organisationids} = 1 ;
# $i{organisation_ids} = $organisationids ;
$i{organisation_ids} = '0' ;
local @regionids = split(/\,/,$i{regionids}) ;
my $regionids = join(",",@regionids) ;
$regionids =~ s/\s//g; # remove white space
$ignore{regionids} = 1 ;
$i{region_ids} = $regionids || '0' ;
if ($user_type eq 'installation_partner' || $user_type eq 'coding_provider' || $user_type eq 'analytics_client') {
local @customerids = split(/\,/,$i{customerids}) ;
my $customerids = join(",",@customerids) ;
$customerids =~ s/\s//g; # remove white space
$ignore{customerids} = 1 ;
$i{customer_ids} = $customerids ;
} else {
$i{customer_ids} = '0' ;
}
} #------------------------------------------------------------------------------------------
sub users_select_opts {
# $multiple{organisation_ids} = 1;
# my @organisation_ids = split(/\,/,$db{$table}{$i{id}}{organisation_ids});
# foreach (@organisation_ids) { $selected_multi{$_} = 'SELECTED' ; }
# $preferred_title{organisation_ids} = "Venue" ;
# &common_min_select_opts('organisation_ids','organisations','name',$db{$table}{$i{id}}{organisation_ids},'') ;
# $extra_form_fields .= qq~~;
# $trigger_jquery_raw .= qq~
# \$("#savebutt").click(function() {
# let st_val = \$("#selectOrganisation_ids").chosen().val() ;
# \$('#organisation-ids').val(st_val);
# \$('#users-form').submit();
# });~;
if ($user_type eq 'installation_partner' || $user_type eq 'coding_provider' || $user_type eq 'analytics_client') {
$multiple{customer_ids} = 1;
my @customer_ids = split(/\,/,$db{$table}{$i{id}}{customer_ids});
foreach (@customer_ids) { $selected_multi{$_} = 'SELECTED' ; }
$preferred_title{customer_ids} = "Customers" ;
&common_min_select_opts('customer_ids','customers','name','','') ;
$extra_form_fields .= qq~~;
$add_to_trigger_jquery_raw = qq~
let cust_val = \$("#selectCustomer_ids").chosen().val() ;
\$('#customer-ids').val(cust_val);
~;
}
if ($user_type eq 'schools_manager' || $user_type eq 'installation_partner' || $user_type eq 'casual' || $user_type eq 'coding_provider' || $user_type eq 'analytics_client') {
$multiple{region_ids} = 1;
my @region_ids = split(/\,/,$db{$table}{$i{id}}{region_ids});
foreach (@region_ids) { $selected_multi{$_} = 'SELECTED' ; }
$preferred_title{region_ids} = "Regions" ;
&common_min_select_opts('region_ids','regions','name','','') ;
$extra_form_fields .= qq~~;
$trigger_jquery_raw .= qq~
\$("#savebutt").click(function() {
let st_val = \$("#selectRegion_ids").chosen().val() ;
\$('#region-ids').val(st_val);
$add_to_trigger_jquery_raw
\$('#users-form').submit();
});~;
}
# &common_min_select_opts('organisation_ids','organisations','name',$db{$table}{$i{id}}{organisation_ids},1,'','');
&common_min_select_opts('based_in','regions','name',$db{$table}{$i{id}}{based_in},1,'','','code') ;
# $required{based_in} = 1 ;
# $select{based_in} = 1 ;
# # $opts{based_in} = qq~~ ;
# $opts{based_in} = qq~~ ;
$required{user_type} = 1 ;
$select{user_type} = 1 ;
if ($user_type eq 'casual') {
if ($glod_user_level > 2) {
$opts{user_type} = qq~~;
}
if ($glod_user_level > 3) {
$opts{user_type} .= qq~~;
}
$opts{user_type} .= qq~~;
} elsif ($user_type) {
my $user_type_name = join(" ", map { ucfirst lc } split /_/, $user_type);
$opts{user_type} = qq~
~ ;
} else {
$opts{user_type} = qq~
~ ;
}
} #------------------------------------------------------------------------------------------
sub users_insert {
&add_db_fields ;
my $crypted_password = apache_md5_crypt($i{password},$useropts{salt}) ;
$i{password} = $crypted_password ;
$i{lastupdate} = "$now_ccyy_mm_dd $now_hour:$now_min:$now_sec" ;
$i{email} = lc $i{email} ;
$i{id} = &db_min_get_max($table,'id') ;
&process_multi_select if $user_type ;
&db_min_insert($table) ;
} #------------------------------------------------------------------------------------------
sub users_update {
unless ($i{id}) { $error = qq(NO ID) ; return ; }
&edit_db_fields ;
unless ($i{block}) { $i{block} = '0' ; }
unless ($i{inactive}) { $i{inactive} = '0' ; }
if ($i{new_password}) {
my $crypted_password = apache_md5_crypt($i{new_password},$useropts{salt}) ;
$i{password} = $crypted_password ;
$ignore{password} = 0 ;
$hidden{password} = 2 ;
}
$i{lastupdate} = "$now_ccyy_mm_dd $now_hour:$now_min:$now_sec" ;
&process_multi_select if $user_type ;
&db_min_upd($table,"id='$i{id}'") ;
} #------------------------------------------------------------------------------------------
sub users_validate {
my $user_exists = '' ; my $email_exists = '' ;
$i{username} = lc $i{username} ;
$i{username} =~ s/ //gi ;
$i{email} = lc $i{email} ;
$i{email} =~ s/ //gi ;
&db_min_ro($table,'*',"username='$i{username}' OR email='$i{email}'",'username','') ;
foreach my $id (keys %{$db{$table}}) {
if ($db{$table}{$id}{username} eq $i{username}) {
$user_exists = 1 ;
last;
}
if ($i{email} && $db{$table}{$id}{email} eq $i{email}) {
$email_exists = 1 ;
last;
}
}
if ($user_exists) {
$alert = &common_min_alert('warning',"USERNAME ALREADY EXISTS!",'ok') ;
%col_name = ();
&common_min_add_screen;
&common_min_screen1 unless $dialog ;
&screen1 if $dialog ;
}
if ($email_exists) {
$alert = &common_min_alert('warning',"EMAIL ALREADY EXISTS!",'ok') ;
%col_name = ();
&common_min_add_screen;
&common_min_screen1 unless $dialog ;
&screen1 if $dialog ;
}
} #------------------------------------------------------------------------------------------
1 ;