/** * @see DataAnalyzerInterface::runAndMakeMessages() */ public function runAndMakeMessages(AnalyzerSupportedDataProvider $dataProvider, $columnName) { assert('is_string($columnName)'); $customFieldData = CustomFieldDataModelUtil::getDataByModelClassNameAndAttributeName($this->modelClassName, $this->attributeName); $dropDownValues = unserialize($customFieldData->serializedData); $dropDownValues = ArrayUtil::resolveArrayToLowerCase($dropDownValues); $data = $dataProvider->getCountDataByGroupByColumnName($columnName); $count = 0; $missingDropDowns = null; foreach ($data as $valueCountData) { if ($valueCountData[$columnName] == null) { continue; } if ($missingDropDowns != null) { $lowerCaseMissingValuesToMap = ArrayUtil::resolveArrayToLowerCase($missingDropDowns); } else { $lowerCaseMissingValuesToMap = array(); } if (!in_array(strtolower($valueCountData[$columnName]), $dropDownValues) && !in_array(strtolower($valueCountData[$columnName]), $lowerCaseMissingValuesToMap)) { $missingDropDowns[] = $valueCountData[$columnName]; $count++; } } if ($count > 0) { $label = '{count} dropdown value(s) are missing from the field. '; $label .= 'These values will be added upon import.'; $this->addMessage(Zurmo::t('ImportModule', $label, array('{count}' => $count))); } if ($missingDropDowns != null) { $instructionsData = array(DropDownSanitizerUtil::ADD_MISSING_VALUE => $missingDropDowns); $this->setInstructionsData($instructionsData); } }
public function runAndMakeMessages(AnalyzerSupportedDataProvider $dataProvider, $columnName) { assert('is_string($columnName)'); $dropDownValues = $this->resolveStates(); $dropDownValues = ArrayUtil::resolveArrayToLowerCase($dropDownValues); $data = $dataProvider->getCountDataByGroupByColumnName($columnName); $count = 0; foreach ($data as $valueCountData) { if ($valueCountData[$columnName] == null) { continue; } if (!in_array(strtolower($valueCountData[$columnName]), $dropDownValues)) { $count++; } } if ($count > 0) { $label = '{count} value(s) are not valid. '; $label .= 'Rows that have these values will be skipped during import.'; $this->addMessage(Zurmo::t('ContactsModule', $label, array('{count}' => $count))); } }
/** * Check whether the specified value corresponds to a valid username of a user model. * @param AnalyzerSupportedDataProvider $dataProvider * @param string $columnName */ protected function resolveForTypeUsername(AnalyzerSupportedDataProvider $dataProvider, $columnName) { assert('is_string($columnName)'); $usernameValues = UserValueTypeSanitizerUtil::getUsernames(); $usernameValues = ArrayUtil::resolveArrayToLowerCase($usernameValues); $data = $dataProvider->getCountDataByGroupByColumnName($columnName); $count = 0; foreach ($data as $valueCountData) { if ($valueCountData[$columnName] == null) { continue; } if (!in_array(TextUtil::strToLowerWithDefaultEncoding($valueCountData[$columnName]), $usernameValues)) { $count++; } } if ($count > 0) { $label = '{count} username(s) specified were not found. '; $label .= 'These values will not be used during the import.'; $this->addMessage(Zurmo::t('ImportModule', $label, array('{count}' => $count))); } }