[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Koha-cvs] koha/C4 Date.pm Koha.pm Members.pm
From: |
paul poulain |
Subject: |
[Koha-cvs] koha/C4 Date.pm Koha.pm Members.pm |
Date: |
Fri, 14 Apr 2006 09:32:57 +0000 |
CVSROOT: /cvsroot/koha
Module name: koha
Branch:
Changes by: paul poulain <address@hidden> 06/04/14 09:32:57
Modified files:
C4 : Date.pm Koha.pm Members.pm
Log message:
improvements from SAN Ouest Provence :
* introducing a category_type into categories. It can be A (adult), C
(children), P (Professionnal), I (institution/organisation).
* each category_type has it's own forms to create members.
* the borrowers table has been heavily modified (many fields changed),
to get something more logic & readable
* reintroducing guarantor/guanrantee system that is now independant
from hardcoded C/A for categories
* updating templates to fit template rules
(see mail feb, 17 on koha-devel "new features for borrowers" for more
details)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/koha/C4/Date.pm.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/koha/koha/C4/Koha.pm.diff?tr1=1.30&tr2=1.31&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/koha/koha/C4/Members.pm.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
Patches:
Index: koha/C4/Date.pm
diff -u koha/C4/Date.pm:1.14 koha/C4/Date.pm:1.15
--- koha/C4/Date.pm:1.14 Thu Apr 13 08:36:42 2006
+++ koha/C4/Date.pm Fri Apr 14 09:32:57 2006
@@ -18,6 +18,7 @@
&display_date_format
&format_date
&format_date_in_iso
+ &today
get_date_format_string_for_DHTMLcalendar
);
@@ -143,4 +144,22 @@
return $newdate;
}
+
+#function to return a current date OUEST-PROVENCE
+sub today
+{
+ my ($adddate) address@hidden;
+ my($j,$m,$a)=(localtime)[3,4,5];
+ if ($j<10) {
+ $j= '0'.$j;
+ }
+ $m=$m+1;
+ if ($m<10){
+ $m= '0'.$m
+ }
+ $a=$a+1900+$adddate;
+ return format_date("$a-$m-$j");
+}
+
+
1;
Index: koha/C4/Koha.pm
diff -u koha/C4/Koha.pm:1.30 koha/C4/Koha.pm:1.31
--- koha/C4/Koha.pm:1.30 Fri Apr 7 11:10:25 2006
+++ koha/C4/Koha.pm Fri Apr 14 09:32:57 2006
@@ -35,9 +35,6 @@
$date = slashifyDate("01-01-2002")
- $ethnicity = fixEthnicity('asian');
- ($categories, $labels) = borrowercategories();
- ($categories, $labels) = ethnicitycategories();
=head1 DESCRIPTION
@@ -51,9 +48,6 @@
@ISA = qw(Exporter);
@EXPORT = qw(
- &fixEthnicity
- &borrowercategories &getborrowercategory
- ðnicitycategories
&subfield_is_koha_internal_p
&getbranches &getbranch &getbranchdetail
&getprinters &getprinter
@@ -66,109 +60,14 @@
getitemtypeimagedir
getitemtypeimagesrc
getitemtypeimagesrcfromurl
+ &getcities
+ &getroadtypes
$DEBUG);
use vars qw();
my $DEBUG = 0;
-# removed slashifyDate => useless
-
-=head2 fixEthnicity
-
- $ethn_name = &fixEthnicity($ethn_code);
-
-Takes an ethnicity code (e.g., "european" or "pi") and returns the
-corresponding descriptive name from the C<ethnicity> table in the
-Koha database ("European" or "Pacific Islander").
-
-=cut
-#'
-
-sub fixEthnicity($) {
-
- my $ethnicity = shift;
- my $dbh = C4::Context->dbh;
- my $sth=$dbh->prepare("Select name from ethnicity where code = ?");
- $sth->execute($ethnicity);
- my $data=$sth->fetchrow_hashref;
- $sth->finish;
- return $data->{'name'};
-}
-
-=head2 borrowercategories
-
- ($codes_arrayref, $labels_hashref) = &borrowercategories();
-
-Looks up the different types of borrowers in the database. Returns two
-elements: a reference-to-array, which lists the borrower category
-codes, and a reference-to-hash, which maps the borrower category codes
-to category descriptions.
-
-=cut
-#'
-
-sub borrowercategories {
- my $dbh = C4::Context->dbh;
- my $sth=$dbh->prepare("Select categorycode,description from categories
order by description");
- $sth->execute;
- my %labels;
- my @codes;
- while (my $data=$sth->fetchrow_hashref){
- push @codes,$data->{'categorycode'};
- $labels{$data->{'categorycode'}}=$data->{'description'};
- }
- $sth->finish;
- return(address@hidden,\%labels);
-}
-
-=item getborrowercategory
-
- $description = &getborrowercategory($categorycode);
-
-Given the borrower's category code, the function returns the corresponding
-description for a comprehensive information display.
-
-=cut
-
-sub getborrowercategory
-{
- my ($catcode) = @_;
- my $dbh = C4::Context->dbh;
- my $sth = $dbh->prepare("SELECT description FROM categories WHERE
categorycode = ?");
- $sth->execute($catcode);
- my $description = $sth->fetchrow();
- $sth->finish();
- return $description;
-} # sub getborrowercategory
-
-
-=head2 ethnicitycategories
-
- ($codes_arrayref, $labels_hashref) = ðnicitycategories();
-
-Looks up the different ethnic types in the database. Returns two
-elements: a reference-to-array, which lists the ethnicity codes, and a
-reference-to-hash, which maps the ethnicity codes to ethnicity
-descriptions.
-
-=cut
-#'
-
-sub ethnicitycategories {
- my $dbh = C4::Context->dbh;
- my $sth=$dbh->prepare("Select code,name from ethnicity order by name");
- $sth->execute;
- my %labels;
- my @codes;
- while (my $data=$sth->fetchrow_hashref){
- push @codes,$data->{'code'};
- $labels{$data->{'code'}}=$data->{'name'};
- }
- $sth->finish;
- return(address@hidden,\%labels);
-}
-
# FIXME.. this should be moved to a MARC-specific module
sub subfield_is_koha_internal_p ($) {
my($subfield) = @_;
@@ -655,90 +554,102 @@
=cut
sub getalllanguages {
- my $type=shift;
- my $theme=shift;
- my $htdocs;
- my @languages;
- if ($type eq 'opac') {
- $htdocs=C4::Context->config('opachtdocs');
- if ($theme and -d "$htdocs/$theme") {
- opendir D, "$htdocs/$theme";
- foreach my $language (readdir D) {
- next if $language=~/^\./;
- next if $language eq 'all';
- next if $language=~ /png$/;
- next if $language=~ /css$/;
- push @languages, $language;
- }
- return sort @languages;
- } else {
- my $lang;
- foreach my $theme (getallthemes('opac')) {
- opendir D, "$htdocs/$theme";
- foreach my $language (readdir D) {
- next if $language=~/^\./;
- next if $language eq 'all';
- next if $language=~ /png$/;
- next if $language=~ /css$/;
- $lang->{$language}=1;
+ my $type=shift;
+ my $theme=shift;
+ my $htdocs;
+ my @languages;
+ if ($type eq 'opac') {
+ $htdocs=C4::Context->config('opachtdocs');
+ if ($theme and -d "$htdocs/$theme") {
+ opendir D, "$htdocs/$theme";
+ foreach my $language (readdir D) {
+ next if $language=~/^\./;
+ next if $language eq 'all';
+ next if $language=~ /png$/;
+ next if $language=~ /css$/;
+ next if $language=~ /CVS$/;
+ next if $language=~ /itemtypeimg$/;
+ push @languages, $language;
+ }
+ return sort @languages;
+ } else {
+ my $lang;
+ foreach my $theme (getallthemes('opac')) {
+ opendir D, "$htdocs/$theme";
+ foreach my $language (readdir D) {
+ next if $language=~/^\./;
+ next if $language eq 'all';
+ next if $language=~ /png$/;
+ next if $language=~ /css$/;
+ next if $language=~ /CVS$/;
+ next if $language=~ /itemtypeimg$/;
+ $lang->{$language}=1;
+ }
+ }
+ @languages=keys %$lang;
+ return sort @languages;
}
- }
- @languages=keys %$lang;
- return sort @languages;
- }
- } elsif ($type eq 'intranet') {
- $htdocs=C4::Context->config('intrahtdocs');
- if ($theme and -d "$htdocs/$theme") {
- opendir D, "$htdocs/$theme";
- foreach my $language (readdir D) {
- next if $language=~/^\./;
- next if $language eq 'all';
- next if $language=~ /png$/;
- next if $language=~ /css$/;
- push @languages, $language;
- }
- return sort @languages;
- } else {
- my $lang;
- foreach my $theme (getallthemes('opac')) {
+ } elsif ($type eq 'intranet') {
+ $htdocs=C4::Context->config('intrahtdocs');
+ if ($theme and -d "$htdocs/$theme") {
+ opendir D, "$htdocs/$theme";
+ foreach my $language (readdir D) {
+ next if $language=~/^\./;
+ next if $language eq 'all';
+ next if $language=~ /png$/;
+ next if $language=~ /css$/;
+ next if $language=~ /CVS$/;
+ next if $language=~ /itemtypeimg$/;
+ push @languages, $language;
+ }
+ return sort @languages;
+ } else {
+ my $lang;
+ foreach my $theme (getallthemes('opac')) {
+ opendir D, "$htdocs/$theme";
+ foreach my $language (readdir D) {
+ next if $language=~/^\./;
+ next if $language eq 'all';
+ next if $language=~ /png$/;
+ next if $language=~ /css$/;
+ next if $language=~ /CVS$/;
+ next if $language=~ /itemtypeimg$/;
+ $lang->{$language}=1;
+ }
+ }
+ @languages=keys %$lang;
+ return sort @languages;
+ }
+ } else {
+ my $lang;
+ my $htdocs=C4::Context->config('intrahtdocs');
+ foreach my $theme (getallthemes('intranet')) {
+ opendir D, "$htdocs/$theme";
+ foreach my $language (readdir D) {
+ next if $language=~/^\./;
+ next if $language eq 'all';
+ next if $language=~ /png$/;
+ next if $language=~ /css$/;
+ next if $language=~ /CVS$/;
+ next if $language=~ /itemtypeimg$/;
+ $lang->{$language}=1;
+ }
+ }
+ $htdocs=C4::Context->config('opachtdocs');
+ foreach my $theme (getallthemes('opac')) {
opendir D, "$htdocs/$theme";
foreach my $language (readdir D) {
- next if $language=~/^\./;
- next if $language eq 'all';
+ next if $language=~/^\./;
+ next if $language eq 'all';
next if $language=~ /png$/;
next if $language=~ /css$/;
- $lang->{$language}=1;
+ next if $language=~ /CVS$/;
+ next if $language=~ /itemtypeimg$/;
+ $lang->{$language}=1;
+ }
}
- }
- @languages=keys %$lang;
- return sort @languages;
- }
- } else {
- my $lang;
- my $htdocs=C4::Context->config('intrahtdocs');
- foreach my $theme (getallthemes('intranet')) {
- opendir D, "$htdocs/$theme";
- foreach my $language (readdir D) {
- next if $language=~/^\./;
- next if $language eq 'all';
- next if $language=~ /png$/;
- next if $language=~ /css$/;
- $lang->{$language}=1;
- }
- }
- $htdocs=C4::Context->config('opachtdocs');
- foreach my $theme (getallthemes('opac')) {
- opendir D, "$htdocs/$theme";
- foreach my $language (readdir D) {
- next if $language=~/^\./;
- next if $language eq 'all';
- next if $language=~ /png$/;
- next if $language=~ /css$/;
- $lang->{$language}=1;
- }
- }
- @languages=keys %$lang;
- return sort @languages;
+ @languages=keys %$lang;
+ return sort @languages;
}
}
@@ -781,6 +692,81 @@
return int(($nb_items - 1) / $nb_items_per_page) + 1;
}
+
+=head2 getcities (OUEST-PROVENCE)
+
+ ($id_cityarrayref, $city_hashref) = &getcities();
+
+Looks up the different city and zip in the database. Returns two
+elements: a reference-to-array, which lists the zip city
+codes, and a reference-to-hash, which maps the name of the city.
+WHERE =>OUEST PROVENCE OR EXTERIEUR
+
+=cut
+sub getcities {
+ #my ($type_city) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("Select cityid,city_name from cities order by cityid
");
+ #$sth->execute($type_city);
+ $sth->execute();
+ my %city;
+ my @id;
+# insert empty value to create a empty choice in cgi popup
+
+while (my $data=$sth->fetchrow_hashref){
+
+ push @id,$data->{'cityid'};
+ $city{$data->{'cityid'}}=$data->{'city_name'};
+ }
+
+ #test to know if the table contain some records if no the function
return nothing
+ my address@hidden;
+ $sth->finish;
+ if ($id eq 0)
+ {
+ return();
+ }
+ else{
+ unshift (@id ,"");
+ return(address@hidden,\%city);
+ }
+}
+
+
+=head2 getroadtypes (OUEST-PROVENCE)
+
+ ($idroadtypearrayref, $roadttype_hashref) = &getroadtypes();
+
+Looks up the different road type . Returns two
+elements: a reference-to-array, which lists the id_roadtype
+codes, and a reference-to-hash, which maps the road type of the road .
+
+
+=cut
+sub getroadtypes {
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("Select roadtypeid,road_type from roadtype order by
road_type ");
+ $sth->execute();
+ my %roadtype;
+ my @id;
+# insert empty value to create a empty choice in cgi popup
+while (my $data=$sth->fetchrow_hashref){
+ push @id,$data->{'roadtypeid'};
+ $roadtype{$data->{'roadtypeid'}}=$data->{'road_type'};
+ }
+ #test to know if the table contain some records if no the function
return nothing
+ my address@hidden;
+ $sth->finish;
+ if ($id eq 0)
+ {
+ return();
+ }
+ else{
+ unshift (@id ,"");
+ return(address@hidden,\%roadtype);
+ }
+}
+
1;
__END__
Index: koha/C4/Members.pm
diff -u koha/C4/Members.pm:1.13 koha/C4/Members.pm:1.14
--- koha/C4/Members.pm:1.13 Mon Apr 3 23:45:00 2006
+++ koha/C4/Members.pm Fri Apr 14 09:32:57 2006
@@ -24,6 +24,7 @@
use C4::Context;
use Date::Manip;
use C4::Date;
+use Digest::MD5 qw(md5_base64);
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
@@ -49,8 +50,13 @@
@EXPORT = qw();
@EXPORT = qw(
- &BornameSearch &getmember &borrdata &borrdata2 &fixup_cardnumber
&findguarantees &findguarantor &NewBorrowerNumber &modmember &newmember
&changepassword &borrissues &allissues
+ &BornameSearch &getmember &borrdata &borrdata2 &fixup_cardnumber
&findguarantees &findguarantor &GuarantornameSearch &NewBorrowerNumber
&modmember &newmember &changepassword &borrissues &allissues
+ &checkuniquemember &getzipnamecity &getidcity &getguarantordata
&getcategorytype
+ &calcexpirydate &checkuserpassword
&getboracctrecord
+ &borrowercategories &getborrowercategory
+ &fixEthnicity
+ ðnicitycategories
);
@@ -187,19 +193,20 @@
my $dbh = C4::Context->dbh;
my $sth;
if ($bornum eq ''){
- $sth=$dbh->prepare("Select * from borrowers where cardnumber=?");
+ $sth=$dbh->prepare("Select borrowers.*,categories.category_type from
borrowers left join categories on
borrowers.categorycode=categories.categorycode where cardnumber=?");
$sth->execute($cardnumber);
} else {
- $sth=$dbh->prepare("Select * from borrowers where borrowernumber=?");
+ $sth=$dbh->prepare("Select borrowers.*,categories.category_type from
borrowers left join categories on
borrowers.categorycode=categories.categorycode where borrowernumber=?");
$sth->execute($bornum);
}
my $data=$sth->fetchrow_hashref;
+ warn "DATA".$data->{category_type};
$sth->finish;
if ($data) {
return($data);
} else { # try with firstname
if ($cardnumber) {
- my $sth=$dbh->prepare("select * from borrowers where
firstname=?");
+ my $sth=$dbh->prepare("Select
borrowers.*,categories.category_type from borrowers left join categories on
borrowers.categorycode=categories.categorycode where firstname=?");
$sth->execute($cardnumber);
my $data=$sth->fetchrow_hashref;
$sth->finish;
@@ -283,34 +290,59 @@
sub newmember {
my (%data) = @_;
my $dbh = C4::Context->dbh;
+ $data{'userid'}='' unless $data{'password'};
+ $data{'password'}=md5_base64($data{'password'}) if $data{'password'};
$data{'dateofbirth'}=format_date_in_iso($data{'dateofbirth'});
- $data{'joining'} = &ParseDate("today") unless $data{'joining'};
- $data{'joining'}=format_date_in_iso($data{'joining'});
- # if expirydate is not set, calculate it from borrower category
subscription duration
- unless ($data{'expiry'}) {
- my $sth = $dbh->prepare("select enrolmentperiod from categories
where categorycode=?");
- $sth->execute($data{'categorycode'});
- my ($enrolmentperiod) = $sth->fetchrow;
- $enrolmentperiod = 12 unless ($enrolmentperiod);
- $data{'expiry'} = &DateCalc($data{'joining'},"$enrolmentperiod
years");
- }
- $data{'expiry'}=format_date_in_iso($data{'expiry'});
-# $data{'borrowernumber'}=NewBorrowerNumber();
- my $query="insert into borrowers
(title,expiry,cardnumber,sex,ethnotes,streetaddress,faxnumber,
-
firstname,altnotes,dateofbirth,contactname,emailaddress,textmessaging,dateenrolled,streetcity,
-
altrelationship,othernames,phoneday,categorycode,city,area,phone,borrowernotes,altphone,surname,
-
initials,ethnicity,physstreet,branchcode,zipcode,homezipcode,sort1,sort2)
values ('$data{'title'}','$data{'expiry'}','$data{'cardnumber'}',
-
'$data{'sex'}','$data{'ethnotes'}','$data{'streetaddress'}','$data{'faxnumber'}',
-
'$data{'firstname'}','$data{'altnotes'}','$data{'dateofbirth'}','$data{'contactname'}','$data{'emailaddress'}','$data{'textmessaging'}',
-
'$data{'joining'}','$data{'streetcity'}','$data{'altrelationship'}','$data{'othernames'}',
-
'$data{'phoneday'}','$data{'categorycode'}','$data{'city'}','$data{'area'}','$data{'phone'}',
-
'$data{'borrowernotes'}','$data{'altphone'}','$data{'surname'}','$data{'initials'}',
-
'$data{'ethnicity'}','$data{'physstreet'}','$data{'branchcode'}','$data{'zipcode'}','$data{'homezipcode'}','$data{'sort1'}','$data{'sort2'}')";
+ $data{'dateenrolled'}=format_date_in_iso($data{'dateenrolled'});
+ $data{expiry}=format_date_in_iso($data{expiry});
+my $query="insert into borrowers set
cardnumber=".$dbh->quote($data{'cardnumber'}).
+
",surname=".$dbh->quote($data{'surname'}).
+
",firstname=".$dbh->quote($data{'firstname'}).
+
",title=".$dbh->quote($data{'title'}).
+
",othernames=".$dbh->quote($data{'othernames'}).
+
",initials=".$dbh->quote($data{'initials'}).
+
",streetnumber=".$dbh->quote($data{'streetnumber'}).
+
",streettype=".$dbh->quote($data{'streettype'}).
+
",address=".$dbh->quote($data{'address'}).
+
",address2=".$dbh->quote($data{'address2'}).
+
",zipcode=".$dbh->quote($data{'zipcode'}).
+
",city=".$dbh->quote($data{'city'}).
+
",phone=".$dbh->quote($data{'phone'}).
+
",email=".$dbh->quote($data{'email'}).
+
",mobile=".$dbh->quote($data{'mobile'}).
+
",phonepro=".$dbh->quote($data{'phonepro'}).
+
",opacnote=".$dbh->quote($data{'opacnote'}).
+
",guarantorid=".$dbh->quote($data{'guarantorid'}).
+
",dateofbirth=".$dbh->quote($data{'dateofbirth'}).
+
",branchcode=".$dbh->quote($data{'branchcode'}).
+
",categorycode=".$dbh->quote($data{'categorycode'}).
+
",dateenrolled=".$dbh->quote($data{'dateenrolled'}).
+
",contactname=".$dbh->quote($data{'contactname'}).
+
",borrowernotes=".$dbh->quote($data{'borrowernotes'}).
+
",dateexpiry=".$dbh->quote($data{'dateexpiry'}).
+
",contactnote=".$dbh->quote($data{'contactnote'}).
+
",b_address=".$dbh->quote($data{'b_address'}).
+
",b_zipcode=".$dbh->quote($data{'b_zipcode'}).
+
",b_city=".$dbh->quote($data{'b_city'}).
+
",b_phone=".$dbh->quote($data{'b_phone'}).
+
",b_email=".$dbh->quote($data{'b_email'},).
+
",password=".$dbh->quote($data{'password'}).
+
",userid=".$dbh->quote($data{'userid'}).
+
",sort1=".$dbh->quote($data{'sort1'}).
+
",sort2=".$dbh->quote($data{'sort2'}).
+
",contacttitle=".$dbh->quote($data{'contacttitle'}).
+
",emailpro=".$dbh->quote($data{'emailpro'}).
+
",contactfirstname=".$dbh->quote($data{'contactfirstname'}).
+
",sex=".$dbh->quote($data{'sex'}).
+
",fax=".$dbh->quote($data{'fax'}).
+
",flags=".$dbh->quote($data{'flags'}).
+
",relationship=".$dbh->quote($data{'relationship'})
+ ;
my $sth=$dbh->prepare($query);
$sth->execute;
$sth->finish;
- $data{borrowernumber} =$dbh->{'mysql_insertid'};
- return $data{borrowernumber};
+ $data{'borrowerid'} =$dbh->{'mysql_insertid'};
+ return $data{'borrowerid'};
}
sub changepassword {
@@ -433,7 +465,7 @@
my ($bornum)address@hidden;
my $dbh = C4::Context->dbh;
my $sth=$dbh->prepare("select cardnumber,borrowernumber from borrowers where
- guarantor=?");
+ guarantorid=?");
$sth->execute($bornum);
my @dat;
my $i=0;
@@ -464,17 +496,87 @@
sub findguarantor{
my ($bornum)address@hidden;
my $dbh = C4::Context->dbh;
- my $sth=$dbh->prepare("select guarantor from borrowers where
borrowernumber=?");
+ my $sth=$dbh->prepare("Select * from borrowers where borrowernumber=?");
$sth->execute($bornum);
my $data=$sth->fetchrow_hashref;
$sth->finish;
- $sth=$dbh->prepare("Select * from borrowers where borrowernumber=?");
- $sth->execute($data->{'guarantor'});
- $data=$sth->fetchrow_hashref;
- $sth->finish;
return($data);
}
+=item GuarantornameSearch
+
+ ($count, $borrowers) = &GuarantornameSearch($env, $searchstring, $type);
+
+Looks up guarantor by name.
+
+C<$env> is ignored.
+
+BUGFIX 499: C<$type> is now used to determine type of search.
+if $type is "simple", search is performed on the first letter of the
+surname only.
+
+C<$searchstring> is a space-separated list of search terms. Each term
+must match the beginning a borrower's surname, first name, or other
+name.
+
+C<&GuarantornameSearch> returns a two-element list. C<$borrowers> is a
+reference-to-array; each element is a reference-to-hash, whose keys
+are the fields of the C<borrowers> table in the Koha database.
+C<$count> is the number of elements in C<$borrowers>.
+
+return all info from guarantor =>only category_type A
+
+=cut
+#'
+#used by member enquiries from the intranet
+#called by guarantor_search.pl
+sub GuarantornameSearch {
+ my ($env,$searchstring,$orderby,$type)address@hidden;
+ my $dbh = C4::Context->dbh;
+ my $query = ""; my $count; my @data;
+ my @bind=();
+
+ if($type eq "simple") # simple search for one letter only
+ {
+ $query="Select * from borrowers,categories where
borrowers.categorycode=categories.categorycode and category_type='A' and
surname like ? order by $orderby";
+ @bind=("$searchstring%");
+ }
+ else # advanced search looking in surname, firstname and othernames
+ {
+ @data=split(' ',$searchstring);
+ address@hidden;
+ $query="Select * from borrowers,categories
+ where ((surname like ? or surname like ?
+ or firstname like ? or firstname like ?
+ or othernames like ? or othernames like ?) and
borrowers.categorycode=categories.categorycode and category_type='A'
+ ";
+ @bind=("$data[0]%","% $data[0]%","$data[0]%","%
$data[0]%","$data[0]%","% $data[0]%");
+ for (my $i=1;$i<$count;$i++){
+ $query=$query." and (".
+ " surname like ? or surname like ?
+ or firstname like ? or firstname like ?
+ or othernames like ? or othernames like ?)";
+ push(@bind,"$data[$i]%","% $data[$i]%","$data[$i]%","%
$data[$i]%","$data[$i]%","% $data[$i]%");
+ # FIXME - .= <<EOT;
+ }
+ $query=$query.") or cardnumber like ?
+ order by $orderby";
+ push(@bind,$searchstring);
+ # FIXME - .= <<EOT;
+ }
+
+ my $sth=$dbh->prepare($query);
+ $sth->execute(@bind);
+ my @results;
+ my $cnt=$sth->rows;
+ while (my $data=$sth->fetchrow_hashref){
+ push(@results,$data);
+ }
+ # $sth->execute;
+ $sth->finish;
+ return ($cnt,address@hidden);
+}
+
=item NewBorrowerNumber
$num = &NewBorrowerNumber();
@@ -619,4 +721,232 @@
return ($numlines,address@hidden,$total);
}
+
+=head2 checkuniquemember (OUEST-PROVENCE)
+
+ $result =
&checkuniquemember($collectivity,$surname,$categorycode,$firstname,$dateofbirth);
+
+Checks that a member exists or not in the database.
+
+C<&result> is 1 (=exist) or 0 (=does not exist)
+C<&collectivity> is 1 (= we add a collectivity) or 0 (= we add a physical
member)
+C<&surname> is the surname
+C<&categorycode> is from categorycode table
+C<&firstname> is the firstname (only if collectivity=0)
+C<&dateofbirth> is the date of birth (only if collectivity=0)
+
+=cut
+
+sub checkuniquemember{
+ my ($collectivity,$surname,$firstname,$dateofbirth)address@hidden;
+ my $dbh = C4::Context->dbh;
+ my $request;
+ if ($collectivity ) {
+# $request="select count(*) from borrowers where
surname=? and categorycode=?";
+ $request="select borrowernumber,categorycode from borrowers
where surname=? ";
+ } else {
+# $request="select count(*) from borrowers where
surname=? and categorycode=? and firstname=? and dateofbirth=?";
+ $request="select borrowernumber,categorycode from borrowers
where surname=? and firstname=? and dateofbirth=?";
+ }
+ my $sth=$dbh->prepare($request);
+ if ($collectivity) {
+ $sth->execute(uc($surname));
+ } else {
+ $sth->execute(uc($surname),ucfirst($firstname),$dateofbirth);
+ }
+ my @data= $sth->fetchrow;
+ if ($data[0]){
+ $sth->finish;
+ return $data[0],$data[1];
+#
+ }else{
+ $sth->finish;
+ return 0;
+ }
+}
+
+=head2 getzipnamecity (OUEST-PROVENCE)
+
+take all info from table city for the fields city and zip
+check for the name and the zip code of the city selected
+
+=cut
+sub getzipnamecity {
+ my ($cityid)address@hidden;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("select city_name,city_zipcode from cities where
cityid=? ");
+ $sth->execute($cityid);
+ my @data = $sth->fetchrow;
+ return $data[0],$data[1];
+}
+
+=head2 updatechildguarantor (OUEST-PROVENCE)
+
+check for title,firstname,surname,adress,zip code and city from guarantor to
+guarantorchild
+
+=cut
+sub getguarantordata{
+ my ($borrowerid)address@hidden;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("Select
title,firstname,surname,streetnumber,address,streettype,address2,zipcode,city,phone,phonepro,mobile,email,emailpro
from borrowers where borrowernumber =? ");
+ $sth->execute($borrowerid);
+ my $guarantor_data=$sth->fetchrow_hashref;
+ $sth->finish;
+ return $guarantor_data;
+}
+
+=head2 getdcity (OUEST-PROVENCE)
+recover cityid with city_name condition
+=cut
+sub getidcity {
+ my ($city_name)address@hidden;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("select cityid from cities where city_name=? ");
+ $sth->execute($city_name);
+ my $data = $sth->fetchrow;
+ return $data;
+}
+
+
+=head2 getcategorytype (OUEST-PROVENCE)
+
+check for the category_type with categorycode
+and return the category_type
+
+=cut
+sub getcategorytype {
+ my ($categorycode)address@hidden;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("Select category_type,description
from categories where categorycode=? ");
+ $sth->execute($categorycode);
+ my ($category_type,$description) = $sth->fetchrow;
+ return $category_type,$description;
+}
+
+sub calcexpirydate {
+ my ($categorycode,$dateenrolled)address@hidden;
+ my $dbh=C4::Context->dbh;
+ my $sth = $dbh->prepare("select enrolmentperiod from categories where
categorycode=?");
+ $sth->execute($categorycode);
+ my ($enrolmentperiod) = $sth->fetchrow;
+ $enrolmentperiod = 12 unless ($enrolmentperiod);
+ return format_date_in_iso(&DateCalc($dateenrolled,"$enrolmentperiod
months"));
+}
+
+=head2 checkuserpassword (OUEST-PROVENCE)
+
+check for the password and login are not used
+return the number of record
+0=> NOT USED 1=> USED
+
+=cut
+sub checkuserpassword{
+ my ($borrowerid,$userid,$password)address@hidden;
+ $password=md5_base64($password);
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("Select count(*) from borrowers
where borrowernumber !=? and userid =? and password=? ");
+ $sth->execute($borrowerid,$userid,$password);
+ my $number_rows=$sth->fetchrow;
+ return $number_rows;
+
+}
+
+=head2 borrowercategories
+
+ ($codes_arrayref, $labels_hashref) = &borrowercategories();
+
+Looks up the different types of borrowers in the database. Returns two
+elements: a reference-to-array, which lists the borrower category
+codes, and a reference-to-hash, which maps the borrower category codes
+to category descriptions.
+
+=cut
+#'
+sub borrowercategories {
+ my ($category_type,$action)address@hidden;
+ my $dbh = C4::Context->dbh;
+ my $request;
+ $request="Select categorycode,description from categories where
category_type=? order by categorycode";
+ my $sth=$dbh->prepare($request);
+ $sth->execute($category_type);
+ my %labels;
+ my @codes;
+ while (my $data=$sth->fetchrow_hashref){
+ push @codes,$data->{'categorycode'};
+ $labels{$data->{'categorycode'}}=$data->{'description'};
+ }
+ $sth->finish;
+ return(address@hidden,\%labels);
+}
+
+=item getborrowercategory
+
+ $description = &getborrowercategory($categorycode);
+
+Given the borrower's category code, the function returns the corresponding
+description for a comprehensive information display.
+
+=cut
+
+sub getborrowercategory
+{
+ my ($catcode) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sth = $dbh->prepare("SELECT description FROM categories WHERE
categorycode = ?");
+ $sth->execute($catcode);
+ my $description = $sth->fetchrow();
+ $sth->finish();
+ return $description;
+} # sub getborrowercategory
+
+
+=head2 ethnicitycategories
+
+ ($codes_arrayref, $labels_hashref) = ðnicitycategories();
+
+Looks up the different ethnic types in the database. Returns two
+elements: a reference-to-array, which lists the ethnicity codes, and a
+reference-to-hash, which maps the ethnicity codes to ethnicity
+descriptions.
+
+=cut
+#'
+
+sub ethnicitycategories {
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("Select code,name from ethnicity order by name");
+ $sth->execute;
+ my %labels;
+ my @codes;
+ while (my $data=$sth->fetchrow_hashref){
+ push @codes,$data->{'code'};
+ $labels{$data->{'code'}}=$data->{'name'};
+ }
+ $sth->finish;
+ return(address@hidden,\%labels);
+}
+
+=head2 fixEthnicity
+
+ $ethn_name = &fixEthnicity($ethn_code);
+
+Takes an ethnicity code (e.g., "european" or "pi") and returns the
+corresponding descriptive name from the C<ethnicity> table in the
+Koha database ("European" or "Pacific Islander").
+
+=cut
+#'
+
+sub fixEthnicity($) {
+
+ my $ethnicity = shift;
+ my $dbh = C4::Context->dbh;
+ my $sth=$dbh->prepare("Select name from ethnicity where code = ?");
+ $sth->execute($ethnicity);
+ my $data=$sth->fetchrow_hashref;
+ $sth->finish;
+ return $data->{'name'};
+}
+
1;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Koha-cvs] koha/C4 Date.pm Koha.pm Members.pm,
paul poulain <=