| Gantry documentation | Contained in the Gantry distribution. |
Gantry::Utils::DBConnHelper::MP20 - connection info and dbh cache manager for mod_perl 2.0
use Gantry::Utils::DBConnHelper::MP20;
# defined these PerlSetVars (as needed):
# dbconn
# dbuser
# dbpass
# auth_dbconn
# auth_dbuser
# auth_dbpass
When you use a model which inherits from Gantry::Utils::CDBI or Gantry::Utils::Model, using this module can help with database connection management. Feel free to implement your own subclass of Gantry::Utils::DBConnHelper if you need more control.
This module is designed to work with mod_perl 2.0. There is another module for mod_perl 1.3.
See Gantry::Utils::DBConnHelper for a description of the methods available here. But, note that there are no set_conn_info or set_auth_conn_info methods here. All values are taken from PerlSetVars.
If you do not define an auth_dbconn PerlSetVar, this module will return the regular connection information, if it is ever asked for auth connection information.
Here is a list of the methods in this module:
Phil Crow <philcrow2000@yahoo.com>
Copyright (c) 2005-6, Phil Crow.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.
| Gantry documentation | Contained in the Gantry distribution. |
package Gantry::Utils::DBConnHelper::MP20; use strict; use warnings; use Gantry::Conf; use base 'Gantry::Utils::DBConnHelper'; Gantry::Utils::DBConnHelper->set_subclass( 'Gantry::Utils::DBConnHelper::MP20' ); sub get_dbh { my $dbh; my $r = 'Apache2::RequestRec'; $dbh = $r->pnotes( "dbh" ); return $dbh; } sub set_dbh { my $class = shift; my $dbh = shift; my $r = 'Apache2::RequestRec'; $r->pnotes( "dbh", $dbh ); } sub _get_gantry_conf { my $r = shift; my $location = $r->location; my $instance = $r->dir_config( 'GantryConfInstance' ); my $conf; return unless defined $instance; my $gconf_file = $r->dir_config( 'GantryConfFile' ); # Check for a cached version first. $conf = $r->pnotes( "conf_${instance}_${location}" ); unless ($conf) { $conf = Gantry::Conf->retrieve( { instance => $instance, config_file => $gconf_file, } ); $r->pnotes( "conf_${instance}_${location}", $conf ); } return $conf; } sub get_conn_info { my $r = 'Apache2::RequestRec'; my $gantry_conf = _get_gantry_conf( $r ); if ( $gantry_conf ) { return { dbconn => $gantry_conf->{ 'dbconn' }, dbuser => $gantry_conf->{ 'dbuser' }, dbpass => $gantry_conf->{ 'dbpass' }, } } else { return { dbconn => $r->dir_config( 'dbconn' ), dbuser => $r->dir_config( 'dbuser' ), dbpass => $r->dir_config( 'dbpass' ), } } } #---------------------------------------------------------------- # Methods for auth connections #---------------------------------------------------------------- sub get_auth_dbh { my $auth_dbh; my $r = 'Apache2::RequestRec'; $auth_dbh = $r->pnotes( "auth_dbh" ); return $auth_dbh; } sub set_auth_dbh { my $class = shift; my $auth_dbh = shift; my $r = 'Apache2::RequestRec'; if ( not $Apache::ServerStarting ) { $r->pnotes( "auth_dbh", $auth_dbh ); } } sub get_auth_conn_info { my $r = 'Apache2::RequestRec'; my $gantry_conf = _get_gantry_conf( $r ); my $auth_conn; $auth_conn->{ auth_dbconn } = $gantry_conf->{ 'auth_dbconn' } || $r->dir_config( 'auth_dbconn' ) || $gantry_conf->{ 'dbconn' } || $r->dir_config( 'dbconn' ); $auth_conn->{ auth_dbuser } = $gantry_conf->{ 'auth_dbuser' } || $r->dir_config( 'auth_dbuser' ) || $gantry_conf->{ 'dbuser' } || $r->dir_config( 'dbuser' ); $auth_conn->{ auth_dbpass } = $gantry_conf->{ 'auth_dbpass' } || $r->dir_config( 'auth_dbpass' ) || $gantry_conf->{ 'dbpass' } || $r->dir_config( 'dbpass' ); return $auth_conn; } 1;