41 lines
792 B
PHP
41 lines
792 B
PHP
<?php
|
|
|
|
function mtg_get_all_fields(mtgMetaStruct $struct)
|
|
{
|
|
$fields = $struct->getFields();
|
|
$parent = $struct->getParent();
|
|
if($parent)
|
|
//NOTE: order is important, parent fields must come first
|
|
$fields = array_merge(mtg_get_all_fields($parent), $fields);
|
|
return $fields;
|
|
}
|
|
|
|
function mtg_find_field_owner(mtgMetaStruct $struct, $name)
|
|
{
|
|
$tmp = $struct;
|
|
while($tmp)
|
|
{
|
|
$fields = $tmp->getFields();
|
|
if(isset($fields[$name]))
|
|
return $tmp;
|
|
$tmp = $tmp->getParent();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function mtg_try_get_token_in_hierarchy(mtgMetaStruct $struct, $name, &$value)
|
|
{
|
|
$tmp = $struct;
|
|
while($tmp)
|
|
{
|
|
if($tmp->hasToken($name))
|
|
{
|
|
$value = $tmp->getToken($name);
|
|
return true;
|
|
}
|
|
$tmp = $tmp->getParent();
|
|
}
|
|
|
|
return false;
|
|
}
|