diff --git a/lib/calcms/events.pm b/lib/calcms/events.pm
index 970692b..ad8a10e 100644
--- a/lib/calcms/events.pm
+++ b/lib/calcms/events.pm
@@ -17,22 +17,22 @@ use project;
use studios;
require Exporter;
-our @ISA = qw(Exporter);
+our @ISA = qw(Exporter);
our @EXPORT_OK = qw(
- init
- get_cached_or_render
- get
- modify_results
- get_query
- render
- get_running_event_id
- delete
- check_params
- configure_cache
- get_duration
- calc_dates
- get_keys
- add_recordings
+ init
+ get_cached_or_render
+ get
+ modify_results
+ get_query
+ render
+ get_running_event_id
+ delete
+ check_params
+ configure_cache
+ get_duration
+ calc_dates
+ get_keys
+ add_recordings
);
our %EXPORT_TAGS = ( 'all' => [@EXPORT_OK] );
@@ -41,973 +41,1003 @@ sub init {
sub get_cached_or_render {
- # my $response=$_[0];
- my $config = $_[1];
- my $request = $_[2];
+ # my $response=$_[0];
+ my $config = $_[1];
+ my $request = $_[2];
- my $params = $request->{params}->{checked};
- my $debug = $config->{system}->{debug};
+ my $params = $request->{params}->{checked};
+ my $debug = $config->{system}->{debug};
- my $cache = {};
- if ( $config->{cache}->{use_cache} == 1 ) {
- events::configure_cache($config);
- $cache = cache::load( $config, $params );
- log::write( $config, 'cache', $cache->{action} );
- if ( defined $cache->{content} ) {
- $_[0] = $cache->{content};
- return;
- }
- }
+ my $cache = {};
+ if ( $config->{cache}->{use_cache} == 1 ) {
+ events::configure_cache($config);
+ $cache = cache::load( $config, $params );
+ log::write( $config, 'cache', $cache->{action} );
+ if ( defined $cache->{content} ) {
+ $_[0] = $cache->{content};
+ return;
+ }
+ }
- my $results = events::get( $config, $request );
- events::render( $_[0], $config, $request, $results );
+ my $results = events::get( $config, $request );
+ events::render( $_[0], $config, $request, $results );
- #write to cache
- if ( $config->{cache}->{use_cache} == 1 ) {
+ #write to cache
+ if ( $config->{cache}->{use_cache} == 1 ) {
- #todo:put out reference only
- log::write( $config, 'cache', $cache );
- $cache->{content} = $_[0];
- cache::save($cache);
- }
- log::mem( $config, 'events not_cached' ) if ( $debug > 2 );
- return $_[0];
+ #todo:put out reference only
+ log::write( $config, 'cache', $cache );
+ $cache->{content} = $_[0];
+ cache::save($cache);
+ }
+ log::mem( $config, 'events not_cached' ) if ( $debug > 2 );
+ return $_[0];
}
sub get {
- my $config = shift;
- my $request = shift;
+ my $config = shift;
+ my $request = shift;
- my $debug = $config->{system}->{debug};
+ my $debug = $config->{system}->{debug};
- my $dbh = db::connect( $config, $request );
+ my $dbh = db::connect( $config, $request );
- ( my $query, my $bind_values ) = events::get_query( $dbh, $config, $request );
+ ( my $query, my $bind_values ) = events::get_query( $dbh, $config, $request );
- #print STDERR Dumper($query).Dumper($bind_values)."\n";
+ #print STDERR Dumper($query).Dumper($bind_values)."\n";
- my $results = db::get( $dbh, $$query, $bind_values );
+ my $results = db::get( $dbh, $$query, $bind_values );
#$results = events::add_recordings($dbh, $config, $request, $results);
- #print STDERR Dumper($results);
- $results = events::modify_results( $dbh, $config, $request, $results );
+ #print STDERR Dumper($results);
+ $results = events::modify_results( $dbh, $config, $request, $results );
- return $results;
+ return $results;
}
sub modify_results {
- my $dbh = shift;
- my $config = shift;
- my $request = shift;
- my $results = shift;
+ my $dbh = shift;
+ my $config = shift;
+ my $request = shift;
+ my $results = shift;
- my $params = $request->{params}->{checked};
+ my $params = $request->{params}->{checked};
- my $running_event_id = 0;
- my $projects = {};
- my $studios = {};
+ my $running_event_id = 0;
+ my $projects = {};
+ my $studios = {};
- # print $running_event_id." ".$running_events->[0]->{start}." ".$running_events->[0]->{title} if ($debug ne'');
- my $time_diff = '';
- if ( scalar @$results > 0 ) {
- $results->[0]->{__first__} = 1;
- $results->[-1]->{__last__} = 1;
- $running_event_id = events::get_running_event_id($dbh);
- }
+ # print $running_event_id." ".$running_events->[0]->{start}." ".$running_events->[0]->{title} if ($debug ne'');
+ my $time_diff = '';
+ if ( scalar @$results > 0 ) {
+ $results->[0]->{__first__} = 1;
+ $results->[-1]->{__last__} = 1;
+ $running_event_id = events::get_running_event_id($dbh);
+ }
- if ( ( defined $params->{template} ) && ( $params->{template} =~ /\.xml/ ) ) {
- $time_diff = time::utc_offset( $config->{date}->{time_zone} );
- $time_diff =~ s/(\d\d)(\d\d)/$1\:$2/g;
- }
+ if ( ( defined $params->{template} ) && ( $params->{template} =~ /\.xml/ ) ) {
+ $time_diff = time::utc_offset( $config->{date}->{time_zone} );
+ $time_diff =~ s/(\d\d)(\d\d)/$1\:$2/g;
+ }
- my $previous_result = { start_date => '' };
- my $counter = 1;
- for my $result (@$results) {
- if ( defined $params->{template} ) {
- if ( $params->{template} =~ /\.ics$/ ) {
- $result->{content_ical} =
- markup::plain_to_ical( $result->{content} );
- $result->{title_ical} =
- markup::plain_to_ical( $result->{title} );
- $result->{user_title_ical} =
- markup::plain_to_ical( $result->{user_title} );
- $result->{excerpt_ical} =
- markup::plain_to_ical( $result->{excerpt} );
- $result->{user_excerpt_ical} =
- markup::plain_to_ical( $result->{user_excerpt} );
- $result->{series_name} =
- markup::plain_to_ical( $result->{series_name} );
- $result->{created_at} =~ s/ /T/gi;
- $result->{created_at} =~ s/[\:\-]//gi;
- $result->{modified_at} =~ s/ /T/gi;
- $result->{modified_at} =~ s/[\:\-]//gi;
+ my $previous_result = { start_date => '' };
+ my $counter = 1;
+ for my $result (@$results) {
+ if ( defined $params->{template} ) {
+ if ( $params->{template} =~ /\.ics$/ ) {
+ $result->{content_ical} =
+ markup::plain_to_ical( $result->{content} );
+ $result->{title_ical} =
+ markup::plain_to_ical( $result->{title} );
+ $result->{user_title_ical} =
+ markup::plain_to_ical( $result->{user_title} );
+ $result->{excerpt_ical} =
+ markup::plain_to_ical( $result->{excerpt} );
+ $result->{user_excerpt_ical} =
+ markup::plain_to_ical( $result->{user_excerpt} );
+ $result->{series_name} =
+ markup::plain_to_ical( $result->{series_name} );
+ $result->{created_at} =~ s/ /T/gi;
+ $result->{created_at} =~ s/[\:\-]//gi;
+ $result->{modified_at} =~ s/ /T/gi;
+ $result->{modified_at} =~ s/[\:\-]//gi;
- } elsif ( $params->{template} =~ /\.atom\.xml/ ) {
- $result->{excerpt} = '' unless defined( $result->{excerpt} );
- $result->{excerpt} = "lass dich ueberraschen"
- if ( $result->{excerpt} eq '' );
+ } elsif ( $params->{template} =~ /\.atom\.xml/ ) {
+ $result->{excerpt} = '' unless defined( $result->{excerpt} );
+ $result->{excerpt} = "lass dich ueberraschen"
+ if ( $result->{excerpt} eq '' );
- # $result->{excerpt} =markup::plain_to_xml($result->{excerpt});
- # $result->{title} =markup::plain_to_xml($result->{title});
- # $result->{series_name} =markup::plain_to_xml($result->{series_name});
- # $result->{program} =markup::plain_to_xml($result->{program});
+ # $result->{excerpt} =markup::plain_to_xml($result->{excerpt});
+ # $result->{title} =markup::plain_to_xml($result->{title});
+ # $result->{series_name} =markup::plain_to_xml($result->{series_name});
+ # $result->{program} =markup::plain_to_xml($result->{program});
- $result->{created_at} =~ s/ /T/gi;
- $result->{created_at} .= $time_diff;
- $result->{modified_at} =~ s/ /T/gi;
- $result->{modified_at} .= $time_diff;
- } elsif ( $params->{template} =~ /\.rss\.xml/ ) {
- $result->{excerpt} = '' unless defined( $result->{excerpt} );
- $result->{excerpt} = "lass dich ueberraschen"
- if ( $result->{excerpt} eq '' );
+ $result->{created_at} =~ s/ /T/gi;
+ $result->{created_at} .= $time_diff;
+ $result->{modified_at} =~ s/ /T/gi;
+ $result->{modified_at} .= $time_diff;
+ } elsif ( $params->{template} =~ /\.rss\.xml/ ) {
+ $result->{excerpt} = '' unless defined( $result->{excerpt} );
+ $result->{excerpt} = "lass dich ueberraschen"
+ if ( $result->{excerpt} eq '' );
- # $result->{excerpt} =markup::plain_to_xml($result->{excerpt});
- # $result->{title} =markup::plain_to_xml($result->{title});
- # $result->{series_name} =markup::plain_to_xml($result->{series_name});
- # $result->{program} =markup::plain_to_xml($result->{program});
- #print STDERR "created:$result->{created_at} modified:$result->{modified_at}\n";
- $result->{modified_at} =
- time::datetime_to_rfc822( $result->{modified_at} );
- if ( $result->{created_at} =~ /[1-9]/ ) {
- $result->{created_at} =
- time::datetime_to_rfc822( $result->{created_at} );
- } else {
- $result->{created_at} = $result->{modified_at};
- }
+ # $result->{excerpt} =markup::plain_to_xml($result->{excerpt});
+ # $result->{title} =markup::plain_to_xml($result->{title});
+ # $result->{series_name} =markup::plain_to_xml($result->{series_name});
+ # $result->{program} =markup::plain_to_xml($result->{program});
+ #print STDERR "created:$result->{created_at} modified:$result->{modified_at}\n";
+ $result->{modified_at} =
+ time::datetime_to_rfc822( $result->{modified_at} );
+ if ( $result->{created_at} =~ /[1-9]/ ) {
+ $result->{created_at} =
+ time::datetime_to_rfc822( $result->{created_at} );
+ } else {
+ $result->{created_at} = $result->{modified_at};
+ }
- }
- }
- $result->{series_name} ||= '';
- $result->{series_name} = '' if $result->{series_name} eq '_single_';
+ }
+ }
+ $result->{series_name} ||= '';
+ $result->{series_name} = '' if $result->{series_name} eq '_single_';
- $result->{rerun} = '' unless defined $result->{rerun};
+ $result->{rerun} = '' unless defined $result->{rerun};
- if ( $result->{title} =~ /\#(\d+)([a-z])?\s*$/ ) {
- $result->{episode} = $1 unless defined $result->{episode};
- $result->{rerun} = $2 || '' unless ( $result->{rerun} =~ /\d/ );
- $result->{title} =~ s/\#\d+[a-z]?\s*$//;
- $result->{title} =~ s/\s+$//;
- }
- $result->{rerun} = '' if ( $result->{rerun} eq '0' );
+ if ( $result->{title} =~ /\#(\d+)([a-z])?\s*$/ ) {
+ $result->{episode} = $1 unless defined $result->{episode};
+ $result->{rerun} = $2 || '' unless ( $result->{rerun} =~ /\d/ );
+ $result->{title} =~ s/\#\d+[a-z]?\s*$//;
+ $result->{title} =~ s/\s+$//;
+ }
+ $result->{rerun} = '' if ( $result->{rerun} eq '0' );
- if ( ( defined $result->{recurrence_count} )
- && ( $result->{recurrence_count} > 0 ) )
- {
- $result->{recurrence_count_alpha} =
- markup::base26( $result->{recurrence_count} + 1 );
- $result->{recurrence_id} = $result->{recurrence};
- } else {
- $result->{recurrence_count_alpha} = '';
- $result->{recurrence_count} = '';
- }
+ if ( ( defined $result->{recurrence_count} )
+ && ( $result->{recurrence_count} > 0 ) )
+ {
+ $result->{recurrence_count_alpha} =
+ markup::base26( $result->{recurrence_count} + 1 );
+ $result->{recurrence_id} = $result->{recurrence};
+ } else {
+ $result->{recurrence_count_alpha} = '';
+ $result->{recurrence_count} = '';
+ }
- # set title keys
- my $keys = get_keys($result);
- for my $key ( keys %$keys ) {
- $result->{$key} = $keys->{$key};
- }
+ # set title keys
+ my $keys = get_keys($result);
+ for my $key ( keys %$keys ) {
+ $result->{$key} = $keys->{$key};
+ }
- $result = calc_dates( $config, $result, $params, $previous_result, $time_diff );
+ $result = calc_dates( $config, $result, $params, $previous_result, $time_diff );
- $result->{event_uri} = '';
- if ( ( defined $result->{program} ) && ( $result->{program} ne '' ) ) {
- $result->{event_uri} .= $result->{program};
- $result->{event_uri} .= '-'
- if ( ( $result->{series_name} ne '' )
- || ( $result->{title} ne '' ) );
- }
- if ( $result->{series_name} ne '' ) {
- $result->{event_uri} .= $result->{series_name};
- $result->{event_uri} .= '-' if ( $result->{title} ne '' );
- }
- $result->{event_uri} .= $result->{title} if ( $result->{title} ne '' );
- $result->{event_uri} =~ s/\#/Nr./g;
- $result->{event_uri} =~ s/\&/und/g;
- $result->{event_uri} =~ s/\//\%2f/g;
- $result->{event_uri} =~ s/[?]//g;
+ $result->{event_uri} = '';
+ if ( ( defined $result->{program} ) && ( $result->{program} ne '' ) ) {
+ $result->{event_uri} .= $result->{program};
+ $result->{event_uri} .= '-'
+ if ( ( $result->{series_name} ne '' )
+ || ( $result->{title} ne '' ) );
+ }
+ if ( $result->{series_name} ne '' ) {
+ $result->{event_uri} .= $result->{series_name};
+ $result->{event_uri} .= '-' if ( $result->{title} ne '' );
+ }
+ $result->{event_uri} .= $result->{title} if ( $result->{title} ne '' );
+ $result->{event_uri} =~ s/\#/Nr./g;
+ $result->{event_uri} =~ s/\&/und/g;
+ $result->{event_uri} =~ s/\//\%2f/g;
+ $result->{event_uri} =~ s/[?]//g;
- $result->{rds_title} = $result->{event_uri};
- $result->{rds_title} =~ s/[^a-zA-Z0-9\-]/\_/gi;
- $result->{rds_title} =~ s/\_{2,99}/\_/gi;
- $result->{rds_title} = substr( $result->{rds_title}, 0, 63 );
+ $result->{rds_title} = $result->{event_uri};
+ $result->{rds_title} =~ s/[^a-zA-Z0-9\-]/\_/gi;
+ $result->{rds_title} =~ s/\_{2,99}/\_/gi;
+ $result->{rds_title} = substr( $result->{rds_title}, 0, 63 );
- #$result->{event_id}=$result->{id};
+ #$result->{event_id}=$result->{id};
- $result->{base_url} = $request->{base_url};
- $result->{base_domain} = $config->{locations}->{base_domain};
- $result->{static_files_url} = $config->{locations}->{static_files_url};
- $result->{source_base_url} = $config->{locations}->{source_base_url};
- $result->{cache_base_url} = $config->{cache}->{base_url};
+ $result->{base_url} = $request->{base_url};
+ $result->{base_domain} = $config->{locations}->{base_domain};
+ $result->{static_files_url} = $config->{locations}->{static_files_url};
+ $result->{source_base_url} = $config->{locations}->{source_base_url};
+ $result->{cache_base_url} = $config->{cache}->{base_url};
- $result->{is_running} = 1
- if ( $running_event_id eq $result->{event_id} );
- $result->{one_comment} = 1 if ( $result->{comment_count} == 1 );
- $result->{no_comment} = 1 if ( $result->{comment_count} == 0 );
+ $result->{is_running} = 1
+ if ( $running_event_id eq $result->{event_id} );
+ $result->{one_comment} = 1 if ( $result->{comment_count} == 1 );
+ $result->{no_comment} = 1 if ( $result->{comment_count} == 0 );
- #fix image url
- #$params->{exclude_event_images}=0 unless defined $params->{exclude_event_images};
- #if ($params->{exclude_event_images}==1){
- # if ( (defined $config->{permissions}->{hide_event_images}) && ($config->{permissions}->{hide_event_images} eq '1') ){
- # $result->{image} = $result->{series_image};
+ #fix image url
+ #$params->{exclude_event_images}=0 unless defined $params->{exclude_event_images};
+ #if ($params->{exclude_event_images}==1){
+ # if ( (defined $config->{permissions}->{hide_event_images}) && ($config->{permissions}->{hide_event_images} eq '1') ){
+ # $result->{image} = $result->{series_image};
# $result->{image_label} = $result->{series_image_label};
- # }
+ # }
#}
-
- if ( defined $result->{image} ) {
- my $url = $config->{locations}->{local_media_url}||'';
- my $image = $result->{image};
- $result->{thumb_url} = $url.'/thumbs/'.$image;
- $result->{icon_url} = $url.'/icons/'.$image;
- $result->{image_url} = $url.'/images/'.$image;
- }
- if ( defined $result->{series_image} ) {
- my $url = $config->{locations}->{local_media_url}||'';
- my $image = $result->{series_image};
- $result->{series_thumb_url} = $url.'/thumbs/'.$image;
- $result->{series_icon_url} = $url.'/icons/'.$image;
- $result->{series_image_url} = $url.'/images/'.$image;
- }
+ if ( defined $result->{image} ) {
+ my $url = $config->{locations}->{local_media_url} || '';
+ my $image = $result->{image};
+ $result->{thumb_url} = $url . '/thumbs/' . $image;
+ $result->{icon_url} = $url . '/icons/' . $image;
+ $result->{image_url} = $url . '/images/' . $image;
+ }
- $result->{location_css} = $result->{location} || '';
- $result->{location_css} = lc( $result->{location_css} );
- $result->{location_css} =~ s/\.//g;
- $result->{location_css} =~ s/\s//g;
- $result->{ 'location_label_' . $result->{location_css} } = 1;
+ if ( defined $result->{series_image} ) {
+ my $url = $config->{locations}->{local_media_url} || '';
+ my $image = $result->{series_image};
+ $result->{series_thumb_url} = $url . '/thumbs/' . $image;
+ $result->{series_icon_url} = $url . '/icons/' . $image;
+ $result->{series_image_url} = $url . '/images/' . $image;
+ }
- # add project by name
- my $project_name = $result->{project};
- if ( defined $project_name ) {
+ $result->{location_css} = $result->{location} || '';
+ $result->{location_css} = lc( $result->{location_css} );
+ $result->{location_css} =~ s/\.//g;
+ $result->{location_css} =~ s/\s//g;
+ $result->{ 'location_label_' . $result->{location_css} } = 1;
- #print STDERR "found project:$project_name\n";
- unless ( defined $projects->{$project_name} ) {
- my $results = project::get( $config, { name => $project_name } );
- $projects->{$project_name} = $results->[0] || {};
- }
- my $project = $projects->{$project_name};
- for my $key ( keys %$project ) {
- $result->{ 'project_' . $key } = $project->{$key};
- }
- } else {
- print STDERR "events::get - unknown project for event $result->{id}\n";
- }
+ # add project by name
+ my $project_name = $result->{project};
+ if ( defined $project_name ) {
- #if project_id is set add columns from project (cached)
- my $project_id = $result->{project_id};
- if ( defined $project_id ) {
- unless ( defined $projects->{$project_id} ) {
- my $results = project::get( $config, { project_id => $project_id } );
- $projects->{$project_id} = $results->[0] || {};
- }
- my $project = $projects->{$project_id};
- for my $key ( keys %$project ) {
- $result->{ 'project_' . $key } = $project->{$key};
- }
- }
+ #print STDERR "found project:$project_name\n";
+ unless ( defined $projects->{$project_name} ) {
+ my $results = project::get( $config, { name => $project_name } );
+ $projects->{$project_name} = $results->[0] || {};
+ }
+ my $project = $projects->{$project_name};
+ for my $key ( keys %$project ) {
+ $result->{ 'project_' . $key } = $project->{$key};
+ }
+ } else {
+ print STDERR "events::get - unknown project for event $result->{id}\n";
+ }
- #if studio_id is set add columns from studio (cached)
- my $studio_id = $result->{studio_id};
- if ( defined $studio_id ) {
- unless ( defined $studios->{$studio_id} ) {
- my $results = studios::get( $config, { studio_id => $studio_id } );
- $studios->{$studio_id} = $results->[0] || {};
- }
- my $studio = $studios->{$studio_id};
- for my $key ( keys %$studio ) {
- $result->{ 'studio_' . $key } = $studio->{$key};
- }
- }
+ #if project_id is set add columns from project (cached)
+ my $project_id = $result->{project_id};
+ if ( defined $project_id ) {
+ unless ( defined $projects->{$project_id} ) {
+ my $results = project::get( $config, { project_id => $project_id } );
+ $projects->{$project_id} = $results->[0] || {};
+ }
+ my $project = $projects->{$project_id};
+ for my $key ( keys %$project ) {
+ $result->{ 'project_' . $key } = $project->{$key};
+ }
+ }
- #$result->{'project_title'}=$project->{title} if (defined $project->{title} && $project->{title} ne '');
+ #if studio_id is set add columns from studio (cached)
+ my $studio_id = $result->{studio_id};
+ if ( defined $studio_id ) {
+ unless ( defined $studios->{$studio_id} ) {
+ my $results = studios::get( $config, { studio_id => $studio_id } );
+ $studios->{$studio_id} = $results->[0] || {};
+ }
+ my $studio = $studios->{$studio_id};
+ for my $key ( keys %$studio ) {
+ $result->{ 'studio_' . $key } = $studio->{$key};
+ }
+ }
- #print STDERR "project:'$project_name'\n";
- #print STDERR "title:'$result->{project_title}'\n";
- #use Data::Dumper;print STDERR Dumper($result);
+ #$result->{'project_title'}=$project->{title} if (defined $project->{title} && $project->{title} ne '');
- for my $name ( keys %{ $config->{mapping}->{events} } ) {
- my $val = '';
- if ( ( defined $name )
- && ( defined $config->{mapping}->{events}->{$name} )
- && ( defined $result->{$name} ) )
- {
- $val = $config->{mapping}->{events}->{$name}->{ $result->{$name} }
- || '';
- $result->{ $name . '_mapped' } = $val if ( $val ne '' );
- }
- }
+ #print STDERR "project:'$project_name'\n";
+ #print STDERR "title:'$result->{project_title}'\n";
+ #use Data::Dumper;print STDERR Dumper($result);
- #for my $name (keys %{$config->{controllers}}){
- # $result->{"controller_$name"}=$config->{controllers}->{$name};
- #}
+ for my $name ( keys %{ $config->{mapping}->{events} } ) {
+ my $val = '';
+ if ( ( defined $name )
+ && ( defined $config->{mapping}->{events}->{$name} )
+ && ( defined $result->{$name} ) )
+ {
+ $val = $config->{mapping}->{events}->{$name}->{ $result->{$name} }
+ || '';
+ $result->{ $name . '_mapped' } = $val if ( $val ne '' );
+ }
+ }
- $previous_result = $result;
+ #for my $name (keys %{$config->{controllers}}){
+ # $result->{"controller_$name"}=$config->{controllers}->{$name};
+ #}
- #print "Content-type:text/text\n\n";
- #use Data::Dumper;print STDERR Dumper($result);
- $result->{ 'counter_' . $counter } = 1;
- $counter++;
+ $previous_result = $result;
- if ( ( defined $params->{template} )
- && ( $params->{template} =~ /(list|details)/ ) ){
- if ( ( defined $result->{excerpt} ) && ( length($result->{excerpt}) > 250) ){
- $result->{excerpt} = substr($result->{excerpt}, 0, 250).'...';
- }
+ #print "Content-type:text/text\n\n";
+ #use Data::Dumper;print STDERR Dumper($result);
+ $result->{ 'counter_' . $counter } = 1;
+ $counter++;
- if ( (defined $result->{user_excerpt}) && (length($result->{user_excerpt}) > 250) ){
- $result->{user_excerpt} = substr($result->{user_excerpt}, 0, 250).'...';
- }
- }
+ if ( ( defined $params->{template} )
+ && ( $params->{template} =~ /(list|details)/ ) )
+ {
+ if ( ( defined $result->{excerpt} ) && ( length( $result->{excerpt} ) > 250 ) ) {
+ $result->{excerpt} = substr( $result->{excerpt}, 0, 250 ) . '...';
+ }
- #build content
- if ( ( defined $params->{template} )
- && ( $params->{template} =~ /\.html/ ) )
- {
- if ( defined $result->{content} ) {
- $result->{content} =
- markup::fix_line_ends( $result->{content} );
- $result->{content} =
- markup::creole_to_html( $result->{content} );
- $result->{html_content} = $result->{content};
+ if ( ( defined $result->{user_excerpt} ) && ( length( $result->{user_excerpt} ) > 250 ) ) {
+ $result->{user_excerpt} = substr( $result->{user_excerpt}, 0, 250 ) . '...';
+ }
+ }
- }
- if ( defined $result->{topic} ) {
- $result->{topic} = markup::fix_line_ends( $result->{topic} );
- $result->{topic} = markup::creole_to_html( $result->{topic} );
- $result->{html_topic} = $result->{topic};
- }
- }
+ #build content
+ if ( ( defined $params->{template} )
+ && ( $params->{template} =~ /\.html/ ) )
+ {
+ if ( defined $result->{content} ) {
+ $result->{content} =
+ markup::fix_line_ends( $result->{content} );
+ $result->{content} =
+ markup::creole_to_html( $result->{content} );
+ $result->{html_content} = $result->{content};
- #detect if images are in content or topic field
- my $image_in_text = 0;
- $image_in_text = 1
- if ( ( defined $result->{content} )
- && ( $result->{content} =~ /
{topic} )
- && ( $result->{topic} =~ /
{no_image_in_text} = 1 if $image_in_text == 0;
+ }
+ if ( defined $result->{topic} ) {
+ $result->{topic} = markup::fix_line_ends( $result->{topic} );
+ $result->{topic} = markup::creole_to_html( $result->{topic} );
+ $result->{html_topic} = $result->{topic};
+ }
+ }
- if (
- ( defined $params->{template} )
- && ( ( $params->{template} =~ /event_perl\.txt$/ )
- || ( $params->{template} =~ /event_file_export\.txt$/ ) )
+ #detect if images are in content or topic field
+ my $image_in_text = 0;
+ $image_in_text = 1
+ if ( ( defined $result->{content} )
+ && ( $result->{content} =~ /
{topic} )
+ && ( $result->{topic} =~ /
{no_image_in_text} = 1 if $image_in_text == 0;
- )
- {
- for my $key ( keys %$result ) {
- $result->{$key} =~ s/\|/\\\|/g if ( defined $result->{$key} );
- }
+ if (
+ ( defined $params->{template} )
+ && ( ( $params->{template} =~ /event_perl\.txt$/ )
+ || ( $params->{template} =~ /event_file_export\.txt$/ ) )
- # $result->{content}='no';
- }
+ )
+ {
+ for my $key ( keys %$result ) {
+ $result->{$key} =~ s/\|/\\\|/g if ( defined $result->{$key} );
+ }
- } # end for results
- add_recurrence_dates( $config, $results );
- return $results;
+ # $result->{content}='no';
+ }
+
+ } # end for results
+ add_recurrence_dates( $config, $results );
+ return $results;
}
sub add_recurrence_dates {
- my $config = shift;
- my $results = shift;
+ my $config = shift;
+ my $results = shift;
- # get unique list of recurrence ids from results
- my $recurrence_dates = {};
- for my $result (@$results) {
- next unless defined $result->{recurrence};
- next if $result->{recurrence} == 0;
- $recurrence_dates->{ $result->{recurrence} } = 0;
- }
+ # get unique list of recurrence ids from results
+ my $recurrence_dates = {};
+ for my $result (@$results) {
+ next unless defined $result->{recurrence};
+ next if $result->{recurrence} == 0;
+ $recurrence_dates->{ $result->{recurrence} } = 0;
+ }
- my @event_ids = keys %$recurrence_dates;
- return if @event_ids == 0;
+ my @event_ids = keys %$recurrence_dates;
+ return if @event_ids == 0;
- # query start date of recurrences
- my $conditions = [];
- my $bind_values = [];
- for my $id (@event_ids) {
- push @$conditions, '?';
- push @$bind_values, $id;
- }
- $conditions = join( ',', @$conditions );
+ # query start date of recurrences
+ my $conditions = [];
+ my $bind_values = [];
+ for my $id (@event_ids) {
+ push @$conditions, '?';
+ push @$bind_values, $id;
+ }
+ $conditions = join( ',', @$conditions );
- my $query = qq{
+ my $query = qq{
select id event_id, start
from calcms_events
where id in ($conditions)
};
- #print STDERR Dumper($query);
- #return;
- my $dbh = db::connect($config);
- my $events = db::get( $dbh, $query, $bind_values );
+ #print STDERR Dumper($query);
+ #return;
+ my $dbh = db::connect($config);
+ my $events = db::get( $dbh, $query, $bind_values );
- # store start dates by recurrence id
- for my $event (@$events) {
- $recurrence_dates->{ $event->{event_id} } = $event->{start};
- }
+ # store start dates by recurrence id
+ for my $event (@$events) {
+ $recurrence_dates->{ $event->{event_id} } = $event->{start};
+ }
- # set start dates to results
- for my $result (@$results) {
- next unless defined $result->{recurrence};
- next if $result->{recurrence} == 0;
- $result->{recurrence_date} =
- $recurrence_dates->{ $result->{recurrence} };
- }
+ # set start dates to results
+ for my $result (@$results) {
+ next unless defined $result->{recurrence};
+ next if $result->{recurrence} == 0;
+ $result->{recurrence_date} =
+ $recurrence_dates->{ $result->{recurrence} };
+ }
- #print STDERR Dumper($recurrence_dates);
+ #print STDERR Dumper($recurrence_dates);
}
sub calc_dates {
- my $config = shift;
- my $result = shift;
- my $params = shift || {};
- my $previous_result = shift || {};
- my $time_diff = shift || '';
+ my $config = shift;
+ my $result = shift;
+ my $params = shift || {};
+ my $previous_result = shift || {};
+ my $time_diff = shift || '';
- $result->{utc_offset} = $time_diff;
- $result->{time_zone} = $config->{date}->{time_zone};
- my $language = $config->{date}->{language} || 'en';
+ $result->{utc_offset} = $time_diff;
+ $result->{time_zone} = $config->{date}->{time_zone};
+ my $language = $config->{date}->{language} || 'en';
- $result->{start_datetime} = $result->{start};
- $result->{start_datetime} =~ s/ /T/gi;
- if ( $result->{start_datetime} =~ /(\d\d\d\d)\-(\d\d)\-(\d\d)T(\d\d)\:(\d\d)/ ) {
- $result->{start_year} = $1;
- $result->{start_month} = $2;
- $result->{start_day} = $3;
- $result->{start_hour} = $4;
- $result->{start_minute} = $5;
- }
+ $result->{start_datetime} = $result->{start};
+ $result->{start_datetime} =~ s/ /T/gi;
+ if ( $result->{start_datetime} =~ /(\d\d\d\d)\-(\d\d)\-(\d\d)T(\d\d)\:(\d\d)/ ) {
+ $result->{start_year} = $1;
+ $result->{start_month} = $2;
+ $result->{start_day} = $3;
+ $result->{start_hour} = $4;
+ $result->{start_minute} = $5;
+ }
- unless ( defined $result->{day} ) {
- my $d = time::datetime_to_array( $result->{start} );
- my $hour = $d->[3];
- if ( ( defined $hour ) && ( $hour < 6 ) ) {
- $result->{day} = time::add_days_to_date( $result->{start}, -1 );
- } else {
- $result->{day} = time::datetime_to_date( $result->{start} );
- }
- }
- unless ( defined $result->{start_date} ) {
- $result->{start_date} = time::datetime_to_date( $result->{start} );
- }
- unless ( defined $result->{end_date} ) {
- $result->{end_date} = time::datetime_to_date( $result->{end} );
- }
+ unless ( defined $result->{day} ) {
+ my $d = time::datetime_to_array( $result->{start} );
+ my $hour = $d->[3];
+ if ( ( defined $hour ) && ( $hour < 6 ) ) {
+ $result->{day} = time::add_days_to_date( $result->{start}, -1 );
+ } else {
+ $result->{day} = time::datetime_to_date( $result->{start} );
+ }
+ }
+ unless ( defined $result->{start_date} ) {
+ $result->{start_date} = time::datetime_to_date( $result->{start} );
+ }
+ unless ( defined $result->{end_date} ) {
+ $result->{end_date} = time::datetime_to_date( $result->{end} );
+ }
- $result->{dtstart} = $result->{start_datetime};
- $result->{dtstart} =~ s/[\:\-]//gi;
+ $result->{dtstart} = $result->{start_datetime};
+ $result->{dtstart} =~ s/[\:\-]//gi;
- if ( ( defined $params->{template} )
- && ( $params->{template} =~ /(\.txt|\.json)/ ) )
- {
- $result->{start_utc_epoch} = time::datetime_to_utc( $result->{start_datetime}, $config->{date}->{time_zone} );
- }
- if ( ( defined $params->{template} )
- && ( $params->{template} =~ /(\.xml)/ ) )
- {
- $result->{start_datetime_utc} = time::datetime_to_utc_datetime( $result->{start_datetime}, $config->{date}->{time_zone} );
- }
+ if ( ( defined $params->{template} )
+ && ( $params->{template} =~ /(\.txt|\.json)/ ) )
+ {
+ $result->{start_utc_epoch} = time::datetime_to_utc( $result->{start_datetime}, $config->{date}->{time_zone} );
+ }
+ if ( ( defined $params->{template} )
+ && ( $params->{template} =~ /(\.xml)/ ) )
+ {
+ $result->{start_datetime_utc} = time::datetime_to_utc_datetime( $result->{start_datetime}, $config->{date}->{time_zone} );
+ }
- $result->{end_datetime} = $result->{end};
- $result->{end_datetime} =~ s/ /T/gi;
+ $result->{end_datetime} = $result->{end};
+ $result->{end_datetime} =~ s/ /T/gi;
- $result->{dtend} = $result->{end_datetime};
- $result->{dtend} =~ s/[\:\-]//gi;
+ $result->{dtend} = $result->{end_datetime};
+ $result->{dtend} =~ s/[\:\-]//gi;
- if ( ( defined $params->{template} )
- && ( $params->{template} =~ /(\.txt|\.json)/ ) )
- {
- $result->{end_utc_epoch} = time::datetime_to_utc( $result->{end_datetime}, $config->{date}->{time_zone} );
- }
- if ( ( defined $params->{template} )
- && ( $params->{template} =~ /(\.xml)/ ) )
- {
- $result->{end_datetime_utc} = time::datetime_to_utc_datetime( $result->{end_datetime}, $config->{date}->{time_zone} );
- }
+ if ( ( defined $params->{template} )
+ && ( $params->{template} =~ /(\.txt|\.json)/ ) )
+ {
+ $result->{end_utc_epoch} = time::datetime_to_utc( $result->{end_datetime}, $config->{date}->{time_zone} );
+ }
+ if ( ( defined $params->{template} )
+ && ( $params->{template} =~ /(\.xml)/ ) )
+ {
+ $result->{end_datetime_utc} = time::datetime_to_utc_datetime( $result->{end_datetime}, $config->{date}->{time_zone} );
+ }
- if ( ( defined $previous_result )
- && ( defined $previous_result->{start_date} )
- && ( $result->{start_date} ne $previous_result->{start_date} ) )
- {
- $result->{is_first_of_day} = 1;
- $previous_result->{is_last_of_day} = 1;
- }
+ if ( ( defined $previous_result )
+ && ( defined $previous_result->{start_date} )
+ && ( $result->{start_date} ne $previous_result->{start_date} ) )
+ {
+ $result->{is_first_of_day} = 1;
+ $previous_result->{is_last_of_day} = 1;
+ }
- $result->{start_date_name} =
- time::date_format( $result->{start_date}, $language );
- $result->{end_date_name} =
- time::date_format( $result->{end_date}, $language );
+ $result->{start_date_name} =
+ time::date_format( $result->{start_date}, $language );
+ $result->{end_date_name} =
+ time::date_format( $result->{end_date}, $language );
- if ( $result->{start} =~ /(\d\d\:\d\d)\:\d\d/ ) {
- $result->{start_time_name} = $1;
- $result->{start_time} = $1;
- }
+ if ( $result->{start} =~ /(\d\d\:\d\d)\:\d\d/ ) {
+ $result->{start_time_name} = $1;
+ $result->{start_time} = $1;
+ }
- if ( $result->{end} =~ /(\d\d\:\d\d)\:\d\d/ ) {
- $result->{end_time_name} = $1;
- $result->{end_time} = $1;
- }
+ if ( $result->{end} =~ /(\d\d\:\d\d)\:\d\d/ ) {
+ $result->{end_time_name} = $1;
+ $result->{end_time} = $1;
+ }
- if ( defined $result->{weekday} ) {
- my $language = $config::config->{date}->{language} || 'en';
+ if ( defined $result->{weekday} ) {
+ my $language = $config::config->{date}->{language} || 'en';
- #my $weekdays=time::get_weekdays();
- my $weekday_index = $time::weekday_index->{ $result->{weekday} . '' } || 0;
- $result->{weekday_name} =
- $time::names->{$language}->{weekdays}->[$weekday_index];
- $result->{weekday_short_name} =
- $time::names->{$language}->{weekdays_abbr}->[$weekday_index];
- }
- return $result;
+ #my $weekdays=time::get_weekdays();
+ my $weekday_index = $time::weekday_index->{ $result->{weekday} . '' } || 0;
+ $result->{weekday_name} =
+ $time::names->{$language}->{weekdays}->[$weekday_index];
+ $result->{weekday_short_name} =
+ $time::names->{$language}->{weekdays_abbr}->[$weekday_index];
+ }
+ return $result;
}
-sub add_recordings{
- my $dbh = shift;
- my $config = shift;
- my $request = shift;
- my $events = shift;
+sub add_recordings {
+ my $dbh = shift;
+ my $config = shift;
+ my $request = shift;
+ my $events = shift;
-# print STDERR Dumper($results);
+ # print STDERR Dumper($results);
return $events unless defined $events;
my $params = $request->{params}->{checked};
return $events unless defined $params;
return $events unless defined $params->{recordings};
- my @ids=();
- my $eventsById={};
+ my @ids = ();
+ my $eventsById = {};
+
#my $events = $results;
-
- for my $event (@$events){
+
+ for my $event (@$events) {
my $eventId = $event->{event_id};
push @ids, $eventId;
$eventsById->{$eventId} = $event;
}
+ my $qms = join( ', ', ( map { '?' } @$events ) );
+ my $bindValues = join( ', ', ( map { $_->{event_id} } @$events ) );
- my $qms = join( ', ', (map { '?' } @$events));
- my $bindValues = join( ', ', (map { $_->{event_id} } @$events));
-
- my $query = qq{
+ my $query = qq{
select *
from calcms_audio_recordings
where event_id in ($qms)
order by created_at;
};
- $dbh = db::connect($config) unless defined $dbh;
- my $recordings = db::get( $dbh, $query, $bindValues );
+ $dbh = db::connect($config) unless defined $dbh;
+ my $recordings = db::get( $dbh, $query, $bindValues );
+
#print STDERR Dumper($recordings);
- for my $entry (@$recordings){
+ for my $entry (@$recordings) {
my $eventId = $entry->{event_id};
- my $event = $eventsById->{$eventId};
+ my $event = $eventsById->{$eventId};
push @{ $event->{recordings} }, $entry;
}
-
- return $events;
+
+ return $events;
}
-# if recordings is set in params, recordings date and path will be included
-sub get_query {
- my $dbh = shift;
- my $config = shift;
- my $request = shift;
+sub getDateRange {
+ my $config = shift;
+ $config->{date}->{day_starting_hour};
+}
- my $params = $request->{params}->{checked};
- my $debug = $config->{system}->{debug};
+sub getDateQueryConditions {
+ my $config = shift;
+ my $params = shift;
+ my $bind_values = shift;
- $params->{recordings} = '' unless defined $params->{recordings};
+ # conditions by date
+ my $date_conds = [];
- my $bind_values = [];
- my $where_cond = [];
- my $order_cond = '';
- my $limit_cond = '';
+ #date, today, tomorrow, yesterday
+ my $date = '';
+ $date = time::date_cond( $params->{date} ) if ( $params->{date} ne '' );
- if ( $params->{event_id} ne '' ) {
+ my $from_date = '';
+ $from_date = time::date_cond( $params->{from_date} )
+ if ( $params->{from_date} ne '' );
- # conditions by event id
- push @$where_cond, 'e.id=?';
- $bind_values = [ $params->{event_id} ];
+ my $till_date = '';
+ $till_date = time::date_cond( $params->{till_date} )
+ if ( $params->{till_date} ne '' );
- #filter by published, default=1 to see published only, set published='all' to see all
- my $published = $params->{published} || '1';
- if ( ( $published eq '0' ) || ( $published eq '1' ) ) {
- push @$where_cond, 'published=?';
- push @$bind_values, $published;
- }
+ my $from_time = '';
+ $from_time = time::time_cond( $params->{from_time} )
+ if ( $params->{from_time} ne '' );
- my $draft = $params->{draft} || '0';
- if ( ( $draft eq '0' ) || ( $draft eq '1' ) ) {
- push @$where_cond, 'draft=?';
- push @$bind_values, $draft;
- }
+ my $till_time = '';
+ $till_time = time::time_cond( $params->{till_time} )
+ if ( $params->{till_time} ne '' );
- } else {
+ my $date_range_include = $params->{date_range_include};
- # conditions by date
- my @date_conds = ();
+ #from_time is defined
+ if ( ( $params->{from_date} ne '' ) && ( $params->{from_time} ne '' ) ) {
+ my $datetime = time::datetime_cond( $from_date . 'T' . $from_time );
+ if ( $datetime ne '' ) {
+ if ( $date_range_include eq '1' ) {
+ push @$date_conds, ' end > ? ';
+ push @$bind_values, $datetime;
+ $from_date = '';
+ } else {
+ push @$date_conds, ' start >= ? ';
+ push @$bind_values, $datetime;
+ $from_date = '';
+ }
+ }
+ }
- #date, today, tomorrow, yesterday
- my $date = '';
- $date = time::date_cond( $params->{date} ) if ( $params->{date} ne '' );
+ #till_time is defined
+ if ( ( $params->{till_date} ne '' ) && ( $params->{till_time} ne '' ) ) {
+ my $datetime = time::datetime_cond( $till_date . 'T' . $till_time );
+ if ( $datetime ne '' ) {
+ push @$date_conds, ' start < ? ';
+ push @$bind_values, $datetime;
+ $till_date = '';
+ }
+ }
- my $from_date = '';
- $from_date = time::date_cond( $params->{from_date} )
- if ( $params->{from_date} ne '' );
+ #time is defined
+ if ( ( defined $params->{time} )
+ && ( $params->{time} ne '' )
+ && ( $params->{time} ne 'now' )
+ && ( $params->{time} ne 'future' ) )
+ {
+ my $time = time::time_cond( $params->{time} );
+ if ( $time ne '' ) {
+ push @$date_conds, ' time(start) = ? ';
+ push @$bind_values, $time;
+ }
+ return $date_conds;
+ }
- my $till_date = '';
- $till_date = time::date_cond( $params->{till_date} )
- if ( $params->{till_date} ne '' );
-
- my $from_time = '';
- $from_time = time::time_cond( $params->{from_time} )
- if ( $params->{from_time} ne '' );
-
- my $till_time = '';
- $till_time = time::time_cond( $params->{till_time} )
- if ( $params->{till_time} ne '' );
-
- my $date_range_include = $params->{date_range_include};
-
- #from_time is defined
- if ( ( $params->{from_date} ne '' ) && ( $params->{from_time} ne '' ) ) {
- my $datetime = time::datetime_cond( $from_date . 'T' . $from_time );
- if ( $datetime ne '' ) {
- if ( $date_range_include eq '1' ) {
- push @date_conds, ' end > ? ';
- push @$bind_values, $datetime;
- $from_date = '';
- } else {
- push @date_conds, ' start >= ? ';
- push @$bind_values, $datetime;
- $from_date = '';
- }
- }
- }
-
- #till_time is defined
- if ( ( $params->{till_date} ne '' ) && ( $params->{till_time} ne '' ) ) {
- my $datetime = time::datetime_cond( $till_date . 'T' . $till_time );
- if ( $datetime ne '' ) {
- push @date_conds, ' start < ? ';
- push @$bind_values, $datetime;
- $till_date = '';
- }
- }
-
- #time is defined
- if ( ( defined $params->{time} )
- && ( $params->{time} ne '' )
- && ( $params->{time} ne 'now' )
- && ( $params->{time} ne 'future' ) )
- {
- my $time = time::time_cond( $params->{time} );
- if ( $time ne '' ) {
- push @date_conds, ' time(start) = ? ';
- push @$bind_values, $time;
- }
- }
-
- #event is not over
- if ( ( defined $params->{time} ) && ( $params->{time} eq 'now' ) ) {
- push @date_conds, qq{
+ #event is not over
+ elsif ( ( defined $params->{time} ) && ( $params->{time} eq 'now' ) ) {
+ push @$date_conds, qq{
(
( unix_timestamp(end) > unix_timestamp(now() ) )
and
( unix_timestamp(start) <= unix_timestamp(now() ) )
)
};
-
- } elsif ( ( defined $params->{time} ) && ( $params->{time} eq 'future' ) ) {
- push @date_conds, qq{
+ return $date_conds;
+ } elsif ( ( defined $params->{time} ) && ( $params->{time} eq 'future' ) ) {
+ push @$date_conds, qq{
(
( unix_timestamp(end) > unix_timestamp(now() ) )
and
( unix_timestamp(end) - unix_timestamp(now() ) ) < 7*24*3600
)
};
+ return $date_conds;
+ } elsif ( $date ne '' ) {
+ if ( $date eq 'today' ) {
+ my $date = time::get_event_date($config);
+ if ( $date ne '' ) {
+ push @$date_conds, ' ( start_date = ? ) ';
+ push @$bind_values, $date;
+ }
- } elsif ( $date ne '' ) {
- if ( $date eq 'today' ) {
- my $date = time::get_event_date($config);
- if ( $date ne '' ) {
- push @date_conds, ' ( start_date = ? ) ';
- push @$bind_values, $date;
- }
+ } else {
- } else {
- if ( $date ne '' ) {
- push @date_conds, ' ( start_date = ? ) ';
- push @$bind_values, $date;
- }
- }
- } else {
- if ( $from_date ne '' ) {
- if ( $date_range_include eq '1' ) {
+ #push @$date_conds, ' ( start_date = ? ) ';
+ #push @$bind_values, $date;
+ my $start = time::datetime_cond( $date . 'T00:00:00' );
+ if ( $start ne '' ) {
+ $start = time::add_hours_to_datetime( $start, $config->{date}->{day_starting_hour} );
+ my $end = time::add_hours_to_datetime( $start, 24 );
- # end is after start
- push @date_conds, ' ( end_date >= ? )';
- push @$bind_values, $from_date;
- } else {
- push @date_conds, ' ( start_date >= ? ) ';
- push @$bind_values, $from_date;
- }
- }
+ if ( $date_range_include eq '1' ) {
+ push @$date_conds, ' end > ? ';
+ push @$bind_values, $start;
+ } else {
+ push @$date_conds, ' start >= ? ';
+ push @$bind_values, $start;
+ }
- if ( $till_date ne '' ) {
- if ( $date_range_include eq '1' ) {
+ if ( $end ne '' ) {
+ push @$date_conds, ' start < ? ';
+ push @$bind_values, $end;
+ }
+ }
+ }
+ return $date_conds;
+ } else {
+ if ( $from_date ne '' ) {
+ if ( $date_range_include eq '1' ) {
- # start is before end
- push @date_conds, ' ( start_date <= ? )';
- push @$bind_values, $till_date;
- } else {
- push @date_conds, ' ( end_date <= ? ) ';
- push @$bind_values, $till_date;
- }
- }
+ # end is after start
+ push @$date_conds, ' ( end_date >= ? )';
+ push @$bind_values, $from_date;
+ } else {
+ push @$date_conds, ' ( start_date >= ? ) ';
+ push @$bind_values, $from_date;
+ }
+ }
- if ( $params->{weekday} ne '' ) {
- my $weekday = $params->{weekday};
- $weekday += 1;
- $weekday -= 7 if ( $weekday > 7 );
- push @date_conds, ' (dayofweek(start_date)= ?) ';
- push @$bind_values, $weekday;
- }
+ if ( $till_date ne '' ) {
+ if ( $date_range_include eq '1' ) {
- if ( $params->{archive} eq 'past' ) {
- my $date = time::get_event_date($config);
- if ( $date ne '' ) {
- push @date_conds, ' ( start_date < ? ) ';
- push @$bind_values, $date;
- }
+ # start is before end
+ push @$date_conds, ' ( start_date <= ? )';
+ push @$bind_values, $till_date;
+ } else {
+ push @$date_conds, ' ( end_date <= ? ) ';
+ push @$bind_values, $till_date;
+ }
+ }
- } elsif ( $params->{archive} eq 'future' ) {
- my $date = time::get_event_date($config);
- if ( $date ne '' ) {
- push @date_conds, ' ( start_date >= ? ) ';
- push @$bind_values, $date;
- }
- }
+ if ( $params->{weekday} ne '' ) {
+ my $weekday = $params->{weekday};
+ $weekday += 1;
+ $weekday -= 7 if ( $weekday > 7 );
+ push @$date_conds, ' (dayofweek(start_date)= ?) ';
+ push @$bind_values, $weekday;
+ }
- }
+ if ( $params->{archive} eq 'past' ) {
+ my $date = time::get_event_date($config);
+ if ( $date ne '' ) {
+ push @$date_conds, ' ( start_date < ? ) ';
+ push @$bind_values, $date;
+ }
- if ( ( defined $params->{time_of_day} )
- && ( $params->{time_of_day} ne '' ) )
- {
- push @date_conds, ' ( time_of_day = ? ) ';
- push @$bind_values, $params->{time_of_day};
+ } elsif ( $params->{archive} eq 'future' ) {
+ my $date = time::get_event_date($config);
+ if ( $date ne '' ) {
+ push @$date_conds, ' ( start_date >= ? ) ';
+ push @$bind_values, $date;
+ }
+ }
- }
+ }
- my $date_cond = join " and ", @date_conds;
- push @$where_cond, $date_cond if ( $date_cond ne '' );
- }
+ return $date_conds;
- # location
- my $location_cond = '';
- if ( $params->{location} ne '' ) {
- my $location = ( split( /\,/, $params->{location} ) )[0];
- $location =~ s/[^a-zA-Z0-9]/%/g;
- $location =~ s/%{2,99}/%/g;
- if ( $location ne '' ) {
- $location_cond = ' location like ? ';
- push @$bind_values, $location;
- }
- }
+}
- # exclude location
- my $exclude_location_cond = '';
- if ( $params->{exclude_locations} eq '1' ) {
- if ( $params->{locations_to_exclude} ne '' ) {
- my @locations_to_exclude = split( /,/, $params->{locations_to_exclude} );
- $exclude_location_cond = 'location not in (' . join( ",", map { '?' } @locations_to_exclude ) . ')';
- for my $location (@locations_to_exclude) {
- $location =~ s/^\s+//g;
- $location =~ s/\s+$//g;
- push @$bind_values, $location;
- }
- }
- }
+# if recordings is set in params, recordings date and path will be included
+sub get_query {
+ my $dbh = shift;
+ my $config = shift;
+ my $request = shift;
- # exclude project
- my $exclude_project_cond = '';
- if ( $params->{exclude_projects} eq '1' ) {
- if ( $params->{projects_to_exclude} ne '' ) {
- my @projects_to_exclude = split( /,/, $params->{projects_to_exclude} );
- $exclude_project_cond = 'project not in (' . join( ",", map { '?' } @projects_to_exclude ) . ')';
- for my $project (@projects_to_exclude) {
- $project =~ s/^\s+//g;
- $project =~ s/\s+$//g;
- push @$bind_values, $project;
- }
- }
- }
+ my $params = $request->{params}->{checked};
+ my $debug = $config->{system}->{debug};
- #filter for category
- my $category_cond = '';
- if ( $params->{category} ne '' ) {
- my $category = ( split( /\,/, $params->{category} ) )[0];
- $category =~ s/[^a-zA-Z0-9]/%/g;
- $category =~ s/%{2,99}/%/g;
- if ( $category ne '' ) {
- $category_cond = qq{
+ $params->{recordings} = '' unless defined $params->{recordings};
+
+ my $bind_values = [];
+ my $where_cond = [];
+ my $order_cond = '';
+ my $limit_cond = '';
+
+ if ( $params->{event_id} ne '' ) {
+
+ # conditions by event id
+ push @$where_cond, 'e.id=?';
+ $bind_values = [ $params->{event_id} ];
+
+ #filter by published, default=1 to see published only, set published='all' to see all
+ my $published = $params->{published} || '1';
+ if ( ( $published eq '0' ) || ( $published eq '1' ) ) {
+ push @$where_cond, 'published=?';
+ push @$bind_values, $published;
+ }
+
+ my $draft = $params->{draft} || '0';
+ if ( ( $draft eq '0' ) || ( $draft eq '1' ) ) {
+ push @$where_cond, 'draft=?';
+ push @$bind_values, $draft;
+ }
+
+ } else {
+
+ my $date_conds = getDateQueryConditions( $config, $params, $bind_values );
+ my $date_cond = join " and ", @$date_conds;
+
+ push @$where_cond, $date_cond if ( $date_cond ne '' );
+ }
+
+ # location
+ my $location_cond = '';
+ if ( $params->{location} ne '' ) {
+ my $location = ( split( /\,/, $params->{location} ) )[0];
+ $location =~ s/[^a-zA-Z0-9]/%/g;
+ $location =~ s/%{2,99}/%/g;
+ if ( $location ne '' ) {
+ $location_cond = ' location like ? ';
+ push @$bind_values, $location;
+ }
+ }
+
+ # exclude location
+ my $exclude_location_cond = '';
+ if ( $params->{exclude_locations} eq '1' ) {
+ if ( $params->{locations_to_exclude} ne '' ) {
+ my @locations_to_exclude = split( /,/, $params->{locations_to_exclude} );
+ $exclude_location_cond = 'location not in (' . join( ",", map { '?' } @locations_to_exclude ) . ')';
+ for my $location (@locations_to_exclude) {
+ $location =~ s/^\s+//g;
+ $location =~ s/\s+$//g;
+ push @$bind_values, $location;
+ }
+ }
+ }
+
+ # exclude project
+ my $exclude_project_cond = '';
+ if ( $params->{exclude_projects} eq '1' ) {
+ if ( $params->{projects_to_exclude} ne '' ) {
+ my @projects_to_exclude = split( /,/, $params->{projects_to_exclude} );
+ $exclude_project_cond = 'project not in (' . join( ",", map { '?' } @projects_to_exclude ) . ')';
+ for my $project (@projects_to_exclude) {
+ $project =~ s/^\s+//g;
+ $project =~ s/\s+$//g;
+ push @$bind_values, $project;
+ }
+ }
+ }
+
+ #filter for category
+ my $category_cond = '';
+ if ( $params->{category} ne '' ) {
+ my $category = ( split( /\,/, $params->{category} ) )[0];
+ $category =~ s/[^a-zA-Z0-9]/%/g;
+ $category =~ s/%{2,99}/%/g;
+ if ( $category ne '' ) {
+ $category_cond = qq{
id in(
select event_id from calcms_categories
where name like ?
)
};
- }
- push @$bind_values, $category;
- }
+ }
+ push @$bind_values, $category;
+ }
- my $series_name_cond = '';
- if ( ( defined $params->{series_name} )
- && ( $params->{series_name} ne '' ) )
- {
- my $series_name = ( split( /\,/, $params->{series_name} ) )[0];
- $series_name =~ s/[^a-zA-Z0-9]/%/g;
- $series_name =~ s/%{2,99}/%/g;
- if ( $series_name ne '' ) {
- $series_name_cond = ' series_name like ? ';
- push @$bind_values, $series_name;
- }
- }
+ my $series_name_cond = '';
+ if ( ( defined $params->{series_name} )
+ && ( $params->{series_name} ne '' ) )
+ {
+ my $series_name = ( split( /\,/, $params->{series_name} ) )[0];
+ $series_name =~ s/[^a-zA-Z0-9]/%/g;
+ $series_name =~ s/%{2,99}/%/g;
+ if ( $series_name ne '' ) {
+ $series_name_cond = ' series_name like ? ';
+ push @$bind_values, $series_name;
+ }
+ }
- #filter for tags
- my $tag_cond = '';
- if ( ( defined $params->{tag} ) && ( $params->{tag} ne '' ) ) {
- my @tags = ( split( /\,/, $params->{tag} ) );
- if ( scalar @tags > 0 ) {
- my $tags = join ",", ( map { '?' } @tags );
- for my $tag (@tags) {
- push @$bind_values, $tag;
- }
- $tag_cond = qq{
+ #filter for tags
+ my $tag_cond = '';
+ if ( ( defined $params->{tag} ) && ( $params->{tag} ne '' ) ) {
+ my @tags = ( split( /\,/, $params->{tag} ) );
+ if ( scalar @tags > 0 ) {
+ my $tags = join ",", ( map { '?' } @tags );
+ for my $tag (@tags) {
+ push @$bind_values, $tag;
+ }
+ $tag_cond = qq{
id in(
select event_id from calcms_tags
where name in($tags)
)
};
- }
- }
- $tag_cond = '';
+ }
+ }
+ $tag_cond = '';
- my $title_cond = '';
- if ( ( defined $params->{title} ) && ( $params->{title} ne '' ) ) {
- my $title = ( split( /\,/, $params->{title} ) )[0];
- $title =~ s/[^a-zA-Z0-9]/%/g;
- $title =~ s/%{2,99}/%/g;
- $title =~ s/^\%//;
- $title =~ s/\%$//;
- $title = '%' . $title . '%';
- if ( $title ne '' ) {
- $title_cond = ' title like ? ';
- push @$bind_values, $title;
- }
- }
+ my $title_cond = '';
+ if ( ( defined $params->{title} ) && ( $params->{title} ne '' ) ) {
+ my $title = ( split( /\,/, $params->{title} ) )[0];
+ $title =~ s/[^a-zA-Z0-9]/%/g;
+ $title =~ s/%{2,99}/%/g;
+ $title =~ s/^\%//;
+ $title =~ s/\%$//;
+ $title = '%' . $title . '%';
+ if ( $title ne '' ) {
+ $title_cond = ' title like ? ';
+ push @$bind_values, $title;
+ }
+ }
- my $search_cond = '';
- if ( ( defined $params->{search} ) && ( $params->{search} ne '' ) ) {
- my $search = lc $params->{search};
+ my $search_cond = '';
+ if ( ( defined $params->{search} ) && ( $params->{search} ne '' ) ) {
+ my $search = lc $params->{search};
$search =~ s/(?=[\\%_])/\\/g;
- $search =~ s/^[\%\s]+//;
- $search =~ s/[\%\s]+$//;
- if ( $search ne '' ) {
- $search = '%' . $search . '%';
- my @attr = ( 'title', 'series_name', 'excerpt', 'category', 'content', 'topic' );
- $search_cond = "(" . join( " or ", map { 'lower(' . $_ . ') like ?' } @attr ) . ")";
- for my $attr (@attr) {
- push @$bind_values, $search;
- }
- }
- }
+ $search =~ s/^[\%\s]+//;
+ $search =~ s/[\%\s]+$//;
+ if ( $search ne '' ) {
+ $search = '%' . $search . '%';
+ my @attr = ( 'title', 'series_name', 'excerpt', 'category', 'content', 'topic' );
+ $search_cond = "(" . join( " or ", map { 'lower(' . $_ . ') like ?' } @attr ) . ")";
+ for my $attr (@attr) {
+ push @$bind_values, $search;
+ }
+ }
+ }
+
#print STDERR $search_cond."\n";
- my $project_cond = '';
+ my $project_cond = '';
- # if ($filter_by_project eq'1'){
- my $project = undef; #$params->{default_project};
- $project = $params->{project}
- if ( ( defined $params->{project} ) && ( $params->{project} ne '' ) );
- my $project_name = '';
- $project_name = $project->{name}
- if ( ( defined $project )
- && ( defined $project->{name} )
- && ( $project->{name} ne '' ) );
- if ( ( $project_name ne '' ) && ( $project_name ne 'all' ) ) {
- $project_cond = '(project=?)';
- push @$bind_values, $project_name;
- }
+ # if ($filter_by_project eq'1'){
+ my $project = undef; #$params->{default_project};
+ $project = $params->{project}
+ if ( ( defined $params->{project} ) && ( $params->{project} ne '' ) );
+ my $project_name = '';
+ $project_name = $project->{name}
+ if ( ( defined $project )
+ && ( defined $project->{name} )
+ && ( $project->{name} ne '' ) );
+ if ( ( $project_name ne '' ) && ( $project_name ne 'all' ) ) {
+ $project_cond = '(project=?)';
+ push @$bind_values, $project_name;
+ }
- # }
+ # }
- #filter by published, default =1, set to 'all' to see all
- my $published_cond = '';
- my $published = $params->{published} || '1';
- if ( ( $published eq '0' ) || ( $published eq '1' ) ) {
- $published_cond = 'published=?';
- push @$bind_values, $published;
- }
+ #filter by published, default =1, set to 'all' to see all
+ my $published_cond = '';
+ my $published = $params->{published} || '1';
+ if ( ( $published eq '0' ) || ( $published eq '1' ) ) {
+ $published_cond = 'published=?';
+ push @$bind_values, $published;
+ }
- #filter by draft, default =1, set to 'all' to see all
- my $draft_cond = '';
- my $draft = $params->{draft} || '0';
- if ( ( $draft eq '0' ) || ( $draft eq '1' ) ) {
- $draft_cond = 'draft=?';
- push @$bind_values, $draft;
- }
+ #filter by draft, default =1, set to 'all' to see all
+ my $draft_cond = '';
+ my $draft = $params->{draft} || '0';
+ if ( ( $draft eq '0' ) || ( $draft eq '1' ) ) {
+ $draft_cond = 'draft=?';
+ push @$bind_values, $draft;
+ }
- my $disable_event_sync_cond = '';
- my $disable_event_sync = $params->{disable_event_sync} || '';
- if ( ( $disable_event_sync eq '0' ) || ( $disable_event_sync eq '1' ) ) {
- $disable_event_sync_cond = 'disable_event_sync=?';
- push @$bind_values, $disable_event_sync;
- }
+ my $disable_event_sync_cond = '';
+ my $disable_event_sync = $params->{disable_event_sync} || '';
+ if ( ( $disable_event_sync eq '0' ) || ( $disable_event_sync eq '1' ) ) {
+ $disable_event_sync_cond = 'disable_event_sync=?';
+ push @$bind_values, $disable_event_sync;
+ }
- #print STDERR $disable_event_sync_cond." ".$bind_values->[-1]."\n";
+ #print STDERR $disable_event_sync_cond." ".$bind_values->[-1]."\n";
- #combine date, location, category, series_name, tag, search and project
+ #combine date, location, category, series_name, tag, search and project
- push @$where_cond, $location_cond if ( $location_cond =~ /\S/ );
- push @$where_cond, $exclude_location_cond
- if ( $exclude_location_cond =~ /\S/ );
- push @$where_cond, $exclude_project_cond
- if ( $exclude_project_cond =~ /\S/ );
- push @$where_cond, $category_cond if ( $category_cond =~ /\S/ );
- push @$where_cond, $series_name_cond if ( $series_name_cond =~ /\S/ );
- push @$where_cond, $tag_cond if ( $tag_cond =~ /\S/ );
- push @$where_cond, $title_cond if ( $title_cond =~ /\S/ );
- push @$where_cond, $search_cond if ( $search_cond =~ /\S/ );
- push @$where_cond, $project_cond if ( $project_cond =~ /\S/ );
- push @$where_cond, $published_cond if ( $published_cond =~ /\S/ );
- push @$where_cond, $draft_cond if ( $draft_cond =~ /\S/ );
- push @$where_cond, $disable_event_sync_cond
- if ( $disable_event_sync_cond ne '' );
+ push @$where_cond, $location_cond if ( $location_cond =~ /\S/ );
+ push @$where_cond, $exclude_location_cond
+ if ( $exclude_location_cond =~ /\S/ );
+ push @$where_cond, $exclude_project_cond
+ if ( $exclude_project_cond =~ /\S/ );
+ push @$where_cond, $category_cond if ( $category_cond =~ /\S/ );
+ push @$where_cond, $series_name_cond if ( $series_name_cond =~ /\S/ );
+ push @$where_cond, $tag_cond if ( $tag_cond =~ /\S/ );
+ push @$where_cond, $title_cond if ( $title_cond =~ /\S/ );
+ push @$where_cond, $search_cond if ( $search_cond =~ /\S/ );
+ push @$where_cond, $project_cond if ( $project_cond =~ /\S/ );
+ push @$where_cond, $published_cond if ( $published_cond =~ /\S/ );
+ push @$where_cond, $draft_cond if ( $draft_cond =~ /\S/ );
+ push @$where_cond, $disable_event_sync_cond
+ if ( $disable_event_sync_cond ne '' );
- #print STDERR Dumper($where_cond);
+ #print STDERR Dumper($where_cond);
- #order is forced
- if ( $params->{order} eq 'asc' ) {
- $order_cond = 'order by start';
- } elsif ( $params->{order} eq 'desc' ) {
- $order_cond = 'order by start desc';
- } else {
+ #order is forced
+ if ( $params->{order} eq 'asc' ) {
+ $order_cond = 'order by start';
+ } elsif ( $params->{order} eq 'desc' ) {
+ $order_cond = 'order by start desc';
+ } else {
- #derivate order from archive flag
- if ( $params->{archive} eq 'past' ) {
- $order_cond = 'order by start desc';
- } else {
- $order_cond = 'order by start';
- }
- }
+ #derivate order from archive flag
+ if ( $params->{archive} eq 'past' ) {
+ $order_cond = 'order by start desc';
+ } else {
+ $order_cond = 'order by start';
+ }
+ }
- if ( ( defined $params->{limit} ne '' ) && ( $params->{limit} ne '' ) ) {
- $limit_cond = 'limit ' . $params->{limit};
- }
+ if ( ( defined $params->{limit} ne '' ) && ( $params->{limit} ne '' ) ) {
+ $limit_cond = 'limit ' . $params->{limit};
+ }
- my $query = qq{
+ my $query = qq{
select
date(e.start) start_date
,date(e.end) end_date
@@ -1050,179 +1080,183 @@ sub get_query {
,e.disable_event_sync
,e.episode
};
- my $template = $params->{template} || '';
+ my $template = $params->{template} || '';
- $query .= ',e.excerpt' unless ( $template =~ /menu/ );
+ $query .= ',e.excerpt' unless ( $template =~ /menu/ );
- # $query.=',e.project' unless ($template=~/menu/ || $template=~/list/);
+ # $query.=',e.project' unless ($template=~/menu/ || $template=~/list/);
- my $get = $params->{get} || '';
- unless ( $get eq 'no_content' ) {
- if ( $template =~ /\.html/ ) {
- unless ( $template =~ /menu/ || $template =~ /list/ ) {
- $query .= ', e.content, e.topic, e.html_content, e.html_topic';
+ my $get = $params->{get} || '';
+ unless ( $get eq 'no_content' ) {
+ if ( $template =~ /\.html/ ) {
+ unless ( $template =~ /menu/ || $template =~ /list/ ) {
+ $query .= ', e.content, e.topic, e.html_content, e.html_topic';
- #$query.=',html_content content, html_topic topic' ;
- }
- } else {
- unless ( $template =~ /menu/ || $template =~ /list/ ) {
- $query .= ', e.content, e.topic, e.html_content, e.html_topic';
- }
- }
- }
+ #$query.=',html_content content, html_topic topic' ;
+ }
+ } else {
+ unless ( $template =~ /menu/ || $template =~ /list/ ) {
+ $query .= ', e.content, e.topic, e.html_content, e.html_topic';
+ }
+ }
+ }
- # add project id and series id
- if ( ( $params->{project_id} ne '' ) || ( $params->{studio_id} ne '' ) ) {
- if ( $params->{project_id} ne '' ) {
- push @$where_cond, 'se.project_id=?';
- push @$bind_values, $params->{project_id};
- $query .= ', se.project_id';
- }
- if ( $params->{studio_id} ne '' ) {
- push @$where_cond, 'se.studio_id=?';
- push @$bind_values, $params->{studio_id};
- $query .= ', se.studio_id';
- }
- #push @$where_cond, 'se.event_id=e.id';
- }
+ # add project id and series id
+ if ( ( $params->{project_id} ne '' ) || ( $params->{studio_id} ne '' ) ) {
+ if ( $params->{project_id} ne '' ) {
+ push @$where_cond, 'se.project_id=?';
+ push @$bind_values, $params->{project_id};
+ $query .= ', se.project_id';
+ }
+ if ( $params->{studio_id} ne '' ) {
+ push @$where_cond, 'se.studio_id=?';
+ push @$bind_values, $params->{studio_id};
+ $query .= ', se.studio_id';
+ }
- # add recordings field and conditions
- if ($params->{recordings} eq '1' ) {
- $query .= ', ar.path';
- $query .= ', ar.size';
- $query .= ', ar.created_by uploaded_by';
- $query .= ', ar.modified_at uploaded_at';
- #push @$where_cond, 'e.id=ar.event_id';
- }
-
- $query .= "\n from";
-
- # add tables
- if ( ( $params->{project_id} ne '' ) || ( $params->{studio_id} ne '' ) ) {
- # prepent series_events
- $query .= "\n calcms_series_events se inner join calcms_events e on se.event_id=e.id";
- }else{
- $query .= "\n calcms_events e";
- }
+ #push @$where_cond, 'se.event_id=e.id';
+ }
- # add recordings table
- if ( $params->{recordings} eq '1' ) {
- $query .= "\n left join calcms_audio_recordings ar on e.id=ar.event_id";
- }
+ # add recordings field and conditions
+ if ( $params->{recordings} eq '1' ) {
+ $query .= ', ar.path';
+ $query .= ', ar.size';
+ $query .= ', ar.created_by uploaded_by';
+ $query .= ', ar.modified_at uploaded_at';
- if ( scalar @$where_cond > 0 ) {
- $query .= "\nwhere " . join( ' and ', @$where_cond );
- }
+ #push @$where_cond, 'e.id=ar.event_id';
+ }
- $query .= "\n" . $order_cond if ( $order_cond ne '' );
- $query .= "\n" . $limit_cond if ( $limit_cond ne '' );
+ $query .= "\n from";
- #print STDERR Dumper($query).Dumper($bind_values)."\n";
+ # add tables
+ if ( ( $params->{project_id} ne '' ) || ( $params->{studio_id} ne '' ) ) {
- return ( \$query, $bind_values );
+ # prepent series_events
+ $query .= "\n calcms_series_events se inner join calcms_events e on se.event_id=e.id";
+ } else {
+ $query .= "\n calcms_events e";
+ }
+
+ # add recordings table
+ if ( $params->{recordings} eq '1' ) {
+ $query .= "\n left join calcms_audio_recordings ar on e.id=ar.event_id";
+ }
+
+ if ( scalar @$where_cond > 0 ) {
+ $query .= "\nwhere " . join( ' and ', @$where_cond );
+ }
+
+ $query .= "\n" . $order_cond if ( $order_cond ne '' );
+ $query .= "\n" . $limit_cond if ( $limit_cond ne '' );
+
+ #print STDERR Dumper($query).Dumper($bind_values)."\n";
+
+ return ( \$query, $bind_values );
}
sub render {
- # my $response = $_[0];
- my $config = $_[1];
- my $request = $_[2];
- my $results = $_[3];
- my $root_params = $_[4];
+ # my $response = $_[0];
+ my $config = $_[1];
+ my $request = $_[2];
+ my $results = $_[3];
+ my $root_params = $_[4];
- my $params = $request->{params}->{checked};
- if ( ref($root_params) eq 'HASH' ) {
- for my $param ( keys %$root_params ) {
- $params->{$param} = $root_params->{$param};
- }
- }
- my $debug = $config->{system}->{debug};
+ my $params = $request->{params}->{checked};
+ if ( ref($root_params) eq 'HASH' ) {
+ for my $param ( keys %$root_params ) {
+ $params->{$param} = $root_params->{$param};
+ }
+ }
+ my $debug = $config->{system}->{debug};
- my %template_parameters = %$params;
- my $template_parameters = \%template_parameters;
- $template_parameters->{events} = $results;
- $template_parameters->{debug} = $debug;
- $template_parameters->{server_cache} = $config->{cache}->{server_cache}
- if ( $config->{cache}->{server_cache} );
- $template_parameters->{use_client_cache} = $config->{cache}->{use_client_cache}
- if ( $config->{cache}->{use_client_cache} );
+ my %template_parameters = %$params;
+ my $template_parameters = \%template_parameters;
+ $template_parameters->{events} = $results;
+ $template_parameters->{debug} = $debug;
+ $template_parameters->{server_cache} = $config->{cache}->{server_cache}
+ if ( $config->{cache}->{server_cache} );
+ $template_parameters->{use_client_cache} = $config->{cache}->{use_client_cache}
+ if ( $config->{cache}->{use_client_cache} );
- if ( scalar @$results > 0 ) {
- my $result = $results->[0];
- $template_parameters->{event_id} = $result->{event_id};
- $template_parameters->{event_dtstart} = $result->{dtstart};
- }
+ if ( scalar @$results > 0 ) {
+ my $result = $results->[0];
+ $template_parameters->{event_id} = $result->{event_id};
+ $template_parameters->{event_dtstart} = $result->{dtstart};
+ }
- # $template_parameters->{print} =1 if ($params->{print} eq '1');
- $template_parameters->{base_url} = $config->{locations}->{base_url};
- $template_parameters->{base_domain} = $config->{locations}->{base_domain};
- $template_parameters->{cache_base_url} = $config->{cache}->{base_url};
- $template_parameters->{modified_at} = time::time_to_datetime( time() );
- if ( ( defined $params->{template} )
- && ( $params->{template} =~ /(\.xml)/ ) )
- {
- $template_parameters->{modified_at_datetime_utc} =
- time::datetime_to_utc_datetime( $template_parameters->{modified_at}, $config->{date}->{time_zone} );
- }
+ # $template_parameters->{print} =1 if ($params->{print} eq '1');
+ $template_parameters->{base_url} = $config->{locations}->{base_url};
+ $template_parameters->{base_domain} = $config->{locations}->{base_domain};
+ $template_parameters->{cache_base_url} = $config->{cache}->{base_url};
+ $template_parameters->{modified_at} = time::time_to_datetime( time() );
+ if ( ( defined $params->{template} )
+ && ( $params->{template} =~ /(\.xml)/ ) )
+ {
+ $template_parameters->{modified_at_datetime_utc} =
+ time::datetime_to_utc_datetime( $template_parameters->{modified_at}, $config->{date}->{time_zone} );
+ }
- #$template_parameters->{tags} = $tags;
+ #$template_parameters->{tags} = $tags;
- if ( @$results == 0 ) {
- if ( ( $params->{search} ne '' )
- || ( $params->{category} ne '' )
- || ( $params->{series_name} ne '' ) )
- {
- $template_parameters->{no_search_result} = '1';
- } else {
- $template_parameters->{no_result} = '1';
- }
- } else {
- if ( ( !defined $params->{event_id} ) || ( $params->{event_id} eq '' ) ) {
- $template_parameters->{event_count} = @$results . '';
- $template_parameters->{first_of_list} = $results->[0]->{event_id};
- }
- my $start = $results->[0]->{start_datetime} || '';
- if ( $start =~ /(\d{4}\-\d{2})/ ) {
- $template_parameters->{month} = $1;
- }
- }
+ if ( @$results == 0 ) {
+ if ( ( $params->{search} ne '' )
+ || ( $params->{category} ne '' )
+ || ( $params->{series_name} ne '' ) )
+ {
+ $template_parameters->{no_search_result} = '1';
+ } else {
+ $template_parameters->{no_result} = '1';
+ }
+ } else {
+ if ( ( !defined $params->{event_id} ) || ( $params->{event_id} eq '' ) ) {
+ $template_parameters->{event_count} = @$results . '';
+ $template_parameters->{first_of_list} = $results->[0]->{event_id};
+ }
+ my $start = $results->[0]->{start_datetime} || '';
+ if ( $start =~ /(\d{4}\-\d{2})/ ) {
+ $template_parameters->{month} = $1;
+ }
+ }
- my $time_diff = time::utc_offset( $config->{date}->{time_zone} );
- $time_diff =~ s/(\d\d)(\d\d)/$1\:$2/g;
- $template_parameters->{time_zone} = $config->{date}->{time_zone};
- $template_parameters->{utc_offset} = $time_diff;
+ my $time_diff = time::utc_offset( $config->{date}->{time_zone} );
+ $time_diff =~ s/(\d\d)(\d\d)/$1\:$2/g;
+ $template_parameters->{time_zone} = $config->{date}->{time_zone};
+ $template_parameters->{utc_offset} = $time_diff;
- if ( $params->{template} =~ /\.atom\.xml/ ) {
- $template_parameters->{modified_at} =~ s/ /T/gi;
- $template_parameters->{modified_at} .= $time_diff;
- } elsif ( $params->{template} =~ /\.rss\.xml/ ) {
- $template_parameters->{modified_at} =
- time::datetime_to_rfc822( $template_parameters->{modified_at} );
- } elsif ( $params->{template} =~ /\.txt/ ) {
- $template_parameters->{modified_at_utc} =
- time::datetime_to_utc( $template_parameters->{modified_at}, $config->{date}->{time_zone} );
- }
+ if ( $params->{template} =~ /\.atom\.xml/ ) {
+ $template_parameters->{modified_at} =~ s/ /T/gi;
+ $template_parameters->{modified_at} .= $time_diff;
+ } elsif ( $params->{template} =~ /\.rss\.xml/ ) {
+ $template_parameters->{modified_at} =
+ time::datetime_to_rfc822( $template_parameters->{modified_at} );
+ } elsif ( $params->{template} =~ /\.txt/ ) {
+ $template_parameters->{modified_at_utc} =
+ time::datetime_to_utc( $template_parameters->{modified_at}, $config->{date}->{time_zone} );
+ }
- my $project = $params->{default_project};
- foreach my $key ( keys %$project ) {
- $template_parameters->{ 'project_' . $key } = $project->{$key};
- }
- $template_parameters->{ 'project_' . $project->{name} } = 1
- if ( $project->{name} ne '' );
+ my $project = $params->{default_project};
+ foreach my $key ( keys %$project ) {
+ $template_parameters->{ 'project_' . $key } = $project->{$key};
+ }
+ $template_parameters->{ 'project_' . $project->{name} } = 1
+ if ( $project->{name} ne '' );
- $template_parameters->{controllers} = $config->{controllers};
- $template_parameters->{hide_event_images}=1 if (defined $config->{permissions}->{hide_event_images}) && ($config->{permissions}->{hide_event_images} == 1);
+ $template_parameters->{controllers} = $config->{controllers};
+ $template_parameters->{hide_event_images} = 1
+ if ( defined $config->{permissions}->{hide_event_images} ) && ( $config->{permissions}->{hide_event_images} == 1 );
- # use Data::Dumper;print STDERR Dumper($template_parameters)."\n";
+ # use Data::Dumper;print STDERR Dumper($template_parameters)."\n";
template::process( $_[0], $params->{template}, $template_parameters );
- return $_[0];
+ return $_[0];
}
sub get_running_event_id {
- my $dbh = shift;
+ my $dbh = shift;
- my $query = qq{
+ my $query = qq{
select id event_id, start, title
from calcms_events
where
@@ -1238,108 +1272,106 @@ sub get_running_event_id {
limit 1
};
- my $running_events = db::get( $dbh, $query );
- my @running_events = @$running_events;
+ my $running_events = db::get( $dbh, $query );
+ my @running_events = @$running_events;
- return $running_events->[0]->{event_id} if ( scalar @running_events > 0 );
- return 0;
+ return $running_events->[0]->{event_id} if ( scalar @running_events > 0 );
+ return 0;
}
# add filters to query
sub setDefaultEventConditions {
- my $config = shift;
- my $conditions = $_[0];
- my $bind_values = $_[1];
+ my $config = shift;
+ my $conditions = $_[0];
+ my $bind_values = $_[1];
my $options = $_[2];
- $options={} unless defined $options;
+ $options = {} unless defined $options;
- # exclude projects
- if (
- ( defined $options->{exclude_projects} )
+ # exclude projects
+ if ( ( defined $options->{exclude_projects} )
&& ( $options->{exclude_projects} == 1 )
&& ( defined $config->{filter} )
- && ( defined $config->{filter}->{projects_to_exclude} ) )
- {
- my @projects_to_exclude =
- split( /,/, $config->{filter}->{projects_to_exclude} );
- push @$conditions, 'project not in (' . join( ",", map { '?' } @projects_to_exclude ) . ')';
- for my $project (@projects_to_exclude) {
- push @$bind_values, $project;
- }
- }
+ && ( defined $config->{filter}->{projects_to_exclude} ) )
+ {
+ my @projects_to_exclude =
+ split( /,/, $config->{filter}->{projects_to_exclude} );
+ push @$conditions, 'project not in (' . join( ",", map { '?' } @projects_to_exclude ) . ')';
+ for my $project (@projects_to_exclude) {
+ push @$bind_values, $project;
+ }
+ }
- # exclude locations
- if (
- ( defined $options->{exclude_locations} )
+ # exclude locations
+ if ( ( defined $options->{exclude_locations} )
&& ( $options->{exclude_locations} == 1 )
- && ( defined $config->{filter} )
- && ( defined $config->{filter}->{locations_to_exclude} ) )
- {
- my @locations_to_exclude =
- split( /,/, $config->{filter}->{locations_to_exclude} );
- push @$conditions, 'location not in (' . join( ",", map { '?' } @locations_to_exclude ) . ')';
- for my $location (@locations_to_exclude) {
- push @$bind_values, $location;
- }
- }
+ && ( defined $config->{filter} )
+ && ( defined $config->{filter}->{locations_to_exclude} ) )
+ {
+ my @locations_to_exclude =
+ split( /,/, $config->{filter}->{locations_to_exclude} );
+ push @$conditions, 'location not in (' . join( ",", map { '?' } @locations_to_exclude ) . ')';
+ for my $location (@locations_to_exclude) {
+ push @$bind_values, $location;
+ }
+ }
}
# for local use only or add support for exclude_projects and exclude_locations
sub getEventById {
- my $dbh = shift;
- my $config = shift;
- my $event_id = shift;
+ my $dbh = shift;
+ my $config = shift;
+ my $event_id = shift;
my $options = shift;
- $dbh = db::connect($config) unless defined $dbh;
+ $dbh = db::connect($config) unless defined $dbh;
- my $conditions = [];
- my $bind_values = [];
+ my $conditions = [];
+ my $bind_values = [];
- push @$conditions, "id=?";
- push @$bind_values, $event_id;
+ push @$conditions, "id=?";
+ push @$bind_values, $event_id;
- setDefaultEventConditions( $config, $conditions, $bind_values, $options );
- $conditions = join( ' and ', @$conditions );
+ setDefaultEventConditions( $config, $conditions, $bind_values, $options );
+ $conditions = join( ' and ', @$conditions );
- my $query = qq{
+ my $query = qq{
select *
from calcms_events
where $conditions
};
- my $events = db::get( $dbh, $query, $bind_values );
- return $events;
+ my $events = db::get( $dbh, $query, $bind_values );
+ return $events;
}
sub get_next_event_of_series {
- my $dbh = shift;
- my $config = shift;
+ my $dbh = shift;
+ my $config = shift;
my $options = shift;
my $eventId = $options->{event_id};
return undef unless defined $eventId;
- $dbh = db::connect($config) unless defined $dbh;
+ $dbh = db::connect($config) unless defined $dbh;
- my $events = getEventById( $dbh, $config, $eventId, $options );
- return undef unless scalar(@$events) == 1;
- my $event = $events->[0];
+ my $events = getEventById( $dbh, $config, $eventId, $options );
+ return undef unless scalar(@$events) == 1;
+ my $event = $events->[0];
- my $conditions = [];
- my $bind_values = [];
+ my $conditions = [];
+ my $bind_values = [];
- push @$conditions, "start>?";
- push @$bind_values, $event->{start};
+ push @$conditions, "start>?";
+ push @$bind_values, $event->{start};
- push @$conditions, "series_name=?";
- push @$bind_values, $event->{series_name};
+ push @$conditions, "series_name=?";
+ push @$bind_values, $event->{series_name};
- setDefaultEventConditions( $config, $conditions, $bind_values, $options );
- $conditions = join( ' and ', @$conditions );
+ setDefaultEventConditions( $config, $conditions, $bind_values, $options );
+ $conditions = join( ' and ', @$conditions );
- my $query = qq{
+ my $query = qq{
select id
from calcms_events
where $conditions
@@ -1347,495 +1379,497 @@ sub get_next_event_of_series {
limit 1
};
- $events = db::get( $dbh, $query, $bind_values );
- return undef unless @$events == 1;
+ $events = db::get( $dbh, $query, $bind_values );
+ return undef unless @$events == 1;
- return $events->[0]->{id};
+ return $events->[0]->{id};
}
sub get_previous_event_of_series {
- my $dbh = shift;
- my $config = shift;
- my $options = shift;
+ my $dbh = shift;
+ my $config = shift;
+ my $options = shift;
my $eventId = $options->{event_id};
return undef unless defined $eventId;
- $dbh = db::connect($config) unless defined $dbh;
- my $events = getEventById( $dbh, $config, $eventId, $options );
- return undef unless scalar(@$events) == 1;
- my $event = $events->[0];
+ $dbh = db::connect($config) unless defined $dbh;
+ my $events = getEventById( $dbh, $config, $eventId, $options );
+ return undef unless scalar(@$events) == 1;
+ my $event = $events->[0];
- my $conditions = [];
- my $bind_values = [];
+ my $conditions = [];
+ my $bind_values = [];
- push @$conditions, "start";
- push @$bind_values, $event->{start};
+ push @$conditions, "start";
+ push @$bind_values, $event->{start};
- push @$conditions, "series_name=?";
- push @$bind_values, $event->{series_name};
+ push @$conditions, "series_name=?";
+ push @$bind_values, $event->{series_name};
- setDefaultEventConditions( $config, $conditions, $bind_values, $options );
- $conditions = join( ' and ', @$conditions );
+ setDefaultEventConditions( $config, $conditions, $bind_values, $options );
+ $conditions = join( ' and ', @$conditions );
- my $query = qq{
+ my $query = qq{
select id from calcms_events
where $conditions
order by start desc
limit 1
};
- $events = db::get( $dbh, $query, $bind_values );
+ $events = db::get( $dbh, $query, $bind_values );
- return undef unless scalar(@$events) == 1;
- return $events->[0]->{id};
+ return undef unless scalar(@$events) == 1;
+ return $events->[0]->{id};
}
+# used by calendar
sub get_by_date_range {
- my $dbh = shift;
- my $config = shift;
- my $start_date = shift;
- my $end_date = shift;
+ my $dbh = shift;
+ my $config = shift;
+ my $start_date = shift;
+ my $end_date = shift;
my $options = shift;
- my $conditions = [];
- push @$conditions, 'start_date between ? and ?';
- my $bind_values = [ $start_date, $end_date ];
+ my $conditions = [];
+ push @$conditions, 'start_date between ? and ?';
+ my $bind_values = [ $start_date, $end_date ];
- setDefaultEventConditions( $config, $conditions, $bind_values, $options );
+ setDefaultEventConditions( $config, $conditions, $bind_values, $options );
- $conditions = join( ' and ', @$conditions );
+ $conditions = join( ' and ', @$conditions );
- my $query = qq{
+ my $query = qq{
select start_date
from calcms_events
where $conditions
group by start_date
};
- my $events = db::get( $dbh, $query, $bind_values );
+ my $events = db::get( $dbh, $query, $bind_values );
- return $events;
+ return $events;
}
sub get_by_image {
- my $dbh = shift;
- my $config = shift;
- my $filename = shift;
+ my $dbh = shift;
+ my $config = shift;
+ my $filename = shift;
- #$filename=$dbh->quote('%'.$filename.'%');
+ #$filename=$dbh->quote('%'.$filename.'%');
- #$filename='%'.$filename.'%';
- my $query = qq{
+ #$filename='%'.$filename.'%';
+ my $query = qq{
select * from calcms_events
where content like ?
order by start desc
limit 1
};
- my $bind_values = [ '%' . $filename . '%' ];
+ my $bind_values = [ '%' . $filename . '%' ];
- my $events = db::get( $dbh, $query, $bind_values );
+ my $events = db::get( $dbh, $query, $bind_values );
- # print STDERR Dumper($events);
- return undef if ( @$events == 0 );
- return $events->[0];
+ # print STDERR Dumper($events);
+ return undef if ( @$events == 0 );
+ return $events->[0];
}
sub delete {
- return;
- my $request = shift;
- my $config = shift;
- my $event_id = shift;
+ return;
+ my $request = shift;
+ my $config = shift;
+ my $event_id = shift;
- my $params = $request->{params}->{checked};
- my $debug = $config->{system}->{debug};
+ my $params = $request->{params}->{checked};
+ my $debug = $config->{system}->{debug};
- my $dbh = db::connect($config);
+ my $dbh = db::connect($config);
- my $query = 'delete from calcms_events where id=?';
- db::put( $dbh, $query, [$event_id] );
+ my $query = 'delete from calcms_events where id=?';
+ db::put( $dbh, $query, [$event_id] );
- $query = 'delete from calcms_categories where id=?';
- db::put( $dbh, $query, [$event_id] );
+ $query = 'delete from calcms_categories where id=?';
+ db::put( $dbh, $query, [$event_id] );
- $query = 'delete from calcms_tags where id=?';
- db::put( $dbh, $query, [$event_id] );
+ $query = 'delete from calcms_tags where id=?';
+ db::put( $dbh, $query, [$event_id] );
- $query = 'delete from calcms_series_events where event_id=?';
- db::put( $dbh, $query, [$event_id] );
+ $query = 'delete from calcms_series_events where event_id=?';
+ db::put( $dbh, $query, [$event_id] );
}
#TODO: add location to cache map
sub configure_cache {
- my $config = shift;
- my $debug = $config->{system}->{debug};
+ my $config = shift;
+ my $debug = $config->{system}->{debug};
- my $date_pattern = $cache::date_pattern;
- my $controllers = $config->{controllers};
+ my $date_pattern = $cache::date_pattern;
+ my $controllers = $config->{controllers};
- cache::init();
- cache::add_map( '', 'index.html' );
+ cache::init();
+ cache::add_map( '', 'index.html' );
- my $name = '';
- my $extension = '';
- my $templates = $config->{templates}->{events};
+ my $name = '';
+ my $extension = '';
+ my $templates = $config->{templates}->{events};
- for my $template (@$templates) {
- if ( $template =~ /^(.+)\.([^\.]+)$/ ) {
- $name = $1;
- $extension = $2;
- }
- cache::add_map( 'template=' . $template, $controllers->{events} . '/' . $name . '.' . $extension );
- cache::add_map( 'template=' . $template . '&date=today', $controllers->{events} . '/' . $template . '_today.' . $extension );
- cache::add_map( 'template=' . $template . '&date=' . $date_pattern,
- $controllers->{events} . '/' . $name . '_date_$1-$2-$3.' . $extension );
- cache::add_map( 'template=' . $template . '&time=now', $controllers->{events} . '/' . $template . '_now.html' );
- cache::add_map( 'template=' . $template . '&time=now&limit=(\d+)',
- $controllers->{events} . '/' . $name . '_now_limit_$1.' . $extension );
- cache::add_map(
- 'template=' . $template . '&from_date=' . $date_pattern . '&till_date=' . $date_pattern,
- $controllers->{events} . '/' . $name . '_from_$1-$2-$3_till_$4_$5_$6.' . $extension
- );
- cache::add_map(
- 'template=' . $template . '&from_date=' . $date_pattern . '&till_date=' . $date_pattern . '&weekday=(\d)',
- $controllers->{events} . '/' . $template . '_from_$1-$2-$3_till_$4_$5_$6_weekday_$7.' . $extension
- );
- cache::add_map(
- 'template=' . $template . '&from_date=' . $date_pattern . '&till_date=' . $date_pattern . '&limit=(\d)',
- $controllers->{events} . '/' . $template . '_from_$1-$2-$3_till_$4_$5_$6_limit_$7.' . $extension
- );
- cache::add_map( 'template=' . $template . '&weekday=(\d)', $controllers->{events} . '/' . $name . '_weekday_$1.' . $extension );
- cache::add_map( 'template=' . $template . '&event_id=(\d+)', $controllers->{event} . '/' . $name . '_page_$1.' . $extension );
- }
+ for my $template (@$templates) {
+ if ( $template =~ /^(.+)\.([^\.]+)$/ ) {
+ $name = $1;
+ $extension = $2;
+ }
+ cache::add_map( 'template=' . $template, $controllers->{events} . '/' . $name . '.' . $extension );
+ cache::add_map( 'template=' . $template . '&date=today', $controllers->{events} . '/' . $template . '_today.' . $extension );
+ cache::add_map( 'template=' . $template . '&date=' . $date_pattern,
+ $controllers->{events} . '/' . $name . '_date_$1-$2-$3.' . $extension );
+ cache::add_map( 'template=' . $template . '&time=now', $controllers->{events} . '/' . $template . '_now.html' );
+ cache::add_map( 'template=' . $template . '&time=now&limit=(\d+)',
+ $controllers->{events} . '/' . $name . '_now_limit_$1.' . $extension );
+ cache::add_map(
+ 'template=' . $template . '&from_date=' . $date_pattern . '&till_date=' . $date_pattern,
+ $controllers->{events} . '/' . $name . '_from_$1-$2-$3_till_$4_$5_$6.' . $extension
+ );
+ cache::add_map(
+ 'template=' . $template . '&from_date=' . $date_pattern . '&till_date=' . $date_pattern . '&weekday=(\d)',
+ $controllers->{events} . '/' . $template . '_from_$1-$2-$3_till_$4_$5_$6_weekday_$7.' . $extension
+ );
+ cache::add_map(
+ 'template=' . $template . '&from_date=' . $date_pattern . '&till_date=' . $date_pattern . '&limit=(\d)',
+ $controllers->{events} . '/' . $template . '_from_$1-$2-$3_till_$4_$5_$6_limit_$7.' . $extension
+ );
+ cache::add_map( 'template=' . $template . '&weekday=(\d)', $controllers->{events} . '/' . $name . '_weekday_$1.' . $extension );
+ cache::add_map( 'template=' . $template . '&event_id=(\d+)', $controllers->{event} . '/' . $name . '_page_$1.' . $extension );
+ }
}
sub get_duration {
- my $config = shift;
- my $event = shift;
- my $timezone = $config->{date}->{time_zone};
- my $start = time::get_datetime( $event->{start}, $timezone );
- my $end = time::get_datetime( $event->{end}, $timezone );
- #my $seconds = $end->subtract($start)->in_units("minutes");
- #return $seconds;
- return undef unless defined $start;
- return undef unless defined $end;
- my $duration = $end->epoch() - $start->epoch();
- #print STDERR "duration=$duration, end=".$end->datetime()." start=".$start->datetime()."\n";
- return $duration / 60;
+ my $config = shift;
+ my $event = shift;
+ my $timezone = $config->{date}->{time_zone};
+ my $start = time::get_datetime( $event->{start}, $timezone );
+ my $end = time::get_datetime( $event->{end}, $timezone );
+
+ #my $seconds = $end->subtract($start)->in_units("minutes");
+ #return $seconds;
+ return undef unless defined $start;
+ return undef unless defined $end;
+ my $duration = $end->epoch() - $start->epoch();
+
+ #print STDERR "duration=$duration, end=".$end->datetime()." start=".$start->datetime()."\n";
+ return $duration / 60;
}
sub check_params {
- my $config = shift;
- my $params = shift;
+ my $config = shift;
+ my $params = shift;
- #define running at
- my $running_at = $params->{running_at} || '';
- if ( ( defined $running_at ) && ( $running_at ne '' ) ) {
- my $run_date = time::check_date($running_at);
- my $run_time = time::check_time($running_at);
- if ( ( $run_date ne '' ) && ( $run_time ne '' ) ) {
- $params->{till_date} = $run_date;
- $params->{till_time} = $run_time;
- $params->{order} = 'asc';
- $params->{limit} = 1;
- $params->{archive} = 'all';
- }
- }
+ #define running at
+ my $running_at = $params->{running_at} || '';
+ if ( ( defined $running_at ) && ( $running_at ne '' ) ) {
+ my $run_date = time::check_date($running_at);
+ my $run_time = time::check_time($running_at);
+ if ( ( $run_date ne '' ) && ( $run_time ne '' ) ) {
+ $params->{till_date} = $run_date;
+ $params->{till_time} = $run_time;
+ $params->{order} = 'asc';
+ $params->{limit} = 1;
+ $params->{archive} = 'all';
+ }
+ }
- #set time
- my $time = time::check_time( $params->{time} );
- my $from_time = time::check_time( $params->{from_time} );
- my $till_time = time::check_time( $params->{till_time} );
+ #set time
+ my $time = time::check_time( $params->{time} );
+ my $from_time = time::check_time( $params->{from_time} );
+ my $till_time = time::check_time( $params->{till_time} );
- #set date
- my $date = '';
- my $from_date = time::check_date( $params->{from_date} );
- my $till_date = time::check_date( $params->{till_date} );
- if ( ( $from_date eq '' ) && ( $till_date eq '' ) ) {
- $date = time::check_date( $params->{date} );
- }
+ #set date
+ my $date = '';
+ my $from_date = time::check_date( $params->{from_date} );
+ my $till_date = time::check_date( $params->{till_date} );
+ if ( ( $from_date eq '' ) && ( $till_date eq '' ) ) {
+ $date = time::check_date( $params->{date} );
+ }
- #set date interval (including)
- my $date_range_include = 0;
- $date_range_include = 1
- if ( defined $params->{date_range_include} )
- && ( $params->{date_range_include} eq '1' );
+ #set date interval (including)
+ my $date_range_include = 0;
+ $date_range_include = 1
+ if ( defined $params->{date_range_include} )
+ && ( $params->{date_range_include} eq '1' );
- my $order = '';
- if ( defined $params->{order} ) {
- $order = 'desc' if ( $params->{order} eq 'desc' );
- $order = 'asc' if ( $params->{order} eq 'asc' );
- }
+ my $order = '';
+ if ( defined $params->{order} ) {
+ $order = 'desc' if ( $params->{order} eq 'desc' );
+ $order = 'asc' if ( $params->{order} eq 'asc' );
+ }
- my $weekday = $params->{weekday} || '';
+ my $weekday = $params->{weekday} || '';
- if ( ( defined $weekday ) && ( $weekday ne '' ) ) {
- if ( $weekday =~ /\d/ ) {
- $weekday = int($weekday);
- log::error( $config, 'invalid weekday' )
- if ( $weekday < 1 || $weekday > 7 );
- } else {
- log::error( $config, 'invalid weekday' );
- }
- }
+ if ( ( defined $weekday ) && ( $weekday ne '' ) ) {
+ if ( $weekday =~ /\d/ ) {
+ $weekday = int($weekday);
+ log::error( $config, 'invalid weekday' )
+ if ( $weekday < 1 || $weekday > 7 );
+ } else {
+ log::error( $config, 'invalid weekday' );
+ }
+ }
- my $time_of_day = $params->{time_of_day} || '';
- my $found = 0;
- if ( defined $time_of_day ) {
- for my $key ( 'night', 'morning', 'noon', 'afternoon', 'evening' ) {
- $found = 1 if ( $key eq $time_of_day );
- }
- log::error( $config, 'invalid time_of_day' )
- if ( ( $time_of_day ne '' ) && ( $found == 0 ) );
- }
+ my $time_of_day = $params->{time_of_day} || '';
+ my $found = 0;
+ if ( defined $time_of_day ) {
+ for my $key ( 'night', 'morning', 'noon', 'afternoon', 'evening' ) {
+ $found = 1 if ( $key eq $time_of_day );
+ }
+ log::error( $config, 'invalid time_of_day' )
+ if ( ( $time_of_day ne '' ) && ( $found == 0 ) );
+ }
- my $tag = $params->{tag} || '';
- if ( ( defined $tag ) && ( $tag ne '' ) ) {
- log::error( $config, "invalid tag" ) if ( $tag =~ /\s/ );
- log::error( $config, "invalid tag" ) if ( $tag =~ /\;/ );
- $tag =~ s/\'//gi;
- }
+ my $tag = $params->{tag} || '';
+ if ( ( defined $tag ) && ( $tag ne '' ) ) {
+ log::error( $config, "invalid tag" ) if ( $tag =~ /\s/ );
+ log::error( $config, "invalid tag" ) if ( $tag =~ /\;/ );
+ $tag =~ s/\'//gi;
+ }
- my $category = $params->{category} || '';
- if ( ( defined $category ) && ( $category ne '' ) ) {
- log::error( $config, "invalid category" ) if ( $category =~ /\;/ );
- $category =~ s/^\s+//gi;
- $category =~ s/\s+$//gi;
- $category =~ s/\'//gi;
- }
+ my $category = $params->{category} || '';
+ if ( ( defined $category ) && ( $category ne '' ) ) {
+ log::error( $config, "invalid category" ) if ( $category =~ /\;/ );
+ $category =~ s/^\s+//gi;
+ $category =~ s/\s+$//gi;
+ $category =~ s/\'//gi;
+ }
- my $series_name = $params->{series_name} || '';
- if ( ( defined $series_name ) && ( $series_name ne '' ) ) {
- log::error( $config, "invalid series_name" )
- if ( $series_name =~ /\;/ );
- $series_name =~ s/^\s+//gi;
- $series_name =~ s/\s+$//gi;
- $series_name =~ s/\'//gi;
- }
+ my $series_name = $params->{series_name} || '';
+ if ( ( defined $series_name ) && ( $series_name ne '' ) ) {
+ log::error( $config, "invalid series_name" )
+ if ( $series_name =~ /\;/ );
+ $series_name =~ s/^\s+//gi;
+ $series_name =~ s/\s+$//gi;
+ $series_name =~ s/\'//gi;
+ }
- my $title = $params->{title} || '';
- if ( ( defined $title ) && ( $title ne '' ) ) {
- log::error( $config, "invalid title" ) if ( $title =~ /\;/ );
- $title =~ s/^\s+//gi;
- $title =~ s/\s+$//gi;
- $title =~ s/\'//gi;
- }
+ my $title = $params->{title} || '';
+ if ( ( defined $title ) && ( $title ne '' ) ) {
+ log::error( $config, "invalid title" ) if ( $title =~ /\;/ );
+ $title =~ s/^\s+//gi;
+ $title =~ s/\s+$//gi;
+ $title =~ s/\'//gi;
+ }
- my $location = $params->{location} || '';
- if ( ( defined $location ) && ( $location ne '' ) ) {
- log::error( $config, "invalid location" ) if ( $location =~ /\;/ );
- $location =~ s/^\s+//gi;
- $location =~ s/\s+$//gi;
- $location =~ s/\'//gi;
- }
+ my $location = $params->{location} || '';
+ if ( ( defined $location ) && ( $location ne '' ) ) {
+ log::error( $config, "invalid location" ) if ( $location =~ /\;/ );
+ $location =~ s/^\s+//gi;
+ $location =~ s/\s+$//gi;
+ $location =~ s/\'//gi;
+ }
- #if no location is set, use exclude location filter from default config
- my $locations_to_exclude = '';
- if ( ( $location eq '' )
- && ( defined $config->{filter} )
- && ( defined $config->{filter}->{locations_to_exclude} ) )
- {
- $locations_to_exclude = $config->{filter}->{locations_to_exclude} || '';
- $locations_to_exclude =~ s/\s+/ /g;
- }
+ #if no location is set, use exclude location filter from default config
+ my $locations_to_exclude = '';
+ if ( ( $location eq '' )
+ && ( defined $config->{filter} )
+ && ( defined $config->{filter}->{locations_to_exclude} ) )
+ {
+ $locations_to_exclude = $config->{filter}->{locations_to_exclude} || '';
+ $locations_to_exclude =~ s/\s+/ /g;
+ }
- my $projects_to_exclude = '';
- if ( ( defined $config->{filter} )
- && ( defined $config->{filter}->{projects_to_exclude} ) )
- {
- $projects_to_exclude = $config->{filter}->{projects_to_exclude} || '';
- $projects_to_exclude =~ s/\s+/ /g;
- }
+ my $projects_to_exclude = '';
+ if ( ( defined $config->{filter} )
+ && ( defined $config->{filter}->{projects_to_exclude} ) )
+ {
+ $projects_to_exclude = $config->{filter}->{projects_to_exclude} || '';
+ $projects_to_exclude =~ s/\s+/ /g;
+ }
+ #enable exclude locations filter
+ my $exclude_locations = 0;
+ $exclude_locations = 1 if ( defined $params->{exclude_locations} ) && ( $params->{exclude_locations} eq '1' );
- #enable exclude locations filter
- my $exclude_locations = 0;
- $exclude_locations = 1 if ( defined $params->{exclude_locations} ) && ( $params->{exclude_locations} eq '1' ) ;
+ my $exclude_projects = 0;
+ $exclude_projects = 1 if ( defined $params->{exclude_projects} ) && ( $params->{exclude_projects} eq '1' );
- my $exclude_projects = 0;
- $exclude_projects = 1 if ( defined $params->{exclude_projects} ) && ( $params->{exclude_projects} eq '1' ) ;
+ my $exclude_event_images = 0;
+ $exclude_event_images = 1 if ( defined $params->{exclude_event_images} ) && ( $params->{exclude_event_images} eq '1' );
- my $exclude_event_images = 0;
- $exclude_event_images = 1 if ( defined $params->{exclude_event_images} ) && ( $params->{exclude_event_images} eq '1' ) ;
+ #show future events by default
+ my $archive = 'future';
+ if ( defined $params->{archive} ) {
+ $archive = 'all' if ( $params->{archive} eq 'all' );
+ $archive = 'past' if ( $params->{archive} eq 'gone' );
+ $archive = 'future' if ( $params->{archive} eq 'coming' );
+ }
- #show future events by default
- my $archive = 'future';
- if ( defined $params->{archive} ) {
- $archive = 'all' if ( $params->{archive} eq 'all' );
- $archive = 'past' if ( $params->{archive} eq 'gone' );
- $archive = 'future' if ( $params->{archive} eq 'coming' );
- }
+ my $disable_event_sync = '';
+ if ( ( defined $params->{disable_event_sync} )
+ && ( $params->{disable_event_sync} =~ /([01])/ ) )
+ {
+ $disable_event_sync = $1;
+ }
- my $disable_event_sync = '';
- if ( ( defined $params->{disable_event_sync} )
- && ( $params->{disable_event_sync} =~ /([01])/ ) )
- {
- $disable_event_sync = $1;
- }
+ #show all on defined timespans
+ if ( ( $from_date ne '' ) && ( $till_date ne '' ) ) {
+ $archive = 'all';
+ }
- #show all on defined timespans
- if ( ( $from_date ne '' ) && ( $till_date ne '' ) ) {
- $archive = 'all';
- }
+ my $event_id = $params->{event_id} || '';
+ if ( ( defined $event_id ) && ( $event_id ne '' ) ) {
+ if ( $event_id =~ /(\d+)/ ) {
+ $event_id = $1;
+ } else {
+ log::error( $config, "invalid event_id" );
+ }
+ }
- my $event_id = $params->{event_id} || '';
- if ( ( defined $event_id ) && ( $event_id ne '' ) ) {
- if ( $event_id =~ /(\d+)/ ) {
- $event_id = $1;
- } else {
- log::error( $config, "invalid event_id" );
- }
- }
+ my $get = 'all';
+ $get = 'no_content'
+ if ( ( defined $params->{get} ) && ( $params->{get} eq 'no_content' ) );
- my $get = 'all';
- $get = 'no_content'
- if ( ( defined $params->{get} ) && ( $params->{get} eq 'no_content' ) );
+ my $search = $params->{search} || '';
+ if ( ( defined $search ) && ( $search ne '' ) ) {
+ $search = substr( $search, 0, 100 );
+ $search =~ s/^\s+//gi;
+ $search =~ s/\s+$//gi;
+ }
- my $search = $params->{search} || '';
- if ( ( defined $search ) && ( $search ne '' ) ) {
- $search = substr( $search, 0, 100 );
- $search =~ s/^\s+//gi;
- $search =~ s/\s+$//gi;
- }
+ #print STDERR $params->{template}."\n";
+ my $template = '.html';
+ if ( ( defined $params->{template} ) && ( $params->{template} eq 'no' ) ) {
+ $template = 'no';
+ } else {
+ $template = template::check( $params->{template}, 'event_list.html' );
+ }
- #print STDERR $params->{template}."\n";
- my $template = '.html';
- if ( ( defined $params->{template} ) && ($params->{template} eq 'no') ) {
- $template = 'no';
- } else {
- $template = template::check( $params->{template}, 'event_list.html' );
- }
+ my $limit_config = $config->{permissions}->{result_limit} || 100;
+ my $limit = $params->{limit} || $limit_config;
+ log::error( $config, 'invalid limit!' ) if ( $limit =~ /\D/ );
+ $limit = $limit_config if ( $limit_config < $limit );
- my $limit_config = $config->{permissions}->{result_limit} || 100;
- my $limit = $params->{limit} || $limit_config;
- log::error( $config, 'invalid limit!' ) if ( $limit =~ /\D/ );
- $limit = $limit_config if ( $limit_config < $limit );
+ #read project from configuration file
+ my $project_name = $config->{project} || '';
+ log::error( $config, 'no default project configured' )
+ if ( $project_name eq '' );
- #read project from configuration file
- my $project_name = $config->{project} || '';
- log::error( $config, 'no default project configured' )
- if ( $project_name eq '' );
+ #get default project
+ my $default_project = undef;
+ my $projects = project::get( $config, { name => $project_name } );
+ log::error( $config, "no configuration found for project '$project_name'" )
+ unless ( scalar(@$projects) == 1 );
+ $default_project = $projects->[0];
- #get default project
- my $default_project = undef;
- my $projects = project::get( $config, { name => $project_name } );
- log::error( $config, "no configuration found for project '$project_name'" )
- unless ( scalar(@$projects) == 1 );
- $default_project = $projects->[0];
+ # get project from parameter (by name)
+ my $project = '';
+ if ( ( defined $params->{project} )
+ && ( $params->{project} =~ /\w+/ )
+ && ( $params->{project} ne 'all' ) )
+ {
+ my $project_name = $params->{project};
+ my $projects = project::get( $config, { name => $project_name } );
+ log::error( $config, 'invalid project ' . $project_name )
+ unless scalar(@$projects) == 1;
+ $project = $projects->[0];
+ }
- # get project from parameter (by name)
- my $project = '';
- if ( ( defined $params->{project} )
- && ( $params->{project} =~ /\w+/ )
- && ( $params->{project} ne 'all' ) )
- {
- my $project_name = $params->{project};
- my $projects = project::get( $config, { name => $project_name } );
- log::error( $config, 'invalid project ' . $project_name )
- unless scalar(@$projects) == 1;
- $project = $projects->[0];
- }
+ $project_name = $params->{project_name} || '';
+ my $studio_name = $params->{studio_name} || '';
- $project_name = $params->{project_name} || '';
- my $studio_name = $params->{studio_name} || '';
+ 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 $debug = $params->{debug} || '';
+ if ( $debug =~ /([a-z\_\,]+)/ ) {
+ $debug = $1;
+ }
- my $debug = $params->{debug} || '';
- if ( $debug =~ /([a-z\_\,]+)/ ) {
- $debug = $1;
- }
+ my $json_callback = $params->{json_callback} || '';
+ if ( $json_callback ne '' ) {
+ $json_callback =~ s/[^a-zA-Z0-9\_]//g;
+ }
- my $json_callback = $params->{json_callback} || '';
- if ( $json_callback ne '' ) {
- $json_callback =~ s/[^a-zA-Z0-9\_]//g;
- }
+ # use relative links
+ my $extern = 0;
+ $extern = 1 if ( defined $params->{extern} ) && ( $params->{extern} eq '1' );
- # use relative links
- my $extern = 0;
- $extern = 1 if ( defined $params->{extern} ) && ( $params->{extern} eq '1' );
-
- my $recordings = 0;
- $recordings = 1 if ( defined $params->{recordings} ) && ( $params->{recordings} eq '1' );
+ my $recordings = 0;
+ $recordings = 1 if ( defined $params->{recordings} ) && ( $params->{recordings} eq '1' );
- my $checked = {
- date => $date,
- time => $time,
- time_of_day => $time_of_day,
- from_date => $from_date,
- till_date => $till_date,
- date_range_include => $date_range_include,
- from_time => $from_time,
- till_time => $till_time,
- weekday => $weekday,
- limit => $limit,
- template => $template,
- location => $location,
- category => $category,
- series_name => $series_name,
- tag => $tag,
- title => $title,
- event_id => $event_id,
- search => $search,
- debug => $debug,
- archive => $archive,
- order => $order,
- project => $project,
- default_project => $default_project,
- project_name => $project_name,
- project_id => $project_id,
- studio_name => $studio_name,
- studio_id => $studio_id,
- json_callback => $json_callback,
- get => $get,
- locations_to_exclude => $locations_to_exclude,
- projects_to_exclude => $projects_to_exclude,
- exclude_locations => $exclude_locations,
- exclude_projects => $exclude_projects,
- exclude_event_images => $exclude_event_images,
- disable_event_sync => $disable_event_sync,
- extern => $extern,
- recordings => $recordings,
- };
+ my $checked = {
+ date => $date,
+ time => $time,
+ time_of_day => $time_of_day,
+ from_date => $from_date,
+ till_date => $till_date,
+ date_range_include => $date_range_include,
+ from_time => $from_time,
+ till_time => $till_time,
+ weekday => $weekday,
+ limit => $limit,
+ template => $template,
+ location => $location,
+ category => $category,
+ series_name => $series_name,
+ tag => $tag,
+ title => $title,
+ event_id => $event_id,
+ search => $search,
+ debug => $debug,
+ archive => $archive,
+ order => $order,
+ project => $project,
+ default_project => $default_project,
+ project_name => $project_name,
+ project_id => $project_id,
+ studio_name => $studio_name,
+ studio_id => $studio_id,
+ json_callback => $json_callback,
+ get => $get,
+ locations_to_exclude => $locations_to_exclude,
+ projects_to_exclude => $projects_to_exclude,
+ exclude_locations => $exclude_locations,
+ exclude_projects => $exclude_projects,
+ exclude_event_images => $exclude_event_images,
+ disable_event_sync => $disable_event_sync,
+ extern => $extern,
+ recordings => $recordings,
+ };
- #print STDERR Dumper($checked);
- return $checked;
+ #print STDERR Dumper($checked);
+ return $checked;
}
sub get_keys {
- my $event = shift;
+ my $event = shift;
- my $program = $event->{program} || '';
- my $series_name = $event->{series_name} || '';
- my $title = $event->{title} || '';
- my $user_title = $event->{user_title} || '';
- my $episode = $event->{episode} || '';
- my $recurrence_count_alpha = $event->{recurrence_count_alpha} || '';
+ my $program = $event->{program} || '';
+ my $series_name = $event->{series_name} || '';
+ my $title = $event->{title} || '';
+ my $user_title = $event->{user_title} || '';
+ my $episode = $event->{episode} || '';
+ my $recurrence_count_alpha = $event->{recurrence_count_alpha} || '';
- my $skey = '';
- $skey .= $series_name if $series_name ne '';
- $skey .= ' - '
- if ( $series_name ne '' )
- && ( ( $title ne '' ) || ( $user_title ne '' ) );
+ my $skey = '';
+ $skey .= $series_name if $series_name ne '';
+ $skey .= ' - '
+ if ( $series_name ne '' )
+ && ( ( $title ne '' ) || ( $user_title ne '' ) );
- my $tkey = '';
- $tkey = $title if $title ne '';
- $tkey .= ': ' if ( $title ne '' ) && ( $user_title ne '' );
- $tkey .= $user_title if $user_title ne '';
- $tkey .= ' #' . $episode if $episode ne '';
- $tkey .= $recurrence_count_alpha if $recurrence_count_alpha ne '';
+ my $tkey = '';
+ $tkey = $title if $title ne '';
+ $tkey .= ': ' if ( $title ne '' ) && ( $user_title ne '' );
+ $tkey .= $user_title if $user_title ne '';
+ $tkey .= ' #' . $episode if $episode ne '';
+ $tkey .= $recurrence_count_alpha if $recurrence_count_alpha ne '';
- my $pkey = '';
- $pkey = ' (' . $program . ')' if $program ne '';
+ my $pkey = '';
+ $pkey = ' (' . $program . ')' if $program ne '';
- return {
- key => $skey . $tkey . $pkey,
- full_title => $skey . $tkey . $pkey,
- full_title_no_series => $tkey . $pkey,
- full_title_no_program => $skey . $tkey,
- full_title_no_program_no_series => $tkey
- };
+ return {
+ key => $skey . $tkey . $pkey,
+ full_title => $skey . $tkey . $pkey,
+ full_title_no_series => $tkey . $pkey,
+ full_title_no_program => $skey . $tkey,
+ full_title_no_program_no_series => $tkey
+ };
}
#do not delete last line!