Пример #1
0
 /**
  * @param  Webservice_Data_Object_Concrete $apiElement
  * @return void
  */
 public function correctObjectRelations($apiElement, $idMapping)
 {
     if ($apiElement->elements) {
         foreach ($apiElement->elements as $el) {
             if ($el->type == "href" and $el->value["id"]) {
                 $el->value["id"] = $idMapping[$el->value["type"]][$el->value["id"]];
             } else {
                 if ($el->type == "image" and $el->value) {
                     $el->value = $idMapping["asset"][$el->value];
                 } else {
                     if ($el->type == "link" and $el->value["internal"]) {
                         $el->value["internal"] = $idMapping[$el->value["internalType"]][$el->value["internal"]];
                     } else {
                         if ($el->type == "multihref") {
                             if (is_array($el->value)) {
                                 for ($i = 0; $i < count($el->value); $i++) {
                                     $el->value[$i]["id"] = $idMapping[$el->value[$i]["type"]][$el->value[$i]["id"]];
                                 }
                             }
                         } else {
                             if ($el->type == "objects") {
                                 if (is_array($el->value)) {
                                     for ($i = 0; $i < count($el->value); $i++) {
                                         $el->value[$i]["id"] = $idMapping["object"][$el->value[$i]["id"]];
                                     }
                                 }
                             } else {
                                 if ($el->type == "wysiwyg") {
                                     $el->value = Pimcore_Tool_Text::replaceWysiwygTextRelationIds($idMapping, $el->value);
                                 } else {
                                     if ($el->type == "fieldcollections") {
                                         if ($el instanceof Webservice_Data_Object_Element and is_array($el->value)) {
                                             foreach ($el->value as $fieldCollectionEl) {
                                                 if (is_array($fieldCollectionEl->value)) {
                                                     foreach ($fieldCollectionEl->value as $collectionItem) {
                                                         if ($collectionItem->type == "image") {
                                                             $collectionItem->value = $idMapping["asset"][$collectionItem->value];
                                                         } else {
                                                             if ($collectionItem->type == "wysiwyg") {
                                                                 $collectionItem->value = Pimcore_Tool_Text::replaceWysiwygTextRelationIds($idMapping, $collectionItem->value);
                                                             } else {
                                                                 if ($collectionItem->type == "link" and $collectionItem->value["internalType"]) {
                                                                     $collectionItem->value["internal"] = $idMapping[$collectionItem->value["internalType"]][$collectionItem->value["internal"]];
                                                                 } else {
                                                                     if ($collectionItem->type == "href" and $collectionItem->value["id"]) {
                                                                         $collectionItem->value["id"] = $idMapping[$collectionItem->value["type"]][$collectionItem->value["id"]];
                                                                     } else {
                                                                         if (($collectionItem->type == "objects" or $collectionItem->type == "multihref") and is_array($collectionItem->value) and count($collectionItem->value) > 0) {
                                                                             for ($i = 0; $i < count($collectionItem->value); $i++) {
                                                                                 if ($collectionItem->value[$i]["id"]) {
                                                                                     $collectionItem->value[$i]["id"] = $idMapping[$collectionItem->value[$i]["type"]][$collectionItem->value[$i]["id"]];
                                                                                 }
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     } else {
                                         if ($el->type == "localizedfields") {
                                             if (is_array($el->value)) {
                                                 foreach ($el->value as $localizedDataEl) {
                                                     if ($localizedDataEl->type == "image") {
                                                         $localizedDataEl->value = $idMapping["asset"][$localizedDataEl->value];
                                                     } else {
                                                         if ($localizedDataEl->type == "wysiwyg") {
                                                             $localizedDataEl->value = Pimcore_Tool_Text::replaceWysiwygTextRelationIds($idMapping, $localizedDataEl->value);
                                                         } else {
                                                             if ($localizedDataEl->type == "link" and $localizedDataEl->value["internalType"]) {
                                                                 $localizedDataEl->value["internal"] = $idMapping[$localizedDataEl->value["internalType"]][$localizedDataEl->value["internal"]];
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }