action === 'delete' && $event->id && self::isApi4ManagedType($event->entity)) { \Civi\Api4\Managed::delete(FALSE) ->addWhere('entity_type', '=', $event->entity) ->addWhere('entity_id', '=', $event->id) ->execute(); } // When an entity is updated, update the timestamp in corresponding Managed record elseif ($event->action === 'edit' && $event->id && self::isApi4ManagedType($event->entity)) { if (!array_key_exists('entity_modified_date', self::getSupportedFields())) { // During upgrades this column may not exist yet return; } CRM_Core_DAO::executeQuery('UPDATE civicrm_managed SET entity_modified_date = CURRENT_TIMESTAMP WHERE entity_type = %1 AND entity_id = %2', [ 1 => [$event->entity, 'String'], 2 => [$event->id, 'Integer'], ]); } } /** * @param string $entityName * @return bool */ public static function isApi4ManagedType(string $entityName) { $type = \Civi\Api4\Utils\CoreUtil::getInfoItem($entityName, 'type'); return $type && in_array('ManagedEntity', $type, TRUE); } }