Dear Alvaro,
Thanks very much. I will check and get back should i need any
clarifications and help.
Regards,
Pandian
Quoting Alvaro Cornejo <cornejo.alv...@gmail.com>:
Hi
Here is the report to setup as *public*:
SELECT
borrowers.surname, borrowers.firstname, borrowers.email,
borrowers.emailpro, borrowers.sex, borrowers.lang
FROM borrowers
WHERE DATE_FORMAT(borrowers.dateofbirth, '%m-%d') = DATE_FORMAT(CURDATE(),
'%m-%d')
LIMIT 50
You can add other fields to the report so you can do additional
verifications/vaidations like the patron is active, has had activity in
the last x months/years, etc. Be careful with the order of the fields since
this will have an impact on the script. We set LIMIT to 50 just to avoid
the public report "hard record limit" of 10 records per query. You can set
it to anything you think is reasonable.
The script is what is between ============ lines:
The script uses sendmail to send plain text emails. You can modify it to
use any of the perl email libraries and use html format instead.
koha_birthdays.pl
=================
#!/usr/bin/perl
# Library includes
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request;
use JSON;
print "\nEjecutando koha_birthday\n";
#My Global Variables
my $hello = "";
my $subject = "";
my $body = "";
my $message = "";
my $to = "";
my $from = "";
my $result = "";
my $i = 0;
# Capture report data:
# Fields from report: surname firstname email emailpro sex lang
# Prepare connection, call url and insert data (json format) to arrary
my $ua = new LWP::UserAgent;
$ua->agent("Perl API Client/1.0");
my $url = "https://YOURSITE/cgi-bin/koha/svc/report?id=XX"; # REPLACE
YOUR SITE WITH YOUR OPAC BASE URL and XX WITH THE NUMBER OF THE REPORT YOU
CREATE ABOVE
my $request = HTTP::Request->new("GET" => $url);
my $response = $ua->request($request);
my $json_obj = JSON->new->utf8->decode($response->content);
my $row_num = scalar(@{$json_obj});
#Scroll/split each registry and send the email
foreach my $row (@{$json_obj}) {
if ($i < $row_num) {
my $surname = @{$row}[0];
my $firstname = @{$row}[1];
my $email = @{$row}[2];
my $emailpro = @{$row}[3];
my $sex = @{$row}[4];
my $lang = @{$row}[5];
# Get destination address (private email else professional)
if ($email) {
my $to = $email;
} elsif ($emailpro) {
my $to = $emailpro;
} else {
next;
}
# Assemble the patron salutation string for each language. Our
default is es-ES
if ($lang eq "default" || $lang eq "es-ES") {
if ($sex eq "M") {
$hello = "Estimado Sr. $surname,\n"
} elsif ($sex eq "F") {
$hello = "Estimada Sra. $surname,\n"
} else {
$hello = "Estimado(a) $firstname $surname,\n"
}
} elsif ($lang eq "en") {
if ($sex eq "M") {
$hello = "Dear Mr. $surname,\n"
} elsif ($sex eq "F") {
$hello = "Dear Mrs. $surname,\n"
} else {
$hello = "Dear $firstname $surname,\n"
}
}
# Define email subject & body
if ($lang eq "default" || $lang eq "es-ES") {
$subject = "Feliz cumpleaños le desea el CELACP!";
$body = "\n";
$body .= "El CELACP se complace en hacerle llegar sus mejores
deseos en esta fecha tan importante para Ud.\n\n";
$body .= "Sinceramente esperamos tenga un muy feliz día y
esperamos contar con su presencia en nuestro local\n";
$body .= "o a través de nuestra plataforma virtual en
https://biblioteca.celacp.org\n\n";
$body .= "Atentamente,\n\n";
$body .= "Centro de Estudios Latinoaméricanos Antonio Cornejo
Polar - CELACP -\n";
} elsif ($lang eq "en") {
$subject = "Happy birthday from the CELACP!";
$body = "\n";
$body .= "The CELACP is pleased to send you its best wishes on
this important date for you.\n\n";
$body .= "We sincerely hope you have a very happy day and we
look forward to seeing you at our library\n";
$body .= "or through our virtual platform at
https://biblioteca.celacp.org\n\n";
$body .= "Sincerely,\n\n";
$body .= "Center for Latinamerican Estudies Antonio Cornejo
Polar - CELACP -\n";
}
# Final message assembly
#$to = 'du...@gmail.com'; #Dummy address for testing purposes. If
uncommented, overrides the destination address and all emails will be sent
to this address.
$from = 'source_ema...@mydomain.com';
$message = $hello;
$message .= $body;
# Create mail "session"
open(MAIL, "|/usr/sbin/sendmail -t");
# Email Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
# Email Body
print MAIL $message;
# Send email & confirm
$result = close(MAIL);
if($result) { print "Se envió mensaje a $to\n";} else { print
"Falló el envío del mensaje a $to!\n";}
$i++;
} # END IF
} # END FOREACH
print "Se enviaron $i mensajes de cumpleaños\n";
1;
=========================
To run from the command line:
# perl /PATHTOSCRIPT/koha_birthdays.pl
To run on a cron job
add
/usr/bin/perl /PATHTOSCRIPT/koha_birthdays.pl to, for
example /etc/cron.daily/koha-common or if you are to use crontab you can
add:
0 7 * * * USER /usr/bin/perl /PATHTOSCRIPT/koha_birthdays.pl
This will run the script every day at 7:00 am and will use user USER
privileges to run it.
Hope this helps.
Regards
Alvaro
|----------------------------------------------------------------------------------------|
Stay safe / Cuídate/ Reste sécurisé
*7* Switch off as you go / Apaga lo que no usas / Débranchez au fur et à
mesure.
*q *Recycle always / Recicla siempre / Recyclez toujours
P Print only if absolutely necessary / Imprime solo si es necesario /
Imprimez seulement si nécessaire
Le jeu. 5 nov. 2020 à 18:42, <pand...@imsc.res.in> a écrit :
Dear Alvaro,
Thanks, yes can you please share the script codes so that we can use it.
Regards
Pandian
Quoting Alvaro Cornejo <cornejo.alv...@gmail.com>:
> Hi
>
> We have created a public report in koha that provides us the info we need
> to send the emails and created a script that parses the output of that
> report and sends the email. We finally run this script with a cronjob.
>
> I can share the report and script if you think it will help you.
>
> Regards
>
> Alvaro
>
|----------------------------------------------------------------------------------------|
> Stay safe / Cuídate/ Reste sécurisé
> *7* Switch off as you go / Apaga lo que no usas / Débranchez au fur et à
> mesure.
> *q *Recycle always / Recicla siempre / Recyclez toujours
> P Print only if absolutely necessary / Imprime solo si es necesario /
> Imprimez seulement si nécessaire
>
>
> Le mer. 4 nov. 2020 à 12:56, Owen Leonard <oleon...@myacpl.org> a écrit
:
>
>> > So how can we make this possible to send birthday wishes from Koha?
>>
>> Currently it is not possible. There is an open bug for this, but so
>> far no one has taken it on:
>>
>> https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=22086
>>
>> Owen
>>
>> --
>> Web Developer
>> Athens County Public Libraries
>> (740) 737-6006
>> https://www.myacpl.org
>> _______________________________________________
>>
>> Koha mailing list http://koha-community.org
>> Koha@lists.katipo.co.nz
>> Unsubscribe: https://lists.katipo.co.nz/mailman/listinfo/koha
>>
> _______________________________________________
>
> Koha mailing list http://koha-community.org
> Koha@lists.katipo.co.nz
> Unsubscribe: https://lists.katipo.co.nz/mailman/listinfo/koha
_______________________________________________
Koha mailing list http://koha-community.org
Koha@lists.katipo.co.nz
Unsubscribe: https://lists.katipo.co.nz/mailman/listinfo/koha