Upgrading Birthday Block to CiviCRM 2.0
For the address book on our site I used CiviCRM, an open source CRM system. I recently upgraded from CiviCRM 1.9 to 2.0, and since the APIs changed I had to update the block with birthdays that I wrote two years ago.
The primary change in CiviCRM 2 that impacted the block was the merge of civicrm_individual into civicrm_contact, a sensible schema change. Secondly, the public API's method calls are now organized in smaller modules and were renamed.
Here's the updated birthday block for CiviCRM 2.0:
<?php
// Check if CiviCRM is installed here.
if (!module_exists('civicrm')) return false;
// Initialization call is required to use CiviCRM APIs.
civicrm_initialize(true);
require_once('api/v2/Contact.php');
$select = "SELECT id, birth_date, CONCAT(((RIGHT(birth_date,5)
< RIGHT(CURRENT_DATE,5)) + YEAR(CURRENT_DATE)), RIGHT(birth_date,6)) AS bday,
concat(concat(month(birth_date), '/'), day(birth_date)) as displaydate,
(TO_DAYS(CONCAT(((RIGHT(birth_date,5) < RIGHT(CURRENT_DATE,5)) + YEAR(CURRENT_DATE)),
RIGHT(birth_date,6))) - TO_DAYS(CURRENT_DATE)) AS toBday FROM civicrm_contact WHERE
(TO_DAYS(CONCAT(((RIGHT(birth_date,5) < RIGHT(CURRENT_DATE,5)) + YEAR(CURRENT_DATE)),
RIGHT(birth_date,6))) - TO_DAYS(CURRENT_DATE) < 7) ORDER BY bday, RIGHT(birth_date,5);";
$query = $select;
$params = array( );
$dao =& CRM_Core_DAO::executeQuery( $query, $params );
echo "<div class=\"item-list\"><ul>\n";
while ( $dao->fetch( ) ) {
// Contact API returns contact info
$params = array('contact_id' => $dao->id);
$contact = &civicrm_contact_get( $params );
if ( civicrm_error( $contact ) ) {
echo $contact['error_message'];
}
echo "<li><a href=\"/civicrm/contact/view?reset=1&cid=" . $dao->id . "\">" . $contact['display_name'] .
"</a>, " . $dao->displaydate;
echo "</li>\n";
}
echo "</div></ul>\n";
?>
While developing this database query was useful; it disables the block.
update blocks set status = 0 where title = 'Birthdays';
- Log in to post comments


Comments
Re: Upgrading Birthday Block to CiviCRM 2.0
hi
i am looking for a block that can do this, but it seems it doesnt work on current version of drupal and civicrm. can you or anyone update the code?
thanks
conte