コード例 #1
0
/**
 * 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);
        }
    }
}