tag = $tag; $this->content = $content; } /** * * Adds a child node to the tag * @param EGMapKMLNode $node */ public function addChild( EGMapKMLNode $node ){ $this->nodes[] = $node; } /** * * Clears all added children */ public function clearChildren(){ $this->nodes = array(); } /** * * @return well formatted XML KML tags */ public function toXML(){ $result = ''; if (is_array($this->attributes)) $this->attributes['id'] = $this->tagId; else $this->attributes = array(); $result .= CHtml::openTag($this->tag, (is_array($this->attributes)? $this->attributes:array())); if(null !== $this->content && !empty($this->content)) { if($this->tag === 'description'){ $result .= 'content.']]>'; } else if(is_array($this->content)){ // arrays are separated by carriage return // they can also be separated by spaces $result .= implode(PHP_EOL, $this->content); } else $result .= $this->content; } $result .= $this->renderChildren(); $result .= CHtml::closeTag($this->tag); return $result; } /** * * Renders children tags */ protected function renderChildren() { $children = ''; if( isset($this->nodes) && is_array($this->nodes) ){ foreach( $this->nodes as $node ) $children .= $node->toXML(); } return $children; } /** * * Checks if a node name property has null value * if not then create a node * @param string $node */ protected function checkNode( $node ){ if(!is_null($this->$node)) $this->nodes[] = new EGMapKMLNode($node, $this->$node); } }