From e04349384778e07c624cf42afc36a1446318c906 Mon Sep 17 00:00:00 2001 From: Milan Date: Thu, 6 Sep 2018 23:06:48 +0200 Subject: [PATCH] fix template configuration --- lib/calcms/images.pm | 10 +- lib/calcms/markup.pm | 2 +- lib/calcms/studios.pm | 7 +- website/agenda/planung/audio_recordings.cgi | 3 +- website/agenda/planung/calendar.cgi | 9 +- website/agenda/planung/comment.cgi | 21 +- website/agenda/planung/create_events.cgi | 235 +-- website/agenda/planung/event.cgi | 1307 ++++++------ website/agenda/planung/event_history.cgi | 252 +-- website/agenda/planung/help.cgi | 76 +- website/agenda/planung/image.cgi | 647 +++--- website/agenda/planung/imageUpload.cgi | 509 +++-- website/agenda/planung/localization.cgi | 32 +- website/agenda/planung/notify_events.cgi | 350 ++-- website/agenda/planung/playout.cgi | 150 +- website/agenda/planung/projects.cgi | 399 ++-- website/agenda/planung/requestPassword.cgi | 179 +- website/agenda/planung/roles.cgi | 627 +++--- website/agenda/planung/selectEvent.cgi | 207 +- website/agenda/planung/selectSeries.cgi | 3 +- website/agenda/planung/series.cgi | 2023 ++++++++++--------- website/agenda/planung/show-playout.cgi | 9 +- website/agenda/planung/showImage.cgi | 149 +- website/agenda/planung/studio_timeslots.cgi | 544 ++--- website/agenda/planung/studios.cgi | 309 +-- website/agenda/planung/user_settings.cgi | 255 +-- website/agenda/planung/user_stats.cgi | 93 +- website/agenda/planung/users.cgi | 3 +- website/agenda/planung/work_time.cgi | 456 ++--- website/agenda/series.cgi | 103 +- 30 files changed, 4482 insertions(+), 4487 deletions(-) diff --git a/lib/calcms/images.pm b/lib/calcms/images.pm index 5346fe2..18b9f2a 100644 --- a/lib/calcms/images.pm +++ b/lib/calcms/images.pm @@ -204,7 +204,7 @@ sub update { set $set where $conditions }; - print STDERR Dumper($query) . Dumper($bind_values); + #print STDERR Dumper($query) . Dumper($bind_values); my $result = db::put( $dbh, $query, $bind_values ); images::setSeriesLabels( $dbh, $image ); @@ -491,10 +491,10 @@ sub setEventLabels { where image=? }; my $bind_values = [ $image->{licence}, $image->{filename} ]; - print STDERR Dumper($query) . Dumper($bind_values); + #print STDERR Dumper($query) . Dumper($bind_values); my $results = db::put( $dbh, $query, $bind_values ); - print STDERR Dumper($results) . " changes\n"; + #print STDERR Dumper($results) . " changes\n"; return $results; } @@ -521,10 +521,10 @@ sub setSeriesLabels { where series_image=? }; my $bind_values = [ $image->{licence}, $image->{filename} ]; - print STDERR Dumper($query) . Dumper($bind_values); + #print STDERR Dumper($query) . Dumper($bind_values); my $results = db::put( $dbh, $query, $bind_values ); - print STDERR Dumper($results) . " changes\n"; + #print STDERR Dumper($results) . " changes\n"; return $results; } diff --git a/lib/calcms/markup.pm b/lib/calcms/markup.pm index 553205b..2d30522 100644 --- a/lib/calcms/markup.pm +++ b/lib/calcms/markup.pm @@ -307,7 +307,7 @@ sub plain_to_xml { } sub fix_utf8 { - $_[0] = decode( 'cp1252', $_[0] ); + $_[0] = Encode::decode( 'cp1252', $_[0] ); return $_[0]; } diff --git a/lib/calcms/studios.pm b/lib/calcms/studios.pm index 475ecee..8cbe95d 100644 --- a/lib/calcms/studios.pm +++ b/lib/calcms/studios.pm @@ -53,7 +53,7 @@ sub get { my $query = ''; unless ( ( defined $condition->{project_id} ) && ( $condition->{project_id} ne '' ) ) { my $conditions = ''; - $conditions = " where " . join( " and ", @conditions ) if ( @conditions > 0 ); + $conditions = " where " . join( " and ", @conditions ) if ( scalar @conditions > 0 ); $query = qq{ select * from calcms_studios s @@ -62,11 +62,10 @@ sub get { }; } else { push @conditions, 's.id=ps.studio_id'; - push @conditions, 'ps.project_id=?'; push @bind_values, $condition->{project_id}; - my $conditions = ''; - $condition .= " where " . join( " and ", @conditions ) if ( scalar @conditions > 0 ); + + my $conditions = " where " . join( " and ", @conditions ); $query = qq{ select * from calcms_studios s, calcms_project_studios ps diff --git a/website/agenda/planung/audio_recordings.cgi b/website/agenda/planung/audio_recordings.cgi index 4b41825..790834a 100755 --- a/website/agenda/planung/audio_recordings.cgi +++ b/website/agenda/planung/audio_recordings.cgi @@ -77,7 +77,7 @@ my $request = { url => $ENV{QUERY_STRING} || '', params => { original => $params, - checked => check_params($params), + checked => check_params($config, $params), }, }; @@ -540,6 +540,7 @@ sub getEventDuration { } sub check_params { + my $config = shift; my $params = shift; my $checked = {}; diff --git a/website/agenda/planung/calendar.cgi b/website/agenda/planung/calendar.cgi index 5d8cdcc..541cbad 100755 --- a/website/agenda/planung/calendar.cgi +++ b/website/agenda/planung/calendar.cgi @@ -4,7 +4,7 @@ use warnings "all"; use strict; use Data::Dumper; use URI::Escape(); -use Encode(); +#use Encode(); use utf8(); use params(); use config(); @@ -52,8 +52,6 @@ $params->{project_id} = $user_presets->{project_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); $params->{expires} = $expires; -#print STDERR Dumper($params); - my $scriptName = 'calendar.cgi'; #add "all" studio to select box @@ -75,7 +73,7 @@ my $request = { url => $ENV{QUERY_STRING} || '', params => { original => $params, - checked => check_params( $params, $config ), + checked => check_params( $config, $params ), }, }; @@ -83,7 +81,6 @@ $request = uac::prepare_request( $request, $user_presets ); $params = $request->{params}->{checked}; -#print STDERR Dumper($request); if ( ( ( defined $params->{action} ) && ( ( $params->{action} eq 'show' ) @@ -1802,8 +1799,8 @@ sub getSeriesEvents { } sub check_params { - my $params = shift; my $config = shift; + my $params = shift; my $checked = {}; my $template = ''; diff --git a/website/agenda/planung/comment.cgi b/website/agenda/planung/comment.cgi index 573a9d7..e11c02a 100755 --- a/website/agenda/planung/comment.cgi +++ b/website/agenda/planung/comment.cgi @@ -32,7 +32,7 @@ my $r = shift; my $config = config::get('../config/config.cgi'); my $debug = $config->{system}->{debug}; my ( $user, $expires ) = auth::get_user( $cgi, $config ); -return if ( !defined $user ) || ( $user eq '' ) ; +return if ( !defined $user ) || ( $user eq '' ); my $user_presets = uac::get_user_presets( $config, @@ -52,7 +52,7 @@ my $request = { url => $ENV{QUERY_STRING} || '', params => { original => $params, - checked => check_params($params), + checked => check_params( $config, $params ), }, }; @@ -68,7 +68,7 @@ if ( ( params::isJson() ) || ( defined $params->{action} ) ) { } else { my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); - template::process($config, 'print', template::check($config, 'default.html'), $headerParams ); + template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); print q{ } unless (params::isJson); @@ -139,7 +139,7 @@ sub showComments { $events = comments::get_events( $dbh, $config, $request, $comments ); my $language = $config->{date}->{language} || 'en'; for my $event (@$events) { - $event->{start} = time::date_time_format($config, $event->{start}, $language ); + $event->{start} = time::date_time_format( $config, $event->{start}, $language ); $comment_count += $event->{comment_count} if ( defined $event->{comment_count} ); $event->{cache_base_url} = $config->{cache}->{base_url}; } @@ -157,20 +157,20 @@ sub showComments { $template_parameters->{projects} = project::get_with_dates($config); $template_parameters->{controllers} = $config->{controllers}; $template_parameters->{allow} = $permissions; - $template_parameters->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'comment' } ); + $template_parameters->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'comment' } ); #fill and output template - template::process($config, 'print', $params->{template}, $template_parameters ); + template::process( $config, 'print', $params->{template}, $template_parameters ); } sub modify_comments { - my $config = shift; + my $config = shift; my $request = shift; my $results = shift; my $language = $config->{date}->{language} || 'en'; for my $result (@$results) { - $result->{start_date_name} = time::date_format($config, $result->{created_at}, $language ); + $result->{start_date_name} = time::date_format( $config, $result->{created_at}, $language ); $result->{start_time_name} = time::time_format( $result->{created_at} ); $result->{ $result->{lock_status} } = 1; $result->{ $result->{news_status} } = 1; @@ -238,6 +238,7 @@ sub setRead { } sub check_params { + my $config = shift; my $params = shift; my $checked = {}; @@ -253,9 +254,9 @@ sub check_params { #template my $template = ''; if ( defined $checked->{action} ) { - $template = template::check($config, $params->{template}, 'edit_comment' ) if $checked->{action} eq 'showComment'; + $template = template::check( $config, $params->{template}, 'edit_comment' ) if $checked->{action} eq 'showComment'; } else { - $template = template::check($config, $params->{template}, 'comments' ); + $template = template::check( $config, $params->{template}, 'comments' ); } $checked->{template} = $template; diff --git a/website/agenda/planung/create_events.cgi b/website/agenda/planung/create_events.cgi index eece38c..91c7394 100755 --- a/website/agenda/planung/create_events.cgi +++ b/website/agenda/planung/create_events.cgi @@ -30,12 +30,12 @@ return if ( ( !defined $user ) || ( $user eq '' ) ); #print STDERR $params->{project_id}."\n"; my $user_presets = uac::get_user_presets( - $config, - { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - user => $user - } + $config, + { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + user => $user + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -45,11 +45,11 @@ $params->{project_id} = $user_presets->{project_id} #print STDERR $params->{project_id}."\n"; my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); @@ -58,7 +58,7 @@ $params = $request->{params}->{checked}; #process header my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); -template::process($config, 'print', template::check($config, 'default.html'), $headerParams ); +template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); return unless uac::check( $config, $params, $user_presets ) == 1; print q{ @@ -70,148 +70,149 @@ print q{ my $permissions = $request->{permissions}; unless ( $permissions->{create_event_from_schedule} == 1 ) { - uac::permissions_denied('create_event_from_schedule'); - return; + uac::permissions_denied('create_event_from_schedule'); + return; } if ( $params->{action} eq 'create_events' ) { - create_events( $config, $request ); + create_events( $config, $request ); } else { - show_events( $config, $request ); + show_events( $config, $request ); } sub show_events { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{assign_series_events} == 1 ) { - uac::permissions_denied('assign_series_events'); - return; - } - template::process($config, 'print', $params->{template}, $params ); + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{assign_series_events} == 1 ) { + uac::permissions_denied('assign_series_events'); + return; + } + template::process( $config, 'print', $params->{template}, $params ); } sub create_events { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{assign_series_events} == 1 ) { - uac::permissions_denied('assign_series_events'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{assign_series_events} == 1 ) { + uac::permissions_denied('assign_series_events'); + return; + } - print STDERR "create events\n"; + print STDERR "create events\n"; - my $project_id = $params->{project_id}; - my $studio_id = $params->{studio_id}; - my $from_date = $params->{from_date}; - my $till_date = $params->{till_date}; - my $duration = $params->{duration}; + my $project_id = $params->{project_id}; + my $studio_id = $params->{studio_id}; + my $from_date = $params->{from_date}; + my $till_date = $params->{till_date}; + my $duration = $params->{duration}; - $from_date = time::time_to_datetime(); - if ( $from_date =~ /(\d\d\d\d\-\d\d\-\d\d \d\d)/ ) { - $from_date = $1 . ':00'; - } - $till_date = time::add_days_to_datetime( $from_date, $duration ); - if ( $from_date =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) { - $from_date = $1; - } - if ( $till_date =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) { - $till_date = $1; - } - $params->{from_date} = $from_date; - $params->{till_date} = $till_date; + $from_date = time::time_to_datetime(); + if ( $from_date =~ /(\d\d\d\d\-\d\d\-\d\d \d\d)/ ) { + $from_date = $1 . ':00'; + } + $till_date = time::add_days_to_datetime( $from_date, $duration ); + if ( $from_date =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) { + $from_date = $1; + } + if ( $till_date =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) { + $till_date = $1; + } + $params->{from_date} = $from_date; + $params->{till_date} = $till_date; - print STDERR "create events from $from_date to $till_date\n"; + print STDERR "create events from $from_date to $till_date\n"; - my $dates = series_dates::getDatesWithoutEvent( - $config, - { - project_id => $project_id, - studio_id => $studio_id, - from => $from_date, - till => $till_date - } - ); - print STDERR "
found " . ( scalar @$dates ) . " dates\n";
-	my $events = [];
-	for my $date (@$dates) {
+    my $dates = series_dates::getDatesWithoutEvent(
+        $config,
+        {
+            project_id => $project_id,
+            studio_id  => $studio_id,
+            from       => $from_date,
+            till       => $till_date
+        }
+    );
+    print STDERR "
found " . ( scalar @$dates ) . " dates\n";
+    my $events = [];
+    for my $date (@$dates) {
 
-		#print STDERR $date->{start}."\n";
-		push @$events, createEvent( $config, $request, $date );
-	}
-	$params->{created_events} = $events;
-	$params->{created_total}  = scalar(@$events);
-	template::process($config,  'print', $params->{template}, $params );
+        #print STDERR $date->{start}."\n";
+        push @$events, createEvent( $config, $request, $date );
+    }
+    $params->{created_events} = $events;
+    $params->{created_total}  = scalar(@$events);
+    template::process( $config, 'print', $params->{template}, $params );
 }
 
 sub createEvent {
-	my $config  = shift;
-	my $request = shift;
-	my $date    = shift;
+    my $config  = shift;
+    my $request = shift;
+    my $date    = shift;
 
-	my $permissions = $request->{permissions};
-	my $user        = $request->{user};
+    my $permissions = $request->{permissions};
+    my $user        = $request->{user};
 
-	$date->{show_new_event_from_schedule} = 1;
-	unless ( $permissions->{create_event_from_schedule} == 1 ) {
-		uac::permissions_denied('create_event_from_schedule');
-		return;
-	}
+    $date->{show_new_event_from_schedule} = 1;
+    unless ( $permissions->{create_event_from_schedule} == 1 ) {
+        uac::permissions_denied('create_event_from_schedule');
+        return;
+    }
 
-	$date->{start_date} = $date->{start};
-	my $event = eventOps::getNewEvent( $config, $date, 'show_new_event_from_schedule' );
+    $date->{start_date} = $date->{start};
+    my $event = eventOps::getNewEvent( $config, $date, 'show_new_event_from_schedule' );
 
-	return undef unless defined $event;
+    return undef unless defined $event;
 
-	$event->{start_date} = $event->{start};
-	eventOps::createEvent( $request, $event, 'create_event_from_schedule' );
-	print STDERR Dumper($date);
-	return $event;
+    $event->{start_date} = $event->{start};
+    eventOps::createEvent( $request, $event, 'create_event_from_schedule' );
+    print STDERR Dumper($date);
+    return $event;
 
 }
 
 sub check_params {
-	my $params = shift;
+    my $config = shift;
+    my $params = shift;
 
-	my $checked = {};
+    my $checked = {};
 
-	my $debug = $params->{debug} || '';
-	if ( $debug =~ /([a-z\_\,]+)/ ) {
-		$debug = $1;
-	}
-	$checked->{debug} = $debug;
+    my $debug = $params->{debug} || '';
+    if ( $debug =~ /([a-z\_\,]+)/ ) {
+        $debug = $1;
+    }
+    $checked->{debug} = $debug;
 
-	#actions and roles
-	$checked->{action} = '';
-	if ( defined $params->{action} ) {
-		if ( $params->{action} =~ /^(create_events)$/ ) {
-			$checked->{action} = $params->{action};
-		}
-	}
+    #actions and roles
+    $checked->{action} = '';
+    if ( defined $params->{action} ) {
+        if ( $params->{action} =~ /^(create_events)$/ ) {
+            $checked->{action} = $params->{action};
+        }
+    }
 
-	#numeric values
-	$checked->{exclude}  = 0;
-	$checked->{duration} = 28;
-	for my $param ( 'id', 'project_id', 'studio_id', 'duration' ) {
-		if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) {
-			$checked->{$param} = $params->{$param};
-		}
-	}
+    #numeric values
+    $checked->{exclude}  = 0;
+    $checked->{duration} = 28;
+    for my $param ( 'id', 'project_id', 'studio_id', 'duration' ) {
+        if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) {
+            $checked->{$param} = $params->{$param};
+        }
+    }
 
-	if ( defined $checked->{studio_id} ) {
-		$checked->{default_studio_id} = $checked->{studio_id};
-	} else {
-		$checked->{studio_id} = -1;
-	}
+    if ( defined $checked->{studio_id} ) {
+        $checked->{default_studio_id} = $checked->{studio_id};
+    } else {
+        $checked->{studio_id} = -1;
+    }
 
-	$checked->{template} = template::check($config,  $params->{template}, 'create_events' );
+    $checked->{template} = template::check( $config, $params->{template}, 'create_events' );
 
-	return $checked;
+    return $checked;
 }
 
diff --git a/website/agenda/planung/event.cgi b/website/agenda/planung/event.cgi
index 7ffdca3..87cef7f 100755
--- a/website/agenda/planung/event.cgi
+++ b/website/agenda/planung/event.cgi
@@ -43,12 +43,12 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config );
 return if ( ( !defined $user ) || ( $user eq '' ) );
 
 my $user_presets = uac::get_user_presets(
-	$config,
-	{
-		user       => $user,
-		project_id => $params->{project_id},
-		studio_id  => $params->{studio_id}
-	}
+    $config,
+    {
+        user       => $user,
+        project_id => $params->{project_id},
+        studio_id  => $params->{studio_id}
+    }
 );
 $params->{default_studio_id} = $user_presets->{studio_id};
 $params->{studio_id}         = $params->{default_studio_id}
@@ -57,11 +57,11 @@ $params->{project_id} = $user_presets->{project_id}
   if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) );
 
 my $request = {
-	url => $ENV{QUERY_STRING} || '',
-	params => {
-		original => $params,
-		checked  => check_params($params),
-	},
+    url => $ENV{QUERY_STRING} || '',
+    params => {
+        original => $params,
+        checked  => check_params( $config, $params ),
+    },
 };
 
 #print STDERR Dumper($request)."\n";
@@ -73,9 +73,9 @@ $params = $request->{params}->{checked};
 
 #show header
 unless ( params::isJson() ) {
-	my $headerParams = uac::set_template_permissions( $request->{permissions}, $params );
-	$headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } );
-	template::process($config,  'print', template::check($config, 'default.html'), $headerParams );
+    my $headerParams = uac::set_template_permissions( $request->{permissions}, $params );
+    $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } );
+    template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams );
 }
 return unless defined uac::check( $config, $params, $user_presets );
 
@@ -86,774 +86,775 @@ print q{
 } unless (params::isJson);
 
 if ( defined $params->{action} ) {
-	if (   ( $params->{action} eq 'show_new_event' )
-		|| ( $params->{action} eq 'show_new_event_from_schedule' ) )
-	{
-		show_new_event( $config, $request );
-		return;
-	}
+    if (   ( $params->{action} eq 'show_new_event' )
+        || ( $params->{action} eq 'show_new_event_from_schedule' ) )
+    {
+        show_new_event( $config, $request );
+        return;
+    }
 
-	if (   ( $params->{action} eq 'create_event' )
-		|| ( $params->{action} eq 'create_event_from_schedule' ) )
-	{
-		$params->{event_id} = create_event( $config, $request );
-		unless ( defined $params->{event_id} ) {
-			uac::print_error("failed");
-			return;
-		}
-	}
-	if ( $params->{action} eq 'get_json' ) {
-		getJson( $config, $request );
-		return;
-	}
-	if ( $params->{action} eq 'delete' ) { delete_event( $config, $request ) }
-	if ( $params->{action} eq 'save' ) { save_event( $config, $request ) }
-	if ( $params->{action} eq 'download' ) { download( $config, $request ) }
+    if (   ( $params->{action} eq 'create_event' )
+        || ( $params->{action} eq 'create_event_from_schedule' ) )
+    {
+        $params->{event_id} = create_event( $config, $request );
+        unless ( defined $params->{event_id} ) {
+            uac::print_error("failed");
+            return;
+        }
+    }
+    if ( $params->{action} eq 'get_json' ) {
+        getJson( $config, $request );
+        return;
+    }
+    if ( $params->{action} eq 'delete' ) { delete_event( $config, $request ) }
+    if ( $params->{action} eq 'save' ) { save_event( $config, $request ) }
+    if ( $params->{action} eq 'download' ) { download( $config, $request ) }
 }
 $config->{access}->{write} = 0;
 show_event( $config, $request );
 
 #show existing event for edit
 sub show_event {
-	my $config  = shift;
-	my $request = shift;
+    my $config  = shift;
+    my $request = shift;
 
-	my $params      = $request->{params}->{checked};
-	my $permissions = $request->{permissions};
+    my $params      = $request->{params}->{checked};
+    my $permissions = $request->{permissions};
 
-	for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) {
-		unless ( defined $params->{$attr} ) {
-			uac::print_error( "missing " . $attr . " to show event" );
-			return;
-		}
-	}
+    for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) {
+        unless ( defined $params->{$attr} ) {
+            uac::print_error( "missing " . $attr . " to show event" );
+            return;
+        }
+    }
 
-	my $result = series_events::check_permission(
-		$request,
-		{
-			permission => 'update_event_of_series,update_event_of_others',
-			check_for  => [ 'studio', 'user', 'series', 'events' ],
-			project_id => $params->{project_id},
-			studio_id  => $params->{studio_id},
-			series_id  => $params->{series_id},
-			event_id   => $params->{event_id}
-		}
-	);
-	unless ( $result eq '1' ) {
-		uac::print_error($result);
-		return undef;
-	}
-	$permissions->{update_event} = 1;
-	print STDERR "check series permission ok\n";
+    my $result = series_events::check_permission(
+        $request,
+        {
+            permission => 'update_event_of_series,update_event_of_others',
+            check_for  => [ 'studio', 'user', 'series', 'events' ],
+            project_id => $params->{project_id},
+            studio_id  => $params->{studio_id},
+            series_id  => $params->{series_id},
+            event_id   => $params->{event_id}
+        }
+    );
+    unless ( $result eq '1' ) {
+        uac::print_error($result);
+        return undef;
+    }
+    $permissions->{update_event} = 1;
+    print STDERR "check series permission ok\n";
 
-	#TODO: move to JS
-	my @durations = ();
-	for my $duration ( @{ time::getDurations() } ) {
-		my $entry = {
-			name  => sprintf( "%02d:%02d", $duration / 60, $duration % 60 ),
-			value => $duration
-		};
-		push @durations, $entry;
-	}
+    #TODO: move to JS
+    my @durations = ();
+    for my $duration ( @{ time::getDurations() } ) {
+        my $entry = {
+            name  => sprintf( "%02d:%02d", $duration / 60, $duration % 60 ),
+            value => $duration
+        };
+        push @durations, $entry;
+    }
 
-	my $event = series::get_event(
-		$config,
-		{
-			project_id => $params->{project_id},
-			studio_id  => $params->{studio_id},
-			series_id  => $params->{series_id},
-			event_id   => $params->{event_id}
-		}
-	);
-	unless ( defined $event ) {
-		uac::print_error("event not found");
-	}
+    my $event = series::get_event(
+        $config,
+        {
+            project_id => $params->{project_id},
+            studio_id  => $params->{studio_id},
+            series_id  => $params->{series_id},
+            event_id   => $params->{event_id}
+        }
+    );
+    unless ( defined $event ) {
+        uac::print_error("event not found");
+    }
 
-	#print STDERR "show:".Dumper($event->{draft});
-	#print STDERR "show event".Dumper($event);
+    #print STDERR "show:".Dumper($event->{draft});
+    #print STDERR "show event".Dumper($event);
 
-	my $editLock = 1;
-	if ( ( defined $permissions->{update_event_after_week} ) && ( $permissions->{update_event_after_week} eq '1' ) ) {
-		$editLock = 0;
-	} else {
-		$editLock = 0
-		  if (
-			series::is_event_older_than_days(
-				$config,
-				{
-					project_id => $params->{project_id},
-					studio_id  => $params->{studio_id},
-					series_id  => $params->{series_id},
-					event_id   => $params->{event_id},
-					max_age    => 14
-				}
-			) == 0
-		  );
-	}
+    my $editLock = 1;
+    if ( ( defined $permissions->{update_event_after_week} ) && ( $permissions->{update_event_after_week} eq '1' ) ) {
+        $editLock = 0;
+    } else {
+        $editLock = 0
+          if (
+            series::is_event_older_than_days(
+                $config,
+                {
+                    project_id => $params->{project_id},
+                    studio_id  => $params->{studio_id},
+                    series_id  => $params->{series_id},
+                    event_id   => $params->{event_id},
+                    max_age    => 14
+                }
+            ) == 0
+          );
+    }
 
-	# for rerun, deprecated
-	if ( defined $params->{source_event_id} ) {
-		my $event2 = series::get_event(
-			$config,
-			{
-				allow_any => 1,
+    # for rerun, deprecated
+    if ( defined $params->{source_event_id} ) {
+        my $event2 = series::get_event(
+            $config,
+            {
+                allow_any => 1,
 
-				#project_id => $params->{project_id},
-				#studio_id  => $params->{studio_id},
-				#series_id  => $params->{series_id},
-				event_id => $params->{source_event_id},
-				draft    => 0,
-			}
-		);
-		if ( defined $event2 ) {
-			for my $attr (
-				'title',        'user_title',         'excerpt',            'user_excerpt',
-				'content',      'topic',              'image',              'image_label',
-				'series_image', 'series_image_label', 'live no_event_sync', 'podcast_url',
-				'archive_url'
-			  )
-			{
-				$event->{$attr} = $event2->{$attr};
-			}
-			$event->{recurrence} = eventOps::getRecurrenceBaseId($event2);
-			$event->{rerun}      = 1;
-		}
-	}
+                #project_id => $params->{project_id},
+                #studio_id  => $params->{studio_id},
+                #series_id  => $params->{series_id},
+                event_id => $params->{source_event_id},
+                draft    => 0,
+            }
+        );
+        if ( defined $event2 ) {
+            for my $attr (
+                'title',        'user_title',         'excerpt',            'user_excerpt',
+                'content',      'topic',              'image',              'image_label',
+                'series_image', 'series_image_label', 'live no_event_sync', 'podcast_url',
+                'archive_url'
+              )
+            {
+                $event->{$attr} = $event2->{$attr};
+            }
+            $event->{recurrence} = eventOps::getRecurrenceBaseId($event2);
+            $event->{rerun}      = 1;
+        }
+    }
 
-	$event->{rerun} = 1 if ( $event->{rerun} =~ /a-z/ );
-	$event->{series_id} = $params->{series_id};
+    $event->{rerun} = 1 if ( $event->{rerun} =~ /a-z/ );
+    $event->{series_id} = $params->{series_id};
 
-	$event->{duration} = events::get_duration( $config, $event );
-	$event->{durations} = \@durations;
-	if ( defined $event->{duration} ) {
-		for my $duration ( @{ $event->{durations} } ) {
-			$duration->{selected} = 1 if ( $event->{duration} eq $duration->{value} );
-		}
-	}
-	$event->{start} =~ s/(\d\d:\d\d)\:\d\d/$1/;
-	$event->{end} =~ s/(\d\d:\d\d)\:\d\d/$1/;
+    $event->{duration} = events::get_duration( $config, $event );
+    $event->{durations} = \@durations;
+    if ( defined $event->{duration} ) {
+        for my $duration ( @{ $event->{durations} } ) {
+            $duration->{selected} = 1 if ( $event->{duration} eq $duration->{value} );
+        }
+    }
+    $event->{start} =~ s/(\d\d:\d\d)\:\d\d/$1/;
+    $event->{end} =~ s/(\d\d:\d\d)\:\d\d/$1/;
 
-	# overwrite event with old one
-	#my $series_events=get_series_events($config,{
-	#    project_id => $params->{project_id},
-	#    studio_id  => $params->{studio_id},
-	#    series_id  => $params->{series_id}
-	#});
-	#my @series_events=();
-	#for my $series_event (@$series_events){
-	#    push @series_events, $series_event if ($series_event->{start} lt $event->{start});
-	#}
-	#$params->{series_events}=\@series_events;
+    # overwrite event with old one
+    #my $series_events=get_series_events($config,{
+    #    project_id => $params->{project_id},
+    #    studio_id  => $params->{studio_id},
+    #    series_id  => $params->{series_id}
+    #});
+    #my @series_events=();
+    #for my $series_event (@$series_events){
+    #    push @series_events, $series_event if ($series_event->{start} lt $event->{start});
+    #}
+    #$params->{series_events}=\@series_events;
 
-	# get all series
-	#my $series=series::get(
-	#    $config,{
-	#        project_id => $params->{project_id},
-	#        studio_id  => $params->{studio_id},
-	#    }
-	#);
-	#for my $serie (@$series){
-	#    $serie->{selected}=1 if $params->{series_id}==$serie->{series_id};
-	#}
-	#$params->{series}=$series;
+    # get all series
+    #my $series=series::get(
+    #    $config,{
+    #        project_id => $params->{project_id},
+    #        studio_id  => $params->{studio_id},
+    #    }
+    #);
+    #for my $serie (@$series){
+    #    $serie->{selected}=1 if $params->{series_id}==$serie->{series_id};
+    #}
+    #$params->{series}=$series;
 
-	# get event series
-	my $series = series::get(
-		$config,
-		{
-			project_id => $params->{project_id},
-			studio_id  => $params->{studio_id},
-			series_id  => $params->{series_id}
-		}
-	);
-	if ( scalar(@$series) == 1 ) {
-		$event->{has_single_events} = $series->[0]->{has_single_events};
-	}
+    # get event series
+    my $series = series::get(
+        $config,
+        {
+            project_id => $params->{project_id},
+            studio_id  => $params->{studio_id},
+            series_id  => $params->{series_id}
+        }
+    );
+    if ( scalar(@$series) == 1 ) {
+        $event->{has_single_events} = $series->[0]->{has_single_events};
+    }
 
-	#$event->{rerun}=1 if ((defined $event->{rerun})&&($event->{rerun}ne'0')&&($event->{rerun}ne''));
+    #$event->{rerun}=1 if ((defined $event->{rerun})&&($event->{rerun}ne'0')&&($event->{rerun}ne''));
 
-	my $users = series::get_users(
-		$config,
-		{
-			project_id => $params->{project_id},
-			studio_id  => $params->{studio_id},
-			series_id  => $params->{series_id}
-		}
-	);
-	$params->{series_users} = $users;
+    my $users = series::get_users(
+        $config,
+        {
+            project_id => $params->{project_id},
+            studio_id  => $params->{studio_id},
+            series_id  => $params->{series_id}
+        }
+    );
+    $params->{series_users} = $users;
 
-	#print STDERR Dumper($users);
-	$params->{series_users_email_list} = join( ',', ( map { $_->{email} } (@$users) ) );
-	$params->{series_user_names} = join( ' und ', ( map { ( split( /\s+/, $_->{full_name} ) )[0] } (@$users) ) );
+    #print STDERR Dumper($users);
+    $params->{series_users_email_list} = join( ',', ( map { $_->{email} } (@$users) ) );
+    $params->{series_user_names} = join( ' und ', ( map { ( split( /\s+/, $_->{full_name} ) )[0] } (@$users) ) );
 
-	for my $permission ( sort keys %{$permissions} ) {
-		$params->{'allow'}->{$permission} = $permissions->{$permission};
-	}
+    for my $permission ( sort keys %{$permissions} ) {
+        $params->{'allow'}->{$permission} = $permissions->{$permission};
+    }
 
-	for my $key ( keys %$event ) {
-		$params->{$key} = $event->{$key};
-	}
-	$params->{event_edited} = 1 if ( ( $params->{action} eq 'save' ) && ( !( defined $params->{error} ) ) );
-	$params->{event_edited} = 1 if ( $params->{action} eq 'delete' );
-	$params->{event_edited} = 1 if ( ( $params->{action} eq 'create_event' ) && ( !( defined $params->{error} ) ) );
-	$params->{event_edited} = 1 if ( ( $params->{action} eq 'create_event_from_schedule' ) && ( !( defined $params->{error} ) ) );
-	$params->{user} = $params->{presets}->{user};
+    for my $key ( keys %$event ) {
+        $params->{$key} = $event->{$key};
+    }
+    $params->{event_edited} = 1 if ( ( $params->{action} eq 'save' ) && ( !( defined $params->{error} ) ) );
+    $params->{event_edited} = 1 if ( $params->{action} eq 'delete' );
+    $params->{event_edited} = 1 if ( ( $params->{action} eq 'create_event' ) && ( !( defined $params->{error} ) ) );
+    $params->{event_edited} = 1 if ( ( $params->{action} eq 'create_event_from_schedule' ) && ( !( defined $params->{error} ) ) );
+    $params->{user} = $params->{presets}->{user};
 
-	# remove all edit permissions if event is over for more than 2 weeks
-	if ( $editLock == 1 ) {
-		for my $key ( keys %$params ) {
-			unless ( $key =~ /create_download/ ) {
-				delete $params->{allow}->{$key} if $key =~ /^(update|delete|create|assign)/;
-			}
-		}
-		$params->{edit_lock} = 1;
-	}
+    # remove all edit permissions if event is over for more than 2 weeks
+    if ( $editLock == 1 ) {
+        for my $key ( keys %$params ) {
+            unless ( $key =~ /create_download/ ) {
+                delete $params->{allow}->{$key} if $key =~ /^(update|delete|create|assign)/;
+            }
+        }
+        $params->{edit_lock} = 1;
+    }
 
-	#print STDERR Dumper($params);
-	$params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'event' } );
-	template::process($config,  'print', template::check($config, 'edit_event'), $params );
+    #print STDERR Dumper($params);
+    $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'event' } );
+    template::process( $config, 'print', template::check( $config, 'edit_event' ), $params );
 }
 
 sub getJson {
-	my $config  = shift;
-	my $request = shift;
+    my $config  = shift;
+    my $request = shift;
 
-	my $params      = $request->{params}->{checked};
-	my $permissions = $request->{permissions};
+    my $params      = $request->{params}->{checked};
+    my $permissions = $request->{permissions};
 
-	for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) {
-		unless ( defined $params->{$attr} ) {
-			uac::print_error( "missing " . $attr . " to show event" );
-			return;
-		}
-	}
+    for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) {
+        unless ( defined $params->{$attr} ) {
+            uac::print_error( "missing " . $attr . " to show event" );
+            return;
+        }
+    }
 
-	my $result = series_events::check_permission(
-		$request,
-		{
-			permission => 'update_event_of_series,update_event_of_others',
-			check_for  => [ 'studio', 'user', 'series', 'events' ],
-			project_id => $params->{project_id},
-			studio_id  => $params->{studio_id},
-			series_id  => $params->{series_id},
-			event_id   => $params->{event_id}
-		}
-	);
-	unless ( $result eq '1' ) {
-		uac::print_error($result);
-		return undef;
-	}
-	$permissions->{update_event} = 1;
+    my $result = series_events::check_permission(
+        $request,
+        {
+            permission => 'update_event_of_series,update_event_of_others',
+            check_for  => [ 'studio', 'user', 'series', 'events' ],
+            project_id => $params->{project_id},
+            studio_id  => $params->{studio_id},
+            series_id  => $params->{series_id},
+            event_id   => $params->{event_id}
+        }
+    );
+    unless ( $result eq '1' ) {
+        uac::print_error($result);
+        return undef;
+    }
+    $permissions->{update_event} = 1;
 
-	my $event = series::get_event(
-		$config,
-		{
-			project_id => $params->{project_id},
-			studio_id  => $params->{studio_id},
-			series_id  => $params->{series_id},
-			event_id   => $params->{event_id}
-		}
-	);
-	unless ( defined $event ) {
-		uac::print_error("event not found");
-	}
+    my $event = series::get_event(
+        $config,
+        {
+            project_id => $params->{project_id},
+            studio_id  => $params->{studio_id},
+            series_id  => $params->{series_id},
+            event_id   => $params->{event_id}
+        }
+    );
+    unless ( defined $event ) {
+        uac::print_error("event not found");
+    }
 
