Birthday reminder that sends out e-mails.
It can also generate ASCII tables on your console, iCalendar files and normal HTML pages.
Contents
- Any SQL database.
- Multiple date fields per record supported.
- An LDAP server with
evolutionPerson
records - Birthday reminder files (
.bdf
) - CSV files
- A directory of .vcf vCard files
- ASCII table
- HTML
- Email (text + HTML parts)
- iCalendar
After configuration, you can test and use bdrem via command line:
$ bdrem ----------------------------------------------------------- Days Age Name Event Date Day ----------------------------------------------------------- 0 32 Foo Bar Birthday 20.03.1982 Do 1 33 Andrea Milestone Birthday 21.03.1981 Fr 7 32 Hugh Success Birthday 27.03.1982 Do 12 Welt Scherztag 01.04.???? Di
To find out about all supported command line options, use --help
:
Usage: ./bin/bdrem.php [options] ./bin/bdrem.php [options] <command> [options] Options: -n NUM, --next=NUM Show NUM days after date -p NUM, --prev=NUM Show NUM days before date -r renderer, --renderer=renderer Output mode --list-renderer lists valid choices for option renderer -e, --stoponempty Output nothing when list is empty -d date, --date=date Date to show events for -c FILE, --config=FILE Path to configuration file --debug Development helper (mail) --no-color Do not output ANSI color codes -h, --help show this help message and exit -v, --version show the program version and exit Commands: readme Show README.rst file config Extract configuration file
To send birthday reminder e-mails, use the mail
renderer:
$ bdrem --renderer=mail
If you only want an email if there is a birthday, use --stoponempty
:
$ bdrem --renderer=mail --stoponempty
Make sure your config file contains $mail_from
and $mail_to
settings.
Exporting birthday events into an .ics
file is easy:
$ bdrem --renderer=ical > birthdays.ics
It is possible to access the calendar via HTTP, too:
http://example.org/bdrem/?renderer=ical
You can subscribe to it in your calendar or email application. Integration has been tested with Thunderbird's Lightning and Claws Mail's vCalendar plugin.
Simply point your web browser to the .phar
file, or index.php
.
You will get a colorful HTML table:
Copy data/bdrem.config.php.dist
to data/bdrem.config.php
and
adjust it to your liking.
When running the .phar
, extract the configuration file first:
$ php dist/bdrem-0.1.0.phar config > bdrem-0.1.0.phar.config.php
If you have a .bdf
file from birthday reminder or birthday reminder 3,
you can use it with bdrem.
Configure your source as follows:
$source = array('Bdf', '/path/to/birthday.bdf');
Comma separated value files can be used with bdrem. They should at least contain a column with the name, and one with the date.
Simple configuration if you use the default settings:
$source = array( 'Csv', '/path/to/file.csv' );
Complex configuration:
$source = array( 'Csv', array( 'filename' => '/path/to/file.csv', 'columns' => array( 'name' => 0, 'event' => 1, 'date' => 2 ), 'firstLineIsHeader' => true, 'defaultEvent' => 'Birthday', 'separator' => ',', ) );
columns
Determines the position of the name, event and date columns.
0
is the first column. You can usefalse
to disable a column; helpful if there is noevent
column.Default:
array('name' => 0, 'event' => 1, 'date' => 2)
defaultEvent
Text to use as event if there is no event column.
Defaults to
Birthday
firstLineIsHeader
If the first line in the CSV is column header data
Defaults to
true
separator
How columns are separated.
Defaults to
,
bdrem can read birthdays and other events from persons in an LDAP server.
It is known to work fine with evolutionPerson
objects.
Attributes birthDate
and anniversary
are read.
Configure it as follows:
$source = array( 'Ldap', array( 'host' => 'ldap.example.org', 'basedn' => 'ou=adressbuch,dc=example,dc=org', 'binddn' => 'cn=FIXME,ou=users,dc=example,dc=org', 'bindpw' => 'FIXME' ) );
Events can be fetched from any SQL database supported by PHP's PDO extension - MySQL, SQLite, PostgreSQL and so on.
You may configure every little detail of your database:
$source = array( 'Sql', array( 'dsn' => 'mysql:dbname=bdrem;host=127.0.0.1', 'user' => 'FIXME', 'password' => 'FIXME', 'table' => 'contacts', 'fields' => array( 'date' => array( //column name => event title 'c_birthday' => 'Birthday' ), //column with name, or array with column names 'name' => array('c_name'), //sprintf-compatible name formatting instruction 'nameFormat' => '%s', ) ) );
Configure the date format in /etc/freetds/locales.conf
:
[default] date format = %Y-%m-%d
Also set the charset to UTF-8 in /etc/freetds/freetds.conf
:
[global] # TDS protocol version tds version = 8.0 client charset = UTF-8
Restart Apache afterwards.
Use dblib
in the DSN:
dblib:host=192.168.1.1;dbname=Databasename
- PHP 5.3 or higher
- PDO
- PEAR packages:
Note that the .phar
file already includes all dependencies;
you do not need to install anything.
When running from a git checkout, install the dependencies with composer:
$ composer install
bdrem
is licensed under the AGPL v3 or later.
- Web site
- http://cweiske.de/bdrem.htm
- Source code
http://git.cweiske.de/bdrem.git
Mirror: https://github.com/cweiske/bdrem
Written by Christian Weiske, cweiske@cweiske.de