/**
  * Finds or creates a taxonomy.
  * @param array $find params to find a taxonomy
  * @param array $create used if taxonomy could not be found with above params
  */
 public static function getOrCreate($find, $create)
 {
     $taxonomy = TaxonomyTerm::get()->filter($find)->first();
     if (!$taxonomy || !$taxonomy->exists()) {
         $taxonomy = new TaxonomyTerm($create);
         $taxonomy->write();
     }
     return $taxonomy;
 }
 public function transform($item, $parent, $strategy)
 {
     echo get_class($parent);
     if (is_a($parent, 'TaxonomyTerm')) {
         // If a child term of $parent doesn't already exists with this name, create it.
         $taxonomyTerms = TaxonomyTerm::get()->filter('Name', $item->Name)->filter('ParentID', $parent->ID);
         if ($taxonomyTerms->exists()) {
             $taxonomyTerm = $taxonomyTerms->first();
         } else {
             $taxonomyTerm = new TaxonomyTerm();
             $taxonomyTerm->Name = $item->Name;
             $taxonomyTerm->ParentID = $parent->ID;
             $taxonomyTerm->write();
             $parent->Children()->Add($taxonomyTerm);
         }
         return new TransformResult($taxonomyTerm, $item->stageChildren()->filter('ClassName', 'DrupalTaxonomyTermContentItem'), $item);
     } else {
         $page = new DrupalTaxonomyTerm();
         $params = $this->importer->getParams();
         $existingPage = DataObject::get_one('DrupalTaxonomyTerm', sprintf('"DrupalID" = %d AND "ParentID" = %d', $item->DrupalID, $parent->ID));
         if ($existingPage) {
             switch ($strategy) {
                 case ExternalContentTransformer::DS_OVERWRITE:
                     $page = $existingPage;
                     break;
                 case ExternalContentTransformer::DS_DUPLICATE:
                     break;
                 case ExternalContentTransformer::DS_SKIP:
                     return;
             }
         }
         $page->Title = $item->Title;
         $page->MenuTitle = $item->Title;
         $page->ParentID = $parent->ID;
         $page->DrupalID = $item->DrupalID;
         $page->OriginalData = serialize($item->getRemoteProperties());
         $page->write();
         $this->importMedia($item, $page);
         return new TransformResult($page, $item->stageChildren(), $item);
     }
 }