-	$event->{rerun} = 1 if ( $event->{rerun} =~ /a-z/ );
-	$event->{series_id} = $params->{series_id};
-	$event->{start} =~ s/(\d\d:\d\d)\:\d\d/$1/;
-	$event->{end} =~ s/(\d\d:\d\d)\:\d\d/$1/;
+    $event->{rerun} = 1 if ( $event->{rerun} =~ /a-z/ );
+    $event->{series_id} = $params->{series_id};
+    $event->{start} =~ s/(\d\d:\d\d)\:\d\d/$1/;
+    $event->{end} =~ s/(\d\d:\d\d)\:\d\d/$1/;
 
-	# get event series
-	my $series = series::get(
-		$config,
-		{
-			project_id => $params->{project_id},
-			studio_id  => $params->{studio_id},
-			series_id  => $params->{series_id}
-		}
-	);
+    # get event series
+    my $series = series::get(
+        $config,
+        {
+            project_id => $params->{project_id},
+            studio_id  => $params->{studio_id},
+            series_id  => $params->{series_id}
+        }
+    );
 
-	if ( scalar @$series == 1 ) {
-		my $serie = $series->[0];
-		$event->{has_single_events} = $serie->{has_single_events};
-		if ( $event->{has_single_events} eq '1' ) {
-			$event->{has_single_events} = 1;
-			$event->{series_name}       = undef;
-			$event->{episode}           = undef;
-		}
-	}
+    if ( scalar @$series == 1 ) {
+        my $serie = $series->[0];
+        $event->{has_single_events} = $serie->{has_single_events};
+        if ( $event->{has_single_events} eq '1' ) {
+            $event->{has_single_events} = 1;
+            $event->{series_name}       = undef;
+            $event->{episode}           = undef;
+        }
+    }
 
-	$event->{duration} = events::get_duration( $config, $event );
+    $event->{duration} = events::get_duration( $config, $event );
 
-	# for rerun
-	if ( $params->{get_rerun} == 1 ) {
-		$event->{rerun}      = 1;
-		$event->{recurrence} = eventOps::getRecurrenceBaseId($event);
+    # for rerun
+    if ( $params->{get_rerun} == 1 ) {
+        $event->{rerun}      = 1;
+        $event->{recurrence} = eventOps::getRecurrenceBaseId($event);
 
-		#$event=events::calc_dates($config, $event);
-	}
+        #$event=events::calc_dates($config, $event);
+    }
 
-	#print to_json($event);
-	template::process($config,  'print', 'json-p', $event );
+    #print to_json($event);
+    template::process( $config, 'print', 'json-p', $event );
 }
 
 #show new event from schedule
 sub show_new_event {
-	my $config  = shift;
-	my $request = shift;
+    my $config  = shift;
+    my $request = shift;
 
-	my $params      = $request->{params}->{checked};
-	my $permissions = $request->{permissions};
+    my $params      = $request->{params}->{checked};
+    my $permissions = $request->{permissions};
 
-	if ( $params->{action} eq 'show_new_event' ) {
-		$params->{show_new_event} = 1;
-		unless ( $permissions->{create_event} == 1 ) {
-			uac::permissions_denied('create_event');
-			return;
-		}
-	} elsif ( $params->{action} eq 'show_new_event_from_schedule' ) {
-		$params->{show_new_event_from_schedule} = 1;
-		unless ( $permissions->{create_event_from_schedule} == 1 ) {
-			uac::permissions_denied('create_event_from_schedule');
-			return;
-		}
-	} else {
-		uac::print_error("invalid action");
-		return 1;
-	}
+    if ( $params->{action} eq 'show_new_event' ) {
+        $params->{show_new_event} = 1;
+        unless ( $permissions->{create_event} == 1 ) {
+            uac::permissions_denied('create_event');
+            return;
+        }
+    } elsif ( $params->{action} eq 'show_new_event_from_schedule' ) {
+        $params->{show_new_event_from_schedule} = 1;
+        unless ( $permissions->{create_event_from_schedule} == 1 ) {
+            uac::permissions_denied('create_event_from_schedule');
+            return;
+        }
+    } else {
+        uac::print_error("invalid action");
+        return 1;
+    }
 
-	my $event = eventOps::getNewEvent( $config, $params, $params->{action} );
+    my $event = eventOps::getNewEvent( $config, $params, $params->{action} );
 
-	#copy event to template params
-	for my $key ( keys %$event ) {
-		$params->{$key} = $event->{$key};
-	}
+    #copy event to template params
+    for my $key ( keys %$event ) {
+        $params->{$key} = $event->{$key};
+    }
 
-	#add duration selectbox
-	#TODO: move to javascript
-	my @durations = ();
-	for my $duration ( @{ time::getDurations() } ) {
-		my $entry = {
-			name  => sprintf( "%02d:%02d", $duration / 60, $duration % 60 ),
-			value => $duration
-		};
-		push @durations, $entry;
-	}
-	$params->{durations} = \@durations;
+    #add duration selectbox
+    #TODO: move to javascript
+    my @durations = ();
+    for my $duration ( @{ time::getDurations() } ) {
+        my $entry = {
+            name  => sprintf( "%02d:%02d", $duration / 60, $duration % 60 ),
+            value => $duration
+        };
+        push @durations, $entry;
+    }
+    $params->{durations} = \@durations;
 
-	#set duration preset
-	for my $duration ( @{ $params->{durations} } ) {
-		$duration->{selected} = 1 if ( $event->{duration} eq $duration->{value} );
-	}
+    #set duration preset
+    for my $duration ( @{ $params->{durations} } ) {
+        $duration->{selected} = 1 if ( $event->{duration} eq $duration->{value} );
+    }
 
-	#check user permissions and then:
-	$permissions->{update_event} = 1;
+    #check user permissions and then:
+    $permissions->{update_event} = 1;
 
-	#set permissions to template
-	for my $permission ( keys %{ $request->{permissions} } ) {
-		$params->{'allow'}->{$permission} = $request->{permissions}->{$permission};
-	}
+    #set permissions to template
+    for my $permission ( keys %{ $request->{permissions} } ) {
+        $params->{'allow'}->{$permission} = $request->{permissions}->{$permission};
+    }
 
-	$params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'event,comment' } );
-	template::process( $config, 'print', template::check($config, 'edit_event'), $params );
+    $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'event,comment' } );
+    template::process( $config, 'print', template::check( $config, 'edit_event' ), $params );
 
-	#print '
'.Dumper($params).'
'; + #print '
'.Dumper($params).'
'; } sub delete_event { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - my $event = {}; - for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { - unless ( defined $params->{$attr} ) { - uac::print_error( "missing " . $attr ); - return; - } - $event->{$attr} = $params->{$attr}; - } + my $event = {}; + for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { + unless ( defined $params->{$attr} ) { + uac::print_error( "missing " . $attr ); + return; + } + $event->{$attr} = $params->{$attr}; + } - my $result = series_events::check_permission( - $request, - { - permission => 'delete_event', - check_for => [ 'studio', 'user', 'series', 'events', 'event_age' ], - project_id => $params->{project_id}, - studio_id => $event->{studio_id}, - series_id => $event->{series_id}, - event_id => $event->{event_id} - } - ); - unless ( $result eq '1' ) { - uac::print_error($result); - return undef; - } + my $result = series_events::check_permission( + $request, + { + permission => 'delete_event', + check_for => [ 'studio', 'user', 'series', 'events', 'event_age' ], + project_id => $params->{project_id}, + studio_id => $event->{studio_id}, + series_id => $event->{series_id}, + event_id => $event->{event_id} + } + ); + unless ( $result eq '1' ) { + uac::print_error($result); + return undef; + } - $config->{access}->{write} = 1; + $config->{access}->{write} = 1; - #set user to be added to history - $event->{user} = $params->{presets}->{user}; - $result = series_events::delete_event( $config, $event ); - unless ( defined $result ) { - uac::print_error('could not delete event'); - return undef; - } + #set user to be added to history + $event->{user} = $params->{presets}->{user}; + $result = series_events::delete_event( $config, $event ); + unless ( defined $result ) { + uac::print_error('could not delete event'); + return undef; + } - user_stats::increase( - $config, - 'delete_events', - { - project_id => $event->{project_id}, - studio_id => $event->{studio_id}, - series_id => $event->{series_id}, - user => $event->{user} - } - ); + user_stats::increase( + $config, + 'delete_events', + { + project_id => $event->{project_id}, + studio_id => $event->{studio_id}, + series_id => $event->{series_id}, + user => $event->{user} + } + ); - uac::print_info("event deleted"); + uac::print_info("event deleted"); } #save existing event sub save_event { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { - unless ( defined $params->{$attr} ) { - uac::print_error( "missing " . $attr . " to show event" ); - return; - } - } + for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { + unless ( defined $params->{$attr} ) { + uac::print_error( "missing " . $attr . " to show event" ); + return; + } + } - #print Dumper($params); - my $start = $params->{start_date}; - my $end = time::add_minutes_to_datetime( $params->{start_date}, $params->{duration} ); + #print Dumper($params); + my $start = $params->{start_date}; + my $end = time::add_minutes_to_datetime( $params->{start_date}, $params->{duration} ); - #check permissions - my $options = { - permission => 'update_event_of_series,update_event_of_others', - check_for => [ 'studio', 'user', 'series', 'events', 'studio_timeslots', 'event_age' ], - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - series_id => $params->{series_id}, - event_id => $params->{event_id}, - draft => $params->{draft}, - start => $start, - end => $end, - }; + #check permissions + my $options = { + permission => 'update_event_of_series,update_event_of_others', + check_for => [ 'studio', 'user', 'series', 'events', 'studio_timeslots', 'event_age' ], + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + series_id => $params->{series_id}, + event_id => $params->{event_id}, + draft => $params->{draft}, + start => $start, + end => $end, + }; - my $result = series_events::check_permission( $request, $options ); - unless ( $result eq '1' ) { - uac::print_error($result); - return; - } + my $result = series_events::check_permission( $request, $options ); + unless ( $result eq '1' ) { + uac::print_error($result); + return; + } - #changed columns depending on permissions - my $entry = { id => $params->{event_id} }; + #changed columns depending on permissions + my $entry = { id => $params->{event_id} }; - my $found = 0; + my $found = 0; - #content fields - for my $key ( - 'content', 'topic', 'title', 'excerpt', 'episode', 'image', - 'series_image', 'image_label', 'series_image_label', 'podcast_url', 'archive_url' - ) - { - next unless defined $permissions->{ 'update_event_field_' . $key }; - if ( $permissions->{ 'update_event_field_' . $key } eq '1' ) { - next unless defined $params->{$key}; - $entry->{$key} = $params->{$key}; - $found++; - } - } + #content fields + for my $key ( + 'content', 'topic', 'title', 'excerpt', 'episode', 'image', + 'series_image', 'image_label', 'series_image_label', 'podcast_url', 'archive_url' + ) + { + next unless defined $permissions->{ 'update_event_field_' . $key }; + if ( $permissions->{ 'update_event_field_' . $key } eq '1' ) { + next unless defined $params->{$key}; + $entry->{$key} = $params->{$key}; + $found++; + } + } - #print STDERR "event to update1: ".Dumper($entry); + #print STDERR "event to update1: ".Dumper($entry); - #user extension fields - for my $key ( 'title', 'excerpt' ) { - next unless defined $permissions->{ 'update_event_field_' . $key . '_extension' }; - if ( $permissions->{ 'update_event_field_' . $key . '_extension' } eq '1' ) { - next unless defined $params->{ 'user_' . $key }; - $entry->{ 'user_' . $key } = $params->{ 'user_' . $key }; - $found++; - } - } + #user extension fields + for my $key ( 'title', 'excerpt' ) { + next unless defined $permissions->{ 'update_event_field_' . $key . '_extension' }; + if ( $permissions->{ 'update_event_field_' . $key . '_extension' } eq '1' ) { + next unless defined $params->{ 'user_' . $key }; + $entry->{ 'user_' . $key } = $params->{ 'user_' . $key }; + $found++; + } + } - #status field - for my $key ( 'live', 'published', 'playout', 'archived', 'rerun', 'disable_event_sync', 'draft' ) { - next unless defined $permissions->{ 'update_event_status_' . $key }; - if ( $permissions->{ 'update_event_status_' . $key } eq '1' ) { - $entry->{$key} = $params->{$key} || 0; - $found++; - } - } + #status field + for my $key ( 'live', 'published', 'playout', 'archived', 'rerun', 'disable_event_sync', 'draft' ) { + next unless defined $permissions->{ 'update_event_status_' . $key }; + if ( $permissions->{ 'update_event_status_' . $key } eq '1' ) { + $entry->{$key} = $params->{$key} || 0; + $found++; + } + } - $entry->{modified_by} = $params->{presets}->{user}; + $entry->{modified_by} = $params->{presets}->{user}; - #get event from database (for history) - my $event = series::get_event( - $config, - { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - series_id => $params->{series_id}, - event_id => $params->{event_id} - } - ); - unless ( defined $event ) { - uac::print_error("event not found"); - return; - } + #get event from database (for history) + my $event = series::get_event( + $config, + { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + series_id => $params->{series_id}, + event_id => $params->{event_id} + } + ); + unless ( defined $event ) { + uac::print_error("event not found"); + return; + } - $entry->{image} = images::normalizeName( $entry->{image} ); - $entry->{series_image} = images::normalizeName( $entry->{series_image} ); + $entry->{image} = images::normalizeName( $entry->{image} ); + $entry->{series_image} = images::normalizeName( $entry->{series_image} ); - #print STDERR "event to update2: ".Dumper($entry); + #print STDERR "event to update2: ".Dumper($entry); - $config->{access}->{write} = 1; + $config->{access}->{write} = 1; - #update content - if ( $found > 0 ) { - $entry = series_events::save_content( $config, $entry ); - for my $key ( keys %$entry ) { - $event->{$key} = $entry->{$key}; - } - } + #update content + if ( $found > 0 ) { + $entry = series_events::save_content( $config, $entry ); + for my $key ( keys %$entry ) { + $event->{$key} = $entry->{$key}; + } + } - #update time - if ( ( defined $permissions->{update_event_time} ) && ( $permissions->{update_event_time} eq '1' ) ) { - my $entry = { - id => $params->{event_id}, - start_date => $params->{start_date}, - duration => $params->{duration}, + #update time + if ( ( defined $permissions->{update_event_time} ) && ( $permissions->{update_event_time} eq '1' ) ) { + my $entry = { + id => $params->{event_id}, + start_date => $params->{start_date}, + duration => $params->{duration}, - # end => $params->{end_date} , - }; - $entry = series_events::save_event_time( $config, $entry ); - for my $key ( keys %$entry ) { - $event->{$key} = $entry->{$key}; - } - } + # end => $params->{end_date} , + }; + $entry = series_events::save_event_time( $config, $entry ); + for my $key ( keys %$entry ) { + $event->{$key} = $entry->{$key}; + } + } - $event->{project_id} = $params->{project_id}; - $event->{studio_id} = $params->{studio_id}; - $event->{series_id} = $params->{series_id}; - $event->{event_id} = $params->{event_id}; - $event->{user} = $params->{presets}->{user}; + $event->{project_id} = $params->{project_id}; + $event->{studio_id} = $params->{studio_id}; + $event->{series_id} = $params->{series_id}; + $event->{event_id} = $params->{event_id}; + $event->{user} = $params->{presets}->{user}; - #update recurrences - series::update_recurring_events( $config, $event ); + #update recurrences + series::update_recurring_events( $config, $event ); - #update history - event_history::insert( $config, $event ); + #update history + event_history::insert( $config, $event ); - user_stats::increase( - $config, - 'update_events', - { - project_id => $event->{project_id}, - studio_id => $event->{studio_id}, - series_id => $event->{series_id}, - user => $event->{user} - } - ); + user_stats::increase( + $config, + 'update_events', + { + project_id => $event->{project_id}, + studio_id => $event->{studio_id}, + series_id => $event->{series_id}, + user => $event->{user} + } + ); - #print "error" unless (defined $result); - $config->{access}->{write} = 0; - uac::print_info("event saved"); + #print "error" unless (defined $result); + $config->{access}->{write} = 0; + uac::print_info("event saved"); } sub create_event { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $event = $request->{params}->{checked}; - my $action = $params->{action}; - return eventOps::createEvent( $request, $event, $action ); + my $params = $request->{params}->{checked}; + my $event = $request->{params}->{checked}; + my $action = $params->{action}; + return eventOps::createEvent( $request, $event, $action ); } #TODO: replace permission check with download sub download { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - my $result = series_events::check_permission( - $request, - { - permission => 'update_event_of_series,update_event_of_others', - check_for => [ 'studio', 'user', 'series', 'events' ], - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - series_id => $params->{series_id}, - event_id => $params->{event_id} - } - ); - unless ( $result eq '1' ) { - uac::print_error($result); - return undef; - } - $permissions->{update_event} = 1; + my $result = series_events::check_permission( + $request, + { + permission => 'update_event_of_series,update_event_of_others', + check_for => [ 'studio', 'user', 'series', 'events' ], + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + series_id => $params->{series_id}, + event_id => $params->{event_id} + } + ); + unless ( $result eq '1' ) { + uac::print_error($result); + return undef; + } + $permissions->{update_event} = 1; - my $request2 = { - params => { - checked => events::check_params( - $config, - { - event_id => $params->{event_id}, - template => 'no', - limit => 1, + my $request2 = { + params => { + checked => events::check_params( + $config, + { + event_id => $params->{event_id}, + template => 'no', + limit => 1, - #no_exclude => 1 - } - ) - }, - config => $request->{config}, - permissions => $request->{permissions} - }; + #no_exclude => 1 + } + ) + }, + config => $request->{config}, + permissions => $request->{permissions} + }; - $request2->{params}->{checked}->{published} = 'all'; - my $events = events::get( $config, $request2 ); - my $event = $events->[0]; - my $datetime = $event->{start_datetime}; - if ( $datetime =~ /(\d\d\d\d\-\d\d\-\d\d)[ T](\d\d)\:(\d\d)/ ) { - $datetime = $1 . '\ ' . $2 . '_' . $3; - } else { - print STDERR "event.cgi::download no valid datetime found $datetime\n"; - return; - } - my $archive_dir = $config->{locations}->{local_archive_dir}; - my $archive_url = $config->{locations}->{local_archive_url}; - print STDERR "archive_dir: " . $archive_dir . "\n"; - print STDERR "archive_url: " . $archive_url . "\n"; - print STDERR "event.cgi::download look for : $archive_dir/$datetime*.mp3\n"; - my @files = glob( $archive_dir . '/' . $datetime . '*.mp3' ); + $request2->{params}->{checked}->{published} = 'all'; + my $events = events::get( $config, $request2 ); + my $event = $events->[0]; + my $datetime = $event->{start_datetime}; + if ( $datetime =~ /(\d\d\d\d\-\d\d\-\d\d)[ T](\d\d)\:(\d\d)/ ) { + $datetime = $1 . '\ ' . $2 . '_' . $3; + } else { + print STDERR "event.cgi::download no valid datetime found $datetime\n"; + return; + } + my $archive_dir = $config->{locations}->{local_archive_dir}; + my $archive_url = $config->{locations}->{local_archive_url}; + print STDERR "archive_dir: " . $archive_dir . "\n"; + print STDERR "archive_url: " . $archive_url . "\n"; + print STDERR "event.cgi::download look for : $archive_dir/$datetime*.mp3\n"; + my @files = glob( $archive_dir . '/' . $datetime . '*.mp3' ); - #print STDERR Dumper(\@files); - if ( @files > 0 ) { - my $file = $files[0]; - my $key = int( rand(99999999999999999) ); - $key = MIME::Base64::encode_base64($key); - $key =~ s/[^a-zA-Z0-9]//g; + #print STDERR Dumper(\@files); + if ( @files > 0 ) { + my $file = $files[0]; + my $key = int( rand(99999999999999999) ); + $key = MIME::Base64::encode_base64($key); + $key =~ s/[^a-zA-Z0-9]//g; - #decode filename - $file = Encode::decode( "UTF-8", $file ); + #decode filename + $file = Encode::decode( "UTF-8", $file ); - my $cmd = "ln -s '" . $file . "' '" . $archive_dir . '/' . $key . ".mp3'"; - my $url = $archive_url . '/' . $key . '.mp3'; + my $cmd = "ln -s '" . $file . "' '" . $archive_dir . '/' . $key . ".mp3'"; + my $url = $archive_url . '/' . $key . '.mp3'; - #print $cmd."\n"; - print `$cmd`; + #print $cmd."\n"; + print `$cmd`; - $request->{params}->{checked}->{download} = - "Hallo,\n\n" - . "anbei der Mitschnitt fuer\n" - . $event->{start_date_name} . ", " - . $event->{start_time_name} . " - " - . $event->{series_name} . ' - ' - . $event->{title} . ":\n" - . $url . "\n" - . "\nDer Link wird nach 7 Tagen geloescht. (bitte nicht weitergeben)\n" - . "Gruss, Peter\n"; - } + $request->{params}->{checked}->{download} = + "Hallo,\n\n" + . "anbei der Mitschnitt fuer\n" + . $event->{start_date_name} . ", " + . $event->{start_time_name} . " - " + . $event->{series_name} . ' - ' + . $event->{title} . ":\n" + . $url . "\n" + . "\nDer Link wird nach 7 Tagen geloescht. (bitte nicht weitergeben)\n" + . "Gruss, Peter\n"; + } } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; - my $template = ''; - $checked->{template} = template::check($config, $params->{template}, 'series' ); + my $checked = {}; + my $template = ''; + $checked->{template} = template::check( $config, $params->{template}, 'series' ); - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - #numeric values - for my $param ( 'id', 'project_id', 'studio_id', 'default_studio_id', 'user_id', 'series_id', 'event_id', 'source_event_id', 'episode' ) - { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + #numeric values + for my $param ( 'id', 'project_id', 'studio_id', 'default_studio_id', 'user_id', 'series_id', 'event_id', 'source_event_id', 'episode' ) + { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - #scalars - for my $param ( 'studio', 'search', 'from', 'till', 'hide_series' ) { - if ( defined $params->{$param} ) { - $checked->{$param} = $params->{$param}; - $checked->{$param} =~ s/^\s+//g; - $checked->{$param} =~ s/\s+$//g; - } - } + #scalars + for my $param ( 'studio', 'search', 'from', 'till', 'hide_series' ) { + if ( defined $params->{$param} ) { + $checked->{$param} = $params->{$param}; + $checked->{$param} =~ s/^\s+//g; + $checked->{$param} =~ s/\s+$//g; + } + } - #numbers - for my $param ( 'duration', 'recurrence' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d+)/ ) ) { - $checked->{$param} = $1; - } - } + #numbers + for my $param ( 'duration', 'recurrence' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d+)/ ) ) { + $checked->{$param} = $1; + } + } - #checkboxes - for my $param ( 'live', 'published', 'playout', 'archived', 'rerun', 'draft', 'disable_event_sync', 'get_rerun' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /([01])/ ) ) { - $checked->{$param} = $1; + #checkboxes + for my $param ( 'live', 'published', 'playout', 'archived', 'rerun', 'draft', 'disable_event_sync', 'get_rerun' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /([01])/ ) ) { + $checked->{$param} = $1; - # print STDERR "check $param = $1\n"; - } - } + # print STDERR "check $param = $1\n"; + } + } - #strings - for my $param ( - 'series_name', 'title', 'excerpt', 'content', 'topic', 'program', 'category', 'image', - 'series_image', 'user_content', 'user_title', 'user_excerpt', 'podcast_url', 'archive_url' - ) - { - if ( defined $params->{$param} ) { + #strings + for my $param ( + 'series_name', 'title', 'excerpt', 'content', 'topic', 'program', 'category', 'image', + 'series_image', 'user_content', 'user_title', 'user_excerpt', 'podcast_url', 'archive_url' + ) + { + if ( defined $params->{$param} ) { - #$checked->{$param}=uri_unescape(); - $checked->{$param} = $params->{$param}; - $checked->{$param} =~ s/^\s+//g; - $checked->{$param} =~ s/\s+$//g; - } - } + #$checked->{$param}=uri_unescape(); + $checked->{$param} = $params->{$param}; + $checked->{$param} =~ s/^\s+//g; + $checked->{$param} =~ s/\s+$//g; + } + } - #dates - for my $param ( 'start_date', 'end_date' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d\d\d\d\-\d\d\-\d\d \d\d\:\d\d)/ ) ) { - $checked->{$param} = $1 . ':00'; - } - } + #dates + for my $param ( 'start_date', 'end_date' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d\d\d\d\-\d\d\-\d\d \d\d\:\d\d)/ ) ) { + $checked->{$param} = $1 . ':00'; + } + } - #actions and roles - $checked->{action} = ''; - if ( defined $params->{action} ) { - if ( $params->{action} =~ - /^(save|delete|download|show_new_event|show_new_event_from_schedule|create_event|create_event_from_schedule|get_json)$/ ) - { - $checked->{action} = $params->{action}; - } - } + #actions and roles + $checked->{action} = ''; + if ( defined $params->{action} ) { + if ( $params->{action} =~ + /^(save|delete|download|show_new_event|show_new_event_from_schedule|create_event|create_event_from_schedule|get_json)$/ ) + { + $checked->{action} = $params->{action}; + } + } - #print STDERR "event params:".Dumper($checked); - return $checked; + #print STDERR "event params:".Dumper($checked); + return $checked; } __DATA__ diff --git a/website/agenda/planung/event_history.cgi b/website/agenda/planung/event_history.cgi index da413ae..52f52ec 100755 --- a/website/agenda/planung/event_history.cgi +++ b/website/agenda/planung/event_history.cgi @@ -4,7 +4,6 @@ use warnings "all"; use strict; use URI::Escape(); -use Encode(); use Data::Dumper; use MIME::Base64(); use Text::Diff::FormattedHTML(); @@ -40,11 +39,11 @@ $params->{studio_id} = $params->{default_studio_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; #print STDERR Dumper($request)."\n"; @@ -57,7 +56,7 @@ $params = $request->{params}->{checked}; #show header my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); -template::process( $config, 'print', template::check($config, 'default.html'), $headerParams ); +template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); return unless uac::check( $config, $params, $user_presets ) == 1; print q{ @@ -68,168 +67,169 @@ print q{ $config->{access}->{write} = 0; if ( $params->{action} eq 'diff' ) { - compare( $config, $request ); - return; + compare( $config, $request ); + return; } show_history( $config, $request ); #show existing event history sub show_history { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - for my $attr ('studio_id') { # 'series_id','event_id' - unless ( defined $params->{$attr} ) { - uac::print_error( "missing " . $attr . " to show changes" ); - return; - } - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + for my $attr ('studio_id') { # 'series_id','event_id' + unless ( defined $params->{$attr} ) { + uac::print_error( "missing " . $attr . " to show changes" ); + return; + } + } - unless ( $permissions->{read_event} == 1 ) { - uac::print_error("missing permissions to show changes"); - return; - } + unless ( $permissions->{read_event} == 1 ) { + uac::print_error("missing permissions to show changes"); + return; + } - my $options = { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - limit => 200 - }; - $options->{series_id} = $params->{series_id} if defined $params->{series_id}; - $options->{event_id} = $params->{event_id} if defined $params->{event_id}; + my $options = { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + limit => 200 + }; + $options->{series_id} = $params->{series_id} if defined $params->{series_id}; + $options->{event_id} = $params->{event_id} if defined $params->{event_id}; - my $events = event_history::get( $config, $options ); + my $events = event_history::get( $config, $options ); - #print STDERR Dumper($events); - return unless defined $events; - $params->{events} = $events; + #print STDERR Dumper($events); + return unless defined $events; + $params->{events} = $events; - for my $permission ( keys %{$permissions} ) { - $params->{'allow'}->{$permission} = $request->{permissions}->{$permission}; - } + for my $permission ( keys %{$permissions} ) { + $params->{'allow'}->{$permission} = $request->{permissions}->{$permission}; + } - #print STDERR Dumper($params); - $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'event_history' } ); + #print STDERR Dumper($params); + $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'event_history' } ); - template::process($config, 'print', template::check($config, 'event_history'), $params ); + template::process( $config, 'print', template::check( $config, 'event_history' ), $params ); } #show existing event history sub compare { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - for my $attr ( 'project_id', 'studio_id', 'event_id', 'v1', 'v2' ) { - unless ( defined $params->{$attr} ) { - uac::print_error( "missing " . $attr . " to show changes" ); - return; - } - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + for my $attr ( 'project_id', 'studio_id', 'event_id', 'v1', 'v2' ) { + unless ( defined $params->{$attr} ) { + uac::print_error( "missing " . $attr . " to show changes" ); + return; + } + } - unless ( $permissions->{read_event} == 1 ) { - uac::print_error("missing permissions to show changes"); - return; - } + unless ( $permissions->{read_event} == 1 ) { + uac::print_error("missing permissions to show changes"); + return; + } - print qq{} . "\n"; + print qq{} . "\n"; - if ( $params->{v1} > $params->{v2} ) { - my $t = $params->{v1}; - $params->{v1} = $params->{v2}; - $params->{v2} = $t; - } + if ( $params->{v1} > $params->{v2} ) { + my $t = $params->{v1}; + $params->{v1} = $params->{v2}; + $params->{v2} = $t; + } - my $options = { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - series_id => $params->{series_id}, - event_id => $params->{event_id}, - change_id => $params->{v1}, - limit => 2 - }; + my $options = { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + series_id => $params->{series_id}, + event_id => $params->{event_id}, + change_id => $params->{v1}, + limit => 2 + }; - my $events = event_history::get( $config, $options ); - return unless @$events == 1; - my $v1 = $events->[0]; + my $events = event_history::get( $config, $options ); + return unless @$events == 1; + my $v1 = $events->[0]; - $options->{change_id} = $params->{v2}; - $events = event_history::get( $config, $options ); - return unless @$events == 1; - my $v2 = $events->[0]; + $options->{change_id} = $params->{v2}; + $events = event_history::get( $config, $options ); + return unless @$events == 1; + my $v2 = $events->[0]; - my $t1 = eventToText($v1); - my $t2 = eventToText($v2); + my $t1 = eventToText($v1); + my $t2 = eventToText($v2); - if ( $t1 eq $t2 ) { - print "no changes\n"; - return; - } + if ( $t1 eq $t2 ) { + print "no changes\n"; + return; + } - #print ""; - #print '
';
-	#my $diff=diff_strings( { vertical => 1 }, $t1, $t2);
-	my $diff = diff_strings( {}, $t1, $t2 );
+    #print "";
+    #print '
';
+    #my $diff=diff_strings( { vertical => 1 }, $t1, $t2);
+    my $diff = diff_strings( {}, $t1, $t2 );
 
-	#print Text::Diff::diff(\$t1, \$t2, { STYLE => "Table" });
-	#print Text::Diff::diff($v1, $v2, { STYLE => "Table" });
-	print $diff;
+    #print Text::Diff::diff(\$t1, \$t2, { STYLE => "Table" });
+    #print Text::Diff::diff($v1, $v2, { STYLE => "Table" });
+    print $diff;
 
-	#print '
'; + #print '
'; } sub eventToText { - my $event = shift; + my $event = shift; - my $s = events::get_keys($event)->{full_title} . "\n"; - $s .= $event->{excerpt} . "\n"; - $s .= $event->{user_excerpt} . "\n"; - $s .= $event->{topic} . "\n"; - $s .= $event->{content} . "\n"; + my $s = events::get_keys($event)->{full_title} . "\n"; + $s .= $event->{excerpt} . "\n"; + $s .= $event->{user_excerpt} . "\n"; + $s .= $event->{topic} . "\n"; + $s .= $event->{content} . "\n"; - #print STDERR "DUMP\n$s"; - return $s; + #print STDERR "DUMP\n$s"; + return $s; } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; - my $template = ''; - $checked->{template} = template::check($config, $params->{template}, 'event_history' ); + my $checked = {}; + my $template = ''; + $checked->{template} = template::check( $config, $params->{template}, 'event_history' ); - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - #numeric values - for my $param ( 'id', 'project_id', 'studio_id', 'default_studio_id', 'user_id', 'series_id', 'event_id', 'v1', 'v2' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + #numeric values + for my $param ( 'id', 'project_id', 'studio_id', 'default_studio_id', 'user_id', 'series_id', 'event_id', 'v1', 'v2' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - #actions and roles - $checked->{action} = ''; - if ( defined $params->{action} ) { - if ( $params->{action} =~ /^(show|diff)$/ ) { - $checked->{action} = $params->{action}; - } - } + #actions and roles + $checked->{action} = ''; + if ( defined $params->{action} ) { + if ( $params->{action} =~ /^(show|diff)$/ ) { + $checked->{action} = $params->{action}; + } + } - #print STDERR Dumper($checked); - return $checked; + #print STDERR Dumper($checked); + return $checked; } diff --git a/website/agenda/planung/help.cgi b/website/agenda/planung/help.cgi index a137986..81c8c9b 100755 --- a/website/agenda/planung/help.cgi +++ b/website/agenda/planung/help.cgi @@ -5,7 +5,6 @@ use strict; use Data::Dumper; use URI::Escape(); -use Encode(); use params(); use config(); @@ -29,12 +28,12 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config ); return if ( ( !defined $user ) || ( $user eq '' ) ); my $user_presets = uac::get_user_presets( - $config, - { - user => $user, - project_id => $params->{project_id}, - studio_id => $params->{studio_id} - } + $config, + { + user => $user, + project_id => $params->{project_id}, + studio_id => $params->{studio_id} + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -43,11 +42,11 @@ $params->{project_id} = $user_presets->{project_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); @@ -56,7 +55,7 @@ $params = $request->{params}->{checked}; #process header my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); -template::process($config, 'print', template::check($config, 'default.html'), $headerParams ); +template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); return unless uac::check( $config, $params, $user_presets ) == 1; my $toc = $headerParams->{loc}->{toc}; @@ -129,13 +128,13 @@ $( document ).ready(function() { print markup::creole_to_html( getHelp( $headerParams->{loc}->{region} ) ); sub getHelp { - my $region = shift; - return getGermanHelp() if $region eq 'de'; - return getEnglishHelp(); + my $region = shift; + return getGermanHelp() if $region eq 'de'; + return getEnglishHelp(); } sub getGermanHelp { - return q{ + return q{

Inhaltsverzeichnis

