예제 #1
0
 protected function parseImportCategories(SimpleXMLElement $xml)
 {
     if (false === ($importCategories = $xml->xpath('//config:import_categories/config:import_category'))) {
         return;
     }
     $con = Propel::getWriteConnection(ImportCategoryTableMap::DATABASE_NAME);
     $con->beginTransaction();
     try {
         /** @var SimpleXMLElement $importCategory */
         foreach ($importCategories as $importCategory) {
             $id = (string) $importCategory->getAttributeAsPhp("id");
             $importCategoryModel = ImportCategoryQuery::create()->findOneByRef($id);
             if ($importCategoryModel === null) {
                 $importCategoryModel = new ImportCategory();
                 $importCategoryModel->setRef($id)->save($con);
             }
             /** @var SimpleXMLElement $child */
             foreach ($importCategory->children() as $child) {
                 $locale = (string) $child->getAttributeAsPhp("locale");
                 $value = (string) $child;
                 $importCategoryModel->setLocale($locale)->setTitle($value)->save($con);
             }
         }
         $con->commit();
     } catch (\Exception $e) {
         $con->rollBack();
         Tlog::getInstance()->error($e->getMessage());
     }
 }