[Koha-cvs] CVS: koha/C4 Shelf.pm,1.1,1.2

Steve Tonnesen tonnesen at users.sourceforge.net
Thu Oct 24 01:32:49 CEST 2002


Update of /cvsroot/koha/koha/C4
In directory usw-pr-cvs1:/tmp/cvs-serv21739/C4

Modified Files:
	Shelf.pm 
Log Message:
Added some more functionality to Shelf.pm (including the ability to actually
create a new shelf) and started a test script (Shelf.t)


Index: Shelf.pm
===================================================================
RCS file: /cvsroot/koha/koha/C4/Shelf.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** Shelf.pm	23 Oct 2002 22:21:09 -0000	1.1
--- Shelf.pm	23 Oct 2002 23:32:47 -0000	1.2
***************
*** 79,82 ****
--- 79,85 ----
    my $shelf=Shelf->new(-name => 'Favourite Books', -owner => 'sjohnson');
        will load sjohnson's "Favourite Books" bookshelf
+   
+   Any of the last four invocations will create a new shelf with the name and
+   owner given if one doesn't already exist.
  
  
***************
*** 95,103 ****
  
      if (@_) {
  	shift;
  	if ($#_ == 0) {
  	    $self->{ID}=shift;
  	    # load attributes of shelf #ID
- 	    my $dbh=C4::Context->dbh();
  	    my $sth;
  	    $sth=$dbh->prepare("select bookshelfname,bookshelfowner from bookshelves where bookshelfid=?");
--- 98,106 ----
  
      if (@_) {
+ 	my $dbh=C4::Context->dbh();
  	shift;
  	if ($#_ == 0) {
  	    $self->{ID}=shift;
  	    # load attributes of shelf #ID
  	    my $sth;
  	    $sth=$dbh->prepare("select bookshelfname,bookshelfowner from bookshelves where bookshelfid=?");
***************
*** 109,113 ****
  		$self->{ATTRIBUTES}->{$attribute}=$value;
  	    }
! 	} else {
  	    my ($name,$owner,$attributes);
  	    if ($_[0] =~/^-/) {
--- 112,116 ----
  		$self->{ATTRIBUTES}->{$attribute}=$value;
  	    }
! 	} elsif ($#_) {
  	    my ($name,$owner,$attributes);
  	    if ($_[0] =~/^-/) {
***************
*** 121,124 ****
--- 124,147 ----
  		$attributes=shift;
  	    }
+ 	    my $sth=$dbh->prepare("select bookshelfid from bookshelves where bookshelfname=? and bookshelfowner=?");
+ 	    $sth->execute($name, $owner);
+ 	    if ($sth->rows) {
+ 		($self->{ID})=$sth->fetchrow;
+ 		$sth=$dbh->prepare("select attribute,value from bookshelfattributes where bookshelfid=?");
+ 		$sth->execute($self->{ID});
+ 		while (my ($attribute,$value) = $sth->fetchrow) {
+ 		    $self->{ATTRIBUTES}->{$attribute}=$value;
+ 		}
+ 	    } else {
+ 		$sth=$dbh->prepare("insert into bookshelves (bookshelfname, bookshelfowner) values (?, ?)");
+ 		$sth->execute($name,$owner);
+ 		$sth=$dbh->prepare("select bookshelfid from bookshelves where bookshelfname=? and bookshelfowner=?");
+ 		$sth->execute($name,$owner);
+ 		($self->{ID})=$sth->fetchrow();
+ 		foreach my $attribute (keys %$attributes) {
+ 		    my $value=$attributes->{$attribute};
+ 		    $self->attribute($attribute,$value);
+ 		}
+ 	    }
  	}
      }
***************
*** 229,233 ****
  }
  
! sub clearshelf {
  }
  
--- 252,275 ----
  }
  
! 
! =head2 C<clearcontents()>
! 
! Removes all contents from the shelf.
! 
!     $shelf->clearcontents();
! 
! =cut
! 
! sub clearcontents {
!     my $self=shift;
!     my $dbh=C4::Context->dbh();
!     my $sth=$dbh->prepare("delete from bookshelfcontents where bookshelfid=?");
!     $sth->execute($self->{ID});
!     foreach my $level ('ITEM', 'BIBLIOITEM', 'BIBLIO') {
! 	delete $self->{$level."CONTENTS"};
! 	$self->{$level."CONTENTS"}={};
!     }
!     $self->clearcache();
! 
  }
  
***************
*** 278,284 ****
  =head2 C<attribute()>
  
! Returns the value of a given attribute for the shelf.
  
    my $loanlength=$shelf->attribute('loanlength');
  
  =cut
--- 320,328 ----
  =head2 C<attribute()>
  
! Returns or sets the value of a given attribute for the shelf.
  
    my $loanlength=$shelf->attribute('loanlength');
+   $shelf->attribute('loanlength', '21 days');
+ 
  
  =cut
***************
*** 286,290 ****
  sub attribute {
      my $self=shift;
!     my $attribute=shift;
      return $self->{ATTRIBUTES}->{$attribute};
  }
--- 330,349 ----
  sub attribute {
      my $self=shift;
!     my ($attribute, $value);
!     $attribute=shift;
!     $value=shift;
!     if ($value) {
! 	$self->{ATTRIBUTES}->{$attribute}=$value;
! 	my $dbh=C4::Context->dbh();
! 	my $sth=$dbh->prepare("select value from bookshelfattributes where bookshelfid=? and attribute=?");
! 	$sth->execute($self->{ID}, $attribute);
! 	if ($sth->rows) {
! 	    my $sti=$dbh->prepare("update bookshelfattributes set value=? where bookshelfid=? and attribute=?");
! 	    $sti->execute($value, $self->{ID}, $attribute);
! 	} else {
! 	    my $sti=$dbh->prepare("inesrt into bookshelfattributes (bookshelfid, attribute, value) values (?, ?, ?)");
! 	    $sti->execute($self->{ID}, $attribute, $value);
! 	}
!     }
      return $self->{ATTRIBUTES}->{$attribute};
  }





More information about the Koha-cvs mailing list