/** * function getXMLObject * <pre> * Generates an XML Object from the object's Values array. * NOTE: I'm overridding the parent method due to special case where * the dataManager & labelManager share the same field name (dataManager's * primary key). * </pre> * @param $isHeaderIncluded [BOOL] Determines if we include the '<?xml version="1.0"?>' header. * @param $rootNodeName [STRING] The XML root node name. * * @return [OBJECT] XMLObject */ function getXMLObject($isHeaderIncluded = true, $rootNodeName = '') { // use member root node name if one is not provided. if ($rootNodeName == '') { $rootNodeName = $this->xmlNodeName; } // NOTE: Big picture here, is to make the two seperate XML // descriptions to be 1 blended description. // get the XML objects of the dataManager & labelManager $dataManagerXMLObj = $this->dataManager->getXMLObject(); $labelManagerXMLObj = $this->labelManager->getXMLObject(); // Get their values as Arrays $dataManagerValues = $dataManagerXMLObj->getValues(); $labelManagerValues = $labelManagerXMLObj->getValues(); // NOTE: // in this case, labelManager contains the dataManager's primary key // as the foreign key. In our application we need both values. So // here we rename the labelManager's foreign key instance to // 'viewerLanguage_id' $combinedValues = $dataManagerValues; foreach ($labelManagerValues as $xmlElement) { $key = $xmlElement->getName(); if ($key == 'language_id') { $xmlElement->setName('viewerLanguage_id'); } $combinedValues[] = $xmlElement; } // create new XML Object for output $xmlObject = new XMLObject($rootNodeName); // set those combined values as this Blended XML object $xmlObject->setValues($combinedValues); return $xmlObject; }