Skip to content
Snippets Groups Projects
Commit 1a970586 authored by eileen's avatar eileen
Browse files

Allow EntityPrefix to be passed to validateRequiredFields

parent aa8c9e2c
Branches
No related tags found
No related merge requests found
......@@ -27,6 +27,8 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
private $externalIdentifiers = [];
protected $baseEntity = 'Contact';
/**
* Relationship labels.
*
......
......@@ -409,7 +409,7 @@ abstract class CRM_Import_Parser implements UserJobInterface {
// specified dedupe rule (or the default Unsupervised if not specified).
$requiredFields = $contactType === 'Individual' ? [[$requiredFields, 'external_identifier']] : [[$requiredFields, 'email', 'external_identifier']];
}
$this->validateRequiredFields($requiredFields, $params, $prefixString);
$this->validateRequiredFields($requiredFields, $params, '', $prefixString);
}
/**
......@@ -677,11 +677,18 @@ abstract class CRM_Import_Parser implements UserJobInterface {
* ['first_name', 'last_name']
* ]
* Means 'email' OR 'first_name AND 'last_name'.
* @param string $entityName
* Entity name, if the entity is prefixed in the `getAvailableFields()` array
* - we are working towards this being required.
* @param string $prefixString
*
* @throws \CRM_Core_Exception Exception thrown if field requirements are not met.
*/
protected function validateRequiredFields(array $requiredFields, array $params, $prefixString = ''): void {
protected function validateRequiredFields(array $requiredFields, array $params, string $entityName = '', string $prefixString = ''): void {
if ($entityName) {
// @todo - make entityName required once all fields are prefixed.
$params = CRM_Utils_Array::prefixKeys($params, "$entityName.");
}
$missingFields = $this->getMissingFields($requiredFields, $params);
if (empty($missingFields)) {
return;
......@@ -1154,7 +1161,7 @@ abstract class CRM_Import_Parser implements UserJobInterface {
*/
protected function validateParams(array $params): void {
if (empty($params['id']) && empty($params[$this->baseEntity]['id'])) {
$this->validateRequiredFields($this->getRequiredFields(), $params[$this->baseEntity] ?? $params);
$this->validateRequiredFields($this->getRequiredFields(), $params[$this->baseEntity] ?? $params, $this->getImportEntities()[$this->baseEntity]['entity_field_prefix']);
}
$errors = [];
foreach ($params as $key => $value) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment