Skip to content

hook_civicrm_custom

Summary

This hook is called after the database write on a custom table.

Definition

hook_civicrm_custom( $op, $groupID, $entityID, &$params )

Parameters

  • string $op - the type of operation being performed
  • string $groupID - the custom group ID
  • object $entityID - the entityID of the row in the custom table
  • array $params - the parameters that were sent into the calling function

Returns

  • null - the return value is ignored

Example

/**
 * This example generates a custom contact ID (year + number, ex: 20080000001)
 */

function MODULENAME_civicrm_custom( $op, $groupID, $entityID, &$params ) {
    if ( $op != 'create' && $op != 'edit' ) {
        return;
    }

    if ($groupID == 1) {
        $needs_update = false;
        $tableName = CRM_Core_DAO::getFieldValue( 'CRM_Core_DAO_CustomGroup',
     $groupID,
     'table_name' );


        $sql = "SELECT member_id_4 FROM $tableName WHERE entity_id = $entityID";
        $dao = CRM_Core_DAO::executeQuery( $sql, CRM_Core_DAO::$_nullArray );

        if (! $dao->fetch()) {
            $needs_update = true;
        }

        // Value may also be empty. i.e. delete the value in the interface to reset the field.
        if (! $dao->member_id_4) {
            $needs_update = true;
        }

        if ($needs_update) {
                $member_id = date('Y') . sprintf('%07d', $entityID);

                $sql = "UPDATE $tableName SET member_id_4 = $member_id WHERE entity_id = $entityID";
                CRM_Core_DAO::executeQuery( $sql, CRM_Core_DAO::$_nullArray );
        }
    }
}