Bugzilla – Attachment 72417 Details for
Bug 18606
Move rotating collections code to Koha::Object
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 18606: Easy ones - CRUD
Bug-18606-Easy-ones---CRUD.patch (text/plain), 13.33 KB, created by
Josef Moravec
on 2018-03-05 11:17:58 UTC
(
hide
)
Description:
Bug 18606: Easy ones - CRUD
Filename:
MIME Type:
Creator:
Josef Moravec
Created:
2018-03-05 11:17:58 UTC
Size:
13.33 KB
patch
obsolete
>From 28e39fd694091261cd4d666f5553bb56e0a609da Mon Sep 17 00:00:00 2001 >From: Josef Moravec <josef.moravec@gmail.com> >Date: Fri, 14 Oct 2016 16:38:25 +0200 >Subject: [PATCH] Bug 18606: Easy ones - CRUD > >--- > C4/RotatingCollections.pm | 198 ---------------------------- > rotating_collections/addItems.pl | 15 ++- > rotating_collections/editCollections.pl | 98 +++++++------- > rotating_collections/rotatingCollections.pl | 5 +- > rotating_collections/transferCollection.pl | 14 +- > 5 files changed, 69 insertions(+), 261 deletions(-) > >diff --git a/C4/RotatingCollections.pm b/C4/RotatingCollections.pm >index 709eaf2..66a64c4 100644 >--- a/C4/RotatingCollections.pm >+++ b/C4/RotatingCollections.pm >@@ -48,15 +48,8 @@ BEGIN { > require Exporter; > @ISA = qw( Exporter ); > @EXPORT = qw( >- CreateCollection >- UpdateCollection >- DeleteCollection >- > GetItemsInCollection > >- GetCollection >- GetCollections >- > AddItemToCollection > RemoveItemFromCollection > TransferCollection >@@ -65,166 +58,6 @@ BEGIN { > ); > } > >-=head2 CreateCollection >- ( $success, $errorcode, $errormessage ) = CreateCollection( $title, $description ); >- Creates a new collection >- >- Input: >- $title: short description of the club or service >- $description: long description of the club or service >- >- Output: >- $success: 1 if all database operations were successful, 0 otherwise >- $errorCode: Code for reason of failure, good for translating errors in templates >- $errorMessage: English description of error >- >-=cut >- >-sub CreateCollection { >- my ( $title, $description ) = @_; >- >- my $schema = Koha::Database->new()->schema(); >- my $duplicate_titles = $schema->resultset('Collection')->count({ colTitle => $title }); >- >- ## Check for all necessary parameters >- if ( !$title ) { >- return ( 0, 1, "NO_TITLE" ); >- } elsif ( $duplicate_titles ) { >- return ( 0, 2, "DUPLICATE_TITLE" ); >- } >- >- $description ||= q{}; >- >- my $success = 1; >- >- my $dbh = C4::Context->dbh; >- >- my $sth; >- $sth = $dbh->prepare( >- "INSERT INTO collections ( colId, colTitle, colDesc ) >- VALUES ( NULL, ?, ? )" >- ); >- $sth->execute( $title, $description ) or return ( 0, 3, $sth->errstr() ); >- >- return 1; >- >-} >- >-=head2 UpdateCollection >- >- ( $success, $errorcode, $errormessage ) = UpdateCollection( $colId, $title, $description ); >- >-Updates a collection >- >- Input: >- $colId: id of the collection to be updated >- $title: short description of the club or service >- $description: long description of the club or service >- >- Output: >- $success: 1 if all database operations were successful, 0 otherwise >- $errorCode: Code for reason of failure, good for translating errors in templates >- $errorMessage: English description of error >- >-=cut >- >-sub UpdateCollection { >- my ( $colId, $title, $description ) = @_; >- >- my $schema = Koha::Database->new()->schema(); >- my $duplicate_titles = $schema->resultset('Collection')->count({ colTitle => $title, -not => { colId => $colId } }); >- >- ## Check for all necessary parameters >- if ( !$colId ) { >- return ( 0, 1, "NO_ID" ); >- } >- if ( !$title ) { >- return ( 0, 2, "NO_TITLE" ); >- } >- if ( $duplicate_titles ) { >- return ( 0, 3, "DUPLICATE_TITLE" ); >- } >- >- my $dbh = C4::Context->dbh; >- >- $description ||= q{}; >- >- my $sth; >- $sth = $dbh->prepare( >- "UPDATE collections >- SET >- colTitle = ?, colDesc = ? >- WHERE colId = ?" >- ); >- $sth->execute( $title, $description, $colId ) >- or return ( 0, 4, $sth->errstr() ); >- >- return 1; >- >-} >- >-=head2 DeleteCollection >- >- ( $success, $errorcode, $errormessage ) = DeleteCollection( $colId ); >- Deletes a collection of the given id >- >- Input: >- $colId : id of the Archetype to be deleted >- >- Output: >- $success: 1 if all database operations were successful, 0 otherwise >- $errorCode: Code for reason of failure, good for translating errors in templates >- $errorMessage: English description of error >- >-=cut >- >-sub DeleteCollection { >- my ($colId) = @_; >- >- ## Parameter check >- if ( !$colId ) { >- return ( 0, 1, "NO_ID" ); >- } >- >- my $dbh = C4::Context->dbh; >- >- my $sth; >- >- $sth = $dbh->prepare("DELETE FROM collections WHERE colId = ?"); >- $sth->execute($colId) or return ( 0, 4, $sth->errstr() ); >- >- return 1; >-} >- >-=head2 GetCollections >- >- $collections = GetCollections(); >- Returns data about all collections >- >- Output: >- On Success: >- $results: Reference to an array of associated arrays >- On Failure: >- $errorCode: Code for reason of failure, good for translating errors in templates >- $errorMessage: English description of error >- >-=cut >- >-sub GetCollections { >- >- my $dbh = C4::Context->dbh; >- >- my $sth = $dbh->prepare("SELECT * FROM collections"); >- $sth->execute() or return ( 1, $sth->errstr() ); >- >- my @results; >- while ( my $row = $sth->fetchrow_hashref ) { >- push( @results, $row ); >- } >- >- return \@results; >-} >- > =head2 GetItemsInCollection > > ( $results, $success, $errorcode, $errormessage ) = GetItemsInCollection( $colId ); >@@ -274,37 +107,6 @@ sub GetItemsInCollection { > return \@results; > } > >-=head2 GetCollection >- >- ( $colId, $colTitle, $colDesc, $colBranchcode ) = GetCollection( $colId ); >- >-Returns information about a collection >- >- Input: >- $colId: Id of the collection >- Output: >- $colId, $colTitle, $colDesc, $colBranchcode >- >-=cut >- >-sub GetCollection { >- my ($colId) = @_; >- >- my $dbh = C4::Context->dbh; >- >- my ( $sth, @results ); >- $sth = $dbh->prepare("SELECT * FROM collections WHERE colId = ?"); >- $sth->execute($colId) or return 0; >- >- my $row = $sth->fetchrow_hashref; >- >- return ( >- $$row{'colId'}, $$row{'colTitle'}, >- $$row{'colDesc'}, $$row{'colBranchcode'} >- ); >- >-} >- > =head2 AddItemToCollection > > ( $success, $errorcode, $errormessage ) = AddItemToCollection( $colId, $itemnumber ); >diff --git a/rotating_collections/addItems.pl b/rotating_collections/addItems.pl >index cd24d50..1a3f358 100755 >--- a/rotating_collections/addItems.pl >+++ b/rotating_collections/addItems.pl >@@ -24,6 +24,8 @@ use C4::Context; > use C4::RotatingCollections; > use C4::Items; > >+use Koha::RotatingCollections; >+ > use CGI qw ( -utf8 ); > > my $query = new CGI; >@@ -87,18 +89,19 @@ if ( $query->param('action') eq 'addItem' ) { > } > } > >-my ( $colId, $colTitle, $colDescription, $colBranchcode ) = >- GetCollection( $query->param('colId') ); >+my $colId = $query->param('colId'); >+my $collection = Koha::RotatingCollections->find($colId); >+ > my $collectionItems = GetItemsInCollection($colId); > if ($collectionItems) { > $template->param( collectionItemsLoop => $collectionItems ); > } > > $template->param( >- colId => $colId, >- colTitle => $colTitle, >- colDescription => $colDescription, >- colBranchcode => $colBranchcode, >+ colId => $collection->colId, >+ colTitle => $collection->colTitle, >+ colDescription => $collection->colDesc, >+ colBranchcode => $collection->colBranchcode, > ); > > output_html_with_http_headers $query, $cookie, $template->output; >diff --git a/rotating_collections/editCollections.pl b/rotating_collections/editCollections.pl >index c8ed8ed..6aa6c1c 100755 >--- a/rotating_collections/editCollections.pl >+++ b/rotating_collections/editCollections.pl >@@ -23,10 +23,13 @@ use CGI qw ( -utf8 ); > use C4::Output; > use C4::Auth; > use C4::Context; >- > use C4::RotatingCollections; > >+use Koha::RotatingCollections; >+ > my $query = new CGI; >+my $action = $query->param('action'); >+my @messages; > > my ( $template, $loggedinuser, $cookie ) = get_template_and_user( > { >@@ -39,79 +42,76 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( > } > ); > >-my $action = $query->param('action'); >-$template->param( action => $action ); >- > # Create new Collection > if ( $action eq 'create' ) { > my $title = $query->param('title'); > my $description = $query->param('description'); > >- my ( $createdSuccessfully, $errorCode, $errorMessage ) = >- CreateCollection( $title, $description ); >- >- $template->param( >- previousActionCreate => 1, >- createdTitle => $title, >+ my $collection = Koha::RotatingCollection->new( >+ { colTitle => $title, >+ colDesc => $description, >+ } > ); > >- if ($createdSuccessfully) { >- $template->param( createSuccess => 1 ); >- } >- else { >- $template->param( createFailure => 1 ); >- $template->param( failureMessage => $errorMessage ); >+ eval { $collection->store; }; >+ >+ if ($@) { >+ push @messages, { type => 'error', code => 'error_on_insert' }; >+ } else { >+ push @messages, { type => 'message', code => 'success_on_insert' }; > } >-} > >-## Delete a club or service >-elsif ( $action eq 'delete' ) { >+ $action = "list"; >+ >+} elsif ( $action eq 'delete' ) { # Delete collection > my $colId = $query->param('colId'); >- my ( $success, $errorCode, $errorMessage ) = DeleteCollection($colId); >+ my $collection = Koha::RotatingCollections->find($colId); >+ my $deleted = eval { $collection->delete; }; > >- $template->param( previousActionDelete => 1 ); >- if ($success) { >- $template->param( deleteSuccess => 1 ); >+ if ( $@ or not $deleted ) { >+ push @messages, { type => 'error', code => 'error_on_delete' }; >+ } else { >+ push @messages, { type => 'message', code => 'success_on_delete' }; > } >- else { >- $template->param( deleteFailure => 1 ); >- $template->param( failureMessage => $errorMessage ); >- } >-} > >-## Edit a club or service: grab data, put in form. >-elsif ( $action eq 'edit' ) { >- my ( $colId, $colTitle, $colDesc, $colBranchcode ) = GetCollection( $query->param('colId') ); >+ $action = "list"; >+ >+} elsif ( $action eq 'edit' ) { # Edit page of collection >+ my $collection = Koha::RotatingCollections->find($query->param('colId')); > > $template->param( > previousActionEdit => 1, >- editColId => $colId, >- editColTitle => $colTitle, >- editColDescription => $colDesc, >+ editColId => $collection->colId, >+ editColTitle => $collection->colTitle, >+ editColDescription => $collection->colDesc, > ); >-} > >-# Update a Club or Service >-elsif ( $action eq 'update' ) { >+} elsif ( $action eq 'update' ) { # Update collection > my $colId = $query->param('colId'); > my $title = $query->param('title'); > my $description = $query->param('description'); > >- my ( $createdSuccessfully, $errorCode, $errorMessage ) = >- UpdateCollection( $colId, $title, $description ); >+ if ($colId) { >+ my $collection = Koha::RotatingCollections->find($colId); >+ $collection->colTitle($title); >+ $collection->colDesc($description); > >- $template->param( >- previousActionUpdate => 1, >- updatedTitle => $title, >- ); >+ eval { $collection->store; }; > >- if ($createdSuccessfully) { >- $template->param( updateSuccess => 1 ); >- } >- else { >- $template->param( updateFailure => 1 ); >- $template->param( failureMessage => $errorMessage ); >+ if ($@) { >+ push @messages, { type => 'error', code => 'error_on_update' }; >+ } else { >+ push @messages, { type => 'message', code => 'success_on_update' }; >+ } >+ >+ $action = "list"; > } >+ > } > >+$template->param( >+ action => $action, >+ messages => \@messages, >+); >+ > output_html_with_http_headers $query, $cookie, $template->output; >diff --git a/rotating_collections/rotatingCollections.pl b/rotating_collections/rotatingCollections.pl >index acf4586..0092349 100755 >--- a/rotating_collections/rotatingCollections.pl >+++ b/rotating_collections/rotatingCollections.pl >@@ -23,7 +23,8 @@ use CGI qw ( -utf8 ); > use C4::Output; > use C4::Auth; > use C4::Context; >-use C4::RotatingCollections; >+ >+use Koha::RotatingCollections; > > my $query = new CGI; > >@@ -40,7 +41,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( > > my $branchcode = $query->cookie('branch'); > >-my $collections = GetCollections(); >+my $collections = Koha::RotatingCollections->search; > > $template->param( > collectionsLoop => $collections, >diff --git a/rotating_collections/transferCollection.pl b/rotating_collections/transferCollection.pl >index 49b09b3..8c48ed9 100755 >--- a/rotating_collections/transferCollection.pl >+++ b/rotating_collections/transferCollection.pl >@@ -23,6 +23,8 @@ use C4::Auth; > use C4::Context; > use C4::RotatingCollections; > >+use Koha::RotatingCollections; >+ > use CGI qw ( -utf8 ); > > my $query = new CGI; >@@ -60,13 +62,13 @@ if ($toBranch) { > } > > ## Get data about collection >-my ( $colTitle, $colDesc, $colBranchcode ); >-( $colId, $colTitle, $colDesc, $colBranchcode ) = GetCollection($colId); >+my $collection = Koha::RotatingCollections->find($colId); >+ > $template->param( >- colId => $colId, >- colTitle => $colTitle, >- colDesc => $colDesc, >- colBranchcode => $colBranchcode, >+ colId => $collection->colId, >+ colTitle => $collection->colTitle, >+ colDesc => $collection->colDesc, >+ colBranchcode => $collection->colBranchcode, > ); > > output_html_with_http_headers $query, $cookie, $template->output; >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 18606
:
63508
|
63509
|
63510
|
63511
|
63512
|
63513
|
63514
|
63515
|
63516
|
63517
|
63518
|
63519
|
63520
|
63521
|
63522
|
63523
|
63524
|
63525
|
63526
|
63527
|
63528
|
66227
|
66228
|
66229
|
66230
|
66231
|
66232
|
66233
|
66234
|
66235
|
66236
|
66237
|
66238
|
66239
|
66240
|
66241
|
66286
|
66287
|
66288
|
66289
|
66290
|
66291
|
66292
|
66293
|
66294
|
66295
|
66296
|
66297
|
66298
|
66299
|
66300
|
67734
|
67735
|
67736
|
67737
|
67738
|
67739
|
67740
|
67741
|
67742
|
67743
|
67744
|
67745
|
67746
|
67747
|
67748
|
67749
|
68428
|
68429
|
68430
|
68431
|
68432
|
68433
|
68434
|
68435
|
68436
|
68437
|
68438
|
68439
|
68440
|
68441
|
68442
|
68443
|
69709
|
69710
|
69711
|
69712
|
69713
|
69714
|
69715
|
69716
|
69717
|
69718
|
69719
|
69720
|
69721
|
69722
|
69723
|
69759
|
72416
|
72417
|
72418
|
72419
|
72420
|
72421
|
72422
|
72423
|
72424
|
72425
|
72426
|
72427
|
72428
|
72429
|
72430
|
72431
|
72572
|
72573
|
72574
|
72575
|
72576
|
72577
|
72578
|
72579
|
72580
|
72581
|
72582
|
72583
|
72584
|
72585
|
72586
|
72587
|
72816
|
79141
|
79142
|
79143
|
79144
|
79145
|
79146
|
79147
|
79148
|
79149
|
79150
|
79151
|
79152
|
79153
|
79154
|
79155
|
79156
|
79157
|
79158
|
79161