A Context is an environment that deals with every persistance engines used by koha. It opens and maintains connexions to DBMS and zebra server relying to your ILS configuration (./koha-conf.xml by default). Many functions of the koha API uses a context set as default (stored in $C4::Context::context).
use C4::Context;
Executes the the C4::Context::import function and uses the $KOHA_CONF environment variable to correctly set a default context. You can get around $KOHA_CONF giving a filename by yourself.
use C4::Contexts '/home/koha/$_/etc/koha-conf.xml';
But what if you don't want to set a context at start? What if you want to connect to two koha bases in the same code? DIY: create your own context using C4::Context::new
use strict;
use warnings;
# where is koha ?
use lib '/usr/local/src/koha';
# just load C4::Context, don't create a default context
require C4::Context;
# create a function to easily switch context used by koha API.
sub with { $C4::Context::context = shift }
# create contexts
my %context;
for (qw( example1 example2 )) {
$context{$_} = C4::Context->new("/home/koha/$_/etc/koha-conf.xml");
}
# use contexts
for (qw( example1 example2 )) {
with($context{$_});
print "1st element of $_:\n", GetMarcBiblio(1)->as_formated;
}