@@ -379,7 +378,7 @@ Folgende Status-Felder gibt es: } sub getEnglishHelp { - return q{ + return q{

Table of Contents

= Menu @@ -617,29 +616,30 @@ There are following status fields: } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - #numeric values - $checked->{exclude} = 0; - for my $param ( 'id', 'project_id', 'studio_id', 'default_studio_id' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + #numeric values + $checked->{exclude} = 0; + for my $param ( 'id', 'project_id', 'studio_id', 'default_studio_id' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - return $checked; + return $checked; } diff --git a/website/agenda/planung/image.cgi b/website/agenda/planung/image.cgi index 9068fc3..c04d8bb 100755 --- a/website/agenda/planung/image.cgi +++ b/website/agenda/planung/image.cgi @@ -39,12 +39,12 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config ); return if ( ( !defined $user ) || ( $user eq '' ) ); my $user_presets = uac::get_user_presets( - $config, - { - user => $user, - project_id => $params->{project_id}, - studio_id => $params->{studio_id} - } + $config, + { + user => $user, + project_id => $params->{project_id}, + studio_id => $params->{studio_id} + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -53,11 +53,11 @@ $params->{project_id} = $user_presets->{project_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - } + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + } }; $request = uac::prepare_request( $request, $user_presets ); $params = $request->{params}->{checked}; @@ -65,7 +65,7 @@ $params = $request->{params}->{checked}; #show header my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); -template::process($config, 'print', template::check($config, 'ajax_header.html'), $headerParams ); +template::process( $config, 'print', template::check( $config, 'ajax_header.html' ), $headerParams ); return unless defined uac::check( $config, $params, $user_presets ); my $local_media_dir = $config->{locations}->{local_media_dir}; @@ -76,400 +76,401 @@ uac::permissions_denied('reading from local media dir') unless -r $local_media_d uac::permissions_denied('writing to local media dir') unless -w $local_media_dir; if ( $params->{delete_image} ne '' ) { - delete_image( $config, $request, $user, $local_media_dir ); - return; + delete_image( $config, $request, $user, $local_media_dir ); + return; } elsif ( $params->{save_image} ne '' ) { - save_image( $config, $request, $user ); - return; + save_image( $config, $request, $user ); + return; } show_image( $config, $request, $user, $local_media_url ); sub show_image { - my $config = shift; - my $request = shift; - my $user = shift; - my $local_media_url = shift; + my $config = shift; + my $request = shift; + my $user = shift; + my $local_media_url = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - unless ( defined $params->{project_id} ) { - uac::print_error("missing project id"); - return undef; - } - unless ( defined $params->{studio_id} ) { - uac::print_error("missing studio id"); - return undef; - } + unless ( defined $params->{project_id} ) { + uac::print_error("missing project id"); + return undef; + } + unless ( defined $params->{studio_id} ) { + uac::print_error("missing studio id"); + return undef; + } - if ( $permissions->{read_image} ne '1' ) { - uac::permissions_denied("read image"); - return 0; - } + if ( $permissions->{read_image} ne '1' ) { + uac::permissions_denied("read image"); + return 0; + } - $config->{access}->{write} = 0; - my $dbh = db::connect( $config, undef ); + $config->{access}->{write} = 0; + my $dbh = db::connect( $config, undef ); - my $projectId = $params->{project_id}; - my $studioId = $params->{studio_id}; - my $selectedFilename = $params->{filename} || ''; + my $projectId = $params->{project_id}; + my $studioId = $params->{studio_id}; + my $selectedFilename = $params->{filename} || ''; - my $filenames = {}; - my $results = []; + my $filenames = {}; + my $results = []; - # add images from series - if ( defined $params->{series_id} ) { - my $seriesImages = series::get_images( - $config, - { - project_id => $projectId, - studio_id => $studioId, - series_id => $params->{series_id} - } - ); + # add images from series + if ( defined $params->{series_id} ) { + my $seriesImages = series::get_images( + $config, + { + project_id => $projectId, + studio_id => $studioId, + series_id => $params->{series_id} + } + ); - for my $image (@$seriesImages) { - my $filename = $image->{filename}; - next if defined $filenames->{$filename}; - $filenames->{$filename} = $image; - push @$results, $image; - } - } + for my $image (@$seriesImages) { + my $filename = $image->{filename}; + next if defined $filenames->{$filename}; + $filenames->{$filename} = $image; + push @$results, $image; + } + } - #load images matching by search - if ( $params->{search} =~ /\S/ ) { + #load images matching by search + if ( $params->{search} =~ /\S/ ) { - #remove filename from search - #delete $params->{filename}; - #delete $params->{series_id}; - my $searchImages = images::get( - $config, - { - project_id => $projectId, - studio_id => $studioId, - search => $params->{search} - } - ); + #remove filename from search + #delete $params->{filename}; + #delete $params->{series_id}; + my $searchImages = images::get( + $config, + { + project_id => $projectId, + studio_id => $studioId, + search => $params->{search} + } + ); - for my $image (@$searchImages) { - my $filename = $image->{filename}; - next if defined $filenames->{$filename}; - $filenames->{$filename} = $image; - push @$results, $image; - } - } + for my $image (@$searchImages) { + my $filename = $image->{filename}; + next if defined $filenames->{$filename}; + $filenames->{$filename} = $image; + push @$results, $image; + } + } - #load selected image, if not already loaded - my $selectedImage = undef; - if ( $selectedFilename ne '' ) { - if ( defined $filenames->{$selectedFilename} ) { - $selectedImage = $filenames->{$selectedFilename}; - } else { + #load selected image, if not already loaded + my $selectedImage = undef; + if ( $selectedFilename ne '' ) { + if ( defined $filenames->{$selectedFilename} ) { + $selectedImage = $filenames->{$selectedFilename}; + } else { - #print STDERR "getByName:".Dumper($params); + #print STDERR "getByName:".Dumper($params); - #put selected image to the top - my $imagesByNames = images::get( - $config, - { - project_id => $projectId, - studio_id => $studioId, - filename => $selectedFilename - } - ); + #put selected image to the top + my $imagesByNames = images::get( + $config, + { + project_id => $projectId, + studio_id => $studioId, + filename => $selectedFilename + } + ); - #print STDERR Dumper($imagesByNames); - $selectedImage = $imagesByNames->[0] if scalar @$imagesByNames > 0; - } + #print STDERR Dumper($imagesByNames); + $selectedImage = $imagesByNames->[0] if scalar @$imagesByNames > 0; + } - my $finalResults = []; + my $finalResults = []; - # put selected image first - $selectedFilename = 'not-found'; - if ( defined $selectedImage ) { - push @$finalResults, $selectedImage; - $selectedFilename = $selectedImage->{filename}; - } + # put selected image first + $selectedFilename = 'not-found'; + if ( defined $selectedImage ) { + push @$finalResults, $selectedImage; + $selectedFilename = $selectedImage->{filename}; + } - # then other images - for my $image (@$results) { - push @$finalResults, $image if $image->{filename} ne $selectedFilename; - } - $results = $finalResults; - } + # then other images + for my $image (@$results) { + push @$finalResults, $image if $image->{filename} ne $selectedFilename; + } + $results = $finalResults; + } - if ( scalar @$results != 0 ) { - if ( $params->{template} =~ /edit/ ) { - my $result = $results->[0]; - $result->{missing_licence} = 1 if ( !defined $result->{licence} ) || ( $result->{licence} !~ /\S/ ); - $results = [$result]; - } + if ( scalar @$results != 0 ) { + if ( $params->{template} =~ /edit/ ) { + my $result = $results->[0]; + $result->{missing_licence} = 1 if ( !defined $result->{licence} ) || ( $result->{licence} !~ /\S/ ); + $results = [$result]; + } - $results = modify_results( $results, $permissions, $user, $local_media_url ); - } + $results = modify_results( $results, $permissions, $user, $local_media_url ); + } - my $search = $params->{search} || ''; - $search =~ s/\%+/ /g; + my $search = $params->{search} || ''; + $search =~ s/\%+/ /g; - my $template_params = { - 'search' => $search, - 'images' => $results, - 'count' => scalar @$results, - 'projects' => project::get_with_dates($config), - 'project_id' => $params->{project_id}, - 'studio_id' => $params->{studio_id}, - 'filename' => $params->{filename} - }; + my $template_params = { + 'search' => $search, + 'images' => $results, + 'count' => scalar @$results, + 'projects' => project::get_with_dates($config), + 'project_id' => $params->{project_id}, + 'studio_id' => $params->{studio_id}, + 'filename' => $params->{filename} + }; - # print STDERR - $template_params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'image' } ); - $template_params = uac::set_template_permissions( $permissions, $template_params ); - $template_params->{no_results} = 1 if scalar @$results == 0; + # print STDERR + $template_params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'image' } ); + $template_params = uac::set_template_permissions( $permissions, $template_params ); + $template_params->{no_results} = 1 if scalar @$results == 0; - #set global values for update and delete, per image values are evaluated later - $template_params->{allow}->{update_image} = - $template_params->{allow}->{update_image_own} || $template_params->{allow}->{seriesupdate_image_others}; - $template_params->{allow}->{delete_image} = - $template_params->{allow}->{delete_image_own} || $template_params->{allow}->{delete_image_others}; - template::process($config, 'print', $params->{template}, $template_params ); + #set global values for update and delete, per image values are evaluated later + $template_params->{allow}->{update_image} = + $template_params->{allow}->{update_image_own} || $template_params->{allow}->{seriesupdate_image_others}; + $template_params->{allow}->{delete_image} = + $template_params->{allow}->{delete_image_own} || $template_params->{allow}->{delete_image_others}; + template::process( $config, 'print', $params->{template}, $template_params ); } sub print_js_error { - my $message = shift; - print qq{ }; - print STDERR $message . "\n"; + print STDERR $message . "\n"; } sub save_image { - my $config = shift; - my $request = shift; - my $user = shift; + my $config = shift; + my $request = shift; + my $user = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - unless ( check_permission( $config, $user, $permissions, 'update_image', $params->{save_image} ) eq '1' ) { - print_js_error("missing permission to update image"); - return 0; - } + unless ( check_permission( $config, $user, $permissions, 'update_image', $params->{save_image} ) eq '1' ) { + print_js_error("missing permission to update image"); + return 0; + } - if ( ( $params->{update_name} eq '' ) && ( $params->{update_description} eq '' ) ) { - print_js_error("empty name or empty description!"); - return 0; - } + if ( ( $params->{update_name} eq '' ) && ( $params->{update_description} eq '' ) ) { + print_js_error("empty name or empty description!"); + return 0; + } - my $image = {}; - $image->{filename} = $params->{save_image}; - $image->{name} = $params->{update_name} if $params->{update_name} ne ''; - $image->{description} = $params->{update_description} if $params->{update_description} ne ''; - $image->{project_id} = $params->{project_id}; - $image->{studio_id} = $params->{studio_id}; - $image->{licence} = $params->{licence}; - $image->{public} = $params->{public}; - $image->{modified_by} = $user; + my $image = {}; + $image->{filename} = $params->{save_image}; + $image->{name} = $params->{update_name} if $params->{update_name} ne ''; + $image->{description} = $params->{update_description} if $params->{update_description} ne ''; + $image->{project_id} = $params->{project_id}; + $image->{studio_id} = $params->{studio_id}; + $image->{licence} = $params->{licence}; + $image->{public} = $params->{public}; + $image->{modified_by} = $user; - $image->{name} = 'new' if $image->{name} eq ''; + $image->{name} = 'new' if $image->{name} eq ''; - images::checkLicence( $config, $image ); + images::checkLicence( $config, $image ); - $config->{access}->{write} = 1; - my $dbh = db::connect($config); + $config->{access}->{write} = 1; + my $dbh = db::connect($config); - print STDERR "going to save\n"; + print STDERR "going to save\n"; - #print STDERR Dumper($image); + #print STDERR Dumper($image); - my $entries = images::get( - $config, - { - filename => $image->{filename}, - project_id => $image->{project_id}, - studio_id => $image->{studio_id} - } - ); + my $entries = images::get( + $config, + { + filename => $image->{filename}, + project_id => $image->{project_id}, + studio_id => $image->{studio_id} + } + ); - if ( scalar @$entries > 1 ) { - print_js_error('more than one matching result found'); - return 0; - } - if ( scalar @$entries == 0 ) { - print_js_error('image not found in database (for this studio)'); - return 0; - } - my $entry = $entries->[0]; - if ( defined $entry ) { - images::update( $dbh, $image ); - images::publish( $config, $image->{filename} ) if ( ( $image->{public} == 1 ) && ( $entry->{public} == 0 ) ); - images::depublish( $config, $image->{filename} ) if ( ( $image->{public} == 0 ) && ( $entry->{public} == 1 ) ); - } else { - $image->{created_by} = $user; - images::insert( $dbh, $image ); - } + if ( scalar @$entries > 1 ) { + print_js_error('more than one matching result found'); + return 0; + } + if ( scalar @$entries == 0 ) { + print_js_error('image not found in database (for this studio)'); + return 0; + } + my $entry = $entries->[0]; + if ( defined $entry ) { + images::update( $dbh, $image ); + images::publish( $config, $image->{filename} ) if ( ( $image->{public} == 1 ) && ( $entry->{public} == 0 ) ); + images::depublish( $config, $image->{filename} ) if ( ( $image->{public} == 0 ) && ( $entry->{public} == 1 ) ); + } else { + $image->{created_by} = $user; + images::insert( $dbh, $image ); + } } sub delete_image { - my $config = shift; - my $request = shift; - my $user = shift; - my $local_media_dir = shift; + my $config = shift; + my $request = shift; + my $user = shift; + my $local_media_dir = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - unless ( check_permission( $config, $user, $permissions, 'delete_image', $params->{delete_image} ) eq '1' ) { - uac::permissions_denied('delete image'); - return 0; - } + unless ( check_permission( $config, $user, $permissions, 'delete_image', $params->{delete_image} ) eq '1' ) { + uac::permissions_denied('delete image'); + return 0; + } - #print $cgi->header(); - #print "Content-type:text/html; charset=UTF-8;\n\n"; + #print $cgi->header(); + #print "Content-type:text/html; charset=UTF-8;\n\n"; - $config->{access}->{write} = 1; - my $dbh = db::connect($config); - my $image = { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - filename => $params->{delete_image}, - }; - my $result = images::delete( $dbh, $image ); + $config->{access}->{write} = 1; + my $dbh = db::connect($config); + my $image = { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + filename => $params->{delete_image}, + }; + my $result = images::delete( $dbh, $image ); - #print STDERR "delete result=" . Dumper($result); + #print STDERR "delete result=" . Dumper($result); - return; - my $action_result = ''; - my $errors = ''; - $result = images::delete_files( $config, $local_media_dir, $params->{delete_image}, $action_result, $errors ); + return; + my $action_result = ''; + my $errors = ''; + $result = images::delete_files( $config, $local_media_dir, $params->{delete_image}, $action_result, $errors ); - #use Data::Dumper;print STDERR "delete\n".Dumper($params); - print "deleted
$action_result
$errors\n"; + #use Data::Dumper;print STDERR "delete\n".Dumper($params); + print "deleted
$action_result
$errors\n"; } sub check_permission { - my $config = shift; - my $user = shift; - my $permissions = shift; - my $permission = shift; - my $filename = shift; + my $config = shift; + my $user = shift; + my $permissions = shift; + my $permission = shift; + my $filename = shift; - return 0 unless defined $user; - return 0 if ( $user eq '' ); + return 0 unless defined $user; + return 0 if ( $user eq '' ); - if ( $permissions->{ $permission . '_others' } eq '1' ) { - print STDERR "$user has update_image_others\n"; - return 1; - } elsif ( $permissions->{ $permission . '_own' } eq '1' ) { - print STDERR "$user has update_image_own\n"; + if ( $permissions->{ $permission . '_others' } eq '1' ) { + print STDERR "$user has update_image_others\n"; + return 1; + } elsif ( $permissions->{ $permission . '_own' } eq '1' ) { + print STDERR "$user has update_image_own\n"; - #check if image was created by user - my $results = images::get( - $config, - { - filename => $filename, - created_by => $user - } - ); - return 1 if ( @$results == 1 ); - return 0; - } - return 0; + #check if image was created by user + my $results = images::get( + $config, + { + filename => $filename, + created_by => $user + } + ); + return 1 if ( @$results == 1 ); + return 0; + } + return 0; } sub modify_results { - my $results = shift; - my $permissions = shift; - my $user = shift; - my $local_media_url = shift; + my $results = shift; + my $permissions = shift; + my $user = shift; + my $local_media_url = shift; - for my $result (@$results) { - unless ( defined $result->{filename} ) { - $result = undef; - next; - } - $result->{image_url} = $local_media_url . '/images/' . $result->{filename}; - $result->{thumb_url} = $local_media_url . '/thumbs/' . $result->{filename}; - $result->{icon_url} = $local_media_url . '/icons/' . $result->{filename}; + for my $result (@$results) { + unless ( defined $result->{filename} ) { + $result = undef; + next; + } + $result->{image_url} = $local_media_url . '/images/' . $result->{filename}; + $result->{thumb_url} = $local_media_url . '/thumbs/' . $result->{filename}; + $result->{icon_url} = $local_media_url . '/icons/' . $result->{filename}; - #reduce - for my $permission ( 'update_image', 'delete_image' ) { - if ( ( defined $permissions->{ $permission . '_others' } ) && ( $permissions->{ $permission . '_others' } eq '1' ) ) { - $result->{$permission} = 1; - } elsif ( ( defined $permissions->{ $permission . '_own' } ) && ( $permissions->{ $permission . '_own' } eq '1' ) ) { - next if ( $user eq '' ); - $result->{$permission} = 1 if ( $user eq $result->{created_by} ); - } - } - } - return $results; + #reduce + for my $permission ( 'update_image', 'delete_image' ) { + if ( ( defined $permissions->{ $permission . '_others' } ) && ( $permissions->{ $permission . '_others' } eq '1' ) ) { + $result->{$permission} = 1; + } elsif ( ( defined $permissions->{ $permission . '_own' } ) && ( $permissions->{ $permission . '_own' } eq '1' ) ) { + next if ( $user eq '' ); + $result->{$permission} = 1 if ( $user eq $result->{created_by} ); + } + } + } + return $results; } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = { template => template::check($config, $params->{template}, 'image.html' ) }; + my $checked = { template => template::check( $config, $params->{template}, 'image.html' ) }; - #numeric values - $checked->{limit} = 100; - for my $param ( 'project_id', 'studio_id', 'series_id', 'default_studio_id', 'limit' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + #numeric values + $checked->{limit} = 100; + for my $param ( 'project_id', 'studio_id', 'series_id', 'default_studio_id', 'limit' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - $checked->{limit} = 100 unless defined $checked->{limit}; - $checked->{limit} = 100 if ( $checked->{limit} > 100 ); + $checked->{limit} = 100 unless defined $checked->{limit}; + $checked->{limit} = 100 if ( $checked->{limit} > 100 ); - #string - $checked->{search} = ''; - if ( ( defined $params->{search} ) && ( $params->{search} =~ /^\s*(.+?)\s*$/ ) ) { - $checked->{search} = $1; - } + #string + $checked->{search} = ''; + if ( ( defined $params->{search} ) && ( $params->{search} =~ /^\s*(.+?)\s*$/ ) ) { + $checked->{search} = $1; + } - for my $attr ( 'update_name', 'update_description', 'licence' ) { - $checked->{$attr} = ''; - if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /^\s*(.+?)\s*$/ ) ) { - $checked->{$attr} = $params->{$attr}; - } - } + for my $attr ( 'update_name', 'update_description', 'licence' ) { + $checked->{$attr} = ''; + if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /^\s*(.+?)\s*$/ ) ) { + $checked->{$attr} = $params->{$attr}; + } + } - #Words - $checked->{delete_image} = ''; - $checked->{save_image} = ''; - for my $attr ( 'save_image', 'delete_image', 'show', 'filename' ) { - $checked->{$attr} = ''; - if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\S+)/ ) ) { - $checked->{$attr} = $params->{$attr}; - } - } + #Words + $checked->{delete_image} = ''; + $checked->{save_image} = ''; + for my $attr ( 'save_image', 'delete_image', 'show', 'filename' ) { + $checked->{$attr} = ''; + if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\S+)/ ) ) { + $checked->{$attr} = $params->{$attr}; + } + } - #checkboxes - for my $param ('public') { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /([01])/ ) ) { - $checked->{$param} = $1; - } - } + #checkboxes + for my $param ('public') { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /([01])/ ) ) { + $checked->{$param} = $1; + } + } - #map show to filename, but overwrite if filename given - if ( $checked->{show} ne '' ) { - $checked->{filename} = $checked->{show}; - delete $checked->{show}; - $checked->{limit} = 1; - } elsif ( $checked->{filename} ne '' ) { - delete $checked->{show}; - } + #map show to filename, but overwrite if filename given + if ( $checked->{show} ne '' ) { + $checked->{filename} = $checked->{show}; + delete $checked->{show}; + $checked->{limit} = 1; + } elsif ( $checked->{filename} ne '' ) { + delete $checked->{show}; + } - $checked->{from} = time::check_date( $params->{from} ); - $checked->{till} = time::check_date( $params->{till} ); + $checked->{from} = time::check_date( $params->{from} ); + $checked->{till} = time::check_date( $params->{till} ); - #print STDERR 'checked:'.Dumper ($checked); + #print STDERR 'checked:'.Dumper ($checked); - return $checked; + return $checked; } diff --git a/website/agenda/planung/imageUpload.cgi b/website/agenda/planung/imageUpload.cgi index 2db3cb9..e03fb94 100755 --- a/website/agenda/planung/imageUpload.cgi +++ b/website/agenda/planung/imageUpload.cgi @@ -13,7 +13,7 @@ require 'CGI.pm'; use Date::Calc(); use Time::Local(); use Image::Magick(); -use Image::Magick::Square(); +use Image::Magick::Square; use config(); use auth(); @@ -43,76 +43,60 @@ my $error = ''; #get image from multiform before anything else if ( defined $r ) { - #Apache2::Request - # print "Content-type:text/html; charset=UTF-8; \n\n


Apache2::Request
\n"; - my $apr = Apache2::Request->new( $r, POST_MAX => $upload_limit, TEMP_DIR => $tmp_dir ); + #Apache2::Request + my $apr = Apache2::Request->new( $r, POST_MAX => $upload_limit, TEMP_DIR => $tmp_dir ); - #copy params to hash - my $body = $apr->body(); - if ( defined $body ) { - for my $key ( keys %$body ) { + #copy params to hash + my $body = $apr->body(); + if ( defined $body ) { + for my $key ( keys %$body ) { + $params->{ scalar($key) } = scalar( $apr->param($key) ); + } + } - # print "$key=".$apr->param($key)."
\n"; - $params->{ scalar($key) } = scalar( $apr->param($key) ); # unless ($key eq'image'); - } - } + my $status = $apr->parse; + $status = '' if ( $status =~ /missing input data/i ); + if ( $status =~ /limit/i ) { + $error = $status; + } else { + $upload = $apr->upload('image') if ( defined $params->{image} ); + } - # print Dumper($params); - - # print Dumper($apr); - my $status = $apr->parse; - - # print "Status:$status
"; - $status = '' if ( $status =~ /missing input data/i ); - if ( $status =~ /limit/i ) { - $error = $status; - } else { - $upload = $apr->upload('image') if ( defined $params->{image} ); - } - - #dont get params parsed - # $CGI::POST_MAX = $upload_limit; - # $CGI::TMPDIRECTORY=$tmp_dir; - $cgi = new CGI(); - - # my %params=$cgi->Vars(); - # $params=\%params; - # $error=$cgi->cgi_error()||$error; + $cgi = new CGI(); } else { - #CGI fallback - # print "Content-type:text/html; charset=UTF-8; \n\n


CGI
\n"; - $CGI::POST_MAX = $upload_limit; - $CGI::TMPDIRECTORY = $tmp_dir; - $cgi = new CGI(); - $error = $cgi->cgi_error() || $error; - my %params = $cgi->Vars(); - $params = \%params; + #CGI fallback + $CGI::POST_MAX = $upload_limit; + $CGI::TMPDIRECTORY = $tmp_dir; + $cgi = new CGI(); + $error = $cgi->cgi_error() || $error; + my %params = $cgi->Vars(); + $params = \%params; } print "Content-type:text/html; charset=UTF-8;\n\n"; my ( $user, $expires ) = auth::get_user( $cgi, $config ); return if ( ( !defined $user ) || ( $user eq '' ) ); my $user_presets = uac::get_user_presets( - $config, - { - user => $user, - project_id => $params->{project_id}, - studio_id => $params->{studio_id} - } + $config, + { + user => $user, + project_id => $params->{project_id}, + studio_id => $params->{studio_id} + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} - if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); + if ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ); $params->{project_id} = $user_presets->{project_id} - if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); + if ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); @@ -121,37 +105,40 @@ return unless defined uac::check( $config, $params, $user_presets ); my $permissions = $request->{permissions}; -$params->{action} = '' unless ( defined $params->{action} ); +$params->{action} = '' unless defined $params->{action}; if ( $permissions->{create_image} ne '1' ) { - uac::permissions_denied("create image"); - return 0; + uac::permissions_denied("create image"); + return 0; } my $file_info = undef; if ( $error ne '' ) { - if ( $error =~ /limit/ ) { - $params->{error} .= "Image size is limited to " . int( $upload_limit / 1000000 ) . " MB!" . "Please make it smaller and try again!"; - } else { - $params->{error} .= "Error:'$error'"; - } + if ( $error =~ /limit/ ) { + $params->{error} .= "Image size is limited to " . int( $upload_limit / 1000000 ) . " MB!" . "Please make it smaller and try again!"; + } else { + $params->{error} .= "Error:'$error'"; + } } elsif ( $params->{action} eq 'upload' ) { - $file_info = upload_file( $config, $cgi, $upload, $user ); - $params->{error} .= $file_info->{error}; - $params = update_database( $config, $params, $file_info, $user ) if ( $params->{error} eq '' ); + $file_info = upload_file( $config, $cgi, $upload, $user ); + $params->{error} .= $file_info->{error}; + $params = update_database( $config, $params, $file_info, $user ) if $params->{error} eq ''; } -print STDERR $params->{error} . "\n" if defined $params->{error}; + +print STDERR "upload error: $params->{error}\n" if $params->{error} ne ''; my $out = ''; template::process( $config, 'print', $params->{template}, $params ); -print $cgi->cgi_error() if defined $cgi; +print $cgi->cgi_error() if (defined $cgi) && (defined $cgi->cgi_error()); +return if $params->{action} eq ''; -#return; - -return if ( $params->{action} eq '' ); +$params->{action_result} ||= ''; +$params->{filename} ||= ''; +$params->{image_id} ||= ''; +$params->{name} ||= ''; if ( $params->{error} eq '' ) { - print qq{ + print qq{
success
$params->{action_result} @@ -165,256 +152,244 @@ if ( $params->{error} eq '' ) { }; } else { - print qq{ + print qq{
failed
$params->{error}
}; - } sub upload_file { - my $config = shift; - my $cgi = shift; - my $upload = shift; - my $user = shift; + my $config = shift; + my $cgi = shift; + my $upload = shift; + my $user = shift; - my $result = get_filename( $cgi, $upload ); - return $result if ( $result->{error} ne '' ); + my $result = get_filename( $cgi, $upload ); + return $result if ( $result->{error} ne '' ); - my $file = $result->{fh}; - my $filename = $result->{filename}; + my $file = $result->{fh}; + my $filename = $result->{filename}; - $result = check_filename($filename); - print STDERR $result . "\n"; - return $result if ( $result->{error} ne '' ); + $result = check_filename($filename); + #print STDERR $result . "\n"; + return $result if ( $result->{error} ne '' ); - my $extension = $result->{extension} || ''; + my $extension = $result->{extension} || ''; - #read file from handle - my $data; - my $content = ''; - print STDERR $file . "\n"; + #read file from handle + my $data; + my $content = ''; + #print STDERR $file . "\n"; - #unless (-e $file){} - binmode $file; - while ( read $file, $data, 1024 ) { - $content .= $data; - } + binmode $file; + while ( read $file, $data, 1024 ) { + $content .= $data; + } - #set filename to MD5 from content - my $md5_filename = Digest::MD5::md5_base64($content); - $md5_filename =~ s/[\/\+]/_/gi; + #set filename to MD5 from content + my $md5_filename = Digest::MD5::md5_base64($content); + $md5_filename =~ s/[\/\+]/_/gi; - return process_image( $config, $filename, $extension, $md5_filename, $content ); + return process_image( $config, $filename, $extension, $md5_filename, $content ); } sub update_database { - my $config = shift; - my $params = shift; - my $file_info = shift; - my $user = shift; + my $config = shift; + my $params = shift; + my $file_info = shift; + my $user = shift; - $params->{upload_path} = $file_info->{upload_path}; - $params->{upload_filename} = $file_info->{upload_filename}; - $params->{filename} = $file_info->{filename}; - $params->{thumb_path} = $file_info->{thumb_path}; - $params->{image_path} = $file_info->{image_path}; - $params->{icon_path} = $file_info->{icon_path}; - $params->{local_media_url} = $config->{locations}->{local_media_url}; + $params->{upload_path} = $file_info->{upload_path}; + $params->{upload_filename} = $file_info->{upload_filename}; + $params->{filename} = $file_info->{filename}; + $params->{thumb_path} = $file_info->{thumb_path}; + $params->{image_path} = $file_info->{image_path}; + $params->{icon_path} = $file_info->{icon_path}; + $params->{local_media_url} = $config->{locations}->{local_media_url}; - my $name = $params->{name} || ''; - $name = 'neu' unless $params =~ /\S/; + my $name = $params->{name} || ''; + $name = 'neu' unless $params =~ /\S/; - my $image = { - filename => $params->{filename}, - name => $name, - description => $params->{description}, - modified_by => $user, - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - licence => $params->{licence} - }; + my $image = { + filename => $params->{filename}, + name => $name, + description => $params->{description}, + modified_by => $user, + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + licence => $params->{licence} + }; - #connect - $config->{access}->{write} = 1; - my $dbh = db::connect($config); + #connect + $config->{access}->{write} = 1; + my $dbh = db::connect($config); - my $entries = images::get( $config, { filename => $image->{filename} } ); - if ( ( defined $entries ) && ( scalar(@$entries) > 0 ) ) { - images::update( $dbh, $image ); - my $entry = $entries->[0]; - $params->{image_id} = $entry->{id}; - } else { - $image->{created_by} = $user; - $params->{image_id} = images::insert( $dbh, $image ); - } - $config->{access}->{write} = 0; - $params->{action_result} = 'done!'; + my $entries = images::get( $config, { filename => $image->{filename} } ); + if ( ( defined $entries ) && ( scalar(@$entries) > 0 ) ) { + images::update( $dbh, $image ); + my $entry = $entries->[0]; + $params->{image_id} = $entry->{id}; + } else { + $image->{created_by} = $user; + $params->{image_id} = images::insert( $dbh, $image ); + } + $config->{access}->{write} = 0; + $params->{action_result} = 'done!'; - return $params; + return $params; } #get filename and filehandle from upload sub get_filename { - my $cgi = shift; - my $upload = shift; + my $cgi = shift; + my $upload = shift; - if ( defined $upload ) { + # try apache2 module + if ( defined $upload ) { + my $filename = $upload->filename(); + return { + filename => $filename, + fh => $upload->fh(), + error => '' + }; + } - # try apache2 module - my $filename = $upload->filename(); - return { - filename => $filename, - fh => $upload->fh(), - error => '' - }; + # fallback to CGI module + my $file = $cgi->param("image"); + if ( $file =~ /\|/ ) { + return { error => "is no file" }; + } - } + my $file_info = $cgi->uploadInfo($file); + if ( defined $file_info ) { + my $filename = $file_info->{'Content-Disposition'} || ''; + if ( $filename =~ /filename=\"(.*?)\"/ ) { + $filename = $1; + return { + filename => $filename, + fh => $file, + error => '' + }; - # fallback to CGI module - my $file = $cgi->param("image"); - if ( $file =~ /\|/ ) { - return { error => "is no file" }; - } + } + } - my $file_info = $cgi->uploadInfo($file); - if ( defined $file_info ) { - my $filename = $file_info->{'Content-Disposition'} || ''; - if ( $filename =~ /filename=\"(.*?)\"/ ) { - $filename = $1; - return { - filename => $filename, - fh => $file, - error => '' - }; - - } - } - - #error - return { error => 'Could not detect file name!' }; + #error + return { error => 'Could not detect file name!' }; } sub check_filename { - my $filename = shift; + my $filename = shift; - my @valid_extensions = ( 'png', 'jpeg', 'jpg', 'gif', 'pdf', 'txt', 'bmp', 'ps', 'eps', 'wmf' ); - if ( $filename =~ /\.([a-zA-Z]{3,5})$/ ) { - my $extension = lc $1; - unless ( grep( /$extension/, @valid_extensions ) ) { - return { error => 'Following file formats are supported: ' . join( ",", @valid_extensions ) . '!' }; - } - return { - extension => $extension, - error => '' - }; - } else { - return { error => 'Not matching file extension found! Supported are: ' . join( ",", @valid_extensions ) . '!' }; - } + my @valid_extensions = ( 'png', 'jpeg', 'jpg', 'gif', 'pdf', 'txt', 'bmp', 'ps', 'eps', 'wmf' ); + if ( $filename =~ /\.([a-zA-Z]{3,5})$/ ) { + my $extension = lc $1; + unless ( grep( /$extension/, @valid_extensions ) ) { + return { error => 'Following file formats are supported: ' . join( ",", @valid_extensions ) . '!' }; + } + return { + extension => $extension, + error => '' + }; + } else { + return { error => 'Not matching file extension found! Supported are: ' . join( ",", @valid_extensions ) . '!' }; + } } sub process_image { - my $config = shift; - my $filename = shift; - my $extension = shift; - my $md5_filename = shift; - my $content = shift; + my $config = shift; + my $filename = shift; + my $extension = shift; + my $md5_filename = shift; + my $content = shift; - my $upload_path = images::getInternalPath( $config, { type => 'upload', filename => $md5_filename . '.' . $extension } ); - my $thumb_path = images::getInternalPath( $config, { type => 'thumbs', filename => $md5_filename . '.jpg' } ); - my $icon_path = images::getInternalPath( $config, { type => 'icons', filename => $md5_filename . '.jpg' } ); - my $image_path = images::getInternalPath( $config, { type => 'images', filename => $md5_filename . '.jpg' } ); + my $upload_path = images::getInternalPath( $config, { type => 'upload', filename => $md5_filename . '.' . $extension } ); + my $thumb_path = images::getInternalPath( $config, { type => 'thumbs', filename => $md5_filename . '.jpg' } ); + my $icon_path = images::getInternalPath( $config, { type => 'icons', filename => $md5_filename . '.jpg' } ); + my $image_path = images::getInternalPath( $config, { type => 'images', filename => $md5_filename . '.jpg' } ); - #copy file to upload space - my $result = images::writeFile( $upload_path, $content ); - return $result if defined $result->{error}; + #copy file to upload space + my $result = images::writeFile( $upload_path, $content ); + return $result if defined $result->{error}; - #write image - my $image = new Image::Magick; - $image->Read($upload_path); - my $x = $image->Get('width') || 0; - my $y = $image->Get('height') || 0; - if ( ( $x == 0 ) || ( $y == 0 ) ) { - return { error => 'Could not read image!' }; - log::error( $config, 'Cannot read image $filename!' ); - } + #write image + my $image = new Image::Magick; + $image->Read($upload_path); + my $x = $image->Get('width') || 0; + my $y = $image->Get('height') || 0; + if ( ( $x == 0 ) || ( $y == 0 ) ) { + return { error => 'Could not read image!' }; + log::error( $config, 'Cannot read image $filename!' ); + } - #set max size image - if ( $x > 0 && $y > 0 ) { - if ( $x > $y ) { - $image->Resize( width => '600', height => int( 600 * $y / $x ) ); - } else { - $image->Resize( width => int( 600 * $x / $y ), height => '600' ); - } - } + #set max size image + if ( $x > 0 && $y > 0 ) { + if ( $x > $y ) { + $image->Resize( width => '600', height => int( 600 * $y / $x ) ); + } else { + $image->Resize( width => int( 600 * $x / $y ), height => '600' ); + } + } - #$image->Normalize(); - $image->Write( 'jpg:' . $image_path ); + #$image->Normalize(); + $image->Write( 'jpg:' . $image_path ); - #write thumb - my $thumb = $image; - $thumb->Trim2Square; - $thumb->Resize( width => 150, height => 150 ); - $thumb->Write( 'jpg:' . $thumb_path ); + #write thumb + my $thumb = $image; + $thumb->Trim2Square; + $thumb->Resize( width => 150, height => 150 ); + $thumb->Write( 'jpg:' . $thumb_path ); - my $icon = $image; - $icon->Trim2Square; - $icon->Resize( width => 25, height => 25 ); - $icon->Write( 'jpg:' . $icon_path ); + my $icon = $image; + $icon->Trim2Square; + $icon->Resize( width => 25, height => 25 ); + $icon->Write( 'jpg:' . $icon_path ); - unless ( -e $thumb_path ) { - return { error => 'could not create thumb file!' }; - } - unless ( -e $icon_path ) { - return { error => 'could not create icon file!' }; - } - unless ( -e $image_path ) { - return { error => 'could not create image file!' }; - } + return { error => 'could not create thumb file!' } unless -e $thumb_path; + return { error => 'could not create icon file!' } unless -e $icon_path; + return { error => 'could not create image file!' } unless -e $image_path; - return { - upload_filename => $filename, - - filename => $md5_filename . '.jpg', - thumb_path => $thumb_path, - icon_path => $icon_path, - image_path => $image_path, - - error => '' - }; + return { + upload_filename => $filename, + filename => $md5_filename . '.jpg', + thumb_path => $thumb_path, + icon_path => $icon_path, + image_path => $image_path, + error => '' + }; } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; - $checked->{template} = template::check($config, $params->{template}, 'imageUpload' ); + my $checked = {}; + $checked->{template} = template::check( $config, $params->{template}, 'imageUpload' ); - #numeric values - for my $param ( 'project_id', 'studio_id', 'default_studio_id' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + #numeric values + for my $param ( 'project_id', 'studio_id', 'default_studio_id' ) { + $checked->{$param} = $params->{$param} if ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ); + } - #string - for my $param ( 'debug', 'name', 'description', 'licence' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\s*(.+?)\s*$/ ) ) { - $checked->{$param} = $1; - } - } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - #Words - for my $attr ('action') { - if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\S+)/ ) ) { - $checked->{$attr} = $params->{$attr}; - } - } - return $checked; + #string + for my $param ( 'debug', 'name', 'description', 'licence' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\s*(.+?)\s*$/ ) ) { + $checked->{$param} = $1; + } + } + + #Words + for my $attr ('action') { + if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\S+)/ ) ) { + $checked->{$attr} = $params->{$attr}; + } + } + return $checked; } diff --git a/website/agenda/planung/localization.cgi b/website/agenda/planung/localization.cgi index 9fad211..07212c6 100755 --- a/website/agenda/planung/localization.cgi +++ b/website/agenda/planung/localization.cgi @@ -24,11 +24,11 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config ); return if ( $user eq '' ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - } + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + } }; $params = $request->{params}->{checked}; my $loc = localization::get( $config, { user => $user, file => $params->{usecase} } ); @@ -38,25 +38,23 @@ my $json = JSON::to_json( $loc, { pretty => 1 } ); my @json_lines = (); for my $line ( split /\n/, $json ) { - push @json_lines, "'" . $line . "'\n"; + push @json_lines, "'" . $line . "'\n"; } $json = $header . $json; - -# .'var loc_text='.join('+',@json_lines).";\n" -# .'var loc = JQuery.parseJSON(loc_text)'; print $json; sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = { usecase => '' }; + my $checked = { usecase => '' }; - if ( defined $params->{usecase} ) { - if ( $params->{usecase} =~ /^([a-z\-\_\,]+)$/ ) { - $checked->{usecase} = $1; - } - } - return $checked; + if ( defined $params->{usecase} ) { + if ( $params->{usecase} =~ /^([a-z\-\_\,]+)$/ ) { + $checked->{usecase} = $1; + } + } + return $checked; } diff --git a/website/agenda/planung/notify_events.cgi b/website/agenda/planung/notify_events.cgi index 036b147..b2d9612 100755 --- a/website/agenda/planung/notify_events.cgi +++ b/website/agenda/planung/notify_events.cgi @@ -3,7 +3,8 @@ use warnings "all"; use strict; use URI::Escape(); -use Encode(); + +#use Encode(); use Data::Dumper; use MIME::Lite(); @@ -31,12 +32,12 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config ); return if ( ( !defined $user ) || ( $user eq '' ) ); my $user_presets = uac::get_user_presets( - $config, - { - user => $user, - project_id => $params->{project_id}, - studio_id => $params->{studio_id} - } + $config, + { + user => $user, + project_id => $params->{project_id}, + studio_id => $params->{studio_id} + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -45,11 +46,11 @@ $params->{project_id} = $user_presets->{project_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; #print STDERR Dumper($request)."\n"; @@ -61,221 +62,222 @@ $params = $request->{params}->{checked}; #show header unless ( params::isJson() || ( $params->{template} =~ /\.txt/ ) ) { - my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); - $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); - template::process( $config, 'print', template::check($config, 'default.html'), $headerParams ); + my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); + $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); + template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); } return unless uac::check( $config, $params, $user_presets ) == 1; $config->{access}->{write} = 0; if ( $params->{action} eq 'send' ) { - sendMail( $config, $request ); - return; + sendMail( $config, $request ); + return; } show_events( $config, $request ); #show existing event history sub show_events { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - for my $attr ( 'project_id', 'studio_id', 'duration' ) { # 'series_id','event_id' - unless ( defined $params->{$attr} ) { - uac::print_error( "missing " . $attr . " to show changes" ); - return; - } - } + for my $attr ( 'project_id', 'studio_id', 'duration' ) { # 'series_id','event_id' + unless ( defined $params->{$attr} ) { + uac::print_error( "missing " . $attr . " to show changes" ); + return; + } + } - unless ( $permissions->{read_event} == 1 ) { - uac::print_error("missing permissions to show changes"); - return; - } + unless ( $permissions->{read_event} == 1 ) { + uac::print_error("missing permissions to show changes"); + return; + } - # get events - my $duration = $params->{duration}; - my $options = { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - from_date => time::time_to_date(), - till_date => time::time_to_date( time() + $duration * 24 * 60 * 60 ), - draft => 0, - published => 1 - }; + # get events + my $duration = $params->{duration}; + my $options = { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + from_date => time::time_to_date(), + till_date => time::time_to_date( time() + $duration * 24 * 60 * 60 ), + draft => 0, + published => 1 + }; - my $events = series::get_events( $config, $options ); + my $events = series::get_events( $config, $options ); - # get series_users - for my $event (@$events) { - my $mail = getMail( $config, $request, $event ); - $event->{mail} = $mail; - } + # get series_users + for my $event (@$events) { + my $mail = getMail( $config, $request, $event ); + $event->{mail} = $mail; + } - return unless defined $events; - my @events = sort { $a->{start} cmp $b->{start} } @$events; - $params->{events} = \@events; + return unless defined $events; + my @events = sort { $a->{start} cmp $b->{start} } @$events; + $params->{events} = \@events; - for my $permission ( keys %{$permissions} ) { - $params->{'allow'}->{$permission} = $request->{permissions}->{$permission}; - } + for my $permission ( keys %{$permissions} ) { + $params->{'allow'}->{$permission} = $request->{permissions}->{$permission}; + } - $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'notify_events' } ); - template::process($config, 'print', $params->{template}, $params ); + $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'notify_events' } ); + template::process( $config, 'print', $params->{template}, $params ); } sub sendMail { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { - unless ( defined $params->{$attr} ) { - uac::print_error( "missing " . $attr . " to send notification" ); - return; - } - } + for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { + unless ( defined $params->{$attr} ) { + uac::print_error( "missing " . $attr . " to send notification" ); + return; + } + } - unless ( $permissions->{read_event} == 1 ) { - uac::print_error("missing permissions to send notification"); - return; - } + unless ( $permissions->{read_event} == 1 ) { + uac::print_error("missing permissions to send notification"); + return; + } - my $options = { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - series_id => $params->{series_id}, - event_id => $params->{event_id}, - draft => 0, - published => 0, - }; - my $events = series::get_events( $config, $options ); + my $options = { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + series_id => $params->{series_id}, + event_id => $params->{event_id}, + draft => 0, + published => 0, + }; + my $events = series::get_events( $config, $options ); - unless ( scalar(@$events) == 1 ) { - uac::print_error("did not found exactly one event"); - return; - } + unless ( scalar(@$events) == 1 ) { + uac::print_error("did not found exactly one event"); + return; + } - my $mail = getMail( $config, $request, $events->[0] ); - $mail->{To} = $params->{to} if defined $params->{to}; - $mail->{Cc} = $params->{cc} if defined $params->{cc}; - $mail->{Subject} = $params->{subject} if defined $params->{subject}; - $mail->{Data} = $params->{content} if defined $params->{content}; + my $mail = getMail( $config, $request, $events->[0] ); + $mail->{To} = $params->{to} if defined $params->{to}; + $mail->{Cc} = $params->{cc} if defined $params->{cc}; + $mail->{Subject} = $params->{subject} if defined $params->{subject}; + $mail->{Data} = $params->{content} if defined $params->{content}; - my $msg = MIME::Lite->new( - 'From' => $mail->{'From'}, - 'To' => $mail->{'To'}, - 'Cc' => $mail->{'Cc'}, - 'Reply-To' => $mail->{'Reply-To'}, - 'Subject' => $mail->{'Subject'}, - 'Data' => $mail->{'Data'}, - ); + my $msg = MIME::Lite->new( + 'From' => $mail->{'From'}, + 'To' => $mail->{'To'}, + 'Cc' => $mail->{'Cc'}, + 'Reply-To' => $mail->{'Reply-To'}, + 'Subject' => $mail->{'Subject'}, + 'Data' => $mail->{'Data'}, + ); - print '
';
-	$msg->print( \*STDOUT );
-	print '
'; - $msg->send; + print '
';
+    $msg->print( \*STDOUT );
+    print '
'; + $msg->send; } sub getMail { - my $config = shift; - my $request = shift; - my $event = shift; + my $config = shift; + my $request = shift; + my $event = shift; - my $users = series::get_users( - $config, - { - project_id => $event->{project_id}, - studio_id => $event->{studio_id}, - series_id => $event->{series_id} - } - ); + my $users = series::get_users( + $config, + { + project_id => $event->{project_id}, + studio_id => $event->{studio_id}, + series_id => $event->{series_id} + } + ); - my $userNames = []; - my $userMails = []; - for my $user (@$users) { - push @$userNames, ( split( /\s+/, $user->{full_name} ) )[0]; - push @$userMails, $user->{email}; - } - if ( scalar(@$userMails) == 0 ) { - $event->{noRecipient} = 1; - return; - } + my $userNames = []; + my $userMails = []; + for my $user (@$users) { + push @$userNames, ( split( /\s+/, $user->{full_name} ) )[0]; + push @$userMails, $user->{email}; + } + if ( scalar(@$userMails) == 0 ) { + $event->{noRecipient} = 1; + return; + } - my $mail = { - 'From' => 'programm@radiopiloten.de', - 'To' => join( ', ', @$userMails ), - 'Cc' => 'programm@radiopiloten.de', - 'Reply-To' => 'programm@radiopiloten.de', - 'Subject' => "$event->{start} - $event->{full_title}", - 'Data' => "Hallo " . join( ' und ', @$userNames ) . ",\n\n" - }; + my $mail = { + 'From' => 'programm@radiopiloten.de', + 'To' => join( ', ', @$userMails ), + 'Cc' => 'programm@radiopiloten.de', + 'Reply-To' => 'programm@radiopiloten.de', + 'Subject' => "$event->{start} - $event->{full_title}", + 'Data' => "Hallo " . join( ' und ', @$userNames ) . ",\n\n" + }; - $mail->{Data} .= "nur zur Erinnerung...\n\n"; - $mail->{Data} .= "am $event->{weekday_name} ist die naechste '$event->{series_name}'-Sendung.\n\n"; - $mail->{Data} .= "$event->{source_base_url}$event->{cache_base_url}/$config->{controllers}->{event}/$event->{event_id}.html\n\n"; - $mail->{Data} .= "Gruss, $request->{user}\n"; - return $mail; + $mail->{Data} .= "nur zur Erinnerung...\n\n"; + $mail->{Data} .= "am $event->{weekday_name} ist die naechste '$event->{series_name}'-Sendung.\n\n"; + $mail->{Data} .= "$event->{source_base_url}$event->{cache_base_url}/$config->{controllers}->{event}/$event->{event_id}.html\n\n"; + $mail->{Data} .= "Gruss, $request->{user}\n"; + return $mail; } sub eventToText { - my $event = shift; + my $event = shift; - my $s = events::get_keys($event)->{full_title} . "\n"; - $s .= $event->{excerpt} . "\n"; - $s .= $event->{user_excerpt} . "\n"; - $s .= $event->{topic} . "\n"; - $s .= $event->{content} . "\n"; + my $s = events::get_keys($event)->{full_title} . "\n"; + $s .= $event->{excerpt} . "\n"; + $s .= $event->{user_excerpt} . "\n"; + $s .= $event->{topic} . "\n"; + $s .= $event->{content} . "\n"; - #print STDERR "DUMP\n$s"; - return $s; + #print STDERR "DUMP\n$s"; + return $s; } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; - my $template = ''; - $checked->{template} = template::check($config, $params->{template}, 'notify_events' ); + my $checked = {}; + my $template = ''; + $checked->{template} = template::check( $config, $params->{template}, 'notify_events' ); - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - #numeric values - for my $param ( 'event_id', 'project_id', 'studio_id', 'default_studio_id', 'user_id', 'series_id', 'duration' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + #numeric values + for my $param ( 'event_id', 'project_id', 'studio_id', 'default_studio_id', 'user_id', 'series_id', 'duration' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - for my $param ( 'subject', 'to', 'cc', 'content' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /\S/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + for my $param ( 'subject', 'to', 'cc', 'content' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /\S/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - #actions and roles - $checked->{action} = ''; - if ( defined $params->{action} ) { - if ( $params->{action} =~ /^(send)$/ ) { - $checked->{action} = $params->{action}; - } - } + #actions and roles + $checked->{action} = ''; + if ( defined $params->{action} ) { + if ( $params->{action} =~ /^(send)$/ ) { + $checked->{action} = $params->{action}; + } + } - return $checked; + return $checked; } diff --git a/website/agenda/planung/playout.cgi b/website/agenda/planung/playout.cgi index 8abe17e..737c343 100755 --- a/website/agenda/planung/playout.cgi +++ b/website/agenda/planung/playout.cgi @@ -5,7 +5,8 @@ use strict; use Data::Dumper; use URI::Escape(); -use Encode(); + +#use Encode(); use localization(); use params(); @@ -39,12 +40,12 @@ print "Content-type:text/html; charset=UTF-8;\n\n"; #print STDERR $params->{project_id}."\n"; my $user_presets = uac::get_user_presets( - $config, - { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - user => $user - } + $config, + { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + user => $user + } ); $params->{default_studio_id} = $user_presets->{studio_id}; @@ -56,11 +57,11 @@ $params->{project_id} = $user_presets->{project_id} #print STDERR $params->{project_id}."\n"; my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); @@ -74,88 +75,89 @@ $headerParams->{loc} = localization::get( $config, { user => $user, file => 'men return unless uac::check( $config, $params, $user_presets ) == 1; if ( defined $params->{action} ) { - deleteFromPlayout( $config, $request ) if ( $params->{action} eq 'delete' ); + deleteFromPlayout( $config, $request ) if ( $params->{action} eq 'delete' ); } else { - print "missing action\n"; + print "missing action\n"; } return; sub deleteFromPlayout { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{update_event_status_playout} == 1 ) { - uac::permissions_denied('update_event_status_playout'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{update_event_status_playout} == 1 ) { + uac::permissions_denied('update_event_status_playout'); + return; + } - for my $attr ( 'project_id', 'studio_id', 'start_date' ) { - unless ( defined $params->{$attr} ) { - uac::print_error( "missing " . $attr . " to show event" ); - return; - } - } + for my $attr ( 'project_id', 'studio_id', 'start_date' ) { + unless ( defined $params->{$attr} ) { + uac::print_error( "missing " . $attr . " to show event" ); + return; + } + } - $config->{access}->{write} = 1; - my $dbh = db::connect($config); + $config->{access}->{write} = 1; + my $dbh = db::connect($config); - my $result = playout::delete( - $config, $dbh, - { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - start => $params->{start_date} - } - ); - $config->{access}->{write} = 0; + my $result = playout::delete( + $config, $dbh, + { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + start => $params->{start_date} + } + ); + $config->{access}->{write} = 0; - print "result:$result\n"; + print "result:$result\n"; } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - #actions and roles - $checked->{action} = ''; - if ( defined $params->{action} ) { - if ( $params->{action} =~ /^(delete)$/ ) { - $checked->{action} = $params->{action}; - } - } + #actions and roles + $checked->{action} = ''; + if ( defined $params->{action} ) { + if ( $params->{action} =~ /^(delete)$/ ) { + $checked->{action} = $params->{action}; + } + } - #numeric values - $checked->{exclude} = 0; - for my $param ( 'project_id', 'studio_id' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + #numeric values + $checked->{exclude} = 0; + for my $param ( 'project_id', 'studio_id' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - #dates - for my $param ('start_date') { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d\d\d\d\-\d\d\-\d\d \d\d\:\d\d)/ ) ) { - $checked->{$param} = $1 . ':00'; - } - } + #dates + for my $param ('start_date') { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d\d\d\d\-\d\d\-\d\d \d\d\:\d\d)/ ) ) { + $checked->{$param} = $1 . ':00'; + } + } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - #$checked->{template}=template::check($config, $params->{template},'playout'); + #$checked->{template}=template::check($config, $params->{template},'playout'); - return $checked; + return $checked; } diff --git a/website/agenda/planung/projects.cgi b/website/agenda/planung/projects.cgi index f516788..3b5fec0 100755 --- a/website/agenda/planung/projects.cgi +++ b/website/agenda/planung/projects.cgi @@ -26,12 +26,12 @@ return if ( $user eq '' ); my $permissions = roles::get_user_permissions($config); my $user_presets = uac::get_user_presets( - $config, - { - user => $user, - project_id => $params->{project_id}, - studio_id => $params->{studio_id} - } + $config, + { + user => $user, + project_id => $params->{project_id}, + studio_id => $params->{studio_id} + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -40,11 +40,11 @@ $params->{project_id} = $user_presets->{project_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); @@ -53,7 +53,7 @@ $params = $request->{params}->{checked}; #process header my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); -template::process($config, 'print', template::check($config, 'default.html'), $headerParams ); +template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); return unless uac::check( $config, $params, $user_presets ) == 1; print q{ @@ -63,244 +63,245 @@ print q{ }; if ( defined $params->{action} ) { - save_project( $config, $request ) if ( $params->{action} eq 'save' ); - delete_project( $config, $request ) if ( $params->{action} eq 'delete' ); - assign_studio( $config, $request ) if ( $params->{action} eq 'assign_studio' ); - unassign_studio( $config, $request ) if ( $params->{action} eq 'unassign_studio' ); + save_project( $config, $request ) if ( $params->{action} eq 'save' ); + delete_project( $config, $request ) if ( $params->{action} eq 'delete' ); + assign_studio( $config, $request ) if ( $params->{action} eq 'assign_studio' ); + unassign_studio( $config, $request ) if ( $params->{action} eq 'unassign_studio' ); } $config->{access}->{write} = 0; show_projects( $config, $request ); sub delete_project { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $permissions = $request->{permissions}; - unless ( $permissions->{delete_project} == 1 ) { - uac::permissions_denied('delete_project'); - return; - } + my $permissions = $request->{permissions}; + unless ( $permissions->{delete_project} == 1 ) { + uac::permissions_denied('delete_project'); + return; + } - my $params = $request->{params}->{checked}; - my $columns = project::get_columns($config); + my $params = $request->{params}->{checked}; + my $columns = project::get_columns($config); - my $entry = {}; - for my $param ( keys %$params ) { - if ( defined $columns->{$param} ) { - $entry->{$param} = $params->{$param} || ''; - } - } + my $entry = {}; + for my $param ( keys %$params ) { + if ( defined $columns->{$param} ) { + $entry->{$param} = $params->{$param} || ''; + } + } - my $project_id = $params->{pid} || ''; + my $project_id = $params->{pid} || ''; - if ( $project_id ne '' ) { - $config->{access}->{write} = 1; - $entry->{project_id} = $project_id; - delete $entry->{studio_id}; - project::delete( $config, $entry ); - uac::print_info("Project deleted"); - } + if ( $project_id ne '' ) { + $config->{access}->{write} = 1; + $entry->{project_id} = $project_id; + delete $entry->{studio_id}; + project::delete( $config, $entry ); + uac::print_info("Project deleted"); + } } sub save_project { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - #filter entry for studio columns - my $columns = project::get_columns($config); - my $entry = {}; - for my $param ( keys %$params ) { - if ( defined $columns->{$param} ) { - $entry->{$param} = $params->{$param} || ''; - } - } + #filter entry for studio columns + my $columns = project::get_columns($config); + my $entry = {}; + for my $param ( keys %$params ) { + if ( defined $columns->{$param} ) { + $entry->{$param} = $params->{$param} || ''; + } + } - my $project_id = $params->{pid} || ''; - if ( $project_id ne '' ) { - unless ( $permissions->{update_project} == 1 ) { - uac::permissions_denied('update_project'); - return; - } - $entry->{project_id} = $project_id; - delete $entry->{studio_id}; + my $project_id = $params->{pid} || ''; + if ( $project_id ne '' ) { + unless ( $permissions->{update_project} == 1 ) { + uac::permissions_denied('update_project'); + return; + } + $entry->{project_id} = $project_id; + delete $entry->{studio_id}; - $config->{access}->{write} = 1; - project::update( $config, $entry ); - $config->{access}->{write} = 0; - uac::print_info("project saved"); - } else { - unless ( $permissions->{create_project} == 1 ) { - uac::permissions_denied('create_project'); - return; - } - my $projects = project::get( $config, { name => $entry->{name} } ); - if ( scalar @$projects > 0 ) { - uac::print_error("project with name '$entry->{name}' already exists"); - return; - } - delete $entry->{project_id}; - delete $entry->{studio_id}; + $config->{access}->{write} = 1; + project::update( $config, $entry ); + $config->{access}->{write} = 0; + uac::print_info("project saved"); + } else { + unless ( $permissions->{create_project} == 1 ) { + uac::permissions_denied('create_project'); + return; + } + my $projects = project::get( $config, { name => $entry->{name} } ); + if ( scalar @$projects > 0 ) { + uac::print_error("project with name '$entry->{name}' already exists"); + return; + } + delete $entry->{project_id}; + delete $entry->{studio_id}; - $config->{access}->{write} = 1; - project::insert( $config, $entry ); - $config->{access}->{write} = 0; - uac::print_info("project created"); - } + $config->{access}->{write} = 1; + project::insert( $config, $entry ); + $config->{access}->{write} = 0; + uac::print_info("project created"); + } } sub assign_studio { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{assign_project_studio} == 1 ) { - uac::permissions_denied('assign_project_studio'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{assign_project_studio} == 1 ) { + uac::permissions_denied('assign_project_studio'); + return; + } - for my $param ( 'pid', 'sid' ) { - unless ( defined $params->{$param} ) { - uac::print_error( 'missing ' . $param ); - return; - } - } - $config->{access}->{write} = 1; - project::assign_studio( - $config, - { - project_id => $params->{pid}, - studio_id => $params->{sid} - } - ); - $config->{access}->{write} = 0; - uac::print_info("project assigned"); + for my $param ( 'pid', 'sid' ) { + unless ( defined $params->{$param} ) { + uac::print_error( 'missing ' . $param ); + return; + } + } + $config->{access}->{write} = 1; + project::assign_studio( + $config, + { + project_id => $params->{pid}, + studio_id => $params->{sid} + } + ); + $config->{access}->{write} = 0; + uac::print_info("project assigned"); } # TODO: unassign series from studio sub unassign_studio { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{assign_project_studio} == 1 ) { - uac::permissions_denied('assign_project_studio'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{assign_project_studio} == 1 ) { + uac::permissions_denied('assign_project_studio'); + return; + } - for my $param ( 'pid', 'sid' ) { - unless ( defined $params->{$param} ) { - uac::print_error( 'missing ' . $param ); - return; - } - } - $config->{access}->{write} = 1; - project::unassign_studio( - $config, - { - project_id => $params->{pid}, - studio_id => $params->{sid} - } - ); - $config->{access}->{write} = 0; - uac::print_info("project unassigned"); + for my $param ( 'pid', 'sid' ) { + unless ( defined $params->{$param} ) { + uac::print_error( 'missing ' . $param ); + return; + } + } + $config->{access}->{write} = 1; + project::unassign_studio( + $config, + { + project_id => $params->{pid}, + studio_id => $params->{sid} + } + ); + $config->{access}->{write} = 0; + uac::print_info("project unassigned"); } sub show_projects { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - unless ( $permissions->{read_project} == 1 ) { - uac::permissions_denied('read_project'); - return; - } + unless ( $permissions->{read_project} == 1 ) { + uac::permissions_denied('read_project'); + return; + } - my $projects = project::get($config); - my $studios = studios::get($config); - my @projects = reverse sort { $a->{end_date} cmp $b->{end_date} } (@$projects); - $projects = \@projects; + my $projects = project::get($config); + my $studios = studios::get($config); + my @projects = reverse sort { $a->{end_date} cmp $b->{end_date} } (@$projects); + $projects = \@projects; - for my $project (@$projects) { + for my $project (@$projects) { - # get assigned studios - my $project_studio_assignements = project::get_studio_assignments( $config, { project_id => $project->{project_id} } ); - $project->{pid} = $project->{project_id}; + # get assigned studios + my $project_studio_assignements = project::get_studio_assignments( $config, { project_id => $project->{project_id} } ); + $project->{pid} = $project->{project_id}; - # get assigned studios by id - my $assigned_studio_by_id = {}; - for my $studio (@$project_studio_assignements) { - $assigned_studio_by_id->{ $studio->{studio_id} } = 1; - } + # get assigned studios by id + my $assigned_studio_by_id = {}; + for my $studio (@$project_studio_assignements) { + $assigned_studio_by_id->{ $studio->{studio_id} } = 1; + } - my $assigned_studios = []; - my $unassigned_studios = []; - for my $studio (@$studios) { - my %studio = %$studio; - $studio = \%studio; - $studio->{pid} = $project->{pid}; - $studio->{sid} = $studio->{id}; - if ( defined $assigned_studio_by_id->{ $studio->{id} } ) { - push @$assigned_studios, $studio; - } else { - push @$unassigned_studios, $studio; - } - } - $project->{assigned_studios} = $assigned_studios; - $project->{unassigned_studios} = $unassigned_studios; - } + my $assigned_studios = []; + my $unassigned_studios = []; + for my $studio (@$studios) { + my %studio = %$studio; + $studio = \%studio; + $studio->{pid} = $project->{pid}; + $studio->{sid} = $studio->{id}; + if ( defined $assigned_studio_by_id->{ $studio->{id} } ) { + push @$assigned_studios, $studio; + } else { + push @$unassigned_studios, $studio; + } + } + $project->{assigned_studios} = $assigned_studios; + $project->{unassigned_studios} = $unassigned_studios; + } - $params->{projects} = $projects; - $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'projects' } ); - uac::set_template_permissions( $permissions, $params ); + $params->{projects} = $projects; + $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'projects' } ); + uac::set_template_permissions( $permissions, $params ); - template::process($config, 'print', $params->{template}, $params ); + template::process( $config, 'print', $params->{template}, $params ); } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - #template - my $template = ''; - $template = template::check($config, $params->{template}, 'projects' ); - $checked->{template} = $template; + #template + my $template = ''; + $template = template::check( $config, $params->{template}, 'projects' ); + $checked->{template} = $template; - #actions - my $action = ''; - if ( defined $params->{action} ) { - if ( $params->{action} =~ /^(save|delete|assign_studio|unassign_studio)$/ ) { - $checked->{action} = $params->{action}; - } - } + #actions + my $action = ''; + if ( defined $params->{action} ) { + if ( $params->{action} =~ /^(save|delete|assign_studio|unassign_studio)$/ ) { + $checked->{action} = $params->{action}; + } + } - for my $param ( 'name', 'title', 'subtitle', 'start_date', 'end_date', 'image', 'email' ) { - if ( defined $params->{$param} ) { - $checked->{$param} = $params->{$param}; - } - } + for my $param ( 'name', 'title', 'subtitle', 'start_date', 'end_date', 'image', 'email' ) { + if ( defined $params->{$param} ) { + $checked->{$param} = $params->{$param}; + } + } - #numeric values - for my $param ( 'project_id', 'studio_id', 'default_studio_id', 'pid', 'sid' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + #numeric values + for my $param ( 'project_id', 'studio_id', 'default_studio_id', 'pid', 'sid' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - return $checked; + return $checked; } diff --git a/website/agenda/planung/requestPassword.cgi b/website/agenda/planung/requestPassword.cgi index 87c9893..6432515 100755 --- a/website/agenda/planung/requestPassword.cgi +++ b/website/agenda/planung/requestPassword.cgi @@ -19,7 +19,7 @@ my $r = shift; my $config = config::get('../config/config.cgi'); my $debug = $config->{system}->{debug}; -$params = check_params($params); +$params = check_params( $config, $params ); print "Content-type:text/html\n\n"; print qq{ @@ -31,100 +31,100 @@ print qq{ }; if ( defined $params->{user} ) { - sendToken( $config, $params ); - return; + sendToken( $config, $params ); + return; } else { - my $result = checkToken( $config, $params ); - return; + my $result = checkToken( $config, $params ); + return; } sub sendToken { - my $config = shift; - my $params = shift; - my $entry = password_requests::sendToken( $config, { user => $params->{user} } ); - if ( defined $entry ) { - print "Please check you mails\n"; - } else { - print "Sorry\n"; - } + my $config = shift; + my $params = shift; + my $entry = password_requests::sendToken( $config, { user => $params->{user} } ); + if ( defined $entry ) { + print "Please check you mails\n"; + } else { + print "Sorry\n"; + } } sub checkToken { - my $config = shift; - my $params = shift; + my $config = shift; + my $params = shift; - my $token = $params->{token}; + my $token = $params->{token}; - my $entry = password_requests::get( $config, { token => $token } ); - unless ( defined $entry ) { - print "invalid token\n"; - return undef; - } + my $entry = password_requests::get( $config, { token => $token } ); + unless ( defined $entry ) { + print "invalid token\n"; + return undef; + } - print STDERR Dumper($entry); - my $created_at = $entry->{created_at}; - unless ( defined $created_at ) { - print "invalid token age\n"; - return undef; - } + print STDERR Dumper($entry); + my $created_at = $entry->{created_at}; + unless ( defined $created_at ) { + print "invalid token age\n"; + return undef; + } - my $age = time() - time::datetime_to_time($created_at); - if ( $age > 600 ) { - print "token is too old\n"; - password_requests::delete( $config, { token => $token } ); - return undef; - } + my $age = time() - time::datetime_to_time($created_at); + if ( $age > 600 ) { + print "token is too old\n"; + password_requests::delete( $config, { token => $token } ); + return undef; + } - $config->{access}->{write} = 1; - $entry->{max_attempts}++; - password_requests::update( $config, $entry ); - $config->{access}->{write} = 0; + $config->{access}->{write} = 1; + $entry->{max_attempts}++; + password_requests::update( $config, $entry ); + $config->{access}->{write} = 0; - if ( $entry->{max_attempts} > 10 ) { - print "too many failed attempts, please request a new token by mail\n"; - password_requests::delete( $config, { token => $token } ); - return undef; - } + if ( $entry->{max_attempts} > 10 ) { + print "too many failed attempts, please request a new token by mail\n"; + password_requests::delete( $config, { token => $token } ); + return undef; + } - unless ( ( defined $params->{user_password} ) && ( defined $params->{user_password2} ) ) { - printForm($token); - return undef; - } + unless ( ( defined $params->{user_password} ) && ( defined $params->{user_password2} ) ) { + printForm($token); + return undef; + } - if ( $params->{action} eq 'change' ) { - my $user = $entry->{user}; - my $request = { - config => $config, - params => { checked => $params } - }; - my $result = password_requests::changePassword( $config, $request, $user ); + if ( $params->{action} eq 'change' ) { + my $user = $entry->{user}; + my $request = { + config => $config, + params => { checked => $params } + }; + my $result = password_requests::changePassword( $config, $request, $user ); - if ( defined $result->{error} ) { + if ( defined $result->{error} ) { - #print "sorry\n"; - print $result->{error} . "\n"; - printForm($token); - } + #print "sorry\n"; + print $result->{error} . "\n"; + printForm($token); + } - if ( defined $result->{success} ) { + if ( defined $result->{success} ) { - #print "success\n"; - print $result->{success} . "\n"; - password_requests::delete( $config, { user => $user } ); - my $url = $config->{locations}->{editor_base_url}; - print qq{ + #print "success\n"; + print $result->{success} . "\n"; + password_requests::delete( $config, { user => $user } ); + my $url = $config->{locations}->{editor_base_url}; + print qq{ }; - } - } + } + } } sub printForm { - my $token = shift; - print qq{ + my $token = shift; + print qq{
@@ -136,32 +136,33 @@ sub printForm { } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - #my $template = ''; - #$checked->{template} = template::check($config, $params->{template}, 'requestPassword' ); + #my $template = ''; + #$checked->{template} = template::check($config, $params->{template}, 'requestPassword' ); - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - for my $param ( 'user', 'token', 'user_password', 'user_password2' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /\S/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + for my $param ( 'user', 'token', 'user_password', 'user_password2' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /\S/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - $checked->{action} = ''; - if ( defined $params->{action} ) { - if ( $params->{action} =~ /^(change)$/ ) { - $checked->{action} = $params->{action}; - } - } + $checked->{action} = ''; + if ( defined $params->{action} ) { + if ( $params->{action} =~ /^(change)$/ ) { + $checked->{action} = $params->{action}; + } + } - return $checked; + return $checked; } diff --git a/website/agenda/planung/roles.cgi b/website/agenda/planung/roles.cgi index cd8543d..46b362c 100755 --- a/website/agenda/planung/roles.cgi +++ b/website/agenda/planung/roles.cgi @@ -26,23 +26,23 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config ); return if ( ( !defined $user ) || ( $user eq '' ) ); our $actions = { - read => 1, - update => 2, - assign => 3, - remove => 4, - disable => 5, - scan => 6, - create => 7, - delete => 8, + read => 1, + update => 2, + assign => 3, + remove => 4, + disable => 5, + scan => 6, + create => 7, + delete => 8, }; my $user_presets = uac::get_user_presets( - $config, - { - user => $user, - project_id => $params->{project_id}, - studio_id => $params->{studio_id} - } + $config, + { + user => $user, + project_id => $params->{project_id}, + studio_id => $params->{studio_id} + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -50,11 +50,11 @@ $params->{studio_id} = $params->{default_studio_id} $params->{project_id} = $user_presets->{project_id}; my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); $params = $request->{params}->{checked}; @@ -62,11 +62,11 @@ $params = $request->{params}->{checked}; #process header my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); -template::process($config, 'print', template::check($config, 'roles.html'), $headerParams ); +template::process( $config, 'print', template::check( $config, 'roles.html' ), $headerParams ); return unless uac::check( $config, $params, $user_presets ) == 1; if ( defined $params->{action} ) { - save_roles( $config, $request ) if ( $params->{action} eq 'save' ); + save_roles( $config, $request ) if ( $params->{action} eq 'save' ); } #show current roles @@ -83,381 +83,382 @@ return; # new roles will have role level 0 by default # sub save_roles { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - unless ( $permissions->{update_role} == 1 ) { - uac::permissions_denied('update_role'); - return; - } + unless ( $permissions->{update_role} == 1 ) { + uac::permissions_denied('update_role'); + return; + } - my $studio_id = $params->{studio_id}; - my $project_id = $params->{project_id}; - my $roles = uac::get_roles( $config, { project_id => $project_id, studio_id => $studio_id } ); + my $studio_id = $params->{studio_id}; + my $project_id = $params->{project_id}; + my $roles = uac::get_roles( $config, { project_id => $project_id, studio_id => $studio_id } ); - my $role_by_id = {}; - my $role_by_name = {}; - for my $role (@$roles) { - $role_by_id->{ $role->{id} } = $role; - $role_by_name->{ $role->{role} } = $role; - } + my $role_by_id = {}; + my $role_by_name = {}; + for my $role (@$roles) { + $role_by_id->{ $role->{id} } = $role; + $role_by_name->{ $role->{role} } = $role; + } - my $columns = uac::get_role_columns($config); + my $columns = uac::get_role_columns($config); - #print '
'.Dumper($columns).'
'; + #print '
'.Dumper($columns).'
'; - #initialize all value ids (given by params matching to database columns) - my $values = {}; - for my $param ( keys %$params ) { - if ( $param =~ /(.+?)\_(\d+)?$/ ) { - my $column = $1; - my $id = $2 || ''; - next unless defined $columns->{$column}; - $values->{$id} = {} if ( update_allowed( $permissions, $role_by_id, $id ) ); - } - } + #initialize all value ids (given by params matching to database columns) + my $values = {}; + for my $param ( keys %$params ) { + if ( $param =~ /(.+?)\_(\d+)?$/ ) { + my $column = $1; + my $id = $2 || ''; + next unless defined $columns->{$column}; + $values->{$id} = {} if ( update_allowed( $permissions, $role_by_id, $id ) ); + } + } - #init checkbox values with 0 - for my $id ( keys %$values ) { - if ( update_allowed( $permissions, $role_by_id, $id ) ) { - for my $column ( keys %$columns ) { - next if ( $column eq 'level' || $column eq 'role' || $column eq 'id' || $column eq 'project_id' || $column eq 'studio_id' ); - $values->{$id}->{$column} = 0; - } - } - } + #init checkbox values with 0 + for my $id ( keys %$values ) { + if ( update_allowed( $permissions, $role_by_id, $id ) ) { + for my $column ( keys %$columns ) { + next if ( $column eq 'level' || $column eq 'role' || $column eq 'id' || $column eq 'project_id' || $column eq 'studio_id' ); + $values->{$id}->{$column} = 0; + } + } + } - #set all checkbox values to 1 - for my $param ( keys %$params ) { - if ( $param =~ /(.+?)\_(\d+)?$/ ) { - my $column = $1; - my $id = $2 || ''; - next unless ( defined $columns->{$column} ); - if ( update_allowed( $permissions, $role_by_id, $id ) ) { - my $value = $params->{$param} || ''; - if ( $column eq 'level' ) { - if ( check_level( $permissions, $value ) == 1 ) { - $values->{$id}->{$column} = $value; - } else { - uac::permissions_denied("change the level of role!"); - return; - } - } elsif ( $column eq 'role' ) { - $values->{$id}->{$column} = $value; - } elsif ( $column eq 'id' || $column eq 'project_id' || $column eq 'studio_id' ) { + #set all checkbox values to 1 + for my $param ( keys %$params ) { + if ( $param =~ /(.+?)\_(\d+)?$/ ) { + my $column = $1; + my $id = $2 || ''; + next unless ( defined $columns->{$column} ); + if ( update_allowed( $permissions, $role_by_id, $id ) ) { + my $value = $params->{$param} || ''; + if ( $column eq 'level' ) { + if ( check_level( $permissions, $value ) == 1 ) { + $values->{$id}->{$column} = $value; + } else { + uac::permissions_denied("change the level of role!"); + return; + } + } elsif ( $column eq 'role' ) { + $values->{$id}->{$column} = $value; + } elsif ( $column eq 'id' || $column eq 'project_id' || $column eq 'studio_id' ) { - #id and studio id will be set later - } else { - $values->{$id}->{$column} = 1 if ( $value =~ /^\d+$/ ); - } - } - } - } + #id and studio id will be set later + } else { + $values->{$id}->{$column} = 1 if ( $value =~ /^\d+$/ ); + } + } + } + } - #print STDERR Dumper($values); - #order roles to update by level - for my $id ( sort { $values->{$a}->{level} <=> $values->{$b}->{level} } keys %$values ) { - my $role = $values->{$id}; - $role->{id} = $id || ''; - $role->{studio_id} = $studio_id; - $role->{project_id} = $project_id; + #print STDERR Dumper($values); + #order roles to update by level + for my $id ( sort { $values->{$a}->{level} <=> $values->{$b}->{level} } keys %$values ) { + my $role = $values->{$id}; + $role->{id} = $id || ''; + $role->{studio_id} = $studio_id; + $role->{project_id} = $project_id; - #if you are not admin - next if check_level( $permissions, $role->{level} ) == 0; + #if you are not admin + next if check_level( $permissions, $role->{level} ) == 0; - if ( $role->{project_id} eq '' ) { - uac::print_error('missing parameter project_id!'); - next; - } - if ( $role->{studio_id} eq '' ) { - uac::print_error('missing parameter studio_id!'); - next; - } - if ( ( $role->{role} eq '' ) && ( $id ne '' ) ) { - uac::print_error('missing parameter role!'); - next; - } + if ( $role->{project_id} eq '' ) { + uac::print_error('missing parameter project_id!'); + next; + } + if ( $role->{studio_id} eq '' ) { + uac::print_error('missing parameter studio_id!'); + next; + } + if ( ( $role->{role} eq '' ) && ( $id ne '' ) ) { + uac::print_error('missing parameter role!'); + next; + } - my $role_from_db = undef; - $role_from_db = $role_by_name->{ $role->{role} } if defined $role_by_name->{ $role->{role} }; + my $role_from_db = undef; + $role_from_db = $role_by_name->{ $role->{role} } if defined $role_by_name->{ $role->{role} }; - if ( $id eq '' ) { + if ( $id eq '' ) { - #insert role - next if ( $role->{role} eq '' ); - if ( defined $role_from_db ) { - uac::print_error("a role with name '$role->{role}' already exists!"); - next; - } - $role->{level} = 0; - print "insert $id $role->{role}
\n"; - $config->{access}->{write} = 1; - uac::insert_role( $config, $role ); - $config->{access}->{write} = 0; - } else { + #insert role + next if ( $role->{role} eq '' ); + if ( defined $role_from_db ) { + uac::print_error("a role with name '$role->{role}' already exists!"); + next; + } + $role->{level} = 0; + print "insert $id $role->{role}
\n"; + $config->{access}->{write} = 1; + uac::insert_role( $config, $role ); + $config->{access}->{write} = 0; + } else { - #update role - if ( ( defined $role_from_db ) && ( $id ne $role_from_db->{id} ) ) { - uac::print_error( 'you cannot rename role to existing role!' - . " '$role->{role}' ($id) != '$role_from_db->{role}' ($role_from_db->{id})" ); - next; - } - print "update $role->{role}
\n"; + #update role + if ( ( defined $role_from_db ) && ( $id ne $role_from_db->{id} ) ) { + uac::print_error( 'you cannot rename role to existing role!' + . " '$role->{role}' ($id) != '$role_from_db->{role}' ($role_from_db->{id})" ); + next; + } + print "update $role->{role}
\n"; - #print '
'.Dumper($role).'
'; - $config->{access}->{write} = 1; - uac::update_role( $config, $role ); - $config->{access}->{write} = 0; - } - } - print qq{
changes saved
}; + #print '
'.Dumper($role).'
'; + $config->{access}->{write} = 1; + uac::update_role( $config, $role ); + $config->{access}->{write} = 0; + } + } + print qq{
changes saved
}; } #check if update is allowed sub update_allowed { - my $permissions = shift; - my $role_by_id = shift; - my $id = shift; + my $permissions = shift; + my $role_by_id = shift; + my $id = shift; - return 0 unless defined $permissions; - return 0 unless defined $role_by_id; - return 0 unless defined $id; - return 1 if $id eq ''; - return 0 unless defined $role_by_id->{$id}; - my $role = $role_by_id->{$id}; - return check_level( $permissions, $role->{level} ); + return 0 unless defined $permissions; + return 0 unless defined $role_by_id; + return 0 unless defined $id; + return 1 if $id eq ''; + return 0 unless defined $role_by_id->{$id}; + my $role = $role_by_id->{$id}; + return check_level( $permissions, $role->{level} ); } #check if update is allowed sub check_level { - my $permissions = shift; - my $level = shift; - return 0 unless defined $permissions; - return 0 unless defined $level; - return 1 if ( $permissions->{is_admin} ); - return 1 if ( $permissions->{level} > $level ); - return 0; + my $permissions = shift; + my $level = shift; + return 0 unless defined $permissions; + return 0 unless defined $level; + return 1 if ( $permissions->{is_admin} ); + return 1 if ( $permissions->{level} > $level ); + return 0; } # user has to be assigned to studio # user needs to have permissions read_role sub show_roles { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{read_role} == 1 ) { - uac::permissions_denied('read_role'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{read_role} == 1 ) { + uac::permissions_denied('read_role'); + return; + } - my $studio_id = $params->{studio_id}; - my $project_id = $params->{project_id}; - my $columns = uac::get_role_columns($config); + my $studio_id = $params->{studio_id}; + my $project_id = $params->{project_id}; + my $columns = uac::get_role_columns($config); - #get user roles - my $conditions = {}; - $conditions->{studio_id} = $params->{studio_id} if ( $params->{studio_id} ne '' ); - $conditions->{project_id} = $params->{project_id} if ( $params->{project_id} ne '' ); - my $roles = uac::get_roles( $config, $conditions ); - @$roles = reverse sort { $a->{level} cmp $b->{level} } (@$roles); + #get user roles + my $conditions = {}; + $conditions->{studio_id} = $params->{studio_id} if ( $params->{studio_id} ne '' ); + $conditions->{project_id} = $params->{project_id} if ( $params->{project_id} ne '' ); + my $roles = uac::get_roles( $config, $conditions ); + @$roles = reverse sort { $a->{level} cmp $b->{level} } (@$roles); - #add new role template - unshift @$roles, { role => '', level => '0' }; + #add new role template + unshift @$roles, { role => '', level => '0' }; - #print user role form - my $out = qq{ + #print user role form + my $out = qq{
}; - if ( defined $permissions->{update_role} ) { + if ( defined $permissions->{update_role} ) { - #add new user role button - $out .= q{ + #add new user role button + $out .= q{ } - } + } - $out .= '
'; - $out .= ''; - my $localization = localization::get( $config, { user => $params->{presets}->{user}, file => 'roles' } ); - for my $key ( keys %$localization ) { - $localization->{$key} =~ s/\(//; - $localization->{$key} =~ s/\)/<\/span>/; - } + $out .= '
'; + $out .= '
'; + my $localization = localization::get( $config, { user => $params->{presets}->{user}, file => 'roles' } ); + for my $key ( keys %$localization ) { + $localization->{$key} =~ s/\(//; + $localization->{$key} =~ s/\)/<\/span>/; + } - #add role row - $out .= qq{}; - my $description = $localization->{label_role} || 'role'; - $out .= qq{}; + #add role row + $out .= qq{}; + my $description = $localization->{label_role} || 'role'; + $out .= qq{}; - for my $role (@$roles) { - $role->{active} = ''; - $role->{active} = ' disabled' if check_level( $permissions, $role->{level} ) == 0; - $role->{active} = ' disabled' unless defined $permissions->{update_role}; - } + for my $role (@$roles) { + $role->{active} = ''; + $role->{active} = ' disabled' if check_level( $permissions, $role->{level} ) == 0; + $role->{active} = ' disabled' unless defined $permissions->{update_role}; + } - for my $role (@$roles) { + for my $role (@$roles) { - #print Dumper($role); - my $id = $role->{id} || ''; - my $value = $role->{role} || ''; - my $style = ''; - $style = ' id="new_user_role" class="editor" style="display:none"' if ( $id eq '' ); - my $active = $role->{active}; - $out .= qq{}; - } - $out .= qq{}; + #print Dumper($role); + my $id = $role->{id} || ''; + my $value = $role->{role} || ''; + my $style = ''; + $style = ' id="new_user_role" class="editor" style="display:none"' if ( $id eq '' ); + my $active = $role->{active}; + $out .= qq{}; + } + $out .= qq{}; - #add level row - $out .= qq{}; - $description = $localization->{label_level} || 'level'; - $out .= qq{}; - for my $role (@$roles) { - my $id = $role->{id} || ''; - my $value = $role->{level} || ''; - my $style = ''; - $style = ' id="new_user_level" class="editor" style="display:none"' if ( $id eq '' ); - my $active = $role->{active}; - $out .= qq{}; - } - $out .= qq{}; + #add level row + $out .= qq{}; + $description = $localization->{label_level} || 'level'; + $out .= qq{}; + for my $role (@$roles) { + my $id = $role->{id} || ''; + my $value = $role->{level} || ''; + my $style = ''; + $style = ' id="new_user_level" class="editor" style="display:none"' if ( $id eq '' ); + my $active = $role->{active}; + $out .= qq{}; + } + $out .= qq{}; - #add permission rows - $columns = sort_columns($columns); + #add permission rows + $columns = sort_columns($columns); - for my $key (@$columns) { - next - if ( $key eq 'level' - || $key eq 'role' - || $key eq 'id' - || $key eq 'project_id' - || $key eq 'studio_id' - || $key eq 'modified_at' - || $key eq 'created_at' ); - my $title = $key; - $title =~ s/\_/ /g; - my $description = $localization->{ 'label_' . $key } || $key; - $out .= qq{}; - $out .= qq{}; - for my $role (@$roles) { - my $value = $role->{$key} || '0'; - my $id = $role->{id} || ''; - my $active = $role->{active}; - my $style = ''; - $style = ' class="editor' . $active . '" style="display:none"' if ( $id eq '' ); - my $checked = ''; - $checked = 'checked="checked"' if ( $value eq '1' ); - $active =~ s/\s//g; - $out .= qq{ + for my $key (@$columns) { + next + if ( $key eq 'level' + || $key eq 'role' + || $key eq 'id' + || $key eq 'project_id' + || $key eq 'studio_id' + || $key eq 'modified_at' + || $key eq 'created_at' ); + my $title = $key; + $title =~ s/\_/ /g; + my $description = $localization->{ 'label_' . $key } || $key; + $out .= qq{}; + $out .= qq{}; + for my $role (@$roles) { + my $value = $role->{$key} || '0'; + my $id = $role->{id} || ''; + my $active = $role->{active}; + my $style = ''; + $style = ' class="editor' . $active . '" style="display:none"' if ( $id eq '' ); + my $checked = ''; + $checked = 'checked="checked"' if ( $value eq '1' ); + $active =~ s/\s//g; + $out .= qq{ }; - } - $out .= qq{}; - } - $out .= '
$description
$description
$description
$description
$description
$description
'; - $out .= '' if ( defined $permissions->{update_role} ); - $out .= ''; - $out .= '
'; - print $out. "\n"; + } + $out .= qq{}; + } + $out .= ''; + $out .= '' if ( defined $permissions->{update_role} ); + $out .= ''; + $out .= '
'; + print $out. "\n"; } # sort columns by group and action sub sort_columns { - my $columns = shift; + my $columns = shift; - my $column_level = {}; - my $groups = sort_groups($columns); - for my $column ( keys %$columns ) { - my @words = split /_/, $column; - my $action = shift @words; - my $group = join( ' ', @words ); + my $column_level = {}; + my $groups = sort_groups($columns); + for my $column ( keys %$columns ) { + my @words = split /_/, $column; + my $action = shift @words; + my $group = join( ' ', @words ); - #print "action:'$action' group:'$group'
\n"; + #print "action:'$action' group:'$group'
\n"; - my $index = $groups->{$group} || 0; - $index += $actions->{$action} if ( defined $actions->{$action} ); - $column_level->{$column} = $index; + my $index = $groups->{$group} || 0; + $index += $actions->{$action} if ( defined $actions->{$action} ); + $column_level->{$column} = $index; - # print $index."
"; - } + # print $index."
"; + } - my @columns = sort { $column_level->{$a} <=> $column_level->{$b} } ( keys %$column_level ); - return \@columns; + my @columns = sort { $column_level->{$a} <=> $column_level->{$b} } ( keys %$column_level ); + return \@columns; } # sort columns by group sub sort_groups { - my $columns = shift; - my $groups = {}; + my $columns = shift; + my $groups = {}; - #extract groups - for my $column ( keys %$columns ) { - my @words = split /_/, $column; - my $action = shift @words; - my $group = join( ' ', @words ); - $groups->{$group} = 1; - } + #extract groups + for my $column ( keys %$columns ) { + my @words = split /_/, $column; + my $action = shift @words; + my $group = join( ' ', @words ); + $groups->{$group} = 1; + } - #weigth groups - my $i = 0; - for my $group ( sort keys %$groups ) { - $groups->{$group} = $i; - $i += 100; - } + #weigth groups + my $i = 0; + for my $group ( sort keys %$groups ) { + $groups->{$group} = $i; + $i += 100; + } - #print "
";
-	#for my $group (sort {$groups->{$a} <=> $groups->{$b}} (keys %$groups)){
-	#    print "$groups->{$group}\t$group\n";
-	#}
-	#print "
"; + #print "
";
+    #for my $group (sort {$groups->{$a} <=> $groups->{$b}} (keys %$groups)){
+    #    print "$groups->{$group}\t$group\n";
+    #}
+    #print "
"; - return $groups; + return $groups; } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - #template - my $template = ''; - $template = template::check($config, $params->{template}, 'roles.html' ); - $checked->{template} = $template; + #template + my $template = ''; + $template = template::check( $config, $params->{template}, 'roles.html' ); + $checked->{template} = $template; - #actions - if ( defined $params->{action} ) { - if ( $params->{action} eq 'save' ) { - $checked->{action} = $params->{action}; - } - } + #actions + if ( defined $params->{action} ) { + if ( $params->{action} eq 'save' ) { + $checked->{action} = $params->{action}; + } + } - #numeric values - for my $param ( 'project_id', 'studio_id', 'default_studio_id' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + #numeric values + for my $param ( 'project_id', 'studio_id', 'default_studio_id' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - #permission fields - for my $key ( keys %$params ) { - $checked->{$key} = $params->{$key} if ( $key =~ /^[a-z_]+_\d*$/ ); - } + #permission fields + for my $key ( keys %$params ) { + $checked->{$key} = $params->{$key} if ( $key =~ /^[a-z_]+_\d*$/ ); + } - return $checked; + return $checked; } diff --git a/website/agenda/planung/selectEvent.cgi b/website/agenda/planung/selectEvent.cgi index 4f13a11..76aad4f 100755 --- a/website/agenda/planung/selectEvent.cgi +++ b/website/agenda/planung/selectEvent.cgi @@ -25,12 +25,12 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config ); return if ( ( !defined $user ) || ( $user eq '' ) ); my $user_presets = uac::get_user_presets( - $config, - { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - user => $user - } + $config, + { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + user => $user + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -39,11 +39,11 @@ $params->{project_id} = $user_presets->{project_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); @@ -59,120 +59,121 @@ show_events( $config, $request ); #TODO: filter by published, draft sub show_events { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{read_event} == 1 ) { - uac::permissions_denied('read_event'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{read_event} == 1 ) { + uac::permissions_denied('read_event'); + return; + } - # get user projects - my $user_projects = uac::get_projects_by_user( $config, { user => $request->{user} } ); - my $projects = {}; - for my $project (@$user_projects) { - $projects->{ $project->{project_id} } = $project; - } + # get user projects + my $user_projects = uac::get_projects_by_user( $config, { user => $request->{user} } ); + my $projects = {}; + for my $project (@$user_projects) { + $projects->{ $project->{project_id} } = $project; + } - # get user studios - my $user_studios = uac::get_studios_by_user( $config, { user => $request->{user} } ); - for my $studio (@$user_studios) { - my $project_id = $studio->{project_id}; - my $studio_id = $studio->{id}; - $studio->{project_name} = $projects->{$project_id}->{name}; - $studio->{selected} = 1 if ( $project_id eq $params->{p_id} ) && ( $studio_id eq $params->{s_id} ); - } + # get user studios + my $user_studios = uac::get_studios_by_user( $config, { user => $request->{user} } ); + for my $studio (@$user_studios) { + my $project_id = $studio->{project_id}; + my $studio_id = $studio->{id}; + $studio->{project_name} = $projects->{$project_id}->{name}; + $studio->{selected} = 1 if ( $project_id eq $params->{p_id} ) && ( $studio_id eq $params->{s_id} ); + } - # get series - my $options = {}; - $options->{project_id} = $params->{p_id} if defined $params->{p_id}; - $options->{studio_id} = $params->{s_id} if defined $params->{s_id}; - my $series = series::get( $config, $options ); + # get series + my $options = {}; + $options->{project_id} = $params->{p_id} if defined $params->{p_id}; + $options->{studio_id} = $params->{s_id} if defined $params->{s_id}; + my $series = series::get( $config, $options ); - for my $serie (@$series) { - $serie->{selected} = 1 if ( defined $params->{series_id} ) && ( $serie->{series_id} eq $params->{series_id} ); - $serie->{series_name} = 'Einzelsendung' if $serie->{series_name} eq '_single_'; - } + for my $serie (@$series) { + $serie->{selected} = 1 if ( defined $params->{series_id} ) && ( $serie->{series_id} eq $params->{series_id} ); + $serie->{series_name} = 'Einzelsendung' if $serie->{series_name} eq '_single_'; + } - # get events - $options->{series_id} = $params->{series_id} if defined $params->{series_id}; - $options->{from_date} = $params->{from_date} if defined $params->{from_date}; - $options->{till_date} = $params->{till_date} if defined $params->{till_date}; - my $events = series::get_events( $config, $options ); + # get events + $options->{series_id} = $params->{series_id} if defined $params->{series_id}; + $options->{from_date} = $params->{from_date} if defined $params->{from_date}; + $options->{till_date} = $params->{till_date} if defined $params->{till_date}; + my $events = series::get_events( $config, $options ); - # filter by year - my $years = []; - for my $year ( 2005 .. 2025 ) { - my $date = { year => $year }; - $date->{selected} = 1 if ( defined $params->{from_date} ) && ( $params->{from_date} eq $year . '-01-01' ); - push @$years, $date; - } + # filter by year + my $years = []; + for my $year ( 2005 .. 2025 ) { + my $date = { year => $year }; + $date->{selected} = 1 if ( defined $params->{from_date} ) && ( $params->{from_date} eq $year . '-01-01' ); + push @$years, $date; + } - #print Dumper($params->{loc}); - $params->{studios} = $user_studios; - $params->{series} = $series; - $params->{events} = $events; - $params->{years} = $years; + #print Dumper($params->{loc}); + $params->{studios} = $user_studios; + $params->{series} = $series; + $params->{events} = $events; + $params->{years} = $years; - #print STDERR Dumper($params); - template::process($config, 'print', $params->{template}, $params ); - return; + #print STDERR Dumper($params); + template::process( $config, 'print', $params->{template}, $params ); + return; } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - #numeric values - for my $param ( 'id', 'project_id', 'studio_id', 'series_id', 'event_id', 'p_id', 's_id' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^[\-\d]+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + #numeric values + for my $param ( 'id', 'project_id', 'studio_id', 'series_id', 'event_id', 'p_id', 's_id' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^[\-\d]+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - for my $param ( 'selectProjectStudio', 'selectSeries', 'selectRange' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} eq '1' ) ) { - $checked->{$param} = $params->{$param}; - } - } + for my $param ( 'selectProjectStudio', 'selectSeries', 'selectRange' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} eq '1' ) ) { + $checked->{$param} = $params->{$param}; + } + } - for my $param ('resultElemId') { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^[a-zA-ZöäüÖÄÜß_\d]+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + for my $param ('resultElemId') { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^[a-zA-ZöäüÖÄÜß_\d]+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - for my $param ( 'from_date', 'till_date' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) ) { - $checked->{$param} = $1; - } - } + for my $param ( 'from_date', 'till_date' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) ) { + $checked->{$param} = $1; + } + } - if ( ( defined $params->{year} ) && ( $params->{year} =~ /^\d\d\d\d$/ ) ) { - $checked->{year} = $params->{year}; - } + if ( ( defined $params->{year} ) && ( $params->{year} =~ /^\d\d\d\d$/ ) ) { + $checked->{year} = $params->{year}; + } - # set defaults for project and studio id if not given - $checked->{s_id} = $params->{studio_id} || '-1' unless defined $params->{s_id}; - $checked->{p_id} = $params->{project_id} || '-1' unless defined $params->{p_id}; + # set defaults for project and studio id if not given + $checked->{s_id} = $params->{studio_id} || '-1' unless defined $params->{s_id}; + $checked->{p_id} = $params->{project_id} || '-1' unless defined $params->{p_id}; - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - $checked->{template} = template::check($config, $params->{template}, 'selectEvent' ); + $checked->{template} = template::check( $config, $params->{template}, 'selectEvent' ); - return $checked; + return $checked; } diff --git a/website/agenda/planung/selectSeries.cgi b/website/agenda/planung/selectSeries.cgi index 704813d..d75bce7 100755 --- a/website/agenda/planung/selectSeries.cgi +++ b/website/agenda/planung/selectSeries.cgi @@ -41,7 +41,7 @@ my $request = { url => $ENV{QUERY_STRING} || '', params => { original => $params, - checked => check_params($params), + checked => check_params($config, $params), }, }; $request = uac::prepare_request( $request, $user_presets ); @@ -109,6 +109,7 @@ sub show_series { } sub check_params { + my $config = shift; my $params = shift; my $checked = {}; diff --git a/website/agenda/planung/series.cgi b/website/agenda/planung/series.cgi index 5f749eb..7064986 100755 --- a/website/agenda/planung/series.cgi +++ b/website/agenda/planung/series.cgi @@ -38,12 +38,12 @@ return if ( ( !defined $user ) || ( $user eq '' ) ); #print STDERR $params->{project_id}."\n"; my $user_presets = uac::get_user_presets( - $config, - { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - user => $user - } + $config, + { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + user => $user + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -53,20 +53,20 @@ $params->{project_id} = $user_presets->{project_id} #print STDERR $params->{project_id}."\n"; my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); $params = $request->{params}->{checked}; #process header unless ( params::isJson() ) { - my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); - $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); - template::process($config, 'print', template::check($config, 'default.html'), $headerParams ); + my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); + $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); + template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); } return unless uac::check( $config, $params, $user_presets ) == 1; @@ -79,23 +79,23 @@ print q{ # if ( defined $params->{action} ) { - save_schedule( $config, $request ) if ( $params->{action} eq 'save_schedule' ); - delete_schedule( $config, $request ) if ( $params->{action} eq 'delete_schedule' ); - add_user( $config, $request ) if ( $params->{action} eq 'add_user' ); - remove_user( $config, $request ) if ( $params->{action} eq 'remove_user' ); - save_series( $config, $request ) if ( $params->{action} eq 'save' ); - save_series( $config, $request ) if ( $params->{action} eq 'create' ); - delete_series( $config, $request ) if ( $params->{action} eq 'delete' ); + save_schedule( $config, $request ) if ( $params->{action} eq 'save_schedule' ); + delete_schedule( $config, $request ) if ( $params->{action} eq 'delete_schedule' ); + add_user( $config, $request ) if ( $params->{action} eq 'add_user' ); + remove_user( $config, $request ) if ( $params->{action} eq 'remove_user' ); + save_series( $config, $request ) if ( $params->{action} eq 'save' ); + save_series( $config, $request ) if ( $params->{action} eq 'create' ); + delete_series( $config, $request ) if ( $params->{action} eq 'delete' ); - # scan_events ($config, $request) if ($params->{action} eq 'scan_events'); - assign_event( $config, $request ) if ( $params->{action} eq 'assign_event' ); - unassign_event( $config, $request ) if ( $params->{action} eq 'unassign_event' ); - if ( $params->{action} eq 'reassign_event' ) { - my $result = reassign_event( $config, $request ); - return if defined $result; - } + # scan_events ($config, $request) if ($params->{action} eq 'scan_events'); + assign_event( $config, $request ) if ( $params->{action} eq 'assign_event' ); + unassign_event( $config, $request ) if ( $params->{action} eq 'unassign_event' ); + if ( $params->{action} eq 'reassign_event' ) { + my $result = reassign_event( $config, $request ); + return if defined $result; + } - # save_scan ($config, $request) if ($params->{action} eq 'save_scan'); + # save_scan ($config, $request) if ($params->{action} eq 'save_scan'); } $config->{access}->{write} = 0; @@ -103,426 +103,426 @@ $config->{access}->{write} = 0; #print STDERR "show_series\n"; if ( defined $params->{series_id} ) { - print q{} unless params::isJson(); - show_series( $config, $request ); + print q{} unless params::isJson(); + show_series( $config, $request ); } else { - print q{ + print q{ } unless params::isJson(); - list_series( $config, $request ); + list_series( $config, $request ); } return; #insert or update a schedule and update all schedule dates sub save_schedule { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; + my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{update_schedule} == 1 ) { - uac::permissions_denied('update_schedule'); - return; - } + my $permissions = $request->{permissions}; + unless ( $permissions->{update_schedule} == 1 ) { + uac::permissions_denied('update_schedule'); + return; + } - #print Dumper($params); - for my $attr ( 'project_id', 'studio_id', 'series_id', 'start' ) { - unless ( defined $params->{$attr} ) { - uac::print_error( $attr . ' not given!' ); - return; - } - } + #print Dumper($params); + for my $attr ( 'project_id', 'studio_id', 'series_id', 'start' ) { + unless ( defined $params->{$attr} ) { + uac::print_error( $attr . ' not given!' ); + return; + } + } - my $entry = {}; - for my $attr ( - 'project_id', 'studio_id', 'series_id', 'start', 'duration', 'exclude', 'period_type', 'end', - 'frequency', 'weekday', 'week_of_month', 'month', 'nextDay' - ) - { - $entry->{$attr} = $params->{$attr} if ( defined $params->{$attr} ); - } + my $entry = {}; + for my $attr ( + 'project_id', 'studio_id', 'series_id', 'start', 'duration', 'exclude', 'period_type', 'end', + 'frequency', 'weekday', 'week_of_month', 'month', 'nextDay' + ) + { + $entry->{$attr} = $params->{$attr} if ( defined $params->{$attr} ); + } - #print STDERR Dumper($entry); - unless ( project::is_series_assigned( $config, $entry ) == 1 ) { - uac::print_error('series is not assigned to project!'); - return undef; - } + #print STDERR Dumper($entry); + unless ( project::is_series_assigned( $config, $entry ) == 1 ) { + uac::print_error('series is not assigned to project!'); + return undef; + } - my $found = 0; - for my $type ( 'single', 'days', 'week_of_month' ) { - $found = 1 if ( $entry->{period_type} eq $type ); - } - if ( $found == 0 ) { - uac::print_error('no period type selected!'); - return; - } + my $found = 0; + for my $type ( 'single', 'days', 'week_of_month' ) { + $found = 1 if ( $entry->{period_type} eq $type ); + } + if ( $found == 0 ) { + uac::print_error('no period type selected!'); + return; + } - $entry->{nextDay} = 0 unless defined $entry->{nextDay}; - $entry->{exclude} = 0 if $entry->{exclude} ne '1'; - $entry->{nextDay} = 0 if $entry->{nextDay} ne '1'; + $entry->{nextDay} = 0 unless defined $entry->{nextDay}; + $entry->{exclude} = 0 if $entry->{exclude} ne '1'; + $entry->{nextDay} = 0 if $entry->{nextDay} ne '1'; - if ( ( $entry->{end} ne '' ) && ( $entry->{end} le $entry->{start} ) ) { - uac::print_error('start date should be before end date!'); - return; - } + if ( ( $entry->{end} ne '' ) && ( $entry->{end} le $entry->{start} ) ) { + uac::print_error('start date should be before end date!'); + return; + } - #TODO: check if schedule is in studio_timeslots + #TODO: check if schedule is in studio_timeslots - #on adding a single exclude schedule, remove any existing single schedules with same date - if ( ( $entry->{period_type} eq 'single' ) && ( $entry->{exclude} eq '1' ) ) { - unless ( $permissions->{delete_schedule} == 1 ) { - uac::permissions_denied('delete_schedule'); - return; - } + #on adding a single exclude schedule, remove any existing single schedules with same date + if ( ( $entry->{period_type} eq 'single' ) && ( $entry->{exclude} eq '1' ) ) { + unless ( $permissions->{delete_schedule} == 1 ) { + uac::permissions_denied('delete_schedule'); + return; + } - #get single schedules - my $schedules = series_schedule::get( - $config, - { - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - start => $entry->{start}, - period_type => 'single', - exclude => 0 - } - ); - if ( scalar(@$schedules) > 0 ) { - $config->{access}->{write} = 1; - for my $schedule (@$schedules) { - series_schedule::delete( $config, $schedule ); - } - my $updates = series_dates::update( $config, $entry ); - uac::print_info("single schedule deleted. $updates dates scheduled"); - $config->{access}->{write} = 0; - return; - } - } + #get single schedules + my $schedules = series_schedule::get( + $config, + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + start => $entry->{start}, + period_type => 'single', + exclude => 0 + } + ); + if ( scalar(@$schedules) > 0 ) { + $config->{access}->{write} = 1; + for my $schedule (@$schedules) { + series_schedule::delete( $config, $schedule ); + } + my $updates = series_dates::update( $config, $entry ); + uac::print_info("single schedule deleted. $updates dates scheduled"); + $config->{access}->{write} = 0; + return; + } + } - $config->{access}->{write} = 1; - if ( defined $params->{schedule_id} ) { - $entry->{schedule_id} = $params->{schedule_id}; - series_schedule::update( $config, $entry ); + $config->{access}->{write} = 1; + if ( defined $params->{schedule_id} ) { + $entry->{schedule_id} = $params->{schedule_id}; + series_schedule::update( $config, $entry ); - #timeslots are checked inside - my $updates = series_dates::update( $config, $entry ); - uac::print_info("schedule saved. $updates dates scheduled"); - } else { - series_schedule::insert( $config, $entry ); + #timeslots are checked inside + my $updates = series_dates::update( $config, $entry ); + uac::print_info("schedule saved. $updates dates scheduled"); + } else { + series_schedule::insert( $config, $entry ); - #timeslots are checked inside - my $updates = series_dates::update( $config, $entry ); - uac::print_info("schedule added. $updates dates added"); - } - $config->{access}->{write} = 0; + #timeslots are checked inside + my $updates = series_dates::update( $config, $entry ); + uac::print_info("schedule added. $updates dates added"); + } + $config->{access}->{write} = 0; } sub delete_schedule { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{delete_schedule} == 1 ) { - uac::permissions_denied('delete_schedule'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{delete_schedule} == 1 ) { + uac::permissions_denied('delete_schedule'); + return; + } - my $entry = {}; - for my $attr ( 'project_id', 'studio_id', 'series_id', 'schedule_id' ) { - if ( defined $params->{$attr} ) { - $entry->{$attr} = $params->{$attr}; - } else { - uac::print_error( $attr . ' not given!' ); - return; - } - } + my $entry = {}; + for my $attr ( 'project_id', 'studio_id', 'series_id', 'schedule_id' ) { + if ( defined $params->{$attr} ) { + $entry->{$attr} = $params->{$attr}; + } else { + uac::print_error( $attr . ' not given!' ); + return; + } + } - unless ( project::is_series_assigned( $config, $entry ) == 1 ) { - uac::print_error('series is not assigned to project!'); - return undef; - } + unless ( project::is_series_assigned( $config, $entry ) == 1 ) { + uac::print_error('series is not assigned to project!'); + return undef; + } - $config->{access}->{write} = 1; - $entry->{schedule_id} = $params->{schedule_id}; - series_schedule::delete( $config, $entry ); - series_dates::update( $config, $entry ); - uac::print_info("schedule deleted"); + $config->{access}->{write} = 1; + $entry->{schedule_id} = $params->{schedule_id}; + series_schedule::delete( $config, $entry ); + series_dates::update( $config, $entry ); + uac::print_info("schedule deleted"); } #todo: check if assigned to studio sub delete_series { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{delete_series} == 1 ) { - uac::permissions_denied('delete_series'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{delete_series} == 1 ) { + uac::permissions_denied('delete_series'); + return; + } - my $entry = {}; - for my $attr ( 'project_id', 'studio_id', 'series_id' ) { - if ( defined $params->{$attr} ) { - $entry->{$attr} = $params->{$attr}; - } else { - uac::print_error( $attr . ' not given!' ); - return; - } - } + my $entry = {}; + for my $attr ( 'project_id', 'studio_id', 'series_id' ) { + if ( defined $params->{$attr} ) { + $entry->{$attr} = $params->{$attr}; + } else { + uac::print_error( $attr . ' not given!' ); + return; + } + } - unless ( project::is_series_assigned( $config, $entry ) == 1 ) { - uac::print_error('series is not assigned to project!'); - return undef; - } + unless ( project::is_series_assigned( $config, $entry ) == 1 ) { + uac::print_error('series is not assigned to project!'); + return undef; + } - my $project_id = $params->{project_id}; - my $studio_id = $params->{studio_id}; - my $series_id = $entry->{series_id}; + my $project_id = $params->{project_id}; + my $studio_id = $params->{studio_id}; + my $series_id = $entry->{series_id}; - #print Dumper($entry); - $config->{access}->{write} = 1; - if ( $entry->{series_id} ne '' ) { - my $result = series::delete( $config, $entry ); + #print Dumper($entry); + $config->{access}->{write} = 1; + if ( $entry->{series_id} ne '' ) { + my $result = series::delete( $config, $entry ); - user_stats::increase( - $config, - 'delete_series', - { - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - user => $params->{presets}->{user} - } - ); - $config->{access}->{write} = 0; - unless ( $result == 1 ) { - uac::print_error('could not delete series'); - return; - } - } - $config->{access}->{write} = 0; - uac::print_info("series deleted"); + user_stats::increase( + $config, + 'delete_series', + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + user => $params->{presets}->{user} + } + ); + $config->{access}->{write} = 0; + unless ( $result == 1 ) { + uac::print_error('could not delete series'); + return; + } + } + $config->{access}->{write} = 0; + uac::print_info("series deleted"); } sub save_series { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - my $columns = series::get_columns($config); + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + my $columns = series::get_columns($config); - for my $attr ( 'project_id', 'studio_id' ) { - unless ( defined $params->{$attr} ) { - uac::print_error( $attr . ' not given!' ); - return; - } - } - my $project_id = $params->{project_id}; - my $studio_id = $params->{studio_id}; + for my $attr ( 'project_id', 'studio_id' ) { + unless ( defined $params->{$attr} ) { + uac::print_error( $attr . ' not given!' ); + return; + } + } + my $project_id = $params->{project_id}; + my $studio_id = $params->{studio_id}; - # fill series entry - my $entry = {}; - for my $param ( keys %$params ) { - if ( defined $columns->{$param} ) { - $entry->{$param} = $params->{$param} || ''; - } - } - $entry->{project_id} = $params->{project_id}; - $entry->{studio_id} = $params->{studio_id}; - $entry->{series_id} = $params->{series_id} || ''; - $entry->{live} = $params->{live} || 0; - $entry->{count_episodes} = $params->{count_episodes} || 0; + # fill series entry + my $entry = {}; + for my $param ( keys %$params ) { + if ( defined $columns->{$param} ) { + $entry->{$param} = $params->{$param} || ''; + } + } + $entry->{project_id} = $params->{project_id}; + $entry->{studio_id} = $params->{studio_id}; + $entry->{series_id} = $params->{series_id} || ''; + $entry->{live} = $params->{live} || 0; + $entry->{count_episodes} = $params->{count_episodes} || 0; - #$entry->{html_content} = decode( 'utf-8', $entry->{content} ); - $entry->{html_content} = markup::creole_to_html( $entry->{content} ); - $entry->{html_content} =~ s/([^\>])\n+([^\<])/$1$2/g; + #$entry->{html_content} = Encode::decode( 'utf-8', $entry->{content} ); + $entry->{html_content} = markup::creole_to_html( $entry->{content} ); + $entry->{html_content} =~ s/([^\>])\n+([^\<])/$1$2/g; - $entry->{modified_at} = time::time_to_datetime( time() ); - $entry->{modified_by} = $request->{user}; + $entry->{modified_at} = time::time_to_datetime( time() ); + $entry->{modified_by} = $request->{user}; - if ( ( $params->{title} eq '' ) && ( $params->{series_name} eq '' ) ) { - uac::print_error("please set at least series name!"); - return; - } + if ( ( $params->{title} eq '' ) && ( $params->{series_name} eq '' ) ) { + uac::print_error("please set at least series name!"); + return; + } - #print STDERR Dumper($entry); - my $series_ids = series::get( - $config, - { - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_name => $entry->{series_name}, - title => $entry->{title} - } - ); + #print STDERR Dumper($entry); + my $series_ids = series::get( + $config, + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_name => $entry->{series_name}, + title => $entry->{title} + } + ); - if ( $params->{action} eq 'create' ) { + if ( $params->{action} eq 'create' ) { - unless ( $permissions->{create_series} == 1 ) { - uac::permissions_denied('create_series'); - return; - } - if ( project::is_series_assigned( $config, $entry ) == 1 ) { - uac::print_error('series is already assigned to project!'); - return undef; - } - if ( scalar(@$series_ids) > 0 ) { - uac::permissions_denied('insert, entry already exists'); - return; - } + unless ( $permissions->{create_series} == 1 ) { + uac::permissions_denied('create_series'); + return; + } + if ( project::is_series_assigned( $config, $entry ) == 1 ) { + uac::print_error('series is already assigned to project!'); + return undef; + } + if ( scalar(@$series_ids) > 0 ) { + uac::permissions_denied('insert, entry already exists'); + return; + } - $config->{access}->{write} = 1; - my $series_id = series::insert( $config, $entry ); + $config->{access}->{write} = 1; + my $series_id = series::insert( $config, $entry ); - user_stats::increase( - $config, - 'create_series', - { - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - user => $params->{presets}->{user} - } - ); + user_stats::increase( + $config, + 'create_series', + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + user => $params->{presets}->{user} + } + ); - $config->{access}->{write} = 0; + $config->{access}->{write} = 0; - #print STDERR Dumper($entry); - unless ( defined $series_id ) { - uac::print_error('could not insert series'); - return; - } - } - if ( $params->{action} eq 'save' ) { + #print STDERR Dumper($entry); + unless ( defined $series_id ) { + uac::print_error('could not insert series'); + return; + } + } + if ( $params->{action} eq 'save' ) { - unless ( $permissions->{update_series} == 1 ) { - uac::permissions_denied('update_series'); - return; - } - unless ( ( defined $params->{series_id} ) && ( $params->{series_id} ne '' ) ) { - uac::permissions_denied('update. missing parameter series_id'); - return; - } - unless ( project::is_series_assigned( $config, $entry ) == 1 ) { - uac::print_error('series is not assigned to project!'); - return undef; - } - if ( scalar(@$series_ids) > 1 ) { - uac::permissions_denied('update due to entry already exists'); - return; - } - if ( ( scalar(@$series_ids) == 1 ) && ( $series_ids->[0]->{series_id} ne $params->{series_id} ) ) { - uac::permissions_denied('update due to series id does not match to existing entry'); - return; - } + unless ( $permissions->{update_series} == 1 ) { + uac::permissions_denied('update_series'); + return; + } + unless ( ( defined $params->{series_id} ) && ( $params->{series_id} ne '' ) ) { + uac::permissions_denied('update. missing parameter series_id'); + return; + } + unless ( project::is_series_assigned( $config, $entry ) == 1 ) { + uac::print_error('series is not assigned to project!'); + return undef; + } + if ( scalar(@$series_ids) > 1 ) { + uac::permissions_denied('update due to entry already exists'); + return; + } + if ( ( scalar(@$series_ids) == 1 ) && ( $series_ids->[0]->{series_id} ne $params->{series_id} ) ) { + uac::permissions_denied('update due to series id does not match to existing entry'); + return; + } - #print STDERR Dumper($entry); - $config->{access}->{write} = 1; - my $result = series::update( $config, $entry ); + #print STDERR Dumper($entry); + $config->{access}->{write} = 1; + my $result = series::update( $config, $entry ); - series_events::update_series_images( - $config, - { - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - series_image => $params->{image} - } - ); + series_events::update_series_images( + $config, + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + series_image => $params->{image} + } + ); - user_stats::increase( - $config, - 'update_series', - { - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - user => $params->{presets}->{user} - } - ); + user_stats::increase( + $config, + 'update_series', + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + user => $params->{presets}->{user} + } + ); - $config->{access}->{write} = 0; - unless ( defined $result ) { - uac::print_error('could not update series'); - return; - } + $config->{access}->{write} = 0; + unless ( defined $result ) { + uac::print_error('could not update series'); + return; + } - } - uac::print_info("series saved"); + } + uac::print_info("series saved"); } #save series name and title of events to be assigned to this series #deprecated sub save_scan { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{scan_series_events} == 1 ) { - uac::permissions_denied('scan_series_events'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{scan_series_events} == 1 ) { + uac::permissions_denied('scan_series_events'); + return; + } - unless ( $permissions->{update_series} == 1 ) { - uac::permissions_denied('update_series'); - return; - } - for my $param ( 'project_id', 'studio_id', 'series_id' ) { - unless ( ( defined $params->{$param} ) && ( $params->{$param} ne '' ) ) { - uac::permissions_denied("save. missing parameter $param"); - return; - } - } - unless ( ( $params->{assign_event_series_name} =~ /\S/ ) - || ( $params->{assign_event_title} =~ /\S/ ) ) - { - uac::permissions_denied("save. one of series name or title must be set"); - return; - } - my $entry = { - studio_id => $params->{studio_id}, - series_id => $params->{series_id}, - assign_event_series_name => $params->{assign_event_series_name}, - assign_event_title => $params->{assign_event_title}, - }; + unless ( $permissions->{update_series} == 1 ) { + uac::permissions_denied('update_series'); + return; + } + for my $param ( 'project_id', 'studio_id', 'series_id' ) { + unless ( ( defined $params->{$param} ) && ( $params->{$param} ne '' ) ) { + uac::permissions_denied("save. missing parameter $param"); + return; + } + } + unless ( ( $params->{assign_event_series_name} =~ /\S/ ) + || ( $params->{assign_event_title} =~ /\S/ ) ) + { + uac::permissions_denied("save. one of series name or title must be set"); + return; + } + my $entry = { + studio_id => $params->{studio_id}, + series_id => $params->{series_id}, + assign_event_series_name => $params->{assign_event_series_name}, + assign_event_title => $params->{assign_event_title}, + }; - #print STDERR '
'.Dumper($entry)."\n"; - $config->{access}->{write} = 1; - series::update( $config, $entry ); - $config->{access}->{write} = 0; - uac::print_info("changes saved"); + #print STDERR '
'.Dumper($entry)."\n"; + $config->{access}->{write} = 1; + series::update( $config, $entry ); + $config->{access}->{write} = 0; + uac::print_info("changes saved"); } #deprecated sub scan_events { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{scan_series_events} == 1 ) { - uac::permissions_denied('scan_series_events'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{scan_series_events} == 1 ) { + uac::permissions_denied('scan_series_events'); + return; + } - $config->{access}->{write} = 1; - my $series = series::get( - $config, - { - 'project_id' => $params->{project_id}, - 'studio_id' => $params->{studio_id} - } - ); + $config->{access}->{write} = 1; + my $series = series::get( + $config, + { + 'project_id' => $params->{project_id}, + 'studio_id' => $params->{studio_id} + } + ); - #print STDERR Dumper($series); + #print STDERR Dumper($series); - $params->{scan_results} = q{ + $params->{scan_results} = q{ @@ -531,777 +531,778 @@ sub scan_events { }; - #list of all studios by id - my $studios = studios::get( - $config, - { - project_id => $params->{project_id}, - studio_id => $params->{studio_id} - } - ); - my $studio_by_id = {}; - for my $studio (@$studios) { - $studio_by_id->{ $studio->{id} } = $studio; - } - my $studio = $studio_by_id->{ $params->{studio_id} }; - my $location = $studio->{location}; + #list of all studios by id + my $studios = studios::get( + $config, + { + project_id => $params->{project_id}, + studio_id => $params->{studio_id} + } + ); + my $studio_by_id = {}; + for my $studio (@$studios) { + $studio_by_id->{ $studio->{id} } = $studio; + } + my $studio = $studio_by_id->{ $params->{studio_id} }; + my $location = $studio->{location}; - for my $serie (@$series) { + for my $serie (@$series) { - #get matching events by series_name and title - my $series_name = $serie->{assign_event_series_name}; - my $title = $serie->{assign_event_title}; - my $events = series::search_events( - $config, $request, - { - series_name => $series_name, - location => $location, - title => $title, - get => 'no_content', - archive => 'all', - limit => 1000, - } - ); - my $event_ids = []; - @$event_ids = map { $_->{event_id} } @$events; + #get matching events by series_name and title + my $series_name = $serie->{assign_event_series_name}; + my $title = $serie->{assign_event_title}; + my $events = series::search_events( + $config, $request, + { + series_name => $series_name, + location => $location, + title => $title, + get => 'no_content', + archive => 'all', + limit => 1000, + } + ); + my $event_ids = []; + @$event_ids = map { $_->{event_id} } @$events; - $params->{scan_results} .= - '' . '' . '' . '' . '' . "\n"; + $params->{scan_results} .= + '' . '' . '' . '' . '' . "\n"; - #if($serie->{series_id}==66){ - #print STDERR $serie->{series_name}.' - '.$serie->{title}.' '.Dumper($event_ids); - series::set_event_ids( $config, $params->{project_id}, $params->{studio_id}, $serie, $event_ids ); + #if($serie->{series_id}==66){ + #print STDERR $serie->{series_name}.' - '.$serie->{title}.' '.Dumper($event_ids); + series::set_event_ids( $config, $params->{project_id}, $params->{studio_id}, $serie, $event_ids ); - #} - } - $params->{scan_results} .= "
event
' - . $serie->{series_name} . ' - ' - . $serie->{title} . '' - . $series_name . ' - ' - . $title . '' - . scalar(@$event_ids) . '
' + . $serie->{series_name} . ' - ' + . $serie->{title} . '' + . $series_name . ' - ' + . $title . '' + . scalar(@$event_ids) . '

\n"; - $config->{access}->{write} = 0; - uac::print_info("events successfully assigned to all series"); + #} + } + $params->{scan_results} .= "
\n"; + $config->{access}->{write} = 0; + uac::print_info("events successfully assigned to all series"); } sub assign_event { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - print STDERR "assign event\n"; + print STDERR "assign event\n"; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{assign_series_events} == 1 ) { - uac::permissions_denied('assign_series_events'); - return undef; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{assign_series_events} == 1 ) { + uac::permissions_denied('assign_series_events'); + return undef; + } - my $entry = {}; - for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { - if ( defined $params->{$attr} ) { - $entry->{$attr} = $params->{$attr}; - } else { - uac::print_error( $attr . ' not given!' ); - return undef; - } - } + my $entry = {}; + for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { + if ( defined $params->{$attr} ) { + $entry->{$attr} = $params->{$attr}; + } else { + uac::print_error( $attr . ' not given!' ); + return undef; + } + } - #print STDERR "found all parameters:\n".Dumper($entry); + #print STDERR "found all parameters:\n".Dumper($entry); - # check if event exists, - # this has to use events::get, since it cannot check for series_id - # TODO: check location of studio_id - my $request2 = { - params => { - checked => events::check_params( - $config, - { - event_id => $entry->{event_id}, - template => 'no', - limit => 1, - archive => 'all', + # check if event exists, + # this has to use events::get, since it cannot check for series_id + # TODO: check location of studio_id + my $request2 = { + params => { + checked => events::check_params( + $config, + { + event_id => $entry->{event_id}, + template => 'no', + limit => 1, + archive => 'all', - # no_exclude => 1 - } - ) - }, - config => $request->{config}, - permissions => $request->{permissions} - }; - $request2->{params}->{checked}->{published} = 'all'; + # no_exclude => 1 + } + ) + }, + config => $request->{config}, + permissions => $request->{permissions} + }; + $request2->{params}->{checked}->{published} = 'all'; - my $events = events::get( $config, $request2 ); + my $events = events::get( $config, $request2 ); - #print STDERR "found events:".Dumper($events); - if ( scalar(@$events) != 1 ) { - uac::print_error("no event found for event_id=$entry->{event_id}, archive=all"); - return undef; - } + #print STDERR "found events:".Dumper($events); + if ( scalar(@$events) != 1 ) { + uac::print_error("no event found for event_id=$entry->{event_id}, archive=all"); + return undef; + } - my $event = $events->[0]; + my $event = $events->[0]; - #is series assigned to studio - my $result = series_events::check_permission( - $request, - { - permission => 'assign_series_events', - check_for => [ 'studio', 'user', 'series', 'studio_timeslots' ], - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - event_id => $entry->{event_id}, - start => $event->{start_datetime}, - end => $event->{end_datetime} - } - ); - unless ( $result eq '1' ) { - uac::print_error($result); - return undef; - } + #is series assigned to studio + my $result = series_events::check_permission( + $request, + { + permission => 'assign_series_events', + check_for => [ 'studio', 'user', 'series', 'studio_timeslots' ], + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + event_id => $entry->{event_id}, + start => $event->{start_datetime}, + end => $event->{end_datetime} + } + ); + unless ( $result eq '1' ) { + uac::print_error($result); + return undef; + } - $config->{access}->{write} = 1; - $result = series::assign_event( - $config, - { - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - event_id => $entry->{event_id}, - manual => 1 - } - ); - unless ( defined $result ) { - uac::print_error("error on assigning event to series"); - return undef; - } + $config->{access}->{write} = 1; + $result = series::assign_event( + $config, + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + event_id => $entry->{event_id}, + manual => 1 + } + ); + unless ( defined $result ) { + uac::print_error("error on assigning event to series"); + return undef; + } - my $series = series::get( - $config, - { - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - } - ); - if ( @$series == 1 ) { - my $serie = $series->[0]; + my $series = series::get( + $config, + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + } + ); + if ( @$series == 1 ) { + my $serie = $series->[0]; - #set event's series name to value from series - my $series_name = $serie->{series_name} || ''; - if ( $series_name ne '' ) { + #set event's series name to value from series + my $series_name = $serie->{series_name} || ''; + if ( $series_name ne '' ) { - # prepend series_name from event to title on adding to single_events series - my $title = $event->{title}; - if ( $serie->{has_single_events} eq '1' ) { - $title = $event->{series_name} . ' - ' . $title if $event->{series_name} ne ''; - } + # prepend series_name from event to title on adding to single_events series + my $title = $event->{title}; + if ( $serie->{has_single_events} eq '1' ) { + $title = $event->{series_name} . ' - ' . $title if $event->{series_name} ne ''; + } - # save event content - series_events::save_content( - $config, - { - studio_id => $entry->{studio_id}, - id => $entry->{event_id}, #TODO: id=> event_id - series_name => $series_name, - title => $title, - episode => $event->{episode}, - rerun => $event->{rerun}, - } - ); + # save event content + series_events::save_content( + $config, + { + studio_id => $entry->{studio_id}, + id => $entry->{event_id}, #TODO: id=> event_id + series_name => $series_name, + title => $title, + episode => $event->{episode}, + rerun => $event->{rerun}, + } + ); - # add to history - $event->{project_id} = $entry->{project_id}; - $event->{studio_id} = $entry->{studio_id}; - $event->{series_id} = $entry->{series_id}; - $event->{event_id} = $entry->{event_id}; - $event->{series_name} = $series_name; - $event->{title} = $title; - $event->{user} = $params->{presets}->{user}; - event_history::insert( $config, $event ); + # add to history + $event->{project_id} = $entry->{project_id}; + $event->{studio_id} = $entry->{studio_id}; + $event->{series_id} = $entry->{series_id}; + $event->{event_id} = $entry->{event_id}; + $event->{series_name} = $series_name; + $event->{title} = $title; + $event->{user} = $params->{presets}->{user}; + event_history::insert( $config, $event ); - # print STDERR "ok\n"; - } - } else { - print STDERR "no series title found for studio $entry->{studio_id} series $entry->{series_id}, event $entry->{event_id}\n"; - } + # print STDERR "ok\n"; + } + } else { + print STDERR "no series title found for studio $entry->{studio_id} series $entry->{series_id}, event $entry->{event_id}\n"; + } - $config->{access}->{write} = 0; - uac::print_info("event successfully assigned to series"); - $params->{getBack} = 1; - return 1; + $config->{access}->{write} = 0; + uac::print_info("event successfully assigned to series"); + $params->{getBack} = 1; + return 1; } sub unassign_event { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{assign_series_events} == 1 ) { - uac::permissions_denied('assign_series_events'); - return undef; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{assign_series_events} == 1 ) { + uac::permissions_denied('assign_series_events'); + return undef; + } - my $entry = {}; - for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { - if ( defined $params->{$attr} ) { - $entry->{$attr} = $params->{$attr}; - } else { - uac::print_error( $attr . ' not given!' ); - return undef; - } - } + my $entry = {}; + for my $attr ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { + if ( defined $params->{$attr} ) { + $entry->{$attr} = $params->{$attr}; + } else { + uac::print_error( $attr . ' not given!' ); + return undef; + } + } - #check if event exists - my $event = series::get_event( - $config, - { - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - event_id => $entry->{event_id}, - } - ); - unless ( defined $event ) { - uac::print_error( + #check if event exists + my $event = series::get_event( + $config, + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + event_id => $entry->{event_id}, + } + ); + unless ( defined $event ) { + uac::print_error( "event $entry->{event_id} not found for project_id=$entry->{project_id}, studio_id=$entry->{studio_id}, series_id=$entry->{series_id}" - ); - return undef; - } + ); + return undef; + } - #print Dumper($event); + #print Dumper($event); - #is series assigned to studio - my $result = series_events::check_permission( - $request, - { - permission => 'assign_series_events', - check_for => [ 'studio', 'user', 'series', 'studio_timeslots' ], - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - event_id => $entry->{event_id}, - start => $event->{start_datetime}, - end => $event->{end_datetime} - } - ); - unless ( $result eq '1' ) { - uac::print_error($result); - return undef; - } + #is series assigned to studio + my $result = series_events::check_permission( + $request, + { + permission => 'assign_series_events', + check_for => [ 'studio', 'user', 'series', 'studio_timeslots' ], + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + event_id => $entry->{event_id}, + start => $event->{start_datetime}, + end => $event->{end_datetime} + } + ); + unless ( $result eq '1' ) { + uac::print_error($result); + return undef; + } - $config->{access}->{write} = 1; - $result = series::unassign_event( - $config, - { - project_id => $entry->{project_id}, - studio_id => $entry->{studio_id}, - series_id => $entry->{series_id}, - event_id => $entry->{event_id}, - } - ); - $config->{access}->{write} = 0; - unless ( defined $result ) { - uac::print_error("error on unassigning event from series"); - return undef; - } - uac::print_info("event successfully unassigned from series"); - $params->{getBack} = 1; - return 1; + $config->{access}->{write} = 1; + $result = series::unassign_event( + $config, + { + project_id => $entry->{project_id}, + studio_id => $entry->{studio_id}, + series_id => $entry->{series_id}, + event_id => $entry->{event_id}, + } + ); + $config->{access}->{write} = 0; + unless ( defined $result ) { + uac::print_error("error on unassigning event from series"); + return undef; + } + uac::print_info("event successfully unassigned from series"); + $params->{getBack} = 1; + return 1; } # assign event to new series id and remove from old series id sub reassign_event { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{assign_series_events} == 1 ) { - uac::permissions_denied('assign_series_events'); - return undef; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{assign_series_events} == 1 ) { + uac::permissions_denied('assign_series_events'); + return undef; + } - for my $attr ( 'project_id', 'studio_id', 'series_id', 'new_series_id', 'event_id' ) { - unless ( defined $params->{$attr} ) { - uac::print_error( $attr . ' not given!' ); - return undef; - } - } + for my $attr ( 'project_id', 'studio_id', 'series_id', 'new_series_id', 'event_id' ) { + unless ( defined $params->{$attr} ) { + uac::print_error( $attr . ' not given!' ); + return undef; + } + } - my $project_id = $params->{project_id}; - my $studio_id = $params->{studio_id}; - my $event_id = $params->{event_id}; - my $series_id = $params->{series_id}; - my $new_series_id = $params->{new_series_id}; + my $project_id = $params->{project_id}; + my $studio_id = $params->{studio_id}; + my $event_id = $params->{event_id}; + my $series_id = $params->{series_id}; + my $new_series_id = $params->{new_series_id}; - $request->{params}->{checked}->{series_id} = $new_series_id; - my $result = assign_event( $config, $request ); - unless ( defined $result ) { - uac::print_error("could not assign event"); - return undef; - } + $request->{params}->{checked}->{series_id} = $new_series_id; + my $result = assign_event( $config, $request ); + unless ( defined $result ) { + uac::print_error("could not assign event"); + return undef; + } - $request->{params}->{checked}->{series_id} = $series_id; - $result = unassign_event( $config, $request ); - unless ( defined $result ) { - uac::print_error("could not unassign event"); - return undef; - } + $request->{params}->{checked}->{series_id} = $series_id; + $result = unassign_event( $config, $request ); + unless ( defined $result ) { + uac::print_error("could not unassign event"); + return undef; + } - #print STDERR " event\n"; - my $url = - 'event.cgi?project_id=' . $project_id . '&studio_id=' . $studio_id . '&series_id=' . $new_series_id . '&event_id=' . $event_id; - print qq{} . "\n"; - delete $params->{getBack}; - return 1; + #print STDERR " event\n"; + my $url = + 'event.cgi?project_id=' . $project_id . '&studio_id=' . $studio_id . '&series_id=' . $new_series_id . '&event_id=' . $event_id; + print qq{} . "\n"; + delete $params->{getBack}; + return 1; } sub add_user { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{assign_series_member} == 1 ) { - uac::permissions_denied('assign_series_member'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{assign_series_member} == 1 ) { + uac::permissions_denied('assign_series_member'); + return; + } - for my $param ( 'project_id', 'studio_id', 'series_id', 'user_id' ) { - if ( $params->{$param} eq '' ) { - uac::print_error("missing $param"); - return; - } - } + for my $param ( 'project_id', 'studio_id', 'series_id', 'user_id' ) { + if ( $params->{$param} eq '' ) { + uac::print_error("missing $param"); + return; + } + } - unless ( project::is_series_assigned( $config, $params ) == 1 ) { - uac::print_error('series is not assigned to project!'); - return undef; - } + unless ( project::is_series_assigned( $config, $params ) == 1 ) { + uac::print_error('series is not assigned to project!'); + return undef; + } - $config->{access}->{write} = 1; - series::add_user( - $config, - { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - series_id => $params->{series_id}, - user_id => $params->{user_id}, - user => $request->{user} - } - ); + $config->{access}->{write} = 1; + series::add_user( + $config, + { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + series_id => $params->{series_id}, + user_id => $params->{user_id}, + user => $request->{user} + } + ); - uac::print_info("user assigned to series"); + uac::print_info("user assigned to series"); } sub remove_user { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{remove_series_member} == 1 ) { - uac::permissions_denied('remove_series_member'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{remove_series_member} == 1 ) { + uac::permissions_denied('remove_series_member'); + return; + } - for my $param ( 'project_id', 'studio_id', 'series_id', 'user_id' ) { - if ( $params->{$param} eq '' ) { - uac::print_error("missing $param"); - return; - } - } + for my $param ( 'project_id', 'studio_id', 'series_id', 'user_id' ) { + if ( $params->{$param} eq '' ) { + uac::print_error("missing $param"); + return; + } + } - unless ( project::is_series_assigned( $config, $params ) == 1 ) { - uac::print_error('series is not assigned to project!'); - return undef; - } + unless ( project::is_series_assigned( $config, $params ) == 1 ) { + uac::print_error('series is not assigned to project!'); + return undef; + } - $config->{access}->{write} = 1; - series::remove_user( - $config, - { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - series_id => $params->{series_id}, - user_id => $params->{user_id} - } - ); - uac::print_info("user removed from series"); + $config->{access}->{write} = 1; + series::remove_user( + $config, + { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + series_id => $params->{series_id}, + user_id => $params->{user_id} + } + ); + uac::print_info("user removed from series"); } sub list_series { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - $config->{access}->{write} = 0; + $config->{access}->{write} = 0; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{read_series} == 1 ) { - uac::permissions_denied('read_series'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{read_series} == 1 ) { + uac::permissions_denied('read_series'); + return; + } - my $project_id = $params->{project_id}; - my $studio_id = $params->{studio_id}; + my $project_id = $params->{project_id}; + my $studio_id = $params->{studio_id}; - my $studios = studios::get( - $config, - { - project_id => $project_id, - studio_id => $studio_id - } - ); + my $studios = studios::get( + $config, + { + project_id => $project_id, + studio_id => $studio_id + } + ); - my $studio_by_id = {}; - for my $studio (@$studios) { - $studio_by_id->{ $studio->{id} } = $studio; - } - my $studio = $studio_by_id->{$studio_id}; + my $studio_by_id = {}; + for my $studio (@$studios) { + $studio_by_id->{ $studio->{id} } = $studio; + } + my $studio = $studio_by_id->{$studio_id}; - my $series_conditions = { - project_id => $project_id, - studio_id => $studio_id - }; - my $series = series::get_event_age( $config, $series_conditions ); + my $series_conditions = { + project_id => $project_id, + studio_id => $studio_id + }; + my $series = series::get_event_age( $config, $series_conditions ); - my $newSeries = []; - my $oldSeries = []; - for my $serie ( sort { lc $a->{series_name} cmp lc $b->{series_name} } (@$series) ) { - if ( $serie->{days_over} > 30 ) { - push @$oldSeries, $serie; - } else { - push @$newSeries, $serie; - } - } + my $newSeries = []; + my $oldSeries = []; + for my $serie ( sort { lc $a->{series_name} cmp lc $b->{series_name} } (@$series) ) { + if ( $serie->{days_over} > 30 ) { + push @$oldSeries, $serie; + } else { + push @$newSeries, $serie; + } + } - $params->{newSeries} = $newSeries; - $params->{oldSeries} = $oldSeries; + $params->{newSeries} = $newSeries; + $params->{oldSeries} = $oldSeries; - $params->{image} = studios::getImageById( $config, { project_id => $project_id, studio_id => $studio_id } ) - if ( ( !defined $params->{image} ) || ( $params->{image} eq '' ) ); - $params->{image} = project::getImageById( $config, { project_id => $project_id } ) - if ( ( !defined $params->{image} ) || ( $params->{image} eq '' ) ); + $params->{image} = studios::getImageById( $config, { project_id => $project_id, studio_id => $studio_id } ) + if ( ( !defined $params->{image} ) || ( $params->{image} eq '' ) ); + $params->{image} = project::getImageById( $config, { project_id => $project_id } ) + if ( ( !defined $params->{image} ) || ( $params->{image} eq '' ) ); - #print STDERR Dumper $params->{image}; + #print STDERR Dumper $params->{image}; - $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'all,series' } ); - template::process($config, 'print', $params->{template}, $params ); + $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'all,series' } ); + template::process( $config, 'print', $params->{template}, $params ); } sub show_series { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - $config->{access}->{write} = 0; + $config->{access}->{write} = 0; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{read_series} == 1 ) { - uac::permissions_denied('read_series'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{read_series} == 1 ) { + uac::permissions_denied('read_series'); + return; + } - for my $param ( 'project_id', 'studio_id', 'series_id' ) { - unless ( defined $params->{$param} ) { - uac::print_error("missing $param"); - return; - } - } + for my $param ( 'project_id', 'studio_id', 'series_id' ) { + unless ( defined $params->{$param} ) { + uac::print_error("missing $param"); + return; + } + } - unless ( project::is_series_assigned( $config, $params ) == 1 ) { - uac::print_error('series is not assigned to project!'); - return undef; - } + unless ( project::is_series_assigned( $config, $params ) == 1 ) { + uac::print_error('series is not assigned to project!'); + return undef; + } - #this will be updated later (especially allow_update_events) - for my $permission ( keys %{ $request->{permissions} } ) { - $params->{'allow'}->{$permission} = $request->{permissions}->{$permission}; - } + #this will be updated later (especially allow_update_events) + for my $permission ( keys %{ $request->{permissions} } ) { + $params->{'allow'}->{$permission} = $request->{permissions}->{$permission}; + } - my $project_id = $params->{project_id}; - my $studio_id = $params->{studio_id}; + my $project_id = $params->{project_id}; + my $studio_id = $params->{studio_id}; - #list of all studios by id - my $studios = studios::get( - $config, - { - project_id => $project_id, - studio_id => $studio_id - } - ); - my $studio_by_id = {}; - for my $studio (@$studios) { - $studio_by_id->{ $studio->{id} } = $studio; - } + #list of all studios by id + my $studios = studios::get( + $config, + { + project_id => $project_id, + studio_id => $studio_id + } + ); + my $studio_by_id = {}; + for my $studio (@$studios) { + $studio_by_id->{ $studio->{id} } = $studio; + } - #get series - my $series_conditions = { - project_id => $project_id, - studio_id => $studio_id, - series_id => $params->{series_id} - }; + #get series + my $series_conditions = { + project_id => $project_id, + studio_id => $studio_id, + series_id => $params->{series_id} + }; - my $series = series::get( $config, $series_conditions ); - if ( @$series > 1 ) { - uac::print_error( "too much series found for studio '" . $studio_by_id->{$studio_id}->{name} . "'" ); - return; - } + my $series = series::get( $config, $series_conditions ); + if ( @$series > 1 ) { + uac::print_error( "too much series found for studio '" . $studio_by_id->{$studio_id}->{name} . "'" ); + return; + } - if ( @$series == 0 ) { - uac::print_error( "selected series not assigned to studio '" . $studio_by_id->{$studio_id}->{name} . "'" ); - return; - } - my $serie = $series->[0]; + if ( @$series == 0 ) { + uac::print_error( "selected series not assigned to studio '" . $studio_by_id->{$studio_id}->{name} . "'" ); + return; + } + my $serie = $series->[0]; - #if ($serie->{has_single_events}==0){ - #delete $serie->{has_single_events}; - #$serie->{series_name}=''; - #} + #if ($serie->{has_single_events}==0){ + #delete $serie->{has_single_events}; + #$serie->{series_name}=''; + #} - #get all users currently assigned to the user - my $user_studios = uac::get_studios_by_user( $config, { project_id => $project_id, user => $request->{user} } ); + #get all users currently assigned to the user + my $user_studios = uac::get_studios_by_user( $config, { project_id => $project_id, user => $request->{user} } ); - my $studio_users = uac::get_users_by_studio( $config, { project_id => $project_id, studio_id => $studio_id } ); - for my $studio_user (@$studio_users) { - $studio_user->{user_id} = $studio_user->{id}; - } - my @users = @$studio_users; - @users = sort { $a->{full_name} cmp $b->{full_name} } @users; - $studio_users = \@users; + my $studio_users = uac::get_users_by_studio( $config, { project_id => $project_id, studio_id => $studio_id } ); + for my $studio_user (@$studio_users) { + $studio_user->{user_id} = $studio_user->{id}; + } + my @users = @$studio_users; + @users = sort { $a->{full_name} cmp $b->{full_name} } @users; + $studio_users = \@users; - #show events from last month until next 3 months - my $from = DateTime->now( time_zone => $config->{date}->{time_zone} )->subtract( months => 1 )->datetime(); - my $till = DateTime->now( time_zone => $config->{date}->{time_zone} )->add( months => 3 )->datetime(); + #show events from last month until next 3 months + my $from = DateTime->now( time_zone => $config->{date}->{time_zone} )->subtract( months => 1 )->datetime(); + my $till = DateTime->now( time_zone => $config->{date}->{time_zone} )->add( months => 3 )->datetime(); - #add name of current studio - my $studio = $studio_by_id->{ $serie->{studio_id} }; - $serie->{studio} = $studio->{name}; + #add name of current studio + my $studio = $studio_by_id->{ $serie->{studio_id} }; + $serie->{studio} = $studio->{name}; - my $location = $studio->{location}; + my $location = $studio->{location}; - # set default image from studio - $serie->{image} = studios::getImageById( $config, { project_id => $project_id, studio_id => $studio_id } ) - if ( ( !defined $serie->{image} ) || ( $serie->{image} eq '' ) ); - $serie->{image} = project::getImageById( $config, { project_id => $project_id } ) - if ( ( !defined $serie->{image} ) || ( $serie->{image} eq '' ) ); + # set default image from studio + $serie->{image} = studios::getImageById( $config, { project_id => $project_id, studio_id => $studio_id } ) + if ( ( !defined $serie->{image} ) || ( $serie->{image} eq '' ) ); + $serie->{image} = project::getImageById( $config, { project_id => $project_id } ) + if ( ( !defined $serie->{image} ) || ( $serie->{image} eq '' ) ); - #print STDERR Dumper $serie->{image}; + #print STDERR Dumper $serie->{image}; - #add users - $serie->{series_users} = series::get_users( - $config, - { - project_id => $project_id, - studio_id => $serie->{studio_id}, - series_id => $serie->{series_id} - } - ); - uac::print_warn("There is no user assigned, yet. Please assign a user!") if scalar @{ $serie->{series_users} } == 0; + #add users + $serie->{series_users} = series::get_users( + $config, + { + project_id => $project_id, + studio_id => $serie->{studio_id}, + series_id => $serie->{series_id} + } + ); + uac::print_warn("There is no user assigned, yet. Please assign a user!") if scalar @{ $serie->{series_users} } == 0; - #add events - $serie->{events} = series::get_events( - $config, - { - project_id => $project_id, - studio_id => $serie->{studio_id}, - series_id => $serie->{series_id}, - from_date => $from, - till_date => $till, - location => $location, - limit => 30, - archive => 'all', - published => 'all' - } - ); - @{ $serie->{events} } = reverse @{ $serie->{events} }; + #add events + $serie->{events} = series::get_events( + $config, + { + project_id => $project_id, + studio_id => $serie->{studio_id}, + series_id => $serie->{series_id}, + from_date => $from, + till_date => $till, + location => $location, + limit => 30, + archive => 'all', + published => 'all' + } + ); + @{ $serie->{events} } = reverse @{ $serie->{events} }; - my $allow_update_event = series_events::check_permission( - $request, - { - permission => 'update_event_of_series,update_event_of_others', - check_for => [ 'studio', 'user', 'series' ], - project_id => $project_id, - studio_id => $serie->{studio_id}, - series_id => $params->{series_id} - }, + my $allow_update_event = series_events::check_permission( + $request, + { + permission => 'update_event_of_series,update_event_of_others', + check_for => [ 'studio', 'user', 'series' ], + project_id => $project_id, + studio_id => $serie->{studio_id}, + series_id => $params->{series_id} + }, - ); + ); - $params->{allow}->{update_event} = 0; - $params->{allow}->{update_event} = 1 if ( $allow_update_event eq '1' ); + $params->{allow}->{update_event} = 0; + $params->{allow}->{update_event} = 1 if ( $allow_update_event eq '1' ); - $serie->{studio_users} = $studio_users; + $serie->{studio_users} = $studio_users; - $serie->{html_content} = markup::creole_to_html( $serie->{content} ); - $serie->{html_content} =~ s/([^\>])\n+([^\<])/$1$2/g; + $serie->{html_content} = markup::creole_to_html( $serie->{content} ); + $serie->{html_content} =~ s/([^\>])\n+([^\<])/$1$2/g; - for my $user ( @{ $serie->{series_users} } ) { - $user->{user_id} = $user->{id}; - } + for my $user ( @{ $serie->{series_users} } ) { + $user->{user_id} = $user->{id}; + } - #add schedules - my $schedules = series_schedule::get( - $config, - { - project_id => $project_id, - studio_id => $studio_id, - series_id => $serie->{series_id} - } - ); + #add schedules + my $schedules = series_schedule::get( + $config, + { + project_id => $project_id, + studio_id => $studio_id, + series_id => $serie->{series_id} + } + ); - #remove seconds from dates - for my $schedule (@$schedules) { - $schedule->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $schedule->{start}; - $schedule->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $schedule->{end}; + #remove seconds from dates + for my $schedule (@$schedules) { + $schedule->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $schedule->{start}; + $schedule->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $schedule->{end}; - #detect schedule type - if ( $schedule->{period_type} eq '' ) { - $schedule->{period_type} = 'week_of_month'; - $schedule->{period_type} = 'days' unless ( $schedule->{week_of_month} =~ /\d/ ); - $schedule->{period_type} = 'single' unless ( $schedule->{end} =~ /\d/ ); - } - $schedule->{ 'period_type_' . $schedule->{period_type} } = 1; + #detect schedule type + if ( $schedule->{period_type} eq '' ) { + $schedule->{period_type} = 'week_of_month'; + $schedule->{period_type} = 'days' unless ( $schedule->{week_of_month} =~ /\d/ ); + $schedule->{period_type} = 'single' unless ( $schedule->{end} =~ /\d/ ); + } + $schedule->{ 'period_type_' . $schedule->{period_type} } = 1; - #print STDERR $schedule->{period_type}."\n"; - } + #print STDERR $schedule->{period_type}."\n"; + } - $serie->{schedule} = $schedules; - $serie->{start} = $params->{start}; - $serie->{end} = $params->{end}; - $serie->{frequency} = $params->{frequency}; - $serie->{duration} = $serie->{default_duration}; - my $duration = $params->{duration} || ''; - $serie->{duration} = $params->{duration} if $duration ne ''; + $serie->{schedule} = $schedules; + $serie->{start} = $params->{start}; + $serie->{end} = $params->{end}; + $serie->{frequency} = $params->{frequency}; + $serie->{duration} = $serie->{default_duration}; + my $duration = $params->{duration} || ''; + $serie->{duration} = $params->{duration} if $duration ne ''; - $serie->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $serie->{start}; - $serie->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $serie->{end}; + $serie->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $serie->{start}; + $serie->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $serie->{end}; - #add series dates - my $series_dates = series_dates::get( - $config, - { - project_id => $project_id, - studio_id => $studio_id, - series_id => $serie->{series_id} - } - ); + #add series dates + my $series_dates = series_dates::get( + $config, + { + project_id => $project_id, + studio_id => $studio_id, + series_id => $serie->{series_id} + } + ); - #remove seconds from dates - for my $date (@$series_dates) { - $date->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/; - $date->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/; - } - $serie->{series_dates} = $series_dates; + #remove seconds from dates + for my $date (@$series_dates) { + $date->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/; + $date->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/; + } + $serie->{series_dates} = $series_dates; - $serie->{show_hint_to_add_schedule} = $params->{show_hint_to_add_schedule}; + $serie->{show_hint_to_add_schedule} = $params->{show_hint_to_add_schedule}; - #copy series to params - #$params->{series}=[$serie]; - for my $key ( keys %$serie ) { - $params->{$key} = $serie->{$key}; - } + #copy series to params + #$params->{series}=[$serie]; + for my $key ( keys %$serie ) { + $params->{$key} = $serie->{$key}; + } - #print STDERR '
'.Dumper($params).'
'; - $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'all,series' } ); - template::process($config, 'print', $params->{template}, $params ); + #print STDERR '
'.Dumper($params).'
'; + $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'all,series' } ); + template::process( $config, 'print', $params->{template}, $params ); } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - #actions and roles - $checked->{action} = ''; - if ( defined $params->{action} ) { - if ( $params->{action} =~ + #actions and roles + $checked->{action} = ''; + if ( defined $params->{action} ) { + if ( $params->{action} =~ /^(add_user|remove_user|create|delete|save|details|show|save_schedule|delete_schedule|save_scan|scan_events|assign_event|unassign_event|reassign_event)$/ - ) - { - $checked->{action} = $params->{action}; - } - } + ) + { + $checked->{action} = $params->{action}; + } + } - #numeric values - $checked->{exclude} = 0; - for my $param ( - 'id', 'project_id', 'studio_id', 'default_studio_id', - 'user_id', 'new_series_id', 'series_id', 'schedule_id', - 'exclude', 'show_hint_to_add_schedule', 'event_id', 'weekday', - 'week_of_month', 'month', 'nextDay' - ) - { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + #numeric values + $checked->{exclude} = 0; + for my $param ( + 'id', 'project_id', 'studio_id', 'default_studio_id', + 'user_id', 'new_series_id', 'series_id', 'schedule_id', + 'exclude', 'show_hint_to_add_schedule', 'event_id', 'weekday', + 'week_of_month', 'month', 'nextDay' + ) + { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - if ( defined $checked->{series_id} ) { - $checked->{template} = template::check($config, $params->{template}, 'edit_series' ); - } else { - $checked->{template} = template::check($config, $params->{template}, 'series' ); - } + if ( defined $checked->{series_id} ) { + $checked->{template} = template::check( $config, $params->{template}, 'edit_series' ); + } else { + $checked->{template} = template::check( $config, $params->{template}, 'series' ); + } - if ( ( defined $checked->{action} ) && ( $checked->{action} eq 'save_schedule' ) ) { + if ( ( defined $checked->{action} ) && ( $checked->{action} eq 'save_schedule' ) ) { - #set defaults - $checked->{create_events} = 0; - $checked->{publish_events} = 0; - } - for my $param ( 'frequency', 'duration', 'default_duration', 'create_events', 'publish_events', 'live', 'count_episodes' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d+)/ ) ) { - $checked->{$param} = $1; - } - } + #set defaults + $checked->{create_events} = 0; + $checked->{publish_events} = 0; + } + for my $param ( 'frequency', 'duration', 'default_duration', 'create_events', 'publish_events', 'live', 'count_episodes' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d+)/ ) ) { + $checked->{$param} = $1; + } + } - #scalars - for my $param ( 'search', 'from', 'till', 'period_type' ) { - if ( defined $params->{$param} ) { - $checked->{$param} = $params->{$param}; - $checked->{$param} =~ s/^\s+//g; - $checked->{$param} =~ s/\s+$//g; - } - } + #scalars + for my $param ( 'search', 'from', 'till', 'period_type' ) { + if ( defined $params->{$param} ) { + $checked->{$param} = $params->{$param}; + $checked->{$param} =~ s/^\s+//g; + $checked->{$param} =~ s/\s+$//g; + } + } - for my $param ( 'series_name', 'title', 'excerpt', 'content', 'topic', 'image', 'image_label', - 'assign_event_series_name', 'assign_event_title', 'comment', 'podcast_url', 'archive_url' ) - { - if ( defined $params->{$param} ) { + for my $param ( 'series_name', 'title', 'excerpt', 'content', 'topic', 'image', 'image_label', + 'assign_event_series_name', 'assign_event_title', 'comment', 'podcast_url', 'archive_url' ) + { + if ( defined $params->{$param} ) { - #$checked->{$param}=uri_unescape(); - $checked->{$param} = $params->{$param}; - $checked->{$param} =~ s/^\s+//g; - $checked->{$param} =~ s/\s+$//g; - } - } + #$checked->{$param}=uri_unescape(); + $checked->{$param} = $params->{$param}; + $checked->{$param} =~ s/^\s+//g; + $checked->{$param} =~ s/\s+$//g; + } + } - for my $attr ('start') { - if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d[ T]\d\d\:\d\d)/ ) ) { - $checked->{$attr} = $1 . ':00'; - } - } + for my $attr ('start') { + if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d[ T]\d\d\:\d\d)/ ) ) { + $checked->{$attr} = $1 . ':00'; + } + } - for my $attr ('end') { - if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) ) { - $checked->{$attr} = $1; - } - } + for my $attr ('end') { + if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) ) { + $checked->{$attr} = $1; + } + } - return $checked; + return $checked; } diff --git a/website/agenda/planung/show-playout.cgi b/website/agenda/planung/show-playout.cgi index 141d373..bc6eedf 100755 --- a/website/agenda/planung/show-playout.cgi +++ b/website/agenda/planung/show-playout.cgi @@ -48,7 +48,7 @@ my $request = { url => $ENV{QUERY_STRING} || '', params => { original => $params, - checked => check_params($params), + checked => check_params( $config, $params ), }, }; $request = uac::prepare_request( $request, $user_presets ); @@ -58,7 +58,7 @@ $params = $request->{params}->{checked}; unless ( params::isJson() ) { my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); - template::process($config, 'print', template::check($config, 'default.html'), $headerParams ); + template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); } return unless uac::check( $config, $params, $user_presets ) == 1; @@ -75,7 +75,7 @@ showPlayout( $config, $request ); print STDERR "$0 ERROR: " . $params->{error} . "\n" if $params->{error} ne ''; $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'event,comment' } ); -template::process($config, 'print', $params->{template}, $params ); +template::process( $config, 'print', $params->{template}, $params ); exit; @@ -170,11 +170,12 @@ sub formatLoudness { } sub check_params { + my $config = shift; my $params = shift; my $checked = {}; $checked->{error} = ''; - $checked->{template} = template::check($config, $params->{template}, 'show_playout' ); + $checked->{template} = template::check( $config, $params->{template}, 'show_playout' ); #numeric values for my $param ( 'project_id', 'studio_id', 'default_studio_id', 'series_id', 'event_id', 'id' ) { diff --git a/website/agenda/planung/showImage.cgi b/website/agenda/planung/showImage.cgi index be7cb6b..a54a6cc 100755 --- a/website/agenda/planung/showImage.cgi +++ b/website/agenda/planung/showImage.cgi @@ -26,12 +26,12 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config ); return if ( ( !defined $user ) || ( $user eq '' ) ); my $user_presets = uac::get_user_presets( - $config, - { - project_id => $params->{project_id}, - studio_id => $params->{studio_id}, - user => $user - } + $config, + { + project_id => $params->{project_id}, + studio_id => $params->{studio_id}, + user => $user + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -40,11 +40,11 @@ $params->{project_id} = $user_presets->{project_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); $params = $request->{params}->{checked}; @@ -56,83 +56,84 @@ showImage( $config, $request ); #TODO: filter by published, draft sub showImage { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{read_event} == 1 ) { - uac::permissions_denied('read_image'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{read_event} == 1 ) { + uac::permissions_denied('read_image'); + return; + } - unless ( defined $params->{filename} ) { - uac::permissions_denied('missing filename'); - return; - } + unless ( defined $params->{filename} ) { + uac::permissions_denied('missing filename'); + return; + } - my $filename = images::getInternalPath( $config, $params ); - unless ( defined $filename ) { - uac::permissions_denied("could not find path"); - return; - } - - unless ( -e $filename ) { - uac::permissions_denied("read $filename"); - return; - } + my $filename = images::getInternalPath( $config, $params ); + unless ( defined $filename ) { + uac::permissions_denied("could not find path"); + return; + } - my $image = images::readFile($filename); - if ( defined $image->{error} ) { - uac::permissions_denied("read $filename, $image->{error}"); - return; - } + unless ( -e $filename ) { + uac::permissions_denied("read $filename"); + return; + } - binmode STDOUT; - print "Content-type:image/jpeg; charset=UTF-8;\n\n"; - print $image->{content}; - return; + my $image = images::readFile($filename); + if ( defined $image->{error} ) { + uac::permissions_denied("read $filename, $image->{error}"); + return; + } + + binmode STDOUT; + print "Content-type:image/jpeg; charset=UTF-8;\n\n"; + print $image->{content}; + return; } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - #numeric values - for my $param ('filename') { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^[A-Za-z\_\-\.\d\/]+$/ ) ) { - $checked->{$param} = $params->{$param}; - $checked->{$param} =~ s/^.*\///g; - } - } + #numeric values + for my $param ('filename') { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^[A-Za-z\_\-\.\d\/]+$/ ) ) { + $checked->{$param} = $params->{$param}; + $checked->{$param} =~ s/^.*\///g; + } + } - $checked->{type} = 'thumbs'; - for my $param ('type') { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^(thumbs|images|icons)$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + $checked->{type} = 'thumbs'; + for my $param ('type') { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^(thumbs|images|icons)$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - #numeric values - for my $param ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^[\-\d]+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + #numeric values + for my $param ( 'project_id', 'studio_id', 'series_id', 'event_id' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^[\-\d]+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - return $checked; + return $checked; } diff --git a/website/agenda/planung/studio_timeslots.cgi b/website/agenda/planung/studio_timeslots.cgi index 9565924..72e8888 100755 --- a/website/agenda/planung/studio_timeslots.cgi +++ b/website/agenda/planung/studio_timeslots.cgi @@ -5,7 +5,8 @@ use strict; use Data::Dumper; use URI::Escape(); -use Encode(); + +#use Encode(); use params(); use config(); @@ -32,12 +33,12 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config ); return if ( ( !defined $user ) || ( $user eq '' ) ); my $user_presets = uac::get_user_presets( - $config, - { - user => $user, - project_id => $params->{project_id}, - studio_id => $params->{studio_id} - } + $config, + { + user => $user, + project_id => $params->{project_id}, + studio_id => $params->{studio_id} + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -46,11 +47,11 @@ $params->{project_id} = $user_presets->{project_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); $params = $request->{params}->{checked}; @@ -62,16 +63,16 @@ $headerParams->{loc} = localization::get( $config, { user => $user, file => 'all my $action = $params->{action} || ''; if ( $action eq 'show_dates' ) { - #print "Content-type:text/html\n\n"; + #print "Content-type:text/html\n\n"; } else { - template::process($config, 'print', template::check($config, 'default.html'), $headerParams ); + template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); } return unless uac::check( $config, $params, $user_presets ) == 1; if ( $action eq 'show_dates' ) { - print "Content-Type:text/html\n\n"; + print "Content-Type:text/html\n\n"; } else { - print q{ + print q{ @@ -82,12 +83,12 @@ if ( $action eq 'show_dates' ) { } if ( defined $params->{action} ) { - save_schedule( $config, $request ) if ( $params->{action} eq 'save_schedule' ); - delete_schedule( $config, $request ) if ( $params->{action} eq 'delete_schedule' ); - if ( $params->{action} eq 'show_dates' ) { - showDates( $config, $request ); - return; - } + save_schedule( $config, $request ) if ( $params->{action} eq 'save_schedule' ); + delete_schedule( $config, $request ) if ( $params->{action} eq 'delete_schedule' ); + if ( $params->{action} eq 'show_dates' ) { + showDates( $config, $request ); + return; + } } $config->{access}->{write} = 0; @@ -96,322 +97,323 @@ return; #insert or update a schedule and update all schedule dates sub save_schedule { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $permissions = $request->{permissions}; - unless ( $permissions->{update_studio_timeslot_schedule} == 1 ) { - uac::permissions_denied('update_studio_timeslot_schedule'); - return; - } + my $permissions = $request->{permissions}; + unless ( $permissions->{update_studio_timeslot_schedule} == 1 ) { + uac::permissions_denied('update_studio_timeslot_schedule'); + return; + } - #print Dumper($params); - my $params = $request->{params}->{checked}; + #print Dumper($params); + my $params = $request->{params}->{checked}; - for my $attr ( 'project_id', 'studio_id', 'start', 'end', 'end_date', 'schedule_studio_id' ) { - unless ( defined $params->{$attr} ) { - uac::print_error( $attr . ' not given!' ); - return; - } - } + for my $attr ( 'project_id', 'studio_id', 'start', 'end', 'end_date', 'schedule_studio_id' ) { + unless ( defined $params->{$attr} ) { + uac::print_error( $attr . ' not given!' ); + return; + } + } - my $entry = {}; - for my $attr ( 'project_id', 'start', 'end', 'end_date', 'frequency' ) { - $entry->{$attr} = $params->{$attr} if ( defined $params->{$attr} ); - } + my $entry = {}; + for my $attr ( 'project_id', 'start', 'end', 'end_date', 'frequency' ) { + $entry->{$attr} = $params->{$attr} if ( defined $params->{$attr} ); + } - #set schedule's studio to value from schedule_studio_id - $entry->{studio_id} = $params->{schedule_studio_id} if ( defined $params->{schedule_studio_id} ); + #set schedule's studio to value from schedule_studio_id + $entry->{studio_id} = $params->{schedule_studio_id} if ( defined $params->{schedule_studio_id} ); - if ( ( $entry->{end} ne '' ) && ( $entry->{end} le $entry->{start} ) ) { - uac::print_error('start date should be before end date!'); - return; - } + if ( ( $entry->{end} ne '' ) && ( $entry->{end} le $entry->{start} ) ) { + uac::print_error('start date should be before end date!'); + return; + } - #print Dumper($entry); - $config->{access}->{write} = 1; - if ( defined $params->{schedule_id} ) { - $entry->{schedule_id} = $params->{schedule_id}; + #print Dumper($entry); + $config->{access}->{write} = 1; + if ( defined $params->{schedule_id} ) { + $entry->{schedule_id} = $params->{schedule_id}; - #print Dumper($entry); - studio_timeslot_schedule::update( $config, $entry ); + #print Dumper($entry); + studio_timeslot_schedule::update( $config, $entry ); - #my $updates=0; - #print Dumper($entry); - my $updates = studio_timeslot_dates::update( $config, $entry ); - uac::print_info("timeslot schedule saved. $updates dates scheduled"); - } else { - $entry->{schedule_id} = studio_timeslot_schedule::insert( $config, $entry ); + #my $updates=0; + #print Dumper($entry); + my $updates = studio_timeslot_dates::update( $config, $entry ); + uac::print_info("timeslot schedule saved. $updates dates scheduled"); + } else { + $entry->{schedule_id} = studio_timeslot_schedule::insert( $config, $entry ); - #my $updates=0; - my $updates = studio_timeslot_dates::update( $config, $entry ); - uac::print_info("timeslot schedule added. $updates dates added"); - } + #my $updates=0; + my $updates = studio_timeslot_dates::update( $config, $entry ); + uac::print_info("timeslot schedule added. $updates dates added"); + } } sub delete_schedule { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $permissions = $request->{permissions}; - unless ( $permissions->{update_studio_timeslot_schedule} == 1 ) { - uac::permissions_denied('update_studio_timeslot_schedule'); - return; - } + my $permissions = $request->{permissions}; + unless ( $permissions->{update_studio_timeslot_schedule} == 1 ) { + uac::permissions_denied('update_studio_timeslot_schedule'); + return; + } - my $params = $request->{params}->{checked}; + my $params = $request->{params}->{checked}; - my $entry = {}; - for my $attr ( 'project_id', 'studio_id', 'schedule_id' ) { - if ( defined $params->{$attr} ) { - $entry->{$attr} = $params->{$attr}; - } else { - uac::print_error( $attr . ' not given!' ); - return; - } - } + my $entry = {}; + for my $attr ( 'project_id', 'studio_id', 'schedule_id' ) { + if ( defined $params->{$attr} ) { + $entry->{$attr} = $params->{$attr}; + } else { + uac::print_error( $attr . ' not given!' ); + return; + } + } - $config->{access}->{write} = 1; - $entry->{schedule_id} = $params->{schedule_id}; - studio_timeslot_schedule::delete( $config, $entry ); - studio_timeslot_dates::update( $config, $entry ); - uac::print_info("timeslot schedule deleted"); + $config->{access}->{write} = 1; + $entry->{schedule_id} = $params->{schedule_id}; + studio_timeslot_schedule::delete( $config, $entry ); + studio_timeslot_dates::update( $config, $entry ); + uac::print_info("timeslot schedule deleted"); } sub showTimeslotSchedule { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - $config->{access}->{write} = 0; + $config->{access}->{write} = 0; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{read_studio_timeslot_schedule} == 1 ) { - uac::permissions_denied('read_studio_timeslot_schedule'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{read_studio_timeslot_schedule} == 1 ) { + uac::permissions_denied('read_studio_timeslot_schedule'); + return; + } - for my $param ( 'project_id', 'studio_id' ) { - unless ( defined $params->{$param} ) { - uac::print_error("missing $param"); - return; - } - } + for my $param ( 'project_id', 'studio_id' ) { + unless ( defined $params->{$param} ) { + uac::print_error("missing $param"); + return; + } + } - #this will be updated later (especially allow_update_events) - for my $permission ( keys %{ $request->{permissions} } ) { - $params->{'allow'}->{$permission} = $request->{permissions}->{$permission}; - } + #this will be updated later (especially allow_update_events) + for my $permission ( keys %{ $request->{permissions} } ) { + $params->{'allow'}->{$permission} = $request->{permissions}->{$permission}; + } - $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'all,studio_timeslots' } ); + $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'all,studio_timeslots' } ); - my $studio_id = $params->{studio_id}; - my $project_id = $params->{project_id}; + my $studio_id = $params->{studio_id}; + my $project_id = $params->{project_id}; - #get project schedule - my $schedules = studio_timeslot_schedule::get( - $config, - { - project_id => $project_id + #get project schedule + my $schedules = studio_timeslot_schedule::get( + $config, + { + project_id => $project_id - # studio_id=>$studio_id - } - ); + # studio_id=>$studio_id + } + ); - #list of all studios by id - my $studios = studios::get( $config, { project_id => $project_id } ); + #list of all studios by id + my $studios = studios::get( $config, { project_id => $project_id } ); - #remove seconds from dates - for my $schedule (@$schedules) { - $schedule->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/; - $schedule->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/; + #remove seconds from dates + for my $schedule (@$schedules) { + $schedule->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/; + $schedule->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/; - #insert assigned studio - for my $studio (@$studios) { - my $entry = { - id => $studio->{id}, - name => $studio->{name}, - }; - $entry->{selected} = 1 if ( $studio->{id} eq $schedule->{studio_id} ); - push @{ $schedule->{studios} }, $entry; - } - } + #insert assigned studio + for my $studio (@$studios) { + my $entry = { + id => $studio->{id}, + name => $studio->{name}, + }; + $entry->{selected} = 1 if ( $studio->{id} eq $schedule->{studio_id} ); + push @{ $schedule->{studios} }, $entry; + } + } - my $result = { - project_id => $project_id, - studio_id => $studio_id - }; - $result->{schedule} = $schedules; - $result->{studios} = $studios; - $result->{start} = $params->{start}; - $result->{end} = $params->{end}; - $result->{end_date} = $params->{end_date}; - $result->{frequency} = $params->{frequency}; + my $result = { + project_id => $project_id, + studio_id => $studio_id + }; + $result->{schedule} = $schedules; + $result->{studios} = $studios; + $result->{start} = $params->{start}; + $result->{end} = $params->{end}; + $result->{end_date} = $params->{end_date}; + $result->{frequency} = $params->{frequency}; - #remove seconds from datetimes - $result->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $result->{start}; - $result->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $result->{end}; + #remove seconds from datetimes + $result->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $result->{start}; + $result->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $result->{end}; - #copy entry values to params - for my $key ( keys %$result ) { - $params->{$key} = $result->{$key}; - } + #copy entry values to params + for my $key ( keys %$result ) { + $params->{$key} = $result->{$key}; + } - #print '
'.Dumper($params).'
'; - template::process($config, 'print', $params->{template}, $params ); + #print '
'.Dumper($params).'
'; + template::process( $config, 'print', $params->{template}, $params ); } sub showDates { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - $config->{access}->{write} = 0; + $config->{access}->{write} = 0; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{read_studio_timeslot_schedule} == 1 ) { - uac::permissions_denied('read_studio_timeslot_schedule'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{read_studio_timeslot_schedule} == 1 ) { + uac::permissions_denied('read_studio_timeslot_schedule'); + return; + } - for my $param ( 'project_id', 'studio_id' ) { - unless ( defined $params->{$param} ) { - uac::print_error("missing $param"); - return; - } - } + for my $param ( 'project_id', 'studio_id' ) { + unless ( defined $params->{$param} ) { + uac::print_error("missing $param"); + return; + } + } - #this will be updated later (especially allow_update_events) - for my $permission ( keys %{ $request->{permissions} } ) { - $params->{'allow'}->{$permission} = $request->{permissions}->{$permission}; - } + #this will be updated later (especially allow_update_events) + for my $permission ( keys %{ $request->{permissions} } ) { + $params->{'allow'}->{$permission} = $request->{permissions}->{$permission}; + } - my $studio_id = $params->{studio_id}; - my $project_id = $params->{project_id}; + my $studio_id = $params->{studio_id}; + my $project_id = $params->{project_id}; - my $fromDate = $params->{show_date} . '-01-01'; - my $tillDate = $params->{show_date} . '-12-31'; + my $fromDate = $params->{show_date} . '-01-01'; + my $tillDate = $params->{show_date} . '-12-31'; - #add timeslot dates - my $timeslot_dates = studio_timeslot_dates::get( - $config, - { - project_id => $project_id, + #add timeslot dates + my $timeslot_dates = studio_timeslot_dates::get( + $config, + { + project_id => $project_id, - # studio_id=>$studio_id, - from => $fromDate, - till => $tillDate - } - ); + # studio_id=>$studio_id, + from => $fromDate, + till => $tillDate + } + ); - $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'all,studio_timeslots' } ); - my $language = $params->{loc}->{region}; + $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'all,studio_timeslots' } ); + my $language = $params->{loc}->{region}; - # translate weekday names to selected language - my $weekday = { - 'Mo' => $params->{loc}->{weekday_Mo}, - 'Tu' => $params->{loc}->{weekday_Tu}, - 'We' => $params->{loc}->{weekday_We}, - 'Th' => $params->{loc}->{weekday_Th}, - 'Fr' => $params->{loc}->{weekday_Fr}, - 'Sa' => $params->{loc}->{weekday_Sa}, - 'Su' => $params->{loc}->{weekday_Su}, - }; + # translate weekday names to selected language + my $weekday = { + 'Mo' => $params->{loc}->{weekday_Mo}, + 'Tu' => $params->{loc}->{weekday_Tu}, + 'We' => $params->{loc}->{weekday_We}, + 'Th' => $params->{loc}->{weekday_Th}, + 'Fr' => $params->{loc}->{weekday_Fr}, + 'Sa' => $params->{loc}->{weekday_Sa}, + 'Su' => $params->{loc}->{weekday_Su}, + }; - my $studios = studios::get( $config, { project_id => $project_id } ); - my $studio_by_id = {}; - for my $studio (@$studios) { - $studio_by_id->{ $studio->{id} } = $studio; - } + my $studios = studios::get( $config, { project_id => $project_id } ); + my $studio_by_id = {}; + for my $studio (@$studios) { + $studio_by_id->{ $studio->{id} } = $studio; + } - #remove seconds from dates - for my $date (@$timeslot_dates) { + #remove seconds from dates + for my $date (@$timeslot_dates) { - #remove seconds from datetimes - $date->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/; - $date->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/; + #remove seconds from datetimes + $date->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/; + $date->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/; - # translate weekday - if ( $language ne 'en' ) { - $date->{start_weekday} = $weekday->{ $date->{start_weekday} }; - $date->{end_weekday} = $weekday->{ $date->{end_weekday} }; - } - $date->{studio_name} = $studio_by_id->{ $date->{studio_id} }->{name}; - } - my $result = { - project_id => $project_id, - studio_id => $studio_id, - dates => $timeslot_dates - }; + # translate weekday + if ( $language ne 'en' ) { + $date->{start_weekday} = $weekday->{ $date->{start_weekday} }; + $date->{end_weekday} = $weekday->{ $date->{end_weekday} }; + } + $date->{studio_name} = $studio_by_id->{ $date->{studio_id} }->{name}; + } + my $result = { + project_id => $project_id, + studio_id => $studio_id, + dates => $timeslot_dates + }; - #copy entry values to params - for my $key ( keys %$result ) { - $params->{$key} = $result->{$key}; - } + #copy entry values to params + for my $key ( keys %$result ) { + $params->{$key} = $result->{$key}; + } - my $template = template::check($config, 'studio_timeslot_dates'); - template::process($config, 'print', $template, $params ); + my $template = template::check( $config, 'studio_timeslot_dates' ); + template::process( $config, 'print', $template, $params ); } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - #actions and roles - if ( defined $params->{action} ) { - if ( $params->{action} =~ /^(show|save_schedule|delete_schedule|show_dates)$/ ) { - $checked->{action} = $params->{action}; - } - } + #actions and roles + if ( defined $params->{action} ) { + if ( $params->{action} =~ /^(show|save_schedule|delete_schedule|show_dates)$/ ) { + $checked->{action} = $params->{action}; + } + } - #numeric values - $checked->{exclude} = 0; - for my $param ( 'id', 'project_id', 'studio_id', 'default_studio_id', 'schedule_id', 'schedule_studio_id' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + #numeric values + $checked->{exclude} = 0; + for my $param ( 'id', 'project_id', 'studio_id', 'default_studio_id', 'schedule_id', 'schedule_studio_id' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - if ( ( defined $params->{show_date} ) && ( $params->{show_date} =~ /^(\d\d\d\d)/ ) ) { - $checked->{show_date} = $1; - } else { - my $date = time::date_to_array( time::time_to_date() ); - $checked->{show_date} = $date->[0]; - } + if ( ( defined $params->{show_date} ) && ( $params->{show_date} =~ /^(\d\d\d\d)/ ) ) { + $checked->{show_date} = $1; + } else { + my $date = time::date_to_array( time::time_to_date() ); + $checked->{show_date} = $date->[0]; + } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - $checked->{template} = template::check($config, $params->{template}, 'studio_timeslots' ); + $checked->{template} = template::check( $config, $params->{template}, 'studio_timeslots' ); - for my $param ('frequency') { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d+)/ ) ) { - $checked->{$param} = $1; - } - } + for my $param ('frequency') { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d+)/ ) ) { + $checked->{$param} = $1; + } + } - for my $attr ( 'start', 'end' ) { - if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d[ T]\d\d\:\d\d)/ ) ) { - $checked->{$attr} = $1 . ':00'; - } - } - for my $attr ('end_date') { - if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) ) { - $checked->{$attr} = $1; - } - } + for my $attr ( 'start', 'end' ) { + if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d[ T]\d\d\:\d\d)/ ) ) { + $checked->{$attr} = $1 . ':00'; + } + } + for my $attr ('end_date') { + if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) ) { + $checked->{$attr} = $1; + } + } - return $checked; + return $checked; } diff --git a/website/agenda/planung/studios.cgi b/website/agenda/planung/studios.cgi index 69995d8..5f3aef2 100755 --- a/website/agenda/planung/studios.cgi +++ b/website/agenda/planung/studios.cgi @@ -26,12 +26,12 @@ return if ( $user eq '' ); my $permissions = roles::get_user_permissions($config); my $user_presets = uac::get_user_presets( - $config, - { - user => $user, - project_id => $params->{project_id}, - studio_id => $params->{studio_id} - } + $config, + { + user => $user, + project_id => $params->{project_id}, + studio_id => $params->{studio_id} + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -40,11 +40,11 @@ $params->{project_id} = $user_presets->{project_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); $params = $request->{params}->{checked}; @@ -52,7 +52,7 @@ $params = $request->{params}->{checked}; #process header my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); -template::process($config, 'print', template::check($config, 'default.html'), $headerParams ); +template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); return unless uac::check( $config, $params, $user_presets ) == 1; print q{ @@ -61,183 +61,184 @@ print q{ }; if ( defined $params->{action} ) { - save_studio( $config, $request ) if ( $params->{action} eq 'save' ); - delete_studio( $config, $request ) if ( $params->{action} eq 'delete' ); + save_studio( $config, $request ) if ( $params->{action} eq 'save' ); + delete_studio( $config, $request ) if ( $params->{action} eq 'delete' ); } $config->{access}->{write} = 0; show_studios( $config, $request ); sub delete_studio { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $permissions = $request->{permissions}; - unless ( $permissions->{update_studio} == 1 ) { - uac::permissions_denied('update_studio'); - return; - } + my $permissions = $request->{permissions}; + unless ( $permissions->{update_studio} == 1 ) { + uac::permissions_denied('update_studio'); + return; + } - my $params = $request->{params}->{checked}; - my $columns = studios::get_columns($config); + my $params = $request->{params}->{checked}; + my $columns = studios::get_columns($config); - my $entry = {}; - for my $param ( keys %$params ) { - if ( defined $columns->{$param} ) { - $entry->{$param} = $params->{$param} || ''; - } - } + my $entry = {}; + for my $param ( keys %$params ) { + if ( defined $columns->{$param} ) { + $entry->{$param} = $params->{$param} || ''; + } + } - my $studio_id = $entry->{id} || ''; - if ( $studio_id ne '' ) { - $config->{access}->{write} = 1; + my $studio_id = $entry->{id} || ''; + if ( $studio_id ne '' ) { + $config->{access}->{write} = 1; - project::unassign_studio( - $config, - { - project_id => $params->{project_id}, - studio_id => $studio_id - } - ); + project::unassign_studio( + $config, + { + project_id => $params->{project_id}, + studio_id => $studio_id + } + ); - my $studio_assignments = project::get_studio_assignments( - $config, - { - studio_id => $studio_id - } - ); + my $studio_assignments = project::get_studio_assignments( + $config, + { + studio_id => $studio_id + } + ); - unless ( scalar @$studio_assignments == 0 ) { - uac::print_info("Studio unassigned from project"); - uac::print_warn("Studio is assigned to other projects, so it will not be deleted"); - return undef; - } - studios::delete( $config, $entry ); - uac::print_info("Studio deleted"); - } + unless ( scalar @$studio_assignments == 0 ) { + uac::print_info("Studio unassigned from project"); + uac::print_warn("Studio is assigned to other projects, so it will not be deleted"); + return undef; + } + studios::delete( $config, $entry ); + uac::print_info("Studio deleted"); + } } sub save_studio { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; - unless ( $permissions->{update_studio} == 1 ) { - uac::permissions_denied('update_studio'); - return; - } + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; + unless ( $permissions->{update_studio} == 1 ) { + uac::permissions_denied('update_studio'); + return; + } - #filter entry for studio columns - my $columns = studios::get_columns($config); - my $entry = {}; - for my $param ( keys %$params ) { - if ( defined $columns->{$param} ) { - $entry->{$param} = $params->{$param} || ''; - } - } + #filter entry for studio columns + my $columns = studios::get_columns($config); + my $entry = {}; + for my $param ( keys %$params ) { + if ( defined $columns->{$param} ) { + $entry->{$param} = $params->{$param} || ''; + } + } - $config->{access}->{write} = 1; - if ( ( defined $entry->{id} ) && ( $entry ne '' ) ) { - studios::update( $config, $entry ); - } else { - my $studios = studios::get( $config, { name => $entry->{name} } ); - if ( scalar @$studios > 0 ) { - uac::print_error("studio with name '$entry->{name}' already exists"); - return; - } - $entry->{id} = studios::insert( $config, $entry ); + $config->{access}->{write} = 1; + if ( ( defined $entry->{id} ) && ( $entry ne '' ) ) { + studios::update( $config, $entry ); + } else { + my $studios = studios::get( $config, { name => $entry->{name} } ); + if ( scalar @$studios > 0 ) { + uac::print_error("studio with name '$entry->{name}' already exists"); + return; + } + $entry->{id} = studios::insert( $config, $entry ); - project::assign_studio( - $config, - { - project_id => $params->{project_id}, - studio_id => $entry->{id} - } - ); - } + project::assign_studio( + $config, + { + project_id => $params->{project_id}, + studio_id => $entry->{id} + } + ); + } - #insert series for single events (if not already existing) - my $studio_id = $entry->{id}; - my $single_series = series::get( - $config, - { - project_id => $params->{project_id}, - studio_id => $studio_id, - has_single_events => 1 - } - ); - if ( scalar @$single_series == 0 ) { - series::insert( - $config, - { - project_id => $params->{project_id}, - studio_id => $studio_id, - has_single_events => 1, - count_episodes => 0, - series_name => '_single_' - } - ); - } + #insert series for single events (if not already existing) + my $studio_id = $entry->{id}; + my $single_series = series::get( + $config, + { + project_id => $params->{project_id}, + studio_id => $studio_id, + has_single_events => 1 + } + ); + if ( scalar @$single_series == 0 ) { + series::insert( + $config, + { + project_id => $params->{project_id}, + studio_id => $studio_id, + has_single_events => 1, + count_episodes => 0, + series_name => '_single_' + } + ); + } - print qq{
changes saved
}; + print qq{
changes saved
}; } sub show_studios { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - my $studios = studios::get( - $config, - { - project_id => $params->{project_id} - } - ); - $params->{studios} = $studios; - $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'studios' } ); - uac::set_template_permissions( $permissions, $params ); + my $studios = studios::get( + $config, + { + project_id => $params->{project_id} + } + ); + $params->{studios} = $studios; + $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'studios' } ); + uac::set_template_permissions( $permissions, $params ); - template::process($config, 'print', $params->{template}, $params ); + template::process( $config, 'print', $params->{template}, $params ); } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - #template - my $template = ''; - $template = template::check($config, $params->{template}, 'studios' ); - $checked->{template} = $template; + #template + my $template = ''; + $template = template::check( $config, $params->{template}, 'studios' ); + $checked->{template} = $template; - #actions - my $action = ''; - if ( defined $params->{action} ) { - if ( $params->{action} =~ /^(save|delete)$/ ) { - $checked->{action} = $params->{action}; - } - } + #actions + my $action = ''; + if ( defined $params->{action} ) { + if ( $params->{action} =~ /^(save|delete)$/ ) { + $checked->{action} = $params->{action}; + } + } - for my $param ( 'name', 'description', 'location', 'stream', 'google_calendar', 'image' ) { - if ( defined $params->{$param} ) { - $checked->{$param} = $params->{$param}; - } - } + for my $param ( 'name', 'description', 'location', 'stream', 'google_calendar', 'image' ) { + if ( defined $params->{$param} ) { + $checked->{$param} = $params->{$param}; + } + } - #numeric values - for my $param ( 'project_id', 'studio_id', 'default_studio_id', 'id' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + #numeric values + for my $param ( 'project_id', 'studio_id', 'default_studio_id', 'id' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - return $checked; + return $checked; } diff --git a/website/agenda/planung/user_settings.cgi b/website/agenda/planung/user_settings.cgi index 5ee9efe..be5e14c 100755 --- a/website/agenda/planung/user_settings.cgi +++ b/website/agenda/planung/user_settings.cgi @@ -24,12 +24,12 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config ); return if ( ( !defined $user ) || ( $user eq '' ) ); my $user_presets = uac::get_user_presets( - $config, - { - user => $user, - project_id => $params->{project_id}, - studio_id => $params->{studio_id} - } + $config, + { + user => $user, + project_id => $params->{project_id}, + studio_id => $params->{studio_id} + } ); $params->{default_studio_id} = $user_presets->{studio_id}; $params->{studio_id} = $params->{default_studio_id} @@ -38,11 +38,11 @@ $params->{project_id} = $user_presets->{project_id} if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) ); my $request = { - url => $ENV{QUERY_STRING} || '', - params => { - original => $params, - checked => check_params($params), - }, + url => $ENV{QUERY_STRING} || '', + params => { + original => $params, + checked => check_params( $config, $params ), + }, }; $request = uac::prepare_request( $request, $user_presets ); @@ -51,162 +51,163 @@ $params = $request->{params}->{checked}; #process header my $headerParams = uac::set_template_permissions( $request->{permissions}, $params ); $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } ); -template::process($config, 'print', template::check($config, 'default.html'), $headerParams ); +template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams ); return unless uac::check( $config, $params, $user_presets ) == 1; our $errors = []; if ( defined $params->{action} ) { - update_settings( $config, $request ) if ( $params->{action} eq 'save' ); + update_settings( $config, $request ) if ( $params->{action} eq 'save' ); } $config->{access}->{write} = 0; show_settings( $config, $request ); sub show_settings { - my $config = shift; - my $request = shift; + my $config = shift; + my $request = shift; - my $params = $request->{params}->{checked}; - my $permissions = $request->{permissions}; + my $params = $request->{params}->{checked}; + my $permissions = $request->{permissions}; - # unless ($permissions->{read_user}==1){ - # uac::permissions_denied('read_user'); - # return; - # } - my $user = $params->{presets}->{user}; - my $colors = user_settings::getColors( $config, { user => $user } ); + # unless ($permissions->{read_user}==1){ + # uac::permissions_denied('read_user'); + # return; + # } + my $user = $params->{presets}->{user}; + my $colors = user_settings::getColors( $config, { user => $user } ); - #map colors to params - my @colors = (); - my $c = 0; - for my $color (@$colors) { - push @colors, - { - title => $color->{name}, - class => $color->{css}, - name => 'color_' . $c, - value => $color->{color} - }; - $c++; - } + #map colors to params + my @colors = (); + my $c = 0; + for my $color (@$colors) { + push @colors, + { + title => $color->{name}, + class => $color->{css}, + name => 'color_' . $c, + value => $color->{color} + }; + $c++; + } - $params->{colors} = \@colors; - $params->{css} = user_settings::getColorCss( $config, { user => $user } ); - $params->{permissions} = $permissions; - $params->{errors} = $errors; + $params->{colors} = \@colors; + $params->{css} = user_settings::getColorCss( $config, { user => $user } ); + $params->{permissions} = $permissions; + $params->{errors} = $errors; - my $user_settings = user_settings::get( $config, { user => $user } ); - my $language = $user_settings->{language} || 'en'; - $params->{language} = $language; - $params->{ 'language_' . $language } = 1; + my $user_settings = user_settings::get( $config, { user => $user } ); + my $language = $user_settings->{language} || 'en'; + $params->{language} = $language; + $params->{ 'language_' . $language } = 1; - my $period = $user_settings->{period} || 'month'; - $params->{ 'period_' . $period } = 1; + my $period = $user_settings->{period} || 'month'; + $params->{ 'period_' . $period } = 1; - $params->{loc} = localization::get( $config, { language => $language, file => 'user_settings' } ); + $params->{loc} = localization::get( $config, { language => $language, file => 'user_settings' } ); - #print STDERR Dumper($params->{loc}); + #print STDERR Dumper($params->{loc}); - for my $color ( @{ $params->{colors} } ) { - $color->{title} = $params->{loc}->{ $color->{title} }; - } - uac::set_template_permissions( $permissions, $params ); + for my $color ( @{ $params->{colors} } ) { + $color->{title} = $params->{loc}->{ $color->{title} }; + } + uac::set_template_permissions( $permissions, $params ); - #print Dumper($permissions); - template::process($config, 'print', $params->{template}, $params ); + #print Dumper($permissions); + template::process( $config, 'print', $params->{template}, $params ); - #print '
'.Dumper($user_settings);
+    #print '
'.Dumper($user_settings);
 }
 
 sub update_settings {
-	my $config  = shift;
-	my $request = shift;
+    my $config  = shift;
+    my $request = shift;
 
-	my $params      = $request->{params}->{checked};
-	my $permissions = $request->{permissions};
-	my $user        = $params->{presets}->{user};
+    my $params      = $request->{params}->{checked};
+    my $permissions = $request->{permissions};
+    my $user        = $params->{presets}->{user};
 
-	# map params to colors
-	my @colors = ();
-	my $c      = 0;
-	for my $color ( @{$user_settings::defaultColors} ) {
-		if ( defined $params->{ 'color_' . $c } ) {
-			push @colors, $color->{css} . '=' . $params->{ 'color_' . $c };
-		} else {
-			push @colors, $color->{css} . '=' . $color->{color};
-		}
-		$c++;
-	}
+    # map params to colors
+    my @colors = ();
+    my $c      = 0;
+    for my $color ( @{$user_settings::defaultColors} ) {
+        if ( defined $params->{ 'color_' . $c } ) {
+            push @colors, $color->{css} . '=' . $params->{ 'color_' . $c };
+        } else {
+            push @colors, $color->{css} . '=' . $color->{color};
+        }
+        $c++;
+    }
 
-	my $settings = {
-		user     => $user,
-		colors   => join( "\n", @colors ),
-		language => $params->{language},
-		period   => $params->{period}
-	};
+    my $settings = {
+        user     => $user,
+        colors   => join( "\n", @colors ),
+        language => $params->{language},
+        period   => $params->{period}
+    };
 
-	my $results = user_settings::get( $config, { user => $user } );
-	if ( defined $results ) {
-		uac::print_info("update");
-		$config->{access}->{write} = 1;
-		user_settings::update( $config, $settings );
-	} else {
-		$config->{access}->{write} = 1;
-		uac::print_info("insert");
-		user_settings::insert( $config, $settings );
-	}
-	$config->{access}->{write} = 0;
+    my $results = user_settings::get( $config, { user => $user } );
+    if ( defined $results ) {
+        uac::print_info("update");
+        $config->{access}->{write} = 1;
+        user_settings::update( $config, $settings );
+    } else {
+        $config->{access}->{write} = 1;
+        uac::print_info("insert");
+        user_settings::insert( $config, $settings );
+    }
+    $config->{access}->{write} = 0;
 }
 
 sub check_params {
-	my $params = shift;
+    my $config = shift;
+    my $params = shift;
 
-	my $checked = {};
+    my $checked = {};
 
-	#template
-	my $template = '';
-	$template = template::check($config,  $params->{template}, 'user_settings' );
-	$checked->{template} = $template;
+    #template
+    my $template = '';
+    $template = template::check( $config, $params->{template}, 'user_settings' );
+    $checked->{template} = $template;
 
-	#numeric values
-	for my $param ( 'project_id', 'default_studio_id', 'studio_id' ) {
-		if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) {
-			$checked->{$param} = $params->{$param};
-		}
-	}
-	if ( defined $checked->{studio_id} ) {
-		$checked->{default_studio_id} = $checked->{studio_id};
-	} else {
-		$checked->{studio_id} = -1;
-	}
+    #numeric values
+    for my $param ( 'project_id', 'default_studio_id', 'studio_id' ) {
+        if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) {
+            $checked->{$param} = $params->{$param};
+        }
+    }
+    if ( defined $checked->{studio_id} ) {
+        $checked->{default_studio_id} = $checked->{studio_id};
+    } else {
+        $checked->{studio_id} = -1;
+    }
 
