Beispiel #1
0
 public function clearParentElementWithHash(IdmlElement $element, $parentHashValue)
 {
     $bCleared = false;
     $parentElement = $element->parentIdmlObject();
     while (!$bCleared && is_object($parentElement)) {
         if (IdmlPxeHelper::getPxeHash($parentElement) == $parentHashValue) {
             IdmlPxeHelper::clearPxeData($parentElement);
             $bCleared = true;
         }
         $parentElement = $parentElement->parentIdmlObject();
     }
     return $bCleared;
 }
 /**
  * Walk the IDML tree back to the IdmlPage, getting all ancestral objects
  * @param IdmlElement $idmlObject
  * @param string $stopAt The classname of the highest Idml object that we are interested in, should be 'IdmlPage' or 'IdmlStory'
  * @return array[IdmlElement] 
  */
 public function getAncestors($idmlObject, $stopAt)
 {
     $stack = array();
     // start by skipping the current element
     $obj = $idmlObject->parentIdmlObject();
     // now collect all ancestors: parent, grandparent, ... back to (but not including) the IdmlPage/IdmlStory
     while (!is_null($obj) && get_class($obj) != $stopAt) {
         $stack[] = $obj;
         $obj = $obj->parentIdmlObject();
     }
     return $stack;
 }
Beispiel #3
0
 /**
  * Determines if an element has an XmlElement as a parent somewhere
  * @param IdmlElement $element
  * @return boolean
  */
 public static function hasXmlElementParent(IdmlElement $element)
 {
     $hasParent = false;
     if ($element->parentIdmlObject()) {
         $parent = $element->parentIdmlObject();
         while (is_object($parent) && !is_a($parent, "IdmlXmlElement")) {
             $parent = $parent->parentIdmlObject();
         }
         if (is_object($parent) && is_a($parent, "IdmlXmlElement") && $parent->markupTag != "XMLTag/Story") {
             $hasParent = true;
         }
     }
     return $hasParent;
 }