PortableInfobox/services/Parser/Nodes/NodeGroup.php

47 lines
1,008 B
PHP
Raw Normal View History

<?php
namespace Wikia\PortableInfobox\Parser\Nodes;
class NodeGroup extends Node {
public function getData() {
if ( !isset( $this->data ) ) {
2015-06-11 09:34:28 +00:00
$this->data = [ 'value' => $this->getDataForChildren() ];
}
return $this->data;
}
2015-06-11 09:34:28 +00:00
public function getRenderData() {
return [
'type' => $this->getType(),
'data' => [ 'value' => $this->getRenderDataForChildren() ],
'isEmpty' => $this->isEmpty(),
'source' => $this->getSource()
];
}
public function isEmpty() {
2015-06-11 09:34:28 +00:00
/** @var Node $item */
foreach ( $this->getChildNodes() as $item ) {
if ( !$item->isType( 'header' ) && !$item->isEmpty() ) {
return false;
}
}
return true;
}
public function getSource() {
$data = $this->getData();
$result = [ ];
foreach ( $data[ 'value' ] as $item ) {
if ( isset( $item[ 'source' ] ) ) {
$source = !is_array( $item[ 'source' ] ) ? [ $item[ 'source' ] ] : $item[ 'source' ];
$result = array_merge( $result, $source );
}
}
return array_unique( $result );
}
}