-	for my $param ( keys %$params ) {
-		if ( ( defined $params->{$param} ) && ( $param =~ /^(color\_\d+)$/ ) ) {
-			$checked->{$param} = $params->{$param};
-		}
-	}
+    for my $param ( keys %$params ) {
+        if ( ( defined $params->{$param} ) && ( $param =~ /^(color\_\d+)$/ ) ) {
+            $checked->{$param} = $params->{$param};
+        }
+    }
 
-	$checked->{language} = 'en';
-	if ( ( defined $params->{language} ) && ( $params->{language} =~ /^de$/ ) ) {
-		$checked->{language} = 'de';
-	}
+    $checked->{language} = 'en';
+    if ( ( defined $params->{language} ) && ( $params->{language} =~ /^de$/ ) ) {
+        $checked->{language} = 'de';
+    }
 
-	if ( defined $params->{period} ) {
-		if ( $params->{period} =~ /(\S+)/ ) {
-			$checked->{period} = $1;
-		}
-	}
+    if ( defined $params->{period} ) {
+        if ( $params->{period} =~ /(\S+)/ ) {
+            $checked->{period} = $1;
+        }
+    }
 
-	#actions
-	if ( defined $params->{action} ) {
-		if ( $params->{action} =~ /^(save)$/ ) {
-			$checked->{action} = $params->{action};
-		}
-	}
-	return $checked;
+    #actions
+    if ( defined $params->{action} ) {
+        if ( $params->{action} =~ /^(save)$/ ) {
+            $checked->{action} = $params->{action};
+        }
+    }
+    return $checked;
 }
 
 sub error {
-	push @$errors, { error => $_[0] };
+    push @$errors, { error => $_[0] };
 }
 
