$objects = array(); foreach ($config as $method => $tmp) { foreach ($tmp as $category => $data) { foreach ($data as $name => $value) { $object = \XLite\Core\Database::getRepo('\\XLite\\Model\\Config')->findOneBy(array('name' => $name, 'category' => $category)); if (isset($object)) { if ($method == 'update') { list($oldLabel, $newLabel) = $value; if ($object->getOptionName() === $oldLabel) { $object->setOptionName($newLabel); } } } elseif ('insert' === $method) { $object = new \XLite\Model\Config(); $object->setCategory($category); $object->setName($name); } if (isset($object)) { $objects[$method][] = $object; } } } } foreach ($objects as $method => $config) { \XLite\Core\Database::getRepo('\\XLite\\Model\\Config')->{$method . 'InBatch'}($config); } // Update shop_currency option type $option = \XLite\Core\Database::getRepo('\\XLite\\Model\\Config')->findOneBy(array('name' => 'shop_currency', 'category' => 'General')); if (isset($option)) { $option->setType(''); \XLite\Core\Database::getEM()->persist($option);