/** * Sets the parents and recursively removes categories with bad parents * * @param array &$categories * @param array $parents * @param array $items */ protected function setParents(array &$categories, array $parents, array $items) { $invalidCodes = []; foreach ($categories as $code => $category) { $parentCode = $parents[$code]; if (!$parentCode) { continue; } if (isset($categories[$parentCode])) { $parent = $categories[$parentCode]; } else { $parent = $this->doctrineCache->find($this->class, $parentCode); } if ($parent) { $category->setParent($parent); } else { $invalidCodes[] = $code; } } if (count($invalidCodes)) { foreach ($invalidCodes as $code) { $this->setItemErrors($items[$code], ['parent' => [['No category with code %code%', ['%code%' => $parents[$code]]]]]); unset($categories[$code]); } $this->setParents($categories, $parents, $items); } }
/** * Finds the object in the cache * * @param string $class * @param string $value * * @return object */ protected function findObject($class, $value) { return $this->doctrineCache->find($class, $value); }