diff --git a/website/agenda/planung/user_stats.cgi b/website/agenda/planung/user_stats.cgi
index bda464e..a51c1ee 100755
--- a/website/agenda/planung/user_stats.cgi
+++ b/website/agenda/planung/user_stats.cgi
@@ -26,12 +26,12 @@ my ( $user, $expires ) = auth::get_user( $cgi, $config );
 return if ( ( !defined $user ) || ( $user eq '' ) );
 
 my $user_presets = uac::get_user_presets(
-	$config,
-	{
-		user       => $user,
-		project_id => $params->{project_id},
-		studio_id  => $params->{studio_id}
-	}
+    $config,
+    {
+        user       => $user,
+        project_id => $params->{project_id},
+        studio_id  => $params->{studio_id}
+    }
 );
 $params->{default_studio_id} = $user_presets->{studio_id};
 $params->{studio_id}         = $params->{default_studio_id}
@@ -40,11 +40,11 @@ $params->{project_id} = $user_presets->{project_id}
   if ( ( !( defined $params->{action} ) ) || ( $params->{action} eq '' ) || ( $params->{action} eq 'login' ) );
 
 my $request = {
-	url => $ENV{QUERY_STRING} || '',
-	params => {
-		original => $params,
-		checked  => check_params($params),
-	},
+    url => $ENV{QUERY_STRING} || '',
+    params => {
+        original => $params,
+        checked  => check_params( $config, $params ),
+    },
 };
 $request = uac::prepare_request( $request, $user_presets );
 $params = $request->{params}->{checked};
