Session::State::Cookie
+FrBr::Books::Plugin::Ort
+ +FrBr::Books::Plugin::Serie
+ +FrBr::Books::Plugin::User
+FrBr::Books::Plugin::Verlag
+FrBr::Books::Plugin::Waehrung
/;
-our $VERSION = '0.03';
+our $VERSION = '0.3';
{
my ($rev) = '$Revision$' =~ /(\d+)/;
$VERSION = sprintf( $VERSION . ".%d", $rev );
use FrBr::Books::Util::Book;
use FrBr::Books::Util::Bindungsart;
use FrBr::Books::Util::Category;
-use FrBr::Books::Util::Serie;
-use FrBr::Books::Util::User;
=head1 NAME
if ( $c->request->params->{'restore_defaults'} ) {
$c->session->{'book_order_criteria'} = [ 'autoren', 'title' ];
$c->session->{'book_list_page'} = 1;
- save_user_prefs($c) if $c->user_exists;
+ $c->b_save_user_prefs() if $c->user_exists;
$c->detach("/books/list");
return 1;
}
$c->session->{'book_order_criteria'} = $sort_order;
$c->session->{'book_list_page'} = 1;
- save_user_prefs($c) if $c->user_exists;
+ $c->b_save_user_prefs() if $c->user_exists;
}
$c->log->debug( get_output_string( $K . "Bindungsarten: ", $c->stash->{'bindungsartenliste'} ) );
# Buchserien zusamensammeln
- my $serienliste = get_serienliste($c);
+ my $serienliste = $c->b_get_serienliste();
$c->log->debug( get_output_string( $K . "Serien gesamt: ", $serienliste ) );
$c->stash->{'serienliste'} = {};
$c->stash->{'serien_ids'} = [];
use warnings;
use base 'Catalyst::Controller';
use FrBr::Common;
-use FrBr::Books::Util::User;
=head1 NAME
# Attempt to log the user in
my $rs = $c->model('Schema::Users')->search({ 'login' => $username, 'deleted' => 'n', 'enabled' => 'y' });
if ($c->authenticate({ 'password' => $password, 'dbix_class' => { resultset => $rs } })) {
- restore_user_prefs($c);
+ $c->b_restore_user_prefs();
$c->response->redirect( $c->web_path('/') );
return 1;
} ## end if ( $c->login( $username, $password ) )
use warnings;
use base 'Catalyst::Controller';
use FrBr::Common;
-use FrBr::Books::Util::User;
=head1 NAME
my $K = ( caller(0) )[3] . "(): ";
if ( $c->user_exists ) {
- save_user_prefs($c);
+ $c->b_save_user_prefs();
# Clear the user's state
$c->logout;
}
use base 'Catalyst::Controller';
use FrBr::Common;
-use FrBr::Books::Util::Serie;
use FrBr::Books::Util::Book;
=head1 NAME
$c->session->{'serie_list_page'} = $page;
}
- my ( $liste, $anzahl ) = get_serienliste( $c, 'get_books' => 1, 'page' => $page );
+ my ( $liste, $anzahl ) = $c->b_get_serienliste( 'get_books' => 1, 'page' => $page );
$c->log->debug( get_output_string( $K, "Erhaltene Liste der Buchserien: ", $liste ) ) if $c->stash->{'debug_level'} >= 2;
$c->stash->{'serien'} = $liste;
}
# Angaben zur Buchserie aus der Datenbank holen
- my $sliste = get_serienliste( $c, 'get_books' => 1, 'serien_id' => $sid );
+ my $sliste = $c->b_get_serienliste( 'get_books' => 1, 'serien_id' => $sid );
$c->log->debug( get_output_string( $K, "Erhaltene Serienliste: ", $sliste ) ) if $c->stash->{'debug_level'} >= 2;
unless ( $sliste and scalar( @$sliste ) ) {
$c->session->{'delete_serie_id'} = $sid;
# Angaben zur Buchserie aus der Datenbank holen
- my $sliste = get_serienliste( $c, 'serien_id' => $sid );
+ my $sliste = $c->b_get_serienliste( 'serien_id' => $sid );
$c->log->debug( get_output_string( $K, "Erhaltene Serienliste: ", $sliste ) ) if $c->stash->{'debug_level'} >= 2;
unless ( $sliste and scalar( @$sliste ) ) {
if ( $c->request->params->{'really_delete_serie'} and $c->request->params->{'really_delete_serie'} eq 'yes' and $c->request->params->{'do_delete'} ) {
eval {
- delete_serie( $c, $sid );
+ $c->b_delete_serie( $sid );
};
if ( $@ ) {
$c->stash->{'error_message'} = $@;
return 1;
}
- my $sliste = get_serienliste( $c, 'get_books' => 1, 'serien_id' => $sid );
+ my $sliste = $c->b_get_serienliste( 'get_books' => 1, 'serien_id' => $sid );
$c->log->debug( get_output_string( $K, "Erhaltene Serienliste: ", $sliste ) ) if $c->stash->{'debug_level'} >= 2;
unless ( $sliste and scalar( @$sliste ) ) {
my $sid = undef;
eval {
- $sid = save_serie( $c, $c->stash->{'serie_edit'} );
+ $sid = $c->b_save_serie( $c->stash->{'serie_edit'} );
die "Speichern der Buchserie mißlungen." unless $sid;
};
if ( $@ ) {
use warnings;
use base 'Catalyst::Controller';
use FrBr::Common;
-use FrBr::Books::Util::User;
=head1 NAME
$c->stash->{'books_in_other_list'} = $length;
}
- save_user_prefs($c) if $c->user_exists();
+ $c->b_save_user_prefs() if $c->user_exists();
}
use Carp qw/croak/;
use FrBr::Common;
-our $VERSION = '0.02';
+our $VERSION = '0.2';
{
my ($rev) = '$Revision$' =~ /(\d+)/;
$VERSION = sprintf( $VERSION . ".%d", $rev );
--- /dev/null
+package FrBr::Books::Plugin::Serie;
+
+# $Id$
+# $URL$
+
+use strict;
+use warnings;
+
+use Carp qw/croak/;
+use FrBr::Common;
+
+our $VERSION = '0.2';
+{
+ my ($rev) = '$Revision$' =~ /(\d+)/;
+ $VERSION = sprintf( $VERSION . ".%d", $rev );
+}
+
+# &get_serienliste
+# &save_serie
+# &delete_serie
+
+=head1 NAME
+
+FrBr::Books::Plugin::Serie - Modul fuer Funktionen rund um Buchserien
+
+=head1 METHODS
+
+=cut
+
+#-----------------------------------------------------------------------------------
+
+=head2 $c->b_get_serienliste( $params )
+
+Sammelt alle Buchserien zusammen.
+
+Folgende benannte Parameter koennen ueber $params uebergeben werden:
+
+=over 4
+
+=item B<get_books>
+
+Boolscher Parameter, der aussagt, dass auch die Buecher der Buchserie mit zuammengesammelt werden sollen.
+
+=item I<serien_id>: Die ID einer konkreten Buchserie
+
+=item B<page>
+
+Integer: Zeigt an, welche Seite von Verlagen dargestellt werden soll.
+
+Wenn nicht angegeben, werden alle Verlage zurückgegeben.
+
+=item B<list_length>
+
+Listenlänge einer Seite (wenn seitenweise gewünscht wird).
+
+=back
+
+Rueckgabe: Eine Array-Ref von Hash-Refs mit allen Buchserien, die den uebergebenen Suchkriterien entsprechen, sowie im Listenkontext die Anzahl der Buchserien, die den uebergebenen Suchkriterien entsprechen.
+
+Die zurueckgegebene Array-Ref hat folgenden Aufbau:
+
+ $res = [
+ {
+ 'id' => 1,
+ 'name' => 'Perry Rhodan',
+ 'descr' => 'Abenteuer des Weltraumspezis',
+ 'count_books' => 60,
+ 'book_ids' => [
+ 2,
+ 22,
+ ...
+ ],
+ 'books' => [
+ {
+ 'id' => 2,
+ 'serien_ord_num' => 60,
+ 'title' => 'Perry Rhodan - Die Cynos',
+ 'title_original' => undef,
+ 'untertitel' => undef,
+ 'bindungsart_id' => 1,
+ 'bindungsart' => 'Hartcover',
+ 'orts_id' => 4,
+ 'isbn' => undef,
+ 'verlags_id' => 2,
+ 'verlags_name' => 'Bertelsmann',
+ 'buch_nr' => '0820 4',
+ 'ausgabejahr' => '1997',
+ 'druckjahr' => '2007',
+ 'seiten' => 402,
+ 'preis' => 18,
+ 'waehrungs_id' => 1,
+ 'waehrungs_kuerzel' => '€',
+ 'waehrungs_name' => 'Euro',
+ 'umrechnung_in_euro' => 1,
+ 'ortsname' => 'Dachboden',
+ 'ort_beschreibung' => '',
+ 'ort_ist_statisch' => 'n',
+ 'autoren' => [ 'Verschiedene Autoren' ];
+ 'autor_ids' => [ 2 ];
+ },
+ {
+ 'id' => 22,
+ ...
+ },
+ ...
+ ],
+ },
+ { 'id' => 2,
+ ...
+ },
+ ...
+ ];
+
+Die Liste ist nach den Serien-Namen alphabetisch sortiert.
+
+Im Listenkontext wird als zweiter Rückgabewert die Gesamtzahl aller Buchserien zurueckgegeben.
+
+=cut
+
+sub b_get_serienliste {
+
+ my $c = shift;
+ my $K = ( caller(0) )[3] . "(): ";
+
+ $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+
+ my $params = {};
+ if ( ref($_[0]) and ref($_[0]) eq 'HASH' ) {
+ $params = $_[0];
+ }
+ else {
+ %$params = @_;
+ }
+ $c->log->debug( get_output_string( $K, "Uebergebene Parameter: ", $params ) ) if $c->stash->{'debug_level'} >= 2;
+
+ my $list = [];
+ my $anzahl_serien = 0;
+
+ my $page = to_int( $params->{'page'} ) ? to_int( $params->{'page'} ) : undef;
+ my $rows = to_int( $params->{'list_length'} ) ? to_int( $params->{'list_length'} ) : undef;
+ unless ( defined $rows ) {
+ $rows = $c->stash->{'list_length'} || 20 if defined $page;
+ }
+
+ my $search_params = undef;
+ if ( $params->{'serien_id'} ) {
+ $search_params = {
+ 'me.id' => $params->{'serien_id'},
+ };
+ }
+
+ $anzahl_serien = $c->model('Schema::Serien')->count( $search_params );
+ $c->log->debug( get_output_string( $K, "Anzahl gefundene Serien: ", $anzahl_serien ) ) if $c->stash->{'debug_level'} >= 2;
+
+ my $other_params = {};
+ $other_params->{'order_by'} = [ 'serien_name' ];
+ $other_params->{'select'} = [
+ 'me.id',
+ 'me.serien_name',
+ 'me.descr',
+ { 'count' => 'buch_serie.id' }
+ ];
+ $other_params->{'as'} = [
+ 'id',
+ 'serien_name',
+ 'descr',
+ 'count_books',
+ ];
+ $other_params->{'join'} = [ 'buch_serie'];
+ $other_params->{'group_by'} = [ 'id' ];
+
+ if ( $page ) {
+ $other_params->{'rows'} = $rows;
+ $other_params->{'page'} = $page;
+ }
+
+ for my $serie_rs ( $c->model('Schema::Serien')->search( $search_params, $other_params )->all() ) {
+ my $serie = {};
+ $serie->{'id'} = $serie_rs->id();
+ $serie->{'name'} = $serie_rs->serien_name();
+ $serie->{'descr'} = $serie_rs->descr();
+ $serie->{'count_books'} = $serie_rs->get_column('count_books');
+ push @$list, $serie;
+ }
+
+ return ( wantarray ? ( $list, 0 ) : $list ) unless scalar @$list;
+ return ( wantarray ? ( $list, $anzahl_serien ) : $list ) unless $params->{'get_books'};
+
+ for my $serie ( @$list ) {
+
+ $serie->{'books'} = [];
+ $serie->{'book_ids'} = [];
+
+ my $sid = $serie->{'id'};
+
+ $search_params = {
+ 'buch_serie.serien_id' => $sid,
+ };
+
+ $other_params = {};
+ $other_params->{'join'} = [ 'waehrung', 'ort', 'bindungsart', 'buch_serie', 'verlag', ];
+
+ $other_params->{'order_by'} = [ 'buch_serie.ord_num', 'me.title', ];
+
+ $other_params->{'select'} = [
+ 'me.id',
+ 'buch_serie.ord_num',
+ 'me.title',
+ 'me.title_original',
+ 'me.untertitel',
+ 'me.bindungsart_id',
+ 'bindungsart.art_name',
+ 'me.orts_id',
+ 'me.isbn',
+ 'me.verlags_id',
+ 'verlag.name_short',
+ 'me.buch_nr',
+ 'me.ausgabejahr',
+ 'me.druckjahr',
+ 'me.seiten',
+ 'me.preis',
+ 'me.waehrungs_id',
+ 'waehrung.waehrungs_kuerzel',
+ 'waehrung.waehrungs_name',
+ 'waehrung.umrechnung_in_euro',
+ 'ort.name',
+ 'ort.descr',
+ 'ort.statisch',
+ ];
+
+ $other_params->{'as'} = [
+ 'id',
+ 'serien_ord_num',
+ 'title',
+ 'title_original',
+ 'untertitel',
+ 'bindungsart_id',
+ 'bindungsart',
+ 'orts_id',
+ 'isbn',
+ 'verlags_id',
+ 'verlagsname',
+ 'buch_nr',
+ 'ausgabejahr',
+ 'druckjahr',
+ 'seiten',
+ 'preis',
+ 'waehrungs_id',
+ 'waehrungs_kuerzel',
+ 'waehrungs_name',
+ 'umrechnung_in_euro',
+ 'ortsname',
+ 'ort_beschreibung',
+ 'ort_ist_statisch',
+ ];
+
+ for my $book ( $c->model('Schema::Buecher')->search( $search_params, $other_params )->all() ) {
+
+ push @{ $serie->{'book_ids'} }, $book->id();
+
+ my $buch = {};
+ $buch->{'id'} = $book->id();
+ $buch->{'serien_ord_num'} = $book->get_column('serien_ord_num');
+ $buch->{'title'} = $book->title();
+ $buch->{'title_original'} = $book->title_original();
+ $buch->{'untertitel'} = $book->untertitel();
+ $buch->{'bindungsart_id'} = $book->bindungsart_id();
+ $buch->{'bindungsart'} = $book->get_column('bindungsart');
+ $buch->{'orts_id'} = $book->orts_id();
+ $buch->{'isbn'} = $book->isbn();
+ $buch->{'verlags_id'} = $book->verlags_id();
+ $buch->{'verlags_name'} = $book->get_column('verlagsname');
+ $buch->{'buch_nr'} = $book->buch_nr();
+ $buch->{'ausgabejahr'} = $book->ausgabejahr();
+ $buch->{'druckjahr'} = $book->druckjahr();
+ $buch->{'seiten'} = $book->seiten();
+ $buch->{'preis'} = $book->preis();
+ $buch->{'waehrungs_id'} = $book->waehrungs_id();
+ $buch->{'waehrungs_kuerzel'} = $book->get_column('waehrungs_kuerzel');
+ $buch->{'waehrungs_name'} = $book->get_column('waehrungs_name');
+ $buch->{'umrechnung_in_euro'} = $book->get_column('umrechnung_in_euro');
+ $buch->{'ortsname'} = $book->get_column('ortsname');
+ $buch->{'ort_beschreibung'} = $book->get_column('ort_beschreibung');
+ $buch->{'ort_ist_statisch'} = $book->get_column('ort_ist_statisch');
+ $buch->{'autoren'} = [];
+ $buch->{'autor_ids'} = [];
+
+ my $a_search_params = {};
+ $a_search_params->{'buch_id'} = $buch->{'id'};
+ $other_params = {};
+ $other_params->{'order_by'} = [ 'ord_num' ];
+ $other_params->{'join'} = [ 'autor' ];
+ $other_params->{'select'} = [
+ 'me.buch_id',
+ 'autor.id',
+ 'autor.titel',
+ 'autor.vorname',
+ 'autor.mittelname',
+ 'autor.nachname',
+ 'autor.name_suffix',
+ ];
+ $other_params->{'as'} = [
+ 'buch_id',
+ 'autor_id',
+ 'titel',
+ 'vorname',
+ 'mittelname',
+ 'nachname',
+ 'name_suffix',
+ ];
+ for my $ref ( $c->model('Schema::Autor2buch')->search( $a_search_params, $other_params )->all() ) {
+ my $aid = $ref->get_column('autor_id');
+ my @N;
+ push @N, $ref->get_column('titel') if $ref->get_column('titel');
+ push @N, $ref->get_column('vorname') if $ref->get_column('vorname');
+ push @N, $ref->get_column('mittelname') if $ref->get_column('mittelname');
+ push @N, $ref->get_column('nachname');
+ push @N, $ref->get_column('name_suffix') if $ref->get_column('name_suffix');
+ my $autor = join( " ", @N );
+ push @{ $buch->{'autoren'} }, $autor;
+ push @{ $buch->{'autor_ids'} }, $aid;
+ }
+
+ push @{ $serie->{'books'} }, $buch;
+
+ }
+ }
+
+ return ( wantarray ? ( $list, $anzahl_serien ) : $list );
+
+}
+
+#-----------------------------------------------------------------------------------
+
+=head2 $c->b_save_serie( $serie )
+
+=cut
+
+sub b_save_serie {
+
+ my $c = shift;
+ my $serie = shift;
+ my $K = ( caller(0) )[3] . "(): ";
+
+ $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+ $c->log->debug( get_output_string( $K, "Zu speichernde Serie: ", $serie ) ) if $c->stash->{'debug_level'} >= 2;
+
+ my $storage = $c->model('Schema')->storage;
+ my $save_books = ( $serie->{'id'} and $serie->{'book_ids'} and ref($serie->{'book_ids'}) and ref($serie->{'book_ids'}) eq 'ARRAY') ? 1 : 0;
+ $c->log->debug( $K . "Speichern der Bücher erforderlich: " . ( $save_books ? 'ja' : 'nein' ) . "." ) if $c->stash->{'debug_level'} > 2;
+
+ my $save_func = sub {
+ my ( $storage, $dbh, $serien_id, $serien_name, $serien_desc ) = @_;
+ my $sql = <<ENDE;
+INSERT INTO `serien` (
+ `id`, `serien_name`, `descr` )
+ VALUES (
+ ?, ?, ? )
+ ON DUPLICATE KEY UPDATE
+ `id` = LAST_INSERT_ID(`id`), `serien_name` = ?, `descr` = ?
+ENDE
+
+ if ( $storage->debug() ) {
+ my $text = $sql;
+ $text =~ s/\s+$//;
+ $text .= ": " . join( ", ", map { $dbh->quote($_) } ( $serien_id, $serien_name, $serien_desc, $serien_name, $serien_desc ) ) . "\n";
+ warn $text;
+ }
+
+ my $sth = $dbh->prepare($sql);
+ $sth->execute( $serien_id, $serien_name, $serien_desc, $serien_name, $serien_desc );
+ };
+
+ $storage->dbh_do( $save_func, $serie->{'id'}, $serie->{'name'}, $serie->{'descr'} );
+ my $serien_id = $storage->last_insert_id();
+ return $serien_id unless $serien_id;
+
+ $c->b_save_serien_buecher( $c, $serien_id, $serie->{'book_ids'} ) if $save_books;
+
+ return $serien_id;
+
+}
+
+#-----------------------------------------------------------------------------------
+
+=head2 $c->b_save_serien_buecher( $serien_id, @$book_ids )
+
+=cut
+
+sub b_save_serien_buecher {
+
+ my $c = shift;
+ my $serien_id = shift;
+ my $book_ids = shift;
+
+ my $K = ( caller(0) )[3] . "(): ";
+ $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+
+ my $storage = $c->model('Schema')->storage;
+ my $dbh = $storage->dbh();
+
+ my $anzahl = 0;
+ $anzahl = scalar( @$book_ids );
+
+ my $in = '';
+ $in = '(' . join( ", ", map { $dbh->quote($_) } @$book_ids ) . ")" if $anzahl;
+
+ my $sql;
+ $sql = <<ENDE;
+DELETE FROM `buch2serie`
+ WHERE `serien_id` = ?
+ENDE
+ $sql .= " AND `buch_id` NOT IN " . $in . "\n" if $anzahl;
+
+ my $qparams = [];
+ push @$qparams, $serien_id;
+
+ if ( $storage->debug() ) {
+ my $text = $sql;
+ $text =~ s/\s+$//;
+ $text .= ": " . join( ", ", map { $dbh->quote($_) } @$qparams ) . "\n";
+ warn $text;
+ }
+
+ my $sth = $dbh->prepare($sql);
+ $sth->execute( @$qparams );
+
+ return 1 unless $anzahl;
+
+ my $i = 0;
+
+ $sql = <<ENDE;
+INSERT INTO `buch2serie` (
+ `buch_id`, `serien_id`, `ord_num`
+ ) VALUES (
+ ?, ?, ? )
+ ON DUPLICATE KEY UPDATE
+ `ord_num` = ?
+ENDE
+
+ $sth = $dbh->prepare($sql);
+
+ for my $buch_id ( @$book_ids ) {
+
+ $qparams = [];
+ push @$qparams, $buch_id;
+ push @$qparams, $serien_id;
+ push @$qparams, $i;
+ push @$qparams, $i;
+
+ if ( $storage->debug() ) {
+ my $text = $sql;
+ $text =~ s/\s+$//;
+ $text .= ": " . join( ", ", map { $dbh->quote($_) } @$qparams ) . "\n";
+ warn $text;
+ }
+
+ $sth->execute( @$qparams );
+
+ $i++;
+ }
+
+}
+
+#-----------------------------------------------------------------------------------
+
+=head2 $c->b_delete_serie( $serien_id )
+
+Loescht die Buchserie mit der uebergebenen Serien-Id
+
+=cut
+
+sub b_delete_serie {
+
+ my $c = shift;
+ my $serien_id = shift;
+ my $K = ( caller(0) )[3] . "(): ";
+
+ $c->log->debug( $K . "aufgerufen fuer Serien-Id " . ( defined $serien_id ? $serien_id : '<undef>' ) . "." ) if $c->stash->{'debug_level'} > 2;
+
+ return undef unless $serien_id and to_int($serien_id);
+ $serien_id = to_int($serien_id);
+
+ my $schema = $c->model('Schema')->{'schema'};
+
+ # Raus, wenn in der Serie noch Buecher sind ...
+ if ( $c->model('Schema::Buch2serie')->count( { 'serien_id' => $serien_id, } ) ) {
+ my $msg = 'In der Buchserie sind noch Bücher enthalten.';
+ die $msg . "\n";
+ }
+
+ # Das eigentliche Löschen
+ my $coderef = sub {
+ $c->model('Schema::Serien')->search( { 'id' => $serien_id } )->delete();
+ };
+
+ my $rs;
+ eval {
+ $rs = $schema->txn_do($coderef);
+ };
+
+ if ($@) { # Transaction failed
+ my $msg = $@ =~ /Rollback failed/i ? "Rollback nicht erfolgreich!" : $@;
+ die $msg . "\n";
+ return undef;
+ }
+ return 1;
+
+}
+
+#-----------------------------------------------------------------------------------
+
+=head1 AUTHOR
+
+Frank Brehm
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+
+1;
+
+__END__
+
+# vim: noai : ts=4 fenc=utf-8 filetype=perl expandtab :
--- /dev/null
+package FrBr::Books::Plugin::User;
+
+# $Id$
+# $URL$
+
+use strict;
+use warnings;
+
+use FrBr::Common;
+use YAML;
+
+our $VERSION = '0.2';
+{
+ my ($rev) = '$Revision$' =~ /(\d+)/;
+ $VERSION = sprintf( $VERSION . ".%d", $rev );
+}
+
+=head1 NAME
+
+FrBr::Books::Plugin::User - Modul fuer Funktionen rund um benutzer
+
+=head1 METHODS
+
+=cut
+
+#-----------------------------------------------------------------------------------
+
+=head2 $c->b_save_user_prefs()
+
+Sichert die Einstellungen eines angemeldeten Benutzers
+
+=cut
+
+sub b_save_user_prefs {
+
+ my $c = shift;
+ my $K = ( caller(0) )[3] . "(): ";
+ $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+
+ return undef unless $c->user_exists();
+ my $user_id = $c->user->get('user_id');
+ $c->log->debug( $K . "Suche User-ID: ", ( defined $user_id ? $user_id : '<undef>' ) ) if $c->stash->{'debug_level'} > 2;
+
+ my $prefs = {};
+
+ # allgemeine Listenlänge
+ $prefs->{'list_length'} = $c->stash->{'list_length'};
+
+ # Sortierkriterien der Buchliste
+ $prefs->{'book_order_criteria'} = $c->session->{'book_order_criteria'} if $c->session->{'book_order_criteria'};
+
+ # Filter für Buchliste speichern
+ $prefs->{'booklist_filter'} = $c->session->{'booklist_filter'} if $c->session->{'booklist_filter'};
+
+ # Anzahl der angezeigten zugeordneten Bücher in einer anderen Liste
+ $prefs->{'books_in_other_list'} = $c->stash->{'books_in_other_list'};
+
+ my $dump = Dump($prefs);
+ $c->model('Schema::UserAdd')->search( { 'user_id' => $user_id } )->update( { 'prefs' => $dump } ) ;
+
+ return 1;
+
+}
+
+#-----------------------------------------------------------------------------------
+
+=head2 $c->b_restore_user_prefs()
+
+Holt die Einstellungen aus der Nutzertablle raus und beamt diese in die aktuelle Session
+
+=cut
+
+sub b_restore_user_prefs {
+
+ my $c = shift;
+ my $K = ( caller(0) )[3] . "(): ";
+ my $k = $c->stash->{'debug_level'} ? $K : '';
+ $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+
+ return undef unless $c->user_exists();
+ my $user_id = $c->user->get('user_id');
+ $c->log->debug( $K . "Suche User-ID: ", ( defined $user_id ? $user_id : '<undef>' ) ) if $c->stash->{'debug_level'} > 2;
+
+ my $prefs = undef;
+ my $dump = undef;
+
+ $dump = $c->model('Schema::UserAdd')->search( { 'user_id' => $user_id } )->first()->prefs();
+
+ return unless $dump;
+ eval {
+ $prefs = Load($dump);
+ };
+ if ( $@ ) {
+ $c->log->warn( $k . "Fehler beim Restore der Nutzereinstellungen: " . $@ );
+ return;
+ }
+ return unless $prefs;
+
+ if ( $prefs->{'list_length'} ) {
+
+ # Seite der Buchliste
+ delete $c->session->{'book_list_page'} if exists $c->session->{'book_list_page'};
+
+ # allgemeine Listenlänge
+ if ( $prefs->{'list_length'} ) {
+ $c->stash->{'list_length'} = $prefs->{'list_length'};
+ $c->session->{'list_length'} = $prefs->{'list_length'};
+ }
+
+ # Anzahl der angezeigten zugeordneten Bücher in einer anderen Liste
+ if ( $prefs->{'books_in_other_list'} ) {
+ $c->stash->{'books_in_other_list'} = $prefs->{'books_in_other_list'};
+ $c->session->{'books_in_other_list'} = $prefs->{'books_in_other_list'};
+ }
+
+ }
+
+ # Sortierkriterien der Buchliste
+ $c->session->{'book_order_criteria'} = $prefs->{'book_order_criteria'} if $prefs->{'book_order_criteria'};
+
+ # Filter für Buchliste speichern
+ $c->session->{'booklist_filter'} = undef;
+ $c->session->{'booklist_filter'} = $prefs->{'booklist_filter'} if $prefs->{'booklist_filter'};
+
+ return 1;
+
+}
+
+#-----------------------------------------------------------------------------------
+
+=head1 AUTHOR
+
+Frank Brehm
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+
+1;
+
+__END__
+
+# vim: noai : ts=4 fenc=utf-8 filetype=perl expandtab :
+++ /dev/null
-package FrBr::Books::Util::Serie;
-
-# $Id$
-# $URL$
-
-use strict;
-use warnings;
-
-use FrBr::Common;
-
-# Export-Deklarationen
-
-BEGIN {
-
- use Exporter();
- our ( $VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS );
-
- # set the version for version checking
- $VERSION = 0.1;
- my ($rev) = '$Revision$' =~ /(\d+)/;
- $VERSION = sprintf( $VERSION . ".%d", $rev );
-
- @ISA = qw(Exporter);
- @EXPORT = qw(
- &get_serienliste
- &save_serie
- &delete_serie
- );
-
- #%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
-
- # your exported package globals go here,
- # as well as any optionally exported functions
- #@EXPORT_OK = qw($Var1 %Hashit &func3);
-} ## end BEGIN
-
-our @EXPORT_OK;
-
-=head1 NAME
-
-FrBr::Books::Util::Serie - Modul fuer Funktionen rund um Buchserien
-
-=head1 METHODS
-
-=cut
-
-#-----------------------------------------------------------------------------------
-
-=head2 get_serienliste( $c, $params )
-
-Sammelt alle Buchserien zusammen.
-
-Folgende benannte Parameter koennen ueber $params uebergeben werden:
-
-=over 4
-
-=item B<get_books>
-
-Boolscher Parameter, der aussagt, dass auch die Buecher der Buchserie mit zuammengesammelt werden sollen.
-
-=item I<serien_id>: Die ID einer konkreten Buchserie
-
-=item B<page>
-
-Integer: Zeigt an, welche Seite von Verlagen dargestellt werden soll.
-
-Wenn nicht angegeben, werden alle Verlage zurückgegeben.
-
-=back
-
-Rueckgabe: Eine Array-Ref von Hash-Refs mit allen Buchserien, die den uebergebenen Suchkriterien entsprechen, sowie im Listenkontext die Anzahl der Buchserien, die den uebergebenen Suchkriterien entsprechen.
-
-Die zurueckgegebene Array-Ref hat folgenden Aufbau:
-
- $res = [
- {
- 'id' => 1,
- 'name' => 'Perry Rhodan',
- 'descr' => 'Abenteuer des Weltraumspezis',
- 'count_books' => 60,
- 'book_ids' => [
- 2,
- 22,
- ...
- ],
- 'books' => [
- {
- 'id' => 2,
- 'serien_ord_num' => 60,
- 'title' => 'Perry Rhodan - Die Cynos',
- 'title_original' => undef,
- 'untertitel' => undef,
- 'bindungsart_id' => 1,
- 'bindungsart' => 'Hartcover',
- 'orts_id' => 4,
- 'isbn' => undef,
- 'verlags_id' => 2,
- 'verlags_name' => 'Bertelsmann',
- 'buch_nr' => '0820 4',
- 'ausgabejahr' => '1997',
- 'druckjahr' => '2007',
- 'seiten' => 402,
- 'preis' => 18,
- 'waehrungs_id' => 1,
- 'waehrungs_kuerzel' => '€',
- 'waehrungs_name' => 'Euro',
- 'umrechnung_in_euro' => 1,
- 'ortsname' => 'Dachboden',
- 'ort_beschreibung' => '',
- 'ort_ist_statisch' => 'n',
- 'autoren' => [ 'Verschiedene Autoren' ];
- 'autor_ids' => [ 2 ];
- },
- {
- 'id' => 22,
- ...
- },
- ...
- ],
- },
- { 'id' => 2,
- ...
- },
- ...
- ];
-
-Die Liste ist nach den Serien-Namen alphabetisch sortiert.
-
-Im Listenkontext wird als zweiter Rückgabewert die Gesamtzahl aller Buchserien zurueckgegeben.
-
-=cut
-
-sub get_serienliste {
-
- my $c = shift;
- my $K = ( caller(0) )[3] . "(): ";
-
- $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
-
- my $params = {};
- if ( ref($_[0]) and ref($_[0]) eq 'HASH' ) {
- $params = $_[0];
- }
- else {
- %$params = @_;
- }
- $c->log->debug( get_output_string( $K, "Uebergebene Parameter: ", $params ) ) if $c->stash->{'debug_level'} >= 2;
-
- my $list = [];
- my $anzahl_serien = 0;
-
- my $page = to_int( $params->{'page'} ) ? to_int( $params->{'page'} ) : undef;
- my $rows = undef;
- $rows = $c->stash->{'list_length'} || 20 if defined $page;
-
- my $search_params = undef;
- if ( $params->{'serien_id'} ) {
- $search_params = {
- 'me.id' => $params->{'serien_id'},
- };
- }
-
- $anzahl_serien = $c->model('Schema::Serien')->count( $search_params );
- $c->log->debug( get_output_string( $K, "Anzahl gefundene Serien: ", $anzahl_serien ) ) if $c->stash->{'debug_level'} >= 2;
-
- my $other_params = {};
- $other_params->{'order_by'} = [ 'serien_name' ];
- $other_params->{'select'} = [
- 'me.id',
- 'me.serien_name',
- 'me.descr',
- { 'count' => 'buch_serie.id' }
- ];
- $other_params->{'as'} = [
- 'id',
- 'serien_name',
- 'descr',
- 'count_books',
- ];
- $other_params->{'join'} = [ 'buch_serie'];
- $other_params->{'group_by'} = [ 'id' ];
-
- if ( $page ) {
- $other_params->{'rows'} = $rows;
- $other_params->{'page'} = $page;
- }
-
- for my $serie_rs ( $c->model('Schema::Serien')->search( $search_params, $other_params )->all() ) {
- my $serie = {};
- $serie->{'id'} = $serie_rs->id();
- $serie->{'name'} = $serie_rs->serien_name();
- $serie->{'descr'} = $serie_rs->descr();
- $serie->{'count_books'} = $serie_rs->get_column('count_books');
- push @$list, $serie;
- }
-
- return ( wantarray ? ( $list, 0 ) : $list ) unless scalar @$list;
- return ( wantarray ? ( $list, $anzahl_serien ) : $list ) unless $params->{'get_books'};
-
- for my $serie ( @$list ) {
-
- $serie->{'books'} = [];
- $serie->{'book_ids'} = [];
-
- my $sid = $serie->{'id'};
-
- $search_params = {
- 'buch_serie.serien_id' => $sid,
- };
-
- $other_params = {};
- $other_params->{'join'} = [ 'waehrung', 'ort', 'bindungsart', 'buch_serie', 'verlag', ];
-
- $other_params->{'order_by'} = [ 'buch_serie.ord_num', 'me.title', ];
-
- $other_params->{'select'} = [
- 'me.id',
- 'buch_serie.ord_num',
- 'me.title',
- 'me.title_original',
- 'me.untertitel',
- 'me.bindungsart_id',
- 'bindungsart.art_name',
- 'me.orts_id',
- 'me.isbn',
- 'me.verlags_id',
- 'verlag.name_short',
- 'me.buch_nr',
- 'me.ausgabejahr',
- 'me.druckjahr',
- 'me.seiten',
- 'me.preis',
- 'me.waehrungs_id',
- 'waehrung.waehrungs_kuerzel',
- 'waehrung.waehrungs_name',
- 'waehrung.umrechnung_in_euro',
- 'ort.name',
- 'ort.descr',
- 'ort.statisch',
- ];
-
- $other_params->{'as'} = [
- 'id',
- 'serien_ord_num',
- 'title',
- 'title_original',
- 'untertitel',
- 'bindungsart_id',
- 'bindungsart',
- 'orts_id',
- 'isbn',
- 'verlags_id',
- 'verlagsname',
- 'buch_nr',
- 'ausgabejahr',
- 'druckjahr',
- 'seiten',
- 'preis',
- 'waehrungs_id',
- 'waehrungs_kuerzel',
- 'waehrungs_name',
- 'umrechnung_in_euro',
- 'ortsname',
- 'ort_beschreibung',
- 'ort_ist_statisch',
- ];
-
- for my $book ( $c->model('Schema::Buecher')->search( $search_params, $other_params )->all() ) {
-
- push @{ $serie->{'book_ids'} }, $book->id();
-
- my $buch = {};
- $buch->{'id'} = $book->id();
- $buch->{'serien_ord_num'} = $book->get_column('serien_ord_num');
- $buch->{'title'} = $book->title();
- $buch->{'title_original'} = $book->title_original();
- $buch->{'untertitel'} = $book->untertitel();
- $buch->{'bindungsart_id'} = $book->bindungsart_id();
- $buch->{'bindungsart'} = $book->get_column('bindungsart');
- $buch->{'orts_id'} = $book->orts_id();
- $buch->{'isbn'} = $book->isbn();
- $buch->{'verlags_id'} = $book->verlags_id();
- $buch->{'verlags_name'} = $book->get_column('verlagsname');
- $buch->{'buch_nr'} = $book->buch_nr();
- $buch->{'ausgabejahr'} = $book->ausgabejahr();
- $buch->{'druckjahr'} = $book->druckjahr();
- $buch->{'seiten'} = $book->seiten();
- $buch->{'preis'} = $book->preis();
- $buch->{'waehrungs_id'} = $book->waehrungs_id();
- $buch->{'waehrungs_kuerzel'} = $book->get_column('waehrungs_kuerzel');
- $buch->{'waehrungs_name'} = $book->get_column('waehrungs_name');
- $buch->{'umrechnung_in_euro'} = $book->get_column('umrechnung_in_euro');
- $buch->{'ortsname'} = $book->get_column('ortsname');
- $buch->{'ort_beschreibung'} = $book->get_column('ort_beschreibung');
- $buch->{'ort_ist_statisch'} = $book->get_column('ort_ist_statisch');
- $buch->{'autoren'} = [];
- $buch->{'autor_ids'} = [];
-
- my $a_search_params = {};
- $a_search_params->{'buch_id'} = $buch->{'id'};
- $other_params = {};
- $other_params->{'order_by'} = [ 'ord_num' ];
- $other_params->{'join'} = [ 'autor' ];
- $other_params->{'select'} = [
- 'me.buch_id',
- 'autor.id',
- 'autor.titel',
- 'autor.vorname',
- 'autor.mittelname',
- 'autor.nachname',
- 'autor.name_suffix',
- ];
- $other_params->{'as'} = [
- 'buch_id',
- 'autor_id',
- 'titel',
- 'vorname',
- 'mittelname',
- 'nachname',
- 'name_suffix',
- ];
- for my $ref ( $c->model('Schema::Autor2buch')->search( $a_search_params, $other_params )->all() ) {
- my $aid = $ref->get_column('autor_id');
- my @N;
- push @N, $ref->get_column('titel') if $ref->get_column('titel');
- push @N, $ref->get_column('vorname') if $ref->get_column('vorname');
- push @N, $ref->get_column('mittelname') if $ref->get_column('mittelname');
- push @N, $ref->get_column('nachname');
- push @N, $ref->get_column('name_suffix') if $ref->get_column('name_suffix');
- my $autor = join( " ", @N );
- push @{ $buch->{'autoren'} }, $autor;
- push @{ $buch->{'autor_ids'} }, $aid;
- }
-
- push @{ $serie->{'books'} }, $buch;
-
- }
- }
-
- return ( wantarray ? ( $list, $anzahl_serien ) : $list );
-
-}
-
-#-----------------------------------------------------------------------------------
-
-=head2 save_serie( $c, $serie )
-
-=cut
-
-sub save_serie {
-
- my $c = shift;
- my $serie = shift;
- my $K = ( caller(0) )[3] . "(): ";
-
- $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
- $c->log->debug( get_output_string( $K, "Zu speichernde Serie: ", $serie ) ) if $c->stash->{'debug_level'} >= 2;
-
- my $storage = $c->stash->{'storage'};
- my $save_books = ( $serie->{'id'} and $serie->{'book_ids'} and ref($serie->{'book_ids'}) and ref($serie->{'book_ids'}) eq 'ARRAY') ? 1 : 0;
- $c->log->debug( $K . "Speichern der Bücher erforderlich: " . ( $save_books ? 'ja' : 'nein' ) . "." ) if $c->stash->{'debug_level'} > 2;
-
- my $save_func = sub {
- my ( $storage, $dbh, $serien_id, $serien_name, $serien_desc ) = @_;
- my $sql = <<ENDE;
-INSERT INTO `serien` (
- `id`, `serien_name`, `descr` )
- VALUES (
- ?, ?, ? )
- ON DUPLICATE KEY UPDATE
- `id` = LAST_INSERT_ID(`id`), `serien_name` = ?, `descr` = ?
-ENDE
-
- if ( $storage->debug() ) {
- my $text = $sql;
- $text =~ s/\s+$//;
- $text .= ": " . join( ", ", map { $dbh->quote($_) } ( $serien_id, $serien_name, $serien_desc, $serien_name, $serien_desc ) ) . "\n";
- warn $text;
- }
-
- my $sth = $dbh->prepare($sql);
- $sth->execute( $serien_id, $serien_name, $serien_desc, $serien_name, $serien_desc );
- };
-
- $storage->dbh_do( $save_func, $serie->{'id'}, $serie->{'name'}, $serie->{'descr'} );
- my $serien_id = $storage->last_insert_id();
- return $serien_id unless $serien_id;
-
- save_serien_buecher( $c, $serien_id, $serie->{'book_ids'} ) if $save_books;
-
- return $serien_id;
-
-}
-
-#-----------------------------------------------------------------------------------
-
-=head2 save_serien_buecher( $c, $serien_id, @$book_ids )
-
-=cut
-
-sub save_serien_buecher {
-
- my $c = shift;
- my $serien_id = shift;
- my $book_ids = shift;
-
- my $K = ( caller(0) )[3] . "(): ";
- $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
-
- my $storage = $c->stash->{'storage'};
- my $dbh = $storage->dbh();
-
- my $anzahl = 0;
- $anzahl = scalar( @$book_ids );
-
- my $in = '';
- $in = '(' . join( ", ", map { $dbh->quote($_) } @$book_ids ) . ")" if $anzahl;
-
- my $sql;
- $sql = <<ENDE;
-DELETE FROM `buch2serie`
- WHERE `serien_id` = ?
-ENDE
- $sql .= " AND `buch_id` NOT IN " . $in . "\n" if $anzahl;
-
- my $qparams = [];
- push @$qparams, $serien_id;
-
- if ( $storage->debug() ) {
- my $text = $sql;
- $text =~ s/\s+$//;
- $text .= ": " . join( ", ", map { $dbh->quote($_) } @$qparams ) . "\n";
- warn $text;
- }
-
- my $sth = $dbh->prepare($sql);
- $sth->execute( @$qparams );
-
- return 1 unless $anzahl;
-
- my $i = 0;
-
- $sql = <<ENDE;
-INSERT INTO `buch2serie` (
- `buch_id`, `serien_id`, `ord_num`
- ) VALUES (
- ?, ?, ? )
- ON DUPLICATE KEY UPDATE
- `ord_num` = ?
-ENDE
-
- $sth = $dbh->prepare($sql);
-
- for my $buch_id ( @$book_ids ) {
-
- $qparams = [];
- push @$qparams, $buch_id;
- push @$qparams, $serien_id;
- push @$qparams, $i;
- push @$qparams, $i;
-
- if ( $storage->debug() ) {
- my $text = $sql;
- $text =~ s/\s+$//;
- $text .= ": " . join( ", ", map { $dbh->quote($_) } @$qparams ) . "\n";
- warn $text;
- }
-
- $sth->execute( @$qparams );
-
- $i++;
- }
-
-}
-
-#-----------------------------------------------------------------------------------
-
-=head2 delete_serie( $c, $serien_id )
-
-Loescht die Buchserie mit der uebergebenen Serien-Id
-
-=cut
-
-sub delete_serie {
-
- my $c = shift;
- my $serien_id = shift;
- my $K = ( caller(0) )[3] . "(): ";
-
- $c->log->debug( $K . "aufgerufen fuer Serien-Id " . ( defined $serien_id ? $serien_id : '<undef>' ) . "." ) if $c->stash->{'debug_level'} > 2;
-
- return undef unless $serien_id and to_int($serien_id);
- $serien_id = to_int($serien_id);
-
- my $schema = $c->model('Schema')->{'schema'};
-
- # Raus, wenn in der Serie noch Buecher sind ...
- if ( $c->model('Schema::Buch2serie')->count( { 'serien_id' => $serien_id, } ) ) {
- my $msg = 'In der Buchserie sind noch Bücher enthalten.';
- die $msg . "\n";
- }
-
- # Das eigentliche Löschen
- my $coderef = sub {
- $c->model('Schema::Serien')->search( { 'id' => $serien_id } )->delete();
- };
-
- my $rs;
- eval {
- $rs = $schema->txn_do($coderef);
- };
-
- if ($@) { # Transaction failed
- my $msg = $@ =~ /Rollback failed/i ? "Rollback nicht erfolgreich!" : $@;
- die $msg . "\n";
- return undef;
- }
- return 1;
-
-}
-
-#-----------------------------------------------------------------------------------
-
-=head1 AUTHOR
-
-Frank Brehm
-
-=head1 LICENSE
-
-This library is free software, you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-
-1;
-
-__END__
-
-# vim: noai : ts=4 fenc=utf-8 filetype=perl expandtab :
+++ /dev/null
-package FrBr::Books::Util::User;
-
-# $Id$
-# $URL$
-
-use strict;
-use warnings;
-
-use FrBr::Common;
-use YAML;
-
-# Export-Deklarationen
-
-BEGIN {
-
- use Exporter();
- our ( $VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS );
-
- # set the version for version checking
- $VERSION = 0.1;
- my ($rev) = '$Revision$' =~ /(\d+)/;
- $VERSION = sprintf( $VERSION . ".%d", $rev );
-
- @ISA = qw(Exporter);
- @EXPORT = qw(
- &save_user_prefs
- &restore_user_prefs
- );
-
- #%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
-
- # your exported package globals go here,
- # as well as any optionally exported functions
- #@EXPORT_OK = qw($Var1 %Hashit &func3);
-} ## end BEGIN
-
-our @EXPORT_OK;
-
-=head1 NAME
-
-FrBr::Books::Util::User - Modul fuer Funktionen rund um benutzer
-
-=head1 METHODS
-
-=cut
-
-#-----------------------------------------------------------------------------------
-
-=head2 save_user_prefs( $c )
-
-Sichert die Einstellungen eines angemeldeten Benutzers
-
-=cut
-
-sub save_user_prefs {
-
- my $c = shift;
- my $K = ( caller(0) )[3] . "(): ";
- $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
-
- return undef unless $c->user_exists();
- my $user_id = $c->user->get('user_id');
- $c->log->debug( $K . "Suche User-ID: ", ( defined $user_id ? $user_id : '<undef>' ) ) if $c->stash->{'debug_level'} > 2;
-
- my $prefs = {};
-
- # allgemeine Listenlänge
- $prefs->{'list_length'} = $c->stash->{'list_length'};
-
- # Sortierkriterien der Buchliste
- $prefs->{'book_order_criteria'} = $c->session->{'book_order_criteria'} if $c->session->{'book_order_criteria'};
-
- # Filter für Buchliste speichern
- $prefs->{'booklist_filter'} = $c->session->{'booklist_filter'} if $c->session->{'booklist_filter'};
-
- # Anzahl der angezeigten zugeordneten Bücher in einer anderen Liste
- $prefs->{'books_in_other_list'} = $c->stash->{'books_in_other_list'};
-
- my $dump = Dump($prefs);
- $c->model('Schema::UserAdd')->search( { 'user_id' => $user_id } )->update( { 'prefs' => $dump } ) ;
-
- return 1;
-
-}
-
-#-----------------------------------------------------------------------------------
-
-=head2 restore_user_prefs( $c )
-
-Holt die Einstellungen aus der Nutzertablle raus und beamt diese in die aktuelle Session
-
-=cut
-
-sub restore_user_prefs {
-
- my $c = shift;
- my $K = ( caller(0) )[3] . "(): ";
- my $k = $c->stash->{'debug_level'} ? $K : '';
- $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
-
- return undef unless $c->user_exists();
- my $user_id = $c->user->get('user_id');
- $c->log->debug( $K . "Suche User-ID: ", ( defined $user_id ? $user_id : '<undef>' ) ) if $c->stash->{'debug_level'} > 2;
-
- my $prefs = undef;
- my $dump = undef;
-
- $dump = $c->model('Schema::UserAdd')->search( { 'user_id' => $user_id } )->first()->prefs();
-
- return unless $dump;
- eval {
- $prefs = Load($dump);
- };
- if ( $@ ) {
- $c->log->warn( $k . "Fehler beim Restore der Nutzereinstellungen: " . $@ );
- return;
- }
- return unless $prefs;
-
- if ( $prefs->{'list_length'} ) {
-
- # Seite der Buchliste
- delete $c->session->{'book_list_page'} if exists $c->session->{'book_list_page'};
-
- # allgemeine Listenlänge
- if ( $prefs->{'list_length'} ) {
- $c->stash->{'list_length'} = $prefs->{'list_length'};
- $c->session->{'list_length'} = $prefs->{'list_length'};
- }
-
- # Anzahl der angezeigten zugeordneten Bücher in einer anderen Liste
- if ( $prefs->{'books_in_other_list'} ) {
- $c->stash->{'books_in_other_list'} = $prefs->{'books_in_other_list'};
- $c->session->{'books_in_other_list'} = $prefs->{'books_in_other_list'};
- }
-
- }
-
- # Sortierkriterien der Buchliste
- $c->session->{'book_order_criteria'} = $prefs->{'book_order_criteria'} if $prefs->{'book_order_criteria'};
-
- # Filter für Buchliste speichern
- $c->session->{'booklist_filter'} = undef;
- $c->session->{'booklist_filter'} = $prefs->{'booklist_filter'} if $prefs->{'booklist_filter'};
-
- return 1;
-
-}
-
-#-----------------------------------------------------------------------------------
-
-=head1 AUTHOR
-
-Frank Brehm
-
-=head1 LICENSE
-
-This library is free software, you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-
-1;
-
-__END__
-
-# vim: noai : ts=4 fenc=utf-8 filetype=perl expandtab :