| Lines 97-105
          environment variable to the pathname of a configuration file to use.
      
      
        Link Here | 
        
          | 97 | #    file (/etc/koha/koha-conf.xml). | 97 | #    file (/etc/koha/koha-conf.xml). | 
        
          | 98 | # dbh | 98 | # dbh | 
        
          | 99 | #    A handle to the appropriate database for this context. | 99 | #    A handle to the appropriate database for this context. | 
            
              | 100 | # dbh_stack |  |  | 
            
              | 101 | #    Used by &set_dbh and &restore_dbh to hold other database | 
            
              | 102 | #    handles for this context. | 
        
          | 103 | # Zconn | 100 | # Zconn | 
        
          | 104 | #     A connection object for the Zebra server | 101 | #     A connection object for the Zebra server | 
        
          | 105 |  | 102 |  | 
  
    | Lines 601-614
          Returns a database handle connected to the Koha database for the
      
      
        Link Here | 
        
          | 601 | current context. If no connection has yet been made, this method | 598 | current context. If no connection has yet been made, this method | 
        
          | 602 | creates one, and connects to the database. | 599 | creates one, and connects to the database. | 
        
          | 603 |  | 600 |  | 
            
              | 604 | This database handle is cached for future use: if you call |  |  | 
            
              | 605 | C<C4::Context-E<gt>dbh> twice, you will get the same handle both | 
            
              | 606 | times. If you need a second database handle, use C<&new_dbh> and | 
            
              | 607 | possibly C<&set_dbh>. | 
            
              | 608 |  | 
        
          | 609 | =cut | 601 | =cut | 
        
          | 610 |  | 602 |  | 
            
              | 611 | #' |  |  | 
        
          | 612 | sub dbh | 603 | sub dbh | 
        
          | 613 | { | 604 | { | 
        
          | 614 |     my $self = shift; | 605 |     my $self = shift; | 
  
    | Lines 642-699
          sub new_dbh
      
      
        Link Here | 
        
          | 642 |     return &dbh({ new => 1 }); | 633 |     return &dbh({ new => 1 }); | 
        
          | 643 | } | 634 | } | 
        
          | 644 |  | 635 |  | 
            
              | 645 | =head2 set_dbh |  |  | 
            
              | 646 |  | 
            
              | 647 |   $my_dbh = C4::Connect->new_dbh; | 
            
              | 648 |   C4::Connect->set_dbh($my_dbh); | 
            
              | 649 |   ... | 
            
              | 650 |   C4::Connect->restore_dbh; | 
            
              | 651 |  | 
            
              | 652 | C<&set_dbh> saves the current database handle on a stack, then sets | 
            
              | 653 | the current database handle to C<$my_dbh>. | 
            
              | 654 |  | 
            
              | 655 | C<$my_dbh> is assumed to be a good database handle. | 
            
              | 656 |  | 
            
              | 657 | =cut | 
            
              | 658 |  | 
            
              | 659 | #' | 
            
              | 660 | sub set_dbh | 
            
              | 661 | { | 
            
              | 662 |     my $self = shift; | 
            
              | 663 |     my $new_dbh = shift; | 
            
              | 664 |  | 
            
              | 665 |     # Save the current database handle on the handle stack. | 
            
              | 666 |     # We assume that $new_dbh is all good: if the caller wants to | 
            
              | 667 |     # screw himself by passing an invalid handle, that's fine by | 
            
              | 668 |     # us. | 
            
              | 669 |     push @{$context->{"dbh_stack"}}, $context->{"dbh"}; | 
            
              | 670 |     $context->{"dbh"} = $new_dbh; | 
            
              | 671 | } | 
            
              | 672 |  | 
            
              | 673 | =head2 restore_dbh | 
            
              | 674 |  | 
            
              | 675 |   C4::Context->restore_dbh; | 
            
              | 676 |  | 
            
              | 677 | Restores the database handle saved by an earlier call to | 
            
              | 678 | C<C4::Context-E<gt>set_dbh>. | 
            
              | 679 |  | 
            
              | 680 | =cut | 
            
              | 681 |  | 
            
              | 682 | #' | 
            
              | 683 | sub restore_dbh | 
            
              | 684 | { | 
            
              | 685 |     my $self = shift; | 
            
              | 686 |  | 
            
              | 687 |     if ($#{$context->{"dbh_stack"}} < 0) | 
            
              | 688 |     { | 
            
              | 689 |         # Stack underflow | 
            
              | 690 |         die "DBH stack underflow"; | 
            
              | 691 |     } | 
            
              | 692 |  | 
            
              | 693 |     # Pop the old database handle and set it. | 
            
              | 694 |     $context->{"dbh"} = pop @{$context->{"dbh_stack"}}; | 
            
              | 695 | } | 
            
              | 696 |  | 
        
          | 697 | =head2 userenv | 636 | =head2 userenv | 
        
          | 698 |  | 637 |  | 
        
          | 699 |   C4::Context->userenv; | 638 |   C4::Context->userenv; | 
            
              | 700 | -  |  |  |