@@ -52,7 +52,7 @@ $params = $request->{params}->{checked};
 #process header
 my $headerParams = uac::set_template_permissions( $request->{permissions}, $params );
 $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } );
-template::process($config,  'print', template::check($config, 'default.html'), $headerParams );
+template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams );
 return unless uac::check( $config, $params, $user_presets ) == 1;
 
 our $errors = [];
@@ -60,51 +60,52 @@ our $errors = [];
 show_stats( $config, $request );
 
 sub show_stats {
-	my $config  = shift;
-	my $request = shift;
+    my $config  = shift;
+    my $request = shift;
 
-	my $params      = $request->{params}->{checked};
-	my $permissions = $request->{permissions};
-	unless ( $permissions->{read_user_stats} ) {
-		uac::permissions_denied('read_user_stats');
-		return;
-	}
-	print STDERR "continue\n";
-	$params->{user_stats}  = user_stats::get_stats( $config, $params );
-	$params->{permissions} = $permissions;
-	$params->{errors}      = $errors;
+    my $params      = $request->{params}->{checked};
+    my $permissions = $request->{permissions};
+    unless ( $permissions->{read_user_stats} ) {
+        uac::permissions_denied('read_user_stats');
+        return;
+    }
+    print STDERR "continue\n";
+    $params->{user_stats}  = user_stats::get_stats( $config, $params );
+    $params->{permissions} = $permissions;
+    $params->{errors}      = $errors;
 
-	$params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'user_stats' } );
-	uac::set_template_permissions( $permissions, $params );
-	template::process($config,  'print', $params->{template}, $params );
+    $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'user_stats' } );
+    uac::set_template_permissions( $permissions, $params );
+    template::process( $config, 'print', $params->{template}, $params );
 }
 
 sub check_params {
-	my $params = shift;
+    my $config = shift;
+    my $params = shift;
 
-	my $checked = {};
+    my $checked = {};
 
-	#template
-	my $template = '';
-	$template = template::check($config,  $params->{template}, 'user_stats' );
-	$checked->{template} = $template;
+    #template
+    my $template = '';
+    $template = template::check( $config, $params->{template}, 'user_stats' );
+    $checked->{template} = $template;
 
-	#numeric values
-	for my $param ( 'project_id', 'default_studio_id', 'studio_id', 'series_id' ) {
-		if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) {
-			$checked->{$param} = $params->{$param};
-		}
-	}
-	if ( defined $checked->{studio_id} ) {
-		$checked->{default_studio_id} = $checked->{studio_id};
-	} else {
-		$checked->{studio_id} = -1;
-	}
+    #numeric values
+    for my $param ( 'project_id', 'default_studio_id', 'studio_id', 'series_id' ) {
+        if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) {
+            $checked->{$param} = $params->{$param};
+        }
+    }
+    if ( defined $checked->{studio_id} ) {
+        $checked->{default_studio_id} = $checked->{studio_id};
+    } else {
+        $checked->{studio_id} = -1;
+    }
 
