diff --git a/lib/calcms/aggregator.pm b/lib/calcms/aggregator.pm
index 90a4e55..c45d2e5 100644
--- a/lib/calcms/aggregator.pm
+++ b/lib/calcms/aggregator.pm
@@ -1,292 +1,288 @@
+package aggregator;
+
use warnings "all";
use strict;
+
use events();
use comments();
use calendar();
use project();
+use cache();
-package aggregator;
-
-require Exporter;
-our @ISA = qw(Exporter);
+use base 'Exporter';
our @EXPORT_OK = qw(get_cache configure_cache put_cache get_list check_params);
-our %EXPORT_TAGS = ( 'all' => [@EXPORT_OK] );
-
-#my $cgi=undef;
sub get_list {
- my $config = shift;
- my $request = shift;
+ my $config = shift;
+ my $request = shift;
- my $params = $request->{params}->{checked};
- my $debug = $config->{system}->{debug};
+ my $params = $request->{params}->{checked};
+ my $debug = $config->{system}->{debug};
- #customize prefiltered request parameters
- $request->{params}->{original}->{date} = $request->{params}->{checked}->{date};
- if ( $params->{event_id} ne '' ) {
- $request->{params}->{original}->{template} = 'event_details.html';
- } else {
- $request->{params}->{original}->{template} = 'event_list.html';
- }
- $request->{params}->{checked} = events::check_params( $config, $request->{params}->{original} );
-
- my $content = '';
- my $results = events::get( $config, $request );
- events::render( $content, $config, $request, $results );
+ #customize prefiltered request parameters
+ $request->{params}->{original}->{date} = $request->{params}->{checked}->{date};
+ if ( $params->{event_id} ne '' ) {
+ $request->{params}->{original}->{template} = 'event_details.html';
+ } else {
+ $request->{params}->{original}->{template} = 'event_list.html';
+ }
+ $request->{params}->{checked} = events::check_params( $config, $request->{params}->{original} );
- # calendar::get_cached_or_render($content,$request);
+ my $content = '';
+ my $results = events::get( $config, $request );
+ events::render( $content, $config, $request, $results );
- #set url to embed as last loaded url in javascript
- my $date = $params->{date} || '';
- $date = 'heute' if ( $params->{date} eq 'today' );
- $date = $results->[0]->{day} if ( $params->{event_id} ne '' );
- my $url = '';
+ #set url to embed as last loaded url in javascript
+ my $date = $params->{date} || '';
+ $date = 'heute' if ( $params->{date} eq 'today' );
+ $date = $results->[0]->{day} if ( $params->{event_id} ne '' );
+ my $url = '';
- #$config->{controllers}->{events}.'/'.$date.'/';
- if ( $params->{from_date} ne '' && $params->{till_date} ne '' ) {
- $url = $config->{controllers}->{events} . '/' . $params->{from_date} . '/' . $params->{till_date};
- } else {
- $url = $config->{controllers}->{events} . '/' . $params->{from_date} . '/' . $params->{till_date};
- }
+ #$config->{controllers}->{events}.'/'.$date.'/';
+ if ( $params->{from_date} ne '' && $params->{till_date} ne '' ) {
+ $url = $config->{controllers}->{events} . '/' . $params->{from_date} . '/' . $params->{till_date};
+ } else {
+ $url = $config->{controllers}->{events} . '/' . $params->{from_date} . '/' . $params->{till_date};
+ }
- #count most projects
- my $used_projects = {};
- for my $result (@$results) {
- my $project = $result->{project_title} || '';
- $used_projects->{$project}++;
- }
- my @used_projects = reverse sort { $used_projects->{$a} <=> $used_projects->{$b} } ( keys %$used_projects );
- my $most_used_project = $used_projects[0];
+ #count most projects
+ my $used_projects = {};
+ for my $result (@$results) {
+ my $project = $result->{project_title} || '';
+ $used_projects->{$project}++;
+ }
+ my @used_projects = reverse sort { $used_projects->{$a} <=> $used_projects->{$b} } ( keys %$used_projects );
+ my $most_used_project = $used_projects[0];
- #use Data::Dumper;print STDERR Dumper(\@used_projects);
+ #use Data::Dumper;print STDERR Dumper(\@used_projects);
- return {
- day => $results->[0]->{day},
- start_datetime => $results->[0]->{start_datetime},
- event_id => $results->[0]->{event_id},
- program => $results->[0]->{program},
- project_title => $most_used_project,
- series_name => $results->[0]->{series_name},
- title => $results->[0]->{title},
- content => $content,
- results => $results,
- url => $url,
- };
+ return {
+ day => $results->[0]->{day},
+ start_datetime => $results->[0]->{start_datetime},
+ event_id => $results->[0]->{event_id},
+ program => $results->[0]->{program},
+ project_title => $most_used_project,
+ series_name => $results->[0]->{series_name},
+ title => $results->[0]->{title},
+ content => $content,
+ results => $results,
+ url => $url,
+ };
}
sub get_menu {
- my $config = shift;
- my $request = shift;
- my $date = shift;
- my $results = shift;
+ my $config = shift;
+ my $request = shift;
+ my $date = shift;
+ my $results = shift;
- my $params = $request->{params}->{checked};
+ my $params = $request->{params}->{checked};
- #load details only on demand
- if ( $params->{event_id} ne '' ) {
- $request->{params}->{original}->{template} = 'event_menu.html';
- $request->{params}->{original}->{event_id} = undef;
- $request->{params}->{original}->{date} = $date;
- $request->{params}->{checked} = events::check_params( $config, $request->{params}->{original} );
- $results = events::get( $config, $request );
- } else {
- $request->{params}->{checked}->{template} = template::check('event_menu.html');
- }
+ #load details only on demand
+ if ( $params->{event_id} ne '' ) {
+ $request->{params}->{original}->{template} = 'event_menu.html';
+ $request->{params}->{original}->{event_id} = undef;
+ $request->{params}->{original}->{date} = $date;
+ $request->{params}->{checked} = events::check_params( $config, $request->{params}->{original} );
+ $results = events::get( $config, $request );
+ } else {
+ $request->{params}->{checked}->{template} = template::check($config, 'event_menu.html');
+ }
- #events menu
- my $output = '';
- events::render( $output, $config, $request, $results );
+ #events menu
+ my $output = '';
+ events::render( $output, $config, $request, $results );
- return { content => $output };
+ return { content => $output };
}
sub get_calendar {
- my $config = shift;
- my $request = shift;
- my $date = shift;
+ my $config = shift;
+ my $request = shift;
+ my $date = shift;
- my $params = $request->{params}->{checked};
- my $debug = $config->{system}->{debug};
+ my $params = $request->{params}->{checked};
+ my $debug = $config->{system}->{debug};
- $request->{params}->{original}->{template} = 'calendar.html';
- $request->{params}->{original}->{date} = $date if ( defined $date );
- $request->{params}->{checked} = calendar::check_params( $config, $request->{params}->{original} );
- $params = $request->{params}->{checked};
+ $request->{params}->{original}->{template} = 'calendar.html';
+ $request->{params}->{original}->{date} = $date if ( defined $date );
+ $request->{params}->{checked} = calendar::check_params( $config, $request->{params}->{original} );
+ $params = $request->{params}->{checked};
- #set query string for caching
- my $options = [];
+ #set query string for caching
+ my $options = [];
push @$options, 'date=' . $params->{date} if $params->{date} ne '';
push @$options, 'from_date=' . $params->{from_date} if $params->{from_date} ne '';
push @$options, 'till_date=' . $params->{till_date} if $params->{till_date} ne '';
- $ENV{QUERY_STRING} = '' . join( "&", @$options );
+ $ENV{QUERY_STRING} = '' . join( "&", @$options );
- my $content = '';
- calendar::get_cached_or_render( $content, $config, $request );
+ my $content = '';
+ calendar::get_cached_or_render( $content, $config, $request );
- return { content => $content };
+ return { content => $content };
}
sub get_newest_comments {
- my $config = shift;
- my $request = shift;
+ my $config = shift;
+ my $request = shift;
- my $params = {
- template => 'comments_newest.html',
- limit => 10,
- type => 'list',
- show_max => 3
- };
- $request = {
- url => $ENV{QUERY_STRING},
- params => {
- original => $params,
- checked => comments::check_params( $config, $params ),
- },
- config => $config,
- connection => $request->{connection}
- };
- my $content = '';
- comments::get_cached_or_render( $content, $config, $request );
- return { content => $content };
+ my $params = {
+ template => 'comments_newest.html',
+ limit => 10,
+ type => 'list',
+ show_max => 3
+ };
+ $request = {
+ url => $ENV{QUERY_STRING},
+ params => {
+ original => $params,
+ checked => comments::check_params( $config, $params ),
+ },
+ config => $config,
+ connection => $request->{connection}
+ };
+ my $content = '';
+ comments::get_cached_or_render( $content, $config, $request );
+ return { content => $content };
}
sub get_cache {
- my $config = shift;
- my $request = shift;
+ my $config = shift;
+ my $request = shift;
- my $params = $request->{params}->{checked};
- my $debug = $config->{system}->{debug};
+ my $params = $request->{params}->{checked};
+ my $debug = $config->{system}->{debug};
- if ( $config->{cache}->{use_cache} == 1 ) {
- configure_cache($config);
- my $cache = cache::load( $config, $params );
- return $cache;
- }
- return {};
+ if ( $config->{cache}->{use_cache} == 1 ) {
+ configure_cache($config);
+ my $cache = cache::load( $config, $params );
+ return $cache;
+ }
+ return {};
}
sub configure_cache {
- my $config = shift;
+ my $config = shift;
- cache::init();
- my $controllers = $config->{controllers};
+ cache::init();
+ my $controllers = $config->{controllers};
- my $date_pattern = $cache::date_pattern;
+ my $date_pattern = cache::get_date_pattern();
- # cache::add_map('' ,'programm/index.html');
- cache::add_map( 'date=today', 'programm/' . $controllers->{events} . '/today.html' );
- cache::add_map( 'date=' . $date_pattern, 'programm/' . $controllers->{events} . '/$1-$2-$3.html' );
- cache::add_map( 'from_date=' . $date_pattern . '&till_date=' . $date_pattern,
- 'programm/' . $controllers->{events} . '/$1-$2-$3_$4-$5-$6.html' );
- cache::add_map( 'event_id=(\d+)', 'programm/' . $controllers->{event} . '/$1.html' );
+ # cache::add_map('' ,'programm/index.html');
+ cache::add_map( 'date=today', 'programm/' . $controllers->{events} . '/today.html' );
+ cache::add_map( 'date=' . $date_pattern, 'programm/' . $controllers->{events} . '/$1-$2-$3.html' );
+ cache::add_map( 'from_date=' . $date_pattern . '&till_date=' . $date_pattern,
+ 'programm/' . $controllers->{events} . '/$1-$2-$3_$4-$5-$6.html' );
+ cache::add_map( 'event_id=(\d+)', 'programm/' . $controllers->{event} . '/$1.html' );
}
sub put_cache {
- my $config = shift;
- my $request = shift;
- my $cache = shift;
+ my $config = shift;
+ my $request = shift;
+ my $cache = shift;
- #write to cache
- if ( $config->{cache}->{use_cache} == 1 ) {
- cache::save($cache);
- }
+ #write to cache
+ if ( $config->{cache}->{use_cache} == 1 ) {
+ cache::save($cache);
+ }
}
sub check_params {
- my $config = shift;
- my $params = shift;
+ my $config = shift;
+ my $params = shift;
- #get start and stop from projects
- my $range = project::get_date_range($config);
- my $start_date = $range->{start_date};
- my $end_date = $range->{end_date};
+ #get start and stop from projects
+ my $range = project::get_date_range($config);
+ my $start_date = $range->{start_date};
+ my $end_date = $range->{end_date};
- #filter for date
- my $date = time::check_date( $params->{date} );
+ #filter for date
+ my $date = time::check_date( $params->{date} );
- #print STDERR $date."\n";
- if ( $date eq '' ) {
- $date = time::time_to_date( time() );
- }
- #
- if ( $date eq 'today' ) {
- $date = time::get_event_date($config);
- }
+ #print STDERR $date."\n";
+ if ( $date eq '' ) {
+ $date = time::time_to_date( time() );
+ }
+ #
+ if ( $date eq 'today' ) {
+ $date = time::get_event_date($config);
+ }
- # $date =$config->{date}->{start_date} if ($date lt $config->{date}->{start_date});
- # $date =$config->{date}->{end_date} if ($date gt $config->{date}->{end_date});
- $date = $start_date if $date lt $start_date;
- $date = $end_date if $date gt $end_date;
+ # $date =$config->{date}->{start_date} if ($date lt $config->{date}->{start_date});
+ # $date =$config->{date}->{end_date} if ($date gt $config->{date}->{end_date});
+ $date = $start_date if $date lt $start_date;
+ $date = $end_date if $date gt $end_date;
- #filter for date
- # my $date=time::check_date($params->{date});
- my $time = time::check_time( $params->{time} );
- if ( ( defined $params->{today} ) && ( $params->{today} eq '1' ) ) {
- $date = time::time_to_date( time() );
- $params->{date} = $date;
- }
+ #filter for date
+ # my $date=time::check_date($params->{date});
+ my $time = time::check_time( $params->{time} );
+ if ( ( defined $params->{today} ) && ( $params->{today} eq '1' ) ) {
+ $date = time::time_to_date( time() );
+ $params->{date} = $date;
+ }
- my $from_date = time::check_date( $params->{from_date} );
- my $till_date = time::check_date( $params->{till_date} );
+ my $from_date = time::check_date( $params->{from_date} );
+ my $till_date = time::check_date( $params->{till_date} );
- my $previous_series = $params->{previous_series} || '';
- if ( ($previous_series) && ( $previous_series =~ /(\d+)/ ) ) {
- $params->{event_id} = events::get_previous_event_of_series(
- undef, $config,
- {
- event_id => $1,
- exclude_projects => 1,
- exclude_locations => 1,
- }
- );
- }
+ my $previous_series = $params->{previous_series} || '';
+ if ( ($previous_series) && ( $previous_series =~ /(\d+)/ ) ) {
+ $params->{event_id} = events::get_previous_event_of_series(
+ undef, $config,
+ {
+ event_id => $1,
+ exclude_projects => 1,
+ exclude_locations => 1,
+ }
+ );
+ }
- my $next_series = $params->{next_series} || '';
- if ( ($next_series) && ( $next_series =~ /(\d+)/ ) ) {
- $params->{event_id} = events::get_next_event_of_series(
- undef, $config,
- {
- event_id => $1,
- exclude_projects => 1,
- exclude_locations => 1,
- }
- );
- }
+ my $next_series = $params->{next_series} || '';
+ if ( ($next_series) && ( $next_series =~ /(\d+)/ ) ) {
+ $params->{event_id} = events::get_next_event_of_series(
+ undef, $config,
+ {
+ event_id => $1,
+ exclude_projects => 1,
+ exclude_locations => 1,
+ }
+ );
+ }
- my $event_id = $params->{event_id} || '';
- unless ( $event_id eq '' ) {
- if ( $event_id =~ /(\d+)/ ) {
- $event_id = $1;
- } else {
- log::error( $config, "invalid event_id" );
- }
- }
+ my $event_id = $params->{event_id} || '';
+ unless ( $event_id eq '' ) {
+ if ( $event_id =~ /(\d+)/ ) {
+ $event_id = $1;
+ } else {
+ log::error( $config, "invalid event_id" );
+ }
+ }
- my $debug = $params->{debug} || '';
- if ( $debug =~ /([a-z\_\,]+)/ ) {
- $debug = $1;
- }
+ my $debug = $params->{debug} || '';
+ if ( $debug =~ /([a-z\_\,]+)/ ) {
+ $debug = $1;
+ }
- #set query string for caching
- if ( ( !exists $ENV{QUERY_STRING} ) || ( $ENV{QUERY_STRING} eq '' ) ) {
- my $options = [];
+ #set query string for caching
+ if ( ( !exists $ENV{QUERY_STRING} ) || ( $ENV{QUERY_STRING} eq '' ) ) {
+ my $options = [];
push @$options, 'date=' . $date if $date ne '';
push @$options, 'from_date=' . $from_date if $from_date ne '';
push @$options, 'till_date=' . $till_date if $till_date ne '';
push @$options, 'event_id=' . $event_id if $event_id ne '';
- $ENV{QUERY_STRING} = '' . join( "&", @$options );
- }
+ $ENV{QUERY_STRING} = '' . join( "&", @$options );
+ }
- return {
- date => $date,
- time => $time,
- from_date => $from_date,
- till_date => $till_date,
- event_id => $event_id,
+ return {
+ date => $date,
+ time => $time,
+ from_date => $from_date,
+ till_date => $till_date,
+ event_id => $event_id,
- # project => $project,
- debug => $debug,
- };
+ # project => $project,
+ debug => $debug,
+ };
}
#do not delete last line!
diff --git a/lib/calcms/audio_recordings.pm b/lib/calcms/audio_recordings.pm
index 5b51cd9..dc341e9 100644
--- a/lib/calcms/audio_recordings.pm
+++ b/lib/calcms/audio_recordings.pm
@@ -1,5 +1,3 @@
-#!/bin/perl
-
package audio_recordings;
use warnings "all";
@@ -8,11 +6,8 @@ use strict;
use Data::Dumper;
use db();
-require Exporter;
-
-our @ISA = qw(Exporter);
+use base 'Exporter';
our @EXPORT_OK = qw(get_columns get);
-our %EXPORT_TAGS = ( 'all' => [@EXPORT_OK] );
# columns:
# id, project_id, studio_id, event_id
@@ -23,67 +18,67 @@ our %EXPORT_TAGS = ( 'all' => [@EXPORT_OK] );
sub debug;
sub get_columns {
- my $config = shift;
+ my $config = shift;
- my $dbh = db::connect($config);
- my $cols = db::get_columns( $dbh, 'calcms_audio_recordings' );
- my $columns = {};
- for my $col (@$cols) {
- $columns->{$col} = 1;
- }
- return $columns;
+ my $dbh = db::connect($config);
+ my $cols = db::get_columns( $dbh, 'calcms_audio_recordings' );
+ my $columns = {};
+ for my $col (@$cols) {
+ $columns->{$col} = 1;
+ }
+ return $columns;
}
# get playout entries
sub get {
- my $config = shift;
- my $condition = shift;
+ my $config = shift;
+ my $condition = shift;
- return undef unless defined $condition->{project_id};
- return undef unless defined $condition->{studio_id};
+ return undef unless defined $condition->{project_id};
+ return undef unless defined $condition->{studio_id};
- my $date_range_include = 0;
- $date_range_include = 1 if ( defined $condition->{date_range_include} ) && ( $condition->{date_range_include} == 1 );
+ my $date_range_include = 0;
+ $date_range_include = 1 if ( defined $condition->{date_range_include} ) && ( $condition->{date_range_include} == 1 );
- my $dbh = db::connect($config);
+ my $dbh = db::connect($config);
- my $conditions = [];
- my $bind_values = [];
+ my $conditions = [];
+ my $bind_values = [];
- if ( ( defined $condition->{id} ) && ( $condition->{id} ne '' ) ) {
- push @$conditions, 'id=?';
- push @$bind_values, $condition->{id};
- }
+ if ( ( defined $condition->{id} ) && ( $condition->{id} ne '' ) ) {
+ push @$conditions, 'id=?';
+ push @$bind_values, $condition->{id};
+ }
- if ( ( defined $condition->{project_id} ) && ( $condition->{project_id} ne '' ) ) {
- push @$conditions, 'project_id=?';
- push @$bind_values, $condition->{project_id};
- }
+ if ( ( defined $condition->{project_id} ) && ( $condition->{project_id} ne '' ) ) {
+ push @$conditions, 'project_id=?';
+ push @$bind_values, $condition->{project_id};
+ }
- if ( ( defined $condition->{studio_id} ) && ( $condition->{studio_id} ne '' ) ) {
- push @$conditions, 'studio_id=?';
- push @$bind_values, $condition->{studio_id};
- }
+ if ( ( defined $condition->{studio_id} ) && ( $condition->{studio_id} ne '' ) ) {
+ push @$conditions, 'studio_id=?';
+ push @$bind_values, $condition->{studio_id};
+ }
- if ( ( defined $condition->{event_id} ) && ( $condition->{event_id} ne '' ) ) {
- push @$conditions, 'event_id=?';
- push @$bind_values, $condition->{event_id};
- }
+ if ( ( defined $condition->{event_id} ) && ( $condition->{event_id} ne '' ) ) {
+ push @$conditions, 'event_id=?';
+ push @$bind_values, $condition->{event_id};
+ }
- if ( ( defined $condition->{path} ) && ( $condition->{path} ne '' ) ) {
- push @$conditions, 'path=?';
- push @$bind_values, $condition->{path};
- }
+ if ( ( defined $condition->{path} ) && ( $condition->{path} ne '' ) ) {
+ push @$conditions, 'path=?';
+ push @$bind_values, $condition->{path};
+ }
- my $limit = '';
- if ( ( defined $condition->{limit} ) && ( $condition->{limit} ne '' ) ) {
- $limit = 'limit ' . $condition->{limit};
- }
+ my $limit = '';
+ if ( ( defined $condition->{limit} ) && ( $condition->{limit} ne '' ) ) {
+ $limit = 'limit ' . $condition->{limit};
+ }
- my $whereClause = '';
- $whereClause = " where " . join( " and ", @$conditions ) if ( scalar @$conditions > 0 );
+ my $whereClause = '';
+ $whereClause = " where " . join( " and ", @$conditions ) if ( scalar @$conditions > 0 );
- my $query = qq{
+ my $query = qq{
select id
,project_id
,studio_id
@@ -104,32 +99,32 @@ sub get {
order by created_at desc
};
- #print STDERR Dumper($query).Dumper($bind_values);
- my $entries = db::get( $dbh, $query, $bind_values );
- return $entries;
+ #print STDERR Dumper($query).Dumper($bind_values);
+ my $entries = db::get( $dbh, $query, $bind_values );
+ return $entries;
}
# update playout entry if differs to old values
sub update {
- my $config = shift;
- my $dbh = shift;
- my $entry = shift;
+ my $config = shift;
+ my $dbh = shift;
+ my $entry = shift;
- #print STDERR "update:".Dumper($entry);
+ #print STDERR "update:".Dumper($entry);
- my $day_start = $config->{date}->{day_starting_hour};
+ my $day_start = $config->{date}->{day_starting_hour};
- my $bind_values = [
- $entry->{path}, $entry->{size},
- $entry->{created_by}, $entry->{created_at},
- $entry->{modified_at} || time::time_to_datetime( time() ), $entry->{processed},
- $entry->{mastered}, $entry->{eventDuration},
- $entry->{audioDuration}, $entry->{rmsLeft},
- $entry->{rmsRight}, $entry->{project_id},
- $entry->{studio_id}, $entry->{event_id}
- ];
+ my $bind_values = [
+ $entry->{path}, $entry->{size},
+ $entry->{created_by}, $entry->{created_at},
+ $entry->{modified_at} || time::time_to_datetime( time() ), $entry->{processed},
+ $entry->{mastered}, $entry->{eventDuration},
+ $entry->{audioDuration}, $entry->{rmsLeft},
+ $entry->{rmsRight}, $entry->{project_id},
+ $entry->{studio_id}, $entry->{event_id}
+ ];
- my $query = qq{
+ my $query = qq{
update calcms_audio_recordings
set path=?, size=?,
created_by=?, created_at=?,
@@ -139,71 +134,71 @@ sub update {
rmsLeft=?, rmsRight=?
where project_id=? and studio_id=? and event_id=?
};
- if ( defined $entry->{id} ) {
- $query .= ' and id=?';
- push @$bind_values, $entry->{id};
- }
+ if ( defined $entry->{id} ) {
+ $query .= ' and id=?';
+ push @$bind_values, $entry->{id};
+ }
- #print STDERR Dumper($query).Dumper($bind_values);
- return db::put( $dbh, $query, $bind_values );
+ #print STDERR Dumper($query).Dumper($bind_values);
+ return db::put( $dbh, $query, $bind_values );
}
# insert playout entry
sub insert {
- my $config = shift;
- my $dbh = shift;
- my $entry = shift;
+ my $config = shift;
+ my $dbh = shift;
+ my $entry = shift;
- return undef unless defined $entry->{project_id};
- return undef unless defined $entry->{studio_id};
- return undef unless defined $entry->{event_id};
- return undef unless defined $entry->{path};
+ return undef unless defined $entry->{project_id};
+ return undef unless defined $entry->{studio_id};
+ return undef unless defined $entry->{event_id};
+ return undef unless defined $entry->{path};
- #print STDERR "insert into audio_recordings:".Dumper($entry);
- return db::insert(
- $dbh,
- 'calcms_audio_recordings',
- {
- project_id => $entry->{project_id},
- studio_id => $entry->{studio_id},
- event_id => $entry->{event_id},
- path => $entry->{path},
- size => $entry->{size},
- created_by => $entry->{created_by},
- eventDuration => $entry->{eventDuration},
- audioDuration => $entry->{audioDuration},
- rmsLeft => $entry->{rmsLeft},
- rmsRight => $entry->{rmsRight},
- processed => $entry->{processed},
- mastered => $entry->{mastered} || '0',
- }
- );
+ #print STDERR "insert into audio_recordings:".Dumper($entry);
+ return db::insert(
+ $dbh,
+ 'calcms_audio_recordings',
+ {
+ project_id => $entry->{project_id},
+ studio_id => $entry->{studio_id},
+ event_id => $entry->{event_id},
+ path => $entry->{path},
+ size => $entry->{size},
+ created_by => $entry->{created_by},
+ eventDuration => $entry->{eventDuration},
+ audioDuration => $entry->{audioDuration},
+ rmsLeft => $entry->{rmsLeft},
+ rmsRight => $entry->{rmsRight},
+ processed => $entry->{processed},
+ mastered => $entry->{mastered} || '0',
+ }
+ );
}
# delete playout entry
sub delete {
- my $config = shift;
- my $dbh = shift;
- my $entry = shift;
+ my $config = shift;
+ my $dbh = shift;
+ my $entry = shift;
- return undef unless defined $entry->{project_id};
- return undef unless defined $entry->{studio_id};
- return undef unless defined $entry->{event_id};
- return undef unless defined $entry->{path};
+ return undef unless defined $entry->{project_id};
+ return undef unless defined $entry->{studio_id};
+ return undef unless defined $entry->{event_id};
+ return undef unless defined $entry->{path};
- my $query = qq{
+ my $query = qq{
delete
from calcms_audio_recordings
where project_id=? and studio_id=? and event_id=? and path=?
};
- my $bind_values = [ $entry->{project_id}, $entry->{studio_id}, $entry->{event_id}, $entry->{path} ];
- return db::put( $dbh, $query, $bind_values );
+ my $bind_values = [ $entry->{project_id}, $entry->{studio_id}, $entry->{event_id}, $entry->{path} ];
+ return db::put( $dbh, $query, $bind_values );
}
sub error {
- my $msg = shift;
- print "ERROR: $msg
\n";
+ my $msg = shift;
+ print "ERROR: $msg
\n";
}
#do not delete last line!
diff --git a/lib/calcms/auth.pm b/lib/calcms/auth.pm
index b6f19be..18af258 100644
--- a/lib/calcms/auth.pm
+++ b/lib/calcms/auth.pm
@@ -1,25 +1,20 @@
-#!/bin/perl
+package auth;
+
+use warnings "all";
+use strict;
use CGI;
use CGI::Session qw(-ip-match);
use CGI::Cookie();
#$CGI::Session::IP_MATCH=1;
-
-package auth;
-
-use warnings "all";
-use strict;
-
use Data::Dumper;
use Authen::Passphrase::BlowfishCrypt();
+
use time();
-require Exporter;
-our @ISA = qw(Exporter);
-our @EXPORT_OK = qw(get_user login logout crypt_password);
-our %EXPORT_TAGS = ( 'all' => [@EXPORT_OK] );
-
+use base 'Exporter';
+our @EXPORT_OK = qw(get_user login logout crypt_password);
my $defaultExpiration = 60;
my $tmp_dir = '/var/tmp/';
my $debug = 0;
@@ -27,259 +22,258 @@ my $debug = 0;
sub debug;
sub get_user {
- my $cgi = shift;
- my $config = shift;
+ my $cgi = shift;
+ my $config = shift;
- my %parms = $cgi->Vars();
- my $parms = \%parms;
+ my %parms = $cgi->Vars();
+ my $parms = \%parms;
- debug("get_user") if ($debug);
+ debug("get_user") if ($debug);
- # login or logout on action
- if ( defined $parms->{action} ) {
- if ( $parms->{action} eq 'login' ) {
- my $user = login( $cgi, $config, $parms->{user}, $parms->{password} );
- $cgi->delete( 'user', 'password', 'uri', 'action' );
- return $user;
- } elsif ( $parms->{action} eq 'logout' ) {
- logout($cgi);
- $cgi->delete( 'user', 'password', 'uri', 'action' );
- return undef;
- }
- }
+ # login or logout on action
+ if ( defined $parms->{action} ) {
+ if ( $parms->{action} eq 'login' ) {
+ my $user = login( $cgi, $config, $parms->{user}, $parms->{password} );
+ $cgi->delete( 'user', 'password', 'uri', 'action' );
+ return $user;
+ } elsif ( $parms->{action} eq 'logout' ) {
+ logout($cgi);
+ $cgi->delete( 'user', 'password', 'uri', 'action' );
+ return undef;
+ }
+ }
- # read session id from cookie
- my $session_id = read_cookie($cgi);
+ # read session id from cookie
+ my $session_id = read_cookie($cgi);
- # login if no cookie found
- return show_login_form( $parms->{user}, 'Please login' ) unless defined $session_id;
+ # login if no cookie found
+ return show_login_form( $parms->{user}, 'Please login' ) unless defined $session_id;
- # read session
- my $session = read_session($session_id);
+ # read session
+ my $session = read_session($session_id);
- # login if user not found
- return show_login_form( $parms->{user}, 'unknown User' ) unless defined $session;
+ # login if user not found
+ return show_login_form( $parms->{user}, 'unknown User' ) unless defined $session;
- $parms->{user} = $session->{user};
- $parms->{expires} = $session->{expires};
- debug( $parms->{expires} );
- return $session->{user}, $session->{expires};
+ $parms->{user} = $session->{user};
+ $parms->{expires} = $session->{expires};
+ debug( $parms->{expires} );
+ return $session->{user}, $session->{expires};
}
sub crypt_password {
- my $password = shift;
+ my $password = shift;
- my $ppr = Authen::Passphrase::BlowfishCrypt->new(
- cost => 8,
- salt_random => 1,
- passphrase => $password
- );
- return {
- salt => $ppr->salt_base64,
- crypt => $ppr->as_crypt
- };
+ my $ppr = Authen::Passphrase::BlowfishCrypt->new(
+ cost => 8,
+ salt_random => 1,
+ passphrase => $password
+ );
+ return {
+ salt => $ppr->salt_base64,
+ crypt => $ppr->as_crypt
+ };
}
sub login {
- my $cgi = shift;
- my $config = shift;
- my $user = shift;
- my $password = shift;
- debug("login") if ($debug);
+ my $cgi = shift;
+ my $config = shift;
+ my $user = shift;
+ my $password = shift;
+ debug("login") if ($debug);
- #print STDERR "login $user $password\n";
- my $result = authenticate( $config, $user, $password );
+ #print STDERR "login $user $password\n";
+ my $result = authenticate( $config, $user, $password );
- #print STDERR Dumper($result);
+ #print STDERR Dumper($result);
- return show_login_form( $user, 'Could not authenticate you' ) unless defined $result;
- return unless defined $result->{login} eq '1';
+ return show_login_form( $user, 'Could not authenticate you' ) unless defined $result;
+ return unless defined $result->{login} eq '1';
- my $timeout = $result->{timeout} || $defaultExpiration;
- $timeout = '+' . $timeout . 'm';
+ my $timeout = $result->{timeout} || $defaultExpiration;
+ $timeout = '+' . $timeout . 'm';
- my $session_id = create_session( $user, $password, $timeout );
- return $user if ( create_cookie( $cgi, $session_id, $timeout ) );
- return undef;
+ my $session_id = create_session( $user, $password, $timeout );
+ return $user if ( create_cookie( $cgi, $session_id, $timeout ) );
+ return undef;
}
sub logout {
- my $cgi = shift;
- my $session_id = read_cookie($cgi);
- debug("logout") if ($debug);
- unless ( delete_session($session_id) ) {
- return show_login_form( 'Cant delete session', 'logged out' );
- }
- unless ( delete_cookie($cgi) ) {
- return show_login_form( 'Cant remove cookie', 'logged out' );
- }
- my $uri = $ENV{HTTP_REFERER} || '';
- $uri =~ s/action=logout//g;
- print $cgi->redirect($uri);
-
- # return show_login_form('', 'logged out');
+ my $cgi = shift;
+ my $session_id = read_cookie($cgi);
+ debug("logout") if ($debug);
+ unless ( delete_session($session_id) ) {
+ return show_login_form( 'Cant delete session', 'logged out' );
+ }
+ unless ( delete_cookie($cgi) ) {
+ return show_login_form( 'Cant remove cookie', 'logged out' );
+ }
+ my $uri = $ENV{HTTP_REFERER} || '';
+ $uri =~ s/action=logout//g;
+ print $cgi->redirect($uri);
+ return;
}
#read and write data from browser, http://perldoc.perl.org/CGI/Cookie.html
sub create_cookie {
- my $cgi = shift;
- my $session_id = shift;
- my $timeout = shift;
+ my $cgi = shift;
+ my $session_id = shift;
+ my $timeout = shift;
- #debug("create_cookie")if ($debug);
+ #debug("create_cookie")if ($debug);
- my $cookie = CGI::Cookie->new(
- -name => 'sessionID',
- -value => $session_id,
- -expires => $timeout,
+ my $cookie = CGI::Cookie->new(
+ -name => 'sessionID',
+ -value => $session_id,
+ -expires => $timeout,
- # -domain => '.capricorn.com',
- # -path => '/agenda/admin/',
- -secure => 1
- );
- print "Set-Cookie: ", $cookie->as_string, "\n";
- print STDERR "#Set-Cookie: ", $cookie->as_string, "\n";
+ # -domain => '.capricorn.com',
+ # -path => '/agenda/admin/',
+ -secure => 1
+ );
+ print "Set-Cookie: ", $cookie->as_string, "\n";
+ print STDERR "#Set-Cookie: ", $cookie->as_string, "\n";
- # print $cgi->header( -cookie => $cookie );
- return 1;
+ # print $cgi->header( -cookie => $cookie );
+ return 1;
}
sub read_cookie {
- my $cgi = shift;
+ my $cgi = shift;
- debug("read_cookie") if ($debug);
- my %cookie = CGI::Cookie->fetch;
- debug( "cookies: " . Dumper( \%cookie ) ) if ($debug);
- my $cookie = $cookie{'sessionID'};
- debug( "cookie: " . $cookie ) if ($debug);
- return undef unless ( defined $cookie );
- my $session_id = $cookie->value || undef;
- debug( "sid: " . $session_id ) if ($debug);
- return $session_id;
+ debug("read_cookie") if ($debug);
+ my %cookie = CGI::Cookie->fetch;
+ debug( "cookies: " . Dumper( \%cookie ) ) if ($debug);
+ my $cookie = $cookie{'sessionID'};
+ debug( "cookie: " . $cookie ) if ($debug);
+ return undef unless defined $cookie ;
+ my $session_id = $cookie->value || undef;
+ debug( "sid: " . $session_id ) if ($debug);
+ return $session_id;
- #return $cgi->cookie('sessionID') || undef;
+ #return $cgi->cookie('sessionID') || undef;
}
sub delete_cookie {
- my $cgi = shift;
+ my $cgi = shift;
- debug("delete_cookie") if ($debug);
- my $cookie = $cgi->cookie(
- -name => 'sessionID',
- -value => '',
- -expires => '+1s'
- );
- print $cgi->header( -cookie => $cookie );
- return 1;
+ debug("delete_cookie") if ($debug);
+ my $cookie = $cgi->cookie(
+ -name => 'sessionID',
+ -value => '',
+ -expires => '+1s'
+ );
+ print $cgi->header( -cookie => $cookie );
+ return 1;
}
#read and write server-side session data
sub create_session {
- my $user = shift;
- my $password = shift;
- my $expiration = shift;
+ my $user = shift;
+ my $password = shift;
+ my $expiration = shift;
- debug("create_session") if ($debug);
- my $session = new CGI::Session( undef, undef, { Directory => $tmp_dir } );
- $session->expire($expiration);
- $session->param( "user", $user );
- $session->param( "pid", $$ );
+ debug("create_session") if ($debug);
+ my $session = CGI::Session->new( undef, undef, { Directory => $tmp_dir } );
+ $session->expire($expiration);
+ $session->param( "user", $user );
+ $session->param( "pid", $$ );
- # $session->param("password", $password);
- return $session->id();
+ # $session->param("password", $password);
+ return $session->id();
}
sub read_session {
- my $session_id = shift;
+ my $session_id = shift;
- debug("read_session") if $debug;
- return undef unless ( defined $session_id );
+ debug("read_session") if $debug;
+ return undef unless ( defined $session_id );
- debug("read_session2") if $debug;
- my $session = new CGI::Session( undef, $session_id, { Directory => $tmp_dir } );
- return undef unless defined $session;
+ debug("read_session2") if $debug;
+ my $session = CGI::Session->new( undef, $session_id, { Directory => $tmp_dir } );
+ return undef unless defined $session;
- debug("read_session3") if $debug;
- my $user = $session->param("user") || undef;
- return undef unless defined $user;
- my $expires = time::time_to_datetime( $session->param("_SESSION_ATIME") + $session->param("_SESSION_ETIME") );
- return {
- user => $user,
- expires => $expires
- };
+ debug("read_session3") if $debug;
+ my $user = $session->param("user") || undef;
+ return undef unless defined $user;
+ my $expires = time::time_to_datetime( $session->param("_SESSION_ATIME") + $session->param("_SESSION_ETIME") );
+ return {
+ user => $user,
+ expires => $expires
+ };
}
sub delete_session {
- my $session_id = shift;
+ my $session_id = shift;
- debug("delete_session") if ($debug);
- return undef unless ( defined $session_id );
- my $session = new CGI::Session( undef, $session_id, { Directory => $tmp_dir } );
- $session->delete();
- return 1;
+ debug("delete_session") if ($debug);
+ return undef unless ( defined $session_id );
+ my $session = CGI::Session->new( undef, $session_id, { Directory => $tmp_dir } );
+ $session->delete();
+ return 1;
}
#check user authentication
sub authenticate {
- my $config = shift;
- my $user = shift;
- my $password = shift;
+ my $config = shift;
+ my $user = shift;
+ my $password = shift;
- $config->{access}->{write} = 0;
- my $dbh = db::connect($config);
- my $query = qq{
+ $config->{access}->{write} = 0;
+ my $dbh = db::connect($config);
+ my $query = qq{
select *
from calcms_users
where name=?
};
- my $bind_values = [$user];
+ my $bind_values = [$user];
- #print STDERR "query:".Dumper($query).Dumper($bind_values);
+ #print STDERR "query:".Dumper($query).Dumper($bind_values);
- my $users = db::get( $dbh, $query, $bind_values );
+ my $users = db::get( $dbh, $query, $bind_values );
- #print STDERR "result:".Dumper($users);
+ #print STDERR "result:".Dumper($users);
- if ( scalar(@$users) != 1 ) {
- print STDERR "auth: did not find user '$user'\n";
- return undef;
- }
+ if ( scalar(@$users) != 1 ) {
+ print STDERR "auth: did not find user '$user'\n";
+ return undef;
+ }
- #print STDERR Dumper($users);
+ #print STDERR Dumper($users);
- my $salt = $users->[0]->{salt};
- my $ppr = Authen::Passphrase::BlowfishCrypt->from_crypt( $users->[0]->{pass}, $users->[0]->{salt} );
+ my $salt = $users->[0]->{salt};
+ my $ppr = Authen::Passphrase::BlowfishCrypt->from_crypt( $users->[0]->{pass}, $users->[0]->{salt} );
- return undef unless $ppr->match($password);
- if ( $users->[0]->{disabled} == 1 ) {
- print STDERR "user '$user' is disabled\n";
- return undef;
- }
+ return undef unless $ppr->match($password);
+ if ( $users->[0]->{disabled} == 1 ) {
+ print STDERR "user '$user' is disabled\n";
+ return undef;
+ }
- my $timeout = $users->[0]->{session_timeout} || 120;
- $timeout = 10 if $timeout < 10;
- $timeout = 12 * 60 if $timeout > 12 * 60;
+ my $timeout = $users->[0]->{session_timeout} || 120;
+ $timeout = 10 if $timeout < 10;
+ $timeout = 12 * 60 if $timeout > 12 * 60;
- return {
- timeout => $timeout,
- login => 1
- };
+ return {
+ timeout => $timeout,
+ login => 1
+ };
}
sub show_login_form {
- my $user = shift || '';
- my $uri = $ENV{HTTP_REFERER} || '';
- my $message = shift || '';
- my $requestReset = '';
+ my $user = shift || '';
+ my $uri = $ENV{HTTP_REFERER} || '';
+ my $message = shift || '';
+ my $requestReset = '';
- if ( ( $user ne '' ) && ( $message ne '' ) ) {
- $requestReset = qq{
+ if ( ( $user ne '' ) && ( $message ne '' ) ) {
+ $requestReset = qq{
forgotten
};
- }
+ }
- debug("show_login_form") if ($debug);
- print qq{Content-type:text/html
+ debug("show_login_form") if ($debug);
+ print qq{Content-type:text/html
@@ -377,12 +371,13 @@ sub show_login_form {