private function prepCategoriesFieldType($data, FieldModel $field)
{
// Get field settings
$settings = $field->getFieldType()->getSettings();
// Get source id
$source = $settings->getAttribute('source');
list(, $id) = explode(':', $source);
// Get category data
$category = new CategoryModel();
$category->groupId = $id;
// This we append before the slugified path
$categoryUrl = str_replace('{slug}', '', $category->getUrlFormat());
// Find matching elements in categories
$criteria = craft()->elements->getCriteria(ElementType::Category);
$criteria->groupId = $id;
$criteria->limit = $settings->limit;
$criteria->status = null;
$criteria->localeEnabled = null;
// Get search strings
$search = ArrayHelper::stringToArray($data);
// Ability to import multiple Categories at once
$data = array();
// Loop through keywords
foreach ($search as $query) {
// Find matching element by URI (dirty, not all categories have URI's)
$criteria->uri = $categoryUrl . $this->slugify($query);
// Add to data
$data = array_merge($data, $criteria->ids());
}
return $data;
}