private function prepTagsFieldType($data, FieldModel $field)
{
// Get field settings
$settings = $field->getFieldType()->getSettings();
// Get tag group id
$source = $settings->getAttribute('source');
list($type, $groupId) = explode(':', $source);
$tags = ArrayHelper::stringToArray($data);
$data = array();
foreach ($tags as $tag) {
// Find existing tag
$criteria = craft()->elements->getCriteria(ElementType::Tag);
$criteria->title = $tag;
$criteria->groupId = $groupId;
$criteria->status = null;
$criteria->localeEnabled = null;
$tagArray = array();
if (!$criteria->total()) {
// Create tag if one doesn't already exist
$newtag = $this->getNewTagModel();
$newtag->getContent()->title = $tag;
$newtag->groupId = $groupId;
// Save tag
if (craft()->tags->saveTag($newtag)) {
$tagArray = array($newtag->id);
}
} else {
$tagArray = $criteria->ids();
}
// Add tags to data array
$data = array_merge($data, $tagArray);
}
return $data;
}