public function prepForFieldType(&$data, $handle)
{
// Fresh up $data
$data = StringHelper::convertToUTF8($data);
$data = trim($data);
// Get field info
$field = craft()->fields->getFieldByHandle($handle);
// If it's a field ofcourse
if (!is_null($field)) {
// For some fieldtypes the're special rules
switch ($field->type) {
case ImportModel::FieldTypeEntries:
// No newlines allowed
$data = str_replace("\n", '', $data);
$data = str_replace("\r", '', $data);
// Don't connect empty fields
if (!empty($data)) {
$data = $this->prepEntriesFieldType($data, $field);
} else {
$data = array();
}
break;
case ImportModel::FieldTypeCategories:
if (!empty($data)) {
$data = $this->prepCategoriesFieldType($data, $field);
} else {
$data = array();
}
break;
case ImportModel::FieldTypeAssets:
if (!empty($data)) {
$data = $this->prepAssetsFieldType($data, $field);
} else {
$data = array();
}
break;
case ImportModel::FieldTypeUsers:
if (!empty($data)) {
$data = $this->prepUsersFieldType($data, $field);
} else {
$data = array();
}
break;
case ImportModel::FieldTypeTags:
$data = $this->prepTagsFieldType($data, $field);
break;
case ImportModel::FieldTypeNumber:
// Parse as numberx
$data = LocalizationHelper::normalizeNumber($data);
// Parse as float
$data = floatval($data);
break;
case ImportModel::FieldTypeDate:
// Parse date from string
$data = DateTimeHelper::formatTimeForDb(DateTimeHelper::fromString($data, craft()->timezone));
break;
case ImportModel::FieldTypeRadioButtons:
case ImportModel::FieldTypeDropdown:
//get field settings
$data = $this->prepDropDownFieldType($data, $field);
break;
case ImportModel::FieldTypeCheckboxes:
case ImportModel::FieldTypeMultiSelect:
// Convert to array
$data = ArrayHelper::stringToArray($data);
break;
case ImportModel::FieldTypeLightSwitch:
// Convert yes/no values to boolean
switch ($data) {
case Craft::t('Yes'):
$data = true;
break;
case Craft::t('No'):
$data = false;
break;
}
break;
}
}
return $data;
}