By default the configuration cached by the mod_perl2 instance. You can disable cache by setting cache/config=0. You should disable cache only if you have multiple calcms instances running on the same mod_perl2 server with different configuration. The Location of the configuration will be determined by config module now.
142 lines
3.5 KiB
Perl
Executable File
142 lines
3.5 KiB
Perl
Executable File
#! /usr/bin/perl -w
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Data::Dumper;
|
|
use CGI qw(header param Vars);
|
|
$CGI::POST_MAX = 1000;
|
|
$CGI::DISABLE_UPLOADS = 1;
|
|
|
|
use params();
|
|
use db();
|
|
use markup();
|
|
use cache();
|
|
use log();
|
|
use config();
|
|
use template();
|
|
use project();
|
|
|
|
binmode STDOUT, ":utf8";
|
|
|
|
my $r = shift;
|
|
( my $cgi, my $params, my $error ) = params::get($r);
|
|
|
|
my $config = config::getFromScriptLocation();
|
|
my $debug = $config->{system}->{debug};
|
|
|
|
my $request = {
|
|
url => $ENV{QUERY_STRING},
|
|
params => {
|
|
original => $params,
|
|
checked => check_params( $config, $params ),
|
|
},
|
|
};
|
|
$params = $request->{params}->{checked};
|
|
|
|
my $cache = {};
|
|
if ( $config->{cache}->{use_cache} eq '1' ) {
|
|
cache::configure('categories.html');
|
|
$cache = cache::load( $config, $params );
|
|
if ( defined $cache->{content} ) {
|
|
print $cache->{content};
|
|
return;
|
|
}
|
|
}
|
|
|
|
my $dbh = db::connect($config);
|
|
|
|
my $template_parameters = {};
|
|
$template_parameters->{projects} = getProjects( $dbh, $config );
|
|
|
|
#$template_parameters->{categories} = get_categories($dbh,$params->{project});
|
|
$template_parameters->{debug} = $config->{system}->{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 = $params->{template};
|
|
my $out = '';
|
|
template::process( $config, $out, $params->{template}, $template_parameters );
|
|
print $out;
|
|
|
|
#write to cache
|
|
if ( $config->{cache}->{use_cache} eq '1' ) {
|
|
$cache->{content} = $out;
|
|
cache::save($cache);
|
|
}
|
|
|
|
sub getProjects {
|
|
my $dbh = shift;
|
|
my $config = shift;
|
|
|
|
my $excludedProjects = {};
|
|
if ( defined $config->{filter}->{projects_to_exclude} ) {
|
|
for my $project ( split( /\,/, $config->{filter}->{projects_to_exclude} ) ) {
|
|
$project =~ s/^\s+//g;
|
|
$project =~ s/\s+$//g;
|
|
$excludedProjects->{$project} = 1;
|
|
}
|
|
}
|
|
|
|
my $projects = project::get_sorted($config);
|
|
my $results = [];
|
|
for my $project (@$projects) {
|
|
next if defined $excludedProjects->{ $project->{name} };
|
|
my $categories = getCategories( $dbh, $config, $project->{name} );
|
|
$project->{isEmpty} = 1 if scalar(@$categories) == 0;
|
|
$project->{categories} = $categories;
|
|
|
|
$project->{js_name} = $project->{name};
|
|
$project->{js_name} =~ s/[^a-zA-Z\_0-9]/\_/g;
|
|
$project->{js_name} =~ s/\_+/\_/g;
|
|
push @$results, $project;
|
|
}
|
|
return $results;
|
|
}
|
|
|
|
sub getCategories {
|
|
my $dbh = shift;
|
|
my $config = shift;
|
|
my $project = shift;
|
|
|
|
my $cond = '';
|
|
my $bind_values = [];
|
|
if ( ( $project ne '' ) && ( $project ne 'all' ) ) {
|
|
$cond = 'where project=?';
|
|
$bind_values = [$project];
|
|
}
|
|
|
|
my $query = qq{
|
|
select name, count(name) sum
|
|
from calcms_categories
|
|
$cond
|
|
group by name
|
|
order by sum desc, name
|
|
};
|
|
my $categories = db::get( $dbh, $query, $bind_values );
|
|
|
|
my $results = [];
|
|
for my $category (@$categories) {
|
|
push @$results, $category if $category->{sum} > 1;
|
|
}
|
|
|
|
return $results;
|
|
}
|
|
|
|
sub check_params {
|
|
my $config = $_[0];
|
|
my $params = $_[1];
|
|
|
|
my $template = template::check( $config, $params->{template}, 'categories.html' );
|
|
|
|
my $debug = $params->{debug} || '';
|
|
if ( $debug =~ /([a-z\_\,]+)/ ) {
|
|
$debug = $1;
|
|
}
|
|
|
|
return {
|
|
template => $template,
|
|
debug => $debug
|
|
};
|
|
}
|
|
|