Exemplo n.º 1
0
 private function updateChilds($childs, $lists, $validIdByLevels, $level, $parentId)
 {
     /**
      *
      * Two cases :
      *
      * 1) Item has already an ID => We update the item
      * 2) Item has no ID, it is a new One, we have to create IT.
      *
      */
     $em = $this->container->get("doctrine")->getManager();
     foreach ($childs as $key => $child) {
         if (array_key_exists("id", $child)) {
             // Case of existing item, just update it.
             $item = $em->getRepository('TellawLeadsFactoryBundle:ReferenceListElement')->find($child["id"]);
             $item->setName($child["name"]);
             $item->setValue($child["value"]);
             // Get this to keep in memory treated items to delete old ones.
             $validIdByLevels[$lists[$level]][$child["id"]] = true;
         } else {
             // Case of new Item, create it
             $item = new ReferenceListElement();
             $item->setName($child["name"]);
             $item->setValue($child["value"]);
             $referenceList = $em->getRepository('TellawLeadsFactoryBundle:ReferenceList')->find($lists[$level]);
             $item->setReferenceList($referenceList);
             if ($parentId != null) {
                 $parent = $em->getRepository('TellawLeadsFactoryBundle:ReferenceListElement')->find($parentId);
                 $item->setParent($parent);
             }
             $em->persist($item);
             $validIdByLevels[$lists[$level]][$item->getId()] = true;
         }
         /**
          * Digging into childrens
          */
         $parentIdTmp = $item->getId();
         if (array_key_exists("childrens", $child)) {
             if (count($child["childrens"]) > 0) {
                 list($validIdByLevels, $lists) = $this->updateChilds($child["childrens"], $lists, $validIdByLevels, $level + 1, $parentIdTmp);
             }
         }
     }
     $em->flush();
     return array($validIdByLevels, $lists);
 }
 private function processTwoLevelElements($content)
 {
     $em = $this->getContainer()->get("doctrine")->getEntityManager();
     $list0 = $this->listsOrder[0];
     if (count($this->listsOrder) == 2) {
         $list1 = $this->listsOrder[1];
     }
     foreach ($content as $key => $item) {
         $element = new ReferenceListElement();
         $element->setReferenceList($this->lists[$list0]);
         $element->setName($item["name"]);
         $element->setValue($key);
         $element->setStatus(1);
         $em->persist($element);
         if (!isset($list1)) {
             continue;
         }
         foreach ($item["childrens"] as $children) {
             $childElement = new ReferenceListElement();
             $childElement->setReferenceList($this->lists[$list1]);
             $childElement->setParent($element);
             $childElement->setName($children["name"]);
             $childElement->setValue($children["value"]);
             $childElement->setStatus(1);
             $em->persist($childElement);
         }
     }
     echo "Fin de l'importation\n";
     $em->flush();
 }