Compiler and co: fixed issue with the deletion (read a delta)

SVN:trunk[1986]
This commit is contained in:
Romain Quetiez
2012-05-14 12:19:11 +00:00
parent c009599ff8
commit 33a8a594f8

View File

@@ -1171,11 +1171,11 @@ class MFElement extends DOMElement
} }
/** /**
* For debugging purposes * For debugging purposes - but this is currently buggy: the whole document is rendered
*/ */
public function Dump() public function Dump()
{ {
echo "<pre>\n"; echo "<pre>\n";
echo htmlentities($this->ownerDocument->saveXML($this)); echo htmlentities($this->ownerDocument->saveXML($this));
echo "</pre>\n"; echo "</pre>\n";
} }
@@ -1344,48 +1344,6 @@ class MFElement extends DOMElement
{ {
return self::FindNode($this, $oRefNode, $sSearchId); return self::FindNode($this, $oRefNode, $sSearchId);
} }
/**
* Find the child node matching the given node
* @param DOMNode $oParent The node to look into (could be DOMDocument, DOMElement...)
* @param MFElement $oRefNode The node to search for
* @param bool $sSearchId substitutes to the value of the 'id' attribute
*/
public static function FindNodeSlow(DOMNode $oParent, MFElement $oRefNode, $sSearchId = null)
{
$oRes = null;
if ($oRefNode->hasAttribute('id'))
{
// Find the first element having the same tag name and id
if (!$sSearchId)
{
$sSearchId = $oRefNode->getAttribute('id');
}
foreach($oParent->childNodes as $oChildNode)
{
if (($oChildNode instanceof DOMElement) && ($oChildNode->tagName == $oRefNode->tagName))
{
if ($oChildNode->hasAttribute('id') && ($oChildNode->getAttribute('id') == $sSearchId))
{
$oRes = $oChildNode;
break;
}
}
}
}
else
{
// Get the first one having the same tag name (ignore others)
foreach($oParent->childNodes as $oChildNode)
{
if (($oChildNode instanceof DOMElement) && ($oChildNode->tagName == $oRefNode->tagName))
{
$oRes = $oChildNode;
break;
}
}
}
return $oRes;
}
/** /**
* Seems to work fine (and is about 10 times faster than above) EXCEPT for menus !!!! * Seems to work fine (and is about 10 times faster than above) EXCEPT for menus !!!!
@@ -1554,7 +1512,7 @@ class MFElement extends DOMElement
default: default:
$sFlag = 'removed'; $sFlag = 'removed';
// Iterate through the parents: reset the flag if any of them has a flag set // Iterate through the parents: reset the flag if any of them has a flag set
for($oParent = $this ; $oParent instanceof MFElement ; $oParent = $oParent->parentNode) for($oParent = $this ; $oParent instanceof MFElement ; $oParent = $this->parentNode->parentNode)
{ {
if ($oParent->getAttribute('_alteration') != '') if ($oParent->getAttribute('_alteration') != '')
{ {
@@ -1571,7 +1529,7 @@ class MFElement extends DOMElement
else else
{ {
// Remove the node entirely // Remove the node entirely
$oParent->removeChild($this); $this->parentNode->removeChild($this);
} }
} }