/** * Implementation of hook_civicrm_custom * Create / update Gift Aid declaration records on Individual when * "Eligible for Gift Aid" field on Contribution is updated. */ function civigiftaid_civicrm_custom($op, $groupID, $entityID, &$params) { if ($op != 'create') { return; } //Do this only for online contributions if ($_GET['q'] != 'civicrm/contribute/transact' or empty($_GET['q'])) { return; } require_once 'CRM/Core/DAO.php'; $tableName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $groupID, 'table_name', 'id'); if ($tableName == 'civicrm_value_gift_aid_submission') { // Iterate through $params to get new declaration value $newStatus = NULL; if (!is_array($params) || empty($params)) { return; } foreach ($params as $field) { if ($field['column_name'] == 'eligible_for_gift_aid') { $newStatus = $field['value']; break; } } if (is_null($newStatus)) { return; } // Get contactID. $sql = "\n SELECT contact_id, receive_date\n FROM civicrm_contribution\n WHERE id = %1"; $dao = CRM_Core_DAO::executeQuery($sql, array(1 => array($entityID, 'Integer'))); if ($dao->fetch()) { $contactID = $dao->contact_id; $contributionDate = $dao->receive_date; } if ($contactID) { $addressDetails = _civigiftaid_civicrm_custom_get_address_and_postal_code($contactID, 1); require_once 'CRM/Civigiftaid/Utils/GiftAid.php'; $params = array('entity_id' => $contactID, 'eligible_for_gift_aid' => $newStatus, 'start_date' => $contributionDate, 'address' => $addressDetails[0], 'post_code' => $addressDetails[1]); CRM_Civigiftaid_Utils_GiftAid::setDeclaration($params); } } }