-	return $checked;
+    return $checked;
 }
 
 sub error {
-	push @$errors, { error => $_[0] };
+    push @$errors, { error => $_[0] };
 }
 
diff --git a/website/agenda/planung/users.cgi b/website/agenda/planung/users.cgi
index 2171408..4b786fe 100755
--- a/website/agenda/planung/users.cgi
+++ b/website/agenda/planung/users.cgi
@@ -39,7 +39,7 @@ my $request = {
 	url => $ENV{QUERY_STRING} || '',
 	params => {
 		original => $params,
-		checked  => check_params($params),
+		checked  => check_params($config, $params),
 	},
 };
 $request = uac::prepare_request( $request, $user_presets );
@@ -399,6 +399,7 @@ sub update_user_roles {
 }
 
 sub check_params {
+    my $config = shift;
 	my $params = shift;
 
 	my $checked = {};
diff --git a/website/agenda/planung/work_time.cgi b/website/agenda/planung/work_time.cgi
index 4f807dc..0b0b8e8 100755
--- a/website/agenda/planung/work_time.cgi
+++ b/website/agenda/planung/work_time.cgi
@@ -5,7 +5,8 @@ use strict;
 
 use Data::Dumper;
 use URI::Escape();
-use Encode();
+
+#use Encode();
 
 use params();
 use config();
@@ -32,12 +33,12 @@ return if ( ( !defined $user ) || ( $user eq '' ) );
 
 #print STDERR $params->{project_id}."\n";
 my $user_presets = uac::get_user_presets(
-	$config,
-	{
-		project_id => $params->{project_id},
-		studio_id  => $params->{studio_id},
-		user       => $user
-	}
+    $config,
+    {
+        project_id => $params->{project_id},
+        studio_id  => $params->{studio_id},
+        user       => $user
+    }
 );
 $params->{default_studio_id} = $user_presets->{studio_id};
 $params->{studio_id}         = $params->{default_studio_id}
@@ -47,11 +48,11 @@ $params->{project_id} = $user_presets->{project_id}
 
 #print STDERR $params->{project_id}."\n";
 my $request = {
-	url => $ENV{QUERY_STRING} || '',
-	params => {
-		original => $params,
-		checked  => check_params($params),
-	},
+    url => $ENV{QUERY_STRING} || '',
+    params => {
+        original => $params,
+        checked  => check_params( $config, $params ),
+    },
 };
 $request = uac::prepare_request( $request, $user_presets );
 $params = $request->{params}->{checked};
@@ -59,12 +60,12 @@ $params = $request->{params}->{checked};
 #process header
 my $headerParams = uac::set_template_permissions( $request->{permissions}, $params );
 $headerParams->{loc} = localization::get( $config, { user => $user, file => 'menu' } );
-template::process($config,  'print', template::check($config, 'default.html'), $headerParams );
+template::process( $config, 'print', template::check( $config, 'default.html' ), $headerParams );
 return unless uac::check( $config, $params, $user_presets ) == 1;
 
 if ( defined $params->{action} ) {
-	save_schedule( $config, $request ) if ( $params->{action} eq 'save_schedule' );
-	delete_schedule( $config, $request ) if ( $params->{action} eq 'delete_schedule' );
+    save_schedule( $config, $request ) if ( $params->{action} eq 'save_schedule' );
+    delete_schedule( $config, $request ) if ( $params->{action} eq 'delete_schedule' );
 }
 
 $config->{access}->{write} = 0;
@@ -74,267 +75,268 @@ return;
 
 #insert or update a schedule and update all schedule dates
 sub save_schedule {
-	my $config  = shift;
-	my $request = shift;
+    my $config  = shift;
+    my $request = shift;
 
-	my $params = $request->{params}->{checked};
+    my $params = $request->{params}->{checked};
 
-	my $permissions = $request->{permissions};
-	unless ( $permissions->{update_schedule} == 1 ) {
-		uac::permissions_denied('update_schedule');
-		return;
-	}
+    my $permissions = $request->{permissions};
+    unless ( $permissions->{update_schedule} == 1 ) {
+        uac::permissions_denied('update_schedule');
+        return;
+    }
 
-	#print Dumper($params);
-	for my $attr ( 'project_id', 'studio_id', 'start' ) {
-		unless ( defined $params->{$attr} ) {
-			uac::print_error( $attr . ' not given!' );
-			return;
-		}
-	}
+    #print Dumper($params);
+    for my $attr ( 'project_id', 'studio_id', 'start' ) {
+        unless ( defined $params->{$attr} ) {
+            uac::print_error( $attr . ' not given!' );
+            return;
+        }
+    }
 
-	my $entry = {};
-	for my $attr (
-		'project_id', 'studio_id',     'start', 'duration', 'exclude', 'period_type', 'end', 'frequency',
-		'weekday',    'week_of_month', 'month', 'title',    'type'
-	  )
-	{
-		$entry->{$attr} = $params->{$attr} if ( defined $params->{$attr} );
-	}
+    my $entry = {};
+    for my $attr (
+        'project_id', 'studio_id',     'start', 'duration', 'exclude', 'period_type', 'end', 'frequency',
+        'weekday',    'week_of_month', 'month', 'title',    'type'
+      )
+    {
+        $entry->{$attr} = $params->{$attr} if ( defined $params->{$attr} );
+    }
 
-	my $found = 0;
-	for my $type ( 'single', 'days', 'week_of_month' ) {
-		$found = 1 if ( $entry->{period_type} eq $type );
-	}
-	if ( $found == 0 ) {
-		uac::print_error('no period type selected!');
-		return;
-	}
+    my $found = 0;
+    for my $type ( 'single', 'days', 'week_of_month' ) {
+        $found = 1 if ( $entry->{period_type} eq $type );
+    }
+    if ( $found == 0 ) {
+        uac::print_error('no period type selected!');
+        return;
+    }
 
-	$entry->{exclude} = 0 if ( $entry->{exclude} ne '1' );
+    $entry->{exclude} = 0 if ( $entry->{exclude} ne '1' );
 
-	if ( ( $entry->{end} ne '' ) && ( $entry->{end} le $entry->{start} ) ) {
-		uac::print_error('start date should be before end date!');
-		return;
-	}
+    if ( ( $entry->{end} ne '' ) && ( $entry->{end} le $entry->{start} ) ) {
+        uac::print_error('start date should be before end date!');
+        return;
+    }
 
-	#TODO: check if schedule is in studio_timeslots
+    #TODO: check if schedule is in studio_timeslots
 
-	$config->{access}->{write} = 1;
-	if ( defined $params->{schedule_id} ) {
-		$entry->{schedule_id} = $params->{schedule_id};
-		work_schedule::update( $config, $entry );
+    $config->{access}->{write} = 1;
+    if ( defined $params->{schedule_id} ) {
+        $entry->{schedule_id} = $params->{schedule_id};
+        work_schedule::update( $config, $entry );
 
-		#timeslots are checked inside
-		my $updates = work_dates::update( $config, $entry );
-		uac::print_info("schedule saved. $updates dates scheduled");
-	} else {
-		my $schedule_id = work_schedule::insert( $config, $entry );
-		$entry->{schedule_id} = $schedule_id;
+        #timeslots are checked inside
+        my $updates = work_dates::update( $config, $entry );
+        uac::print_info("schedule saved. $updates dates scheduled");
+    } else {
+        my $schedule_id = work_schedule::insert( $config, $entry );
+        $entry->{schedule_id} = $schedule_id;
 
-		#timeslots are checked inside
-		my $updates = work_dates::update( $config, $entry );
-		uac::print_info("schedule added. $updates dates added");
-	}
-	$config->{access}->{write} = 0;
+        #timeslots are checked inside
+        my $updates = work_dates::update( $config, $entry );
+        uac::print_info("schedule added. $updates dates added");
+    }
+    $config->{access}->{write} = 0;
 }
 
 sub delete_schedule {
-	my $config  = shift;
-	my $request = shift;
+    my $config  = shift;
+    my $request = shift;
 
-	my $params      = $request->{params}->{checked};
-	my $permissions = $request->{permissions};
-	unless ( $permissions->{delete_schedule} == 1 ) {
-		uac::permissions_denied('delete_schedule');
-		return;
-	}
+    my $params      = $request->{params}->{checked};
+    my $permissions = $request->{permissions};
+    unless ( $permissions->{delete_schedule} == 1 ) {
+        uac::permissions_denied('delete_schedule');
+        return;
+    }
 
-	my $entry = {};
-	for my $attr ( 'project_id', 'studio_id', 'schedule_id' ) {
-		if ( defined $params->{$attr} ) {
-			$entry->{$attr} = $params->{$attr};
-		} else {
-			uac::print_error( $attr . ' not given!' );
-			return;
-		}
-	}
+    my $entry = {};
+    for my $attr ( 'project_id', 'studio_id', 'schedule_id' ) {
+        if ( defined $params->{$attr} ) {
+            $entry->{$attr} = $params->{$attr};
+        } else {
+            uac::print_error( $attr . ' not given!' );
+            return;
+        }
+    }
 
-	$config->{access}->{write} = 1;
-	$entry->{schedule_id} = $params->{schedule_id};
-	work_schedule::delete( $config, $entry );
-	work_dates::update( $config, $entry );
-	uac::print_info("schedule deleted");
+    $config->{access}->{write} = 1;
+    $entry->{schedule_id} = $params->{schedule_id};
+    work_schedule::delete( $config, $entry );
+    work_dates::update( $config, $entry );
+    uac::print_info("schedule deleted");
 }
 
 sub show_work_schedule {
-	my $config  = shift;
-	my $request = shift;
+    my $config  = shift;
+    my $request = shift;
 
-	$config->{access}->{write} = 0;
+    $config->{access}->{write} = 0;
 
-	my $params      = $request->{params}->{checked};
-	my $permissions = $request->{permissions};
-	unless ( $permissions->{read_series} == 1 ) {
-		uac::permissions_denied('read_series');
-		return;
-	}
+    my $params      = $request->{params}->{checked};
+    my $permissions = $request->{permissions};
+    unless ( $permissions->{read_series} == 1 ) {
+        uac::permissions_denied('read_series');
+        return;
+    }
 
-	for my $param ( 'project_id', 'studio_id' ) {
-		unless ( defined $params->{$param} ) {
-			uac::print_error("missing $param");
-			return;
-		}
-	}
+    for my $param ( 'project_id', 'studio_id' ) {
+        unless ( defined $params->{$param} ) {
+            uac::print_error("missing $param");
+            return;
+        }
+    }
 
-	#this will be updated later (especially allow_update_events)
-	for my $permission ( keys %{ $request->{permissions} } ) {
-		$params->{'allow'}->{$permission} = $request->{permissions}->{$permission};
-	}
+    #this will be updated later (especially allow_update_events)
+    for my $permission ( keys %{ $request->{permissions} } ) {
+        $params->{'allow'}->{$permission} = $request->{permissions}->{$permission};
+    }
 
-	my $project_id = $params->{project_id};
-	my $studio_id  = $params->{studio_id};
+    my $project_id = $params->{project_id};
+    my $studio_id  = $params->{studio_id};
 
-	#add schedules
-	my $schedules = work_schedule::get(
-		$config,
-		{
-			project_id => $project_id,
-			studio_id  => $studio_id,
-		}
-	);
+    #add schedules
+    my $schedules = work_schedule::get(
+        $config,
+        {
+            project_id => $project_id,
+            studio_id  => $studio_id,
+        }
+    );
 
-	#remove seconds from dates
-	for my $schedule (@$schedules) {
-		$schedule->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $schedule->{start};
-		$schedule->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/   if defined $schedule->{end};
+    #remove seconds from dates
+    for my $schedule (@$schedules) {
+        $schedule->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $schedule->{start};
+        $schedule->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/   if defined $schedule->{end};
 
-		#detect schedule type
-		if ( $schedule->{period_type} eq '' ) {
-			$schedule->{period_type} = 'week_of_month';
-			$schedule->{period_type} = 'days' unless ( $schedule->{week_of_month} =~ /\d/ );
-			$schedule->{period_type} = 'single' unless ( $schedule->{end} =~ /\d/ );
-		}
-		$schedule->{ 'period_type_' . $schedule->{period_type} } = 1;
-		if ( $params->{schedule_id} eq $schedule->{schedule_id} ) {
-			$schedule->{selected} = 1;
-		}
+        #detect schedule type
+        if ( $schedule->{period_type} eq '' ) {
+            $schedule->{period_type} = 'week_of_month';
+            $schedule->{period_type} = 'days' unless ( $schedule->{week_of_month} =~ /\d/ );
+            $schedule->{period_type} = 'single' unless ( $schedule->{end} =~ /\d/ );
+        }
+        $schedule->{ 'period_type_' . $schedule->{period_type} } = 1;
+        if ( $params->{schedule_id} eq $schedule->{schedule_id} ) {
+            $schedule->{selected} = 1;
+        }
 
-		#print STDERR $schedule->{period_type}."\n";
-	}
-	my $serie = {};
-	$serie->{schedule} = $schedules;
+        #print STDERR $schedule->{period_type}."\n";
+    }
+    my $serie = {};
+    $serie->{schedule} = $schedules;
 
-	$serie->{start}     = $params->{start};
-	$serie->{end}       = $params->{end};
-	$serie->{frequency} = $params->{frequency};
-	$serie->{duration}  = $serie->{default_duration};
-	my $duration = $params->{duration} || '';
-	$serie->{duration} = $params->{duration} if $duration ne '';
+    $serie->{start}     = $params->{start};
+    $serie->{end}       = $params->{end};
+    $serie->{frequency} = $params->{frequency};
+    $serie->{duration}  = $serie->{default_duration};
+    my $duration = $params->{duration} || '';
+    $serie->{duration} = $params->{duration} if $duration ne '';
 
-	$serie->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $serie->{start};
-	$serie->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/   if defined $serie->{end};
+    $serie->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/ if defined $serie->{start};
+    $serie->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/   if defined $serie->{end};
 
-	#add series dates
-	my $work_dates = work_dates::get(
-		$config,
-		{
-			project_id => $project_id,
-			studio_id  => $studio_id,
-		}
-	);
+    #add series dates
+    my $work_dates = work_dates::get(
+        $config,
+        {
+            project_id => $project_id,
+            studio_id  => $studio_id,
+        }
+    );
 
-	#remove seconds from dates
-	for my $date (@$work_dates) {
-		$date->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/;
-		$date->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/;
-	}
-	$serie->{work_dates} = $work_dates;
+    #remove seconds from dates
+    for my $date (@$work_dates) {
+        $date->{start} =~ s/(\d\d\:\d\d)\:\d\d/$1/;
+        $date->{end} =~ s/(\d\d\:\d\d)\:\d\d/$1/;
+    }
+    $serie->{work_dates} = $work_dates;
 
-	$serie->{show_hint_to_add_schedule} = $params->{show_hint_to_add_schedule};
+    $serie->{show_hint_to_add_schedule} = $params->{show_hint_to_add_schedule};
 
-	#copy series to params
-	#$params->{series}=[$serie];
-	for my $key ( keys %$serie ) {
-		$params->{$key} = $serie->{$key};
-	}
+    #copy series to params
+    #$params->{series}=[$serie];
+    for my $key ( keys %$serie ) {
+        $params->{$key} = $serie->{$key};
+    }
 
-	#print STDERR '
'.Dumper($params).'
'; - $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'work_time' } ); - template::process($config, 'print', $params->{template}, $params ); + #print STDERR '
'.Dumper($params).'
'; + $params->{loc} = localization::get( $config, { user => $params->{presets}->{user}, file => 'work_time' } ); + template::process( $config, 'print', $params->{template}, $params ); } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - #actions and roles - $checked->{action} = ''; - if ( defined $params->{action} ) { - if ( $params->{action} =~ /^(show|save_schedule|delete_schedule)$/ ) { - $checked->{action} = $params->{action}; - } - } + #actions and roles + $checked->{action} = ''; + if ( defined $params->{action} ) { + if ( $params->{action} =~ /^(show|save_schedule|delete_schedule)$/ ) { + $checked->{action} = $params->{action}; + } + } - #numeric values - $checked->{exclude} = 0; - for my $param ( - 'project_id', 'studio_id', 'default_studio_id', 'schedule_id', - 'exclude', 'show_hint_to_add_schedule', 'weekday week_of_month', 'month' - ) - { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } - if ( defined $checked->{studio_id} ) { - $checked->{default_studio_id} = $checked->{studio_id}; - } else { - $checked->{studio_id} = -1; - } + #numeric values + $checked->{exclude} = 0; + for my $param ( + 'project_id', 'studio_id', 'default_studio_id', 'schedule_id', + 'exclude', 'show_hint_to_add_schedule', 'weekday week_of_month', 'month' + ) + { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } + if ( defined $checked->{studio_id} ) { + $checked->{default_studio_id} = $checked->{studio_id}; + } else { + $checked->{studio_id} = -1; + } - $checked->{template} = template::check($config, $params->{template}, 'edit_work_time' ); + $checked->{template} = template::check( $config, $params->{template}, 'edit_work_time' ); - if ( ( defined $checked->{action} ) && ( $checked->{action} eq 'save_schedule' ) ) { + if ( ( defined $checked->{action} ) && ( $checked->{action} eq 'save_schedule' ) ) { - #set defaults - $checked->{create_events} = 0; - $checked->{publish_events} = 0; - } - for my $param ( 'frequency', 'duration', 'default_duration' ) { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d+)/ ) ) { - $checked->{$param} = $1; - } - } + #set defaults + $checked->{create_events} = 0; + $checked->{publish_events} = 0; + } + for my $param ( 'frequency', 'duration', 'default_duration' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /(\d+)/ ) ) { + $checked->{$param} = $1; + } + } - #scalars - for my $param ( 'from', 'till', 'period_type', 'type', 'title' ) { - if ( defined $params->{$param} ) { - $checked->{$param} = $params->{$param}; - $checked->{$param} =~ s/^\s+//g; - $checked->{$param} =~ s/\s+$//g; - } - } + #scalars + for my $param ( 'from', 'till', 'period_type', 'type', 'title' ) { + if ( defined $params->{$param} ) { + $checked->{$param} = $params->{$param}; + $checked->{$param} =~ s/^\s+//g; + $checked->{$param} =~ s/\s+$//g; + } + } - for my $attr ('start') { - if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d[ T]\d\d\:\d\d)/ ) ) { - $checked->{$attr} = $1 . ':00'; - } - } + for my $attr ('start') { + if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d[ T]\d\d\:\d\d)/ ) ) { + $checked->{$attr} = $1 . ':00'; + } + } - for my $attr ('end') { - if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) ) { - $checked->{$attr} = $1; - } - } + for my $attr ('end') { + if ( ( defined $params->{$attr} ) && ( $params->{$attr} =~ /(\d\d\d\d\-\d\d\-\d\d)/ ) ) { + $checked->{$attr} = $1; + } + } - return $checked; + return $checked; } diff --git a/website/agenda/series.cgi b/website/agenda/series.cgi index 886a7a6..8f3413a 100755 --- a/website/agenda/series.cgi +++ b/website/agenda/series.cgi @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl -w use warnings "all"; use strict; @@ -18,84 +18,85 @@ my $r = shift; my $config = config::get('config/config.cgi'); -$params = check_params($params); +$params = check_params( $config, $params ); list_series( $config, $params ); sub list_series { - my $config = shift; - my $params = shift; + my $config = shift; + my $params = shift; - $config->{access}->{write} = 0; + $config->{access}->{write} = 0; - my $project_id = $params->{project_id}; - my $studio_id = $params->{studio_id}; - my $location = $params->{location}; + my $project_id = $params->{project_id}; + my $studio_id = $params->{studio_id}; + my $location = $params->{location}; - if (defined $location){ - my $studios = studios::get( - $config, - { - project_id => $project_id, + if ( defined $location ) { + my $studios = studios::get( + $config, + { + project_id => $project_id, location => $location - } - ); - + } + ); + $studio_id = $studios->[0]->{id}; } - my $conditions = {}; + my $conditions = {}; $conditions->{project_id} = $project_id if defined $project_id; - $conditions->{studio_id} = $studio_id if defined $studio_id; + $conditions->{studio_id} = $studio_id if defined $studio_id; - if (scalar (keys %$conditions) == 0){ + if ( scalar( keys %$conditions ) == 0 ) { $params->{info} .= "missing parameters"; return; } - $params->{info}.= Dumper($conditions); + $params->{info} .= Dumper($conditions); - my $series = series::get_event_age( $config, $conditions ); - my $series2 = []; - for my $serie ( sort { lc $a->{series_name} cmp lc $b->{series_name} } (@$series) ) { - next if $serie->{days_over} > 80 ; - next if $serie->{days_over} == 0 ; + my $series = series::get_event_age( $config, $conditions ); + my $series2 = []; + for my $serie ( sort { lc $a->{series_name} cmp lc $b->{series_name} } (@$series) ) { + next if $serie->{days_over} > 80; + next if $serie->{days_over} == 0; next unless defined $serie->{series_name}; next if $serie->{series_name} eq '_single_'; - push @$series2, $serie; - } - $params->{series} = $series2; + push @$series2, $serie; + } + $params->{series} = $series2; - $params->{info}.="no results found" if scalar(@$series)==0; - $params->{info}=''; + $params->{info} .= "no results found" if scalar(@$series) == 0; + $params->{info} = ''; - template::process($config, 'print', 'templates/series.html', $params ); + template::process( $config, 'print', 'templates/series.html', $params ); } sub check_params { - my $params = shift; + my $config = shift; + my $params = shift; - my $checked = {}; + my $checked = {}; - my $debug = $params->{debug} || ''; - if ( $debug =~ /([a-z\_\,]+)/ ) { - $debug = $1; - } - $checked->{debug} = $debug; + my $debug = $params->{debug} || ''; + if ( $debug =~ /([a-z\_\,]+)/ ) { + $debug = $1; + } + $checked->{debug} = $debug; - for my $param ('project_id', 'studio_id') { - if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { - $checked->{$param} = $params->{$param}; - } - } + for my $param ( 'project_id', 'studio_id' ) { + if ( ( defined $params->{$param} ) && ( $params->{$param} =~ /^\d+$/ ) ) { + $checked->{$param} = $params->{$param}; + } + } - for my $param ( 'location') { - if ( defined $params->{$param} ) { - $checked->{$param} = $params->{$param}; - $checked->{$param} =~ s/^\s+//g; - $checked->{$param} =~ s/\s+$//g; - } - } + for my $param ('location') { + if ( defined $params->{$param} ) { + $checked->{$param} = $params->{$param}; + $checked->{$param} =~ s/^\s+//g; + $checked->{$param} =~ s/\s+$//g; + } + } - return $checked; + return $checked; }