khanat-opennel-code/code/ryzom/tools/server/admin/functions_tool_event_entities.php
2012-04-23 20:30:57 +03:00

119 lines
No EOL
2.9 KiB
PHP

<?php
function tool_ee_parse_getview($data)
{
$entity_data = array();
reset($data);
foreach($data as $ais_data)
{
$service_name = 'n/a';
$answers = 0;
$values = 0;
$values_read = 0;
$entity = array();
reset($ais_data);
foreach($ais_data as $ais_line)
{
$ais_line = trim($ais_line);
if (ereg("^===\[ Service ([^\ ]+) returned \]===$", $ais_line, $eregs))
{
$service_name = $eregs[1];
}
elseif (ereg("^have ([[:digit:]]+) answer$", $ais_line, $eregs))
{
$answers = $eregs[1];
}
elseif (ereg("^have ([[:digit:]]+) value$", $ais_line, $eregs))
{
$values = $eregs[1];
}
elseif (ereg("^service ->(.*)$", $ais_line, $eregs))
{
$values_read++;
$entity['service_id'] = trim($eregs[1]);
}
elseif (ereg("^entity ->(.*)$", $ais_line, $eregs))
{
$values_read++;
$entity['entity'] = trim($eregs[1]);
$entity_string = str_replace(array('(',')','0x'), '', $entity['entity']);
$entity_string = str_replace(':','_', $entity_string);
$entity['entity_string'] = $entity_string;
}
elseif (ereg("^NamedEntityName ->(.*)$", $ais_line, $eregs))
{
$values_read++;
$entity['entity_name'] = trim($eregs[1]);
}
elseif (ereg("^NamedEntityState ->(.*)$", $ais_line, $eregs))
{
$values_read++;
$entity['entity_state'] = trim($eregs[1]);
}
elseif (ereg("^NamedEntityParam1 ->(.*)$", $ais_line, $eregs))
{
$values_read++;
$entity['entity_param1'] = trim($eregs[1]);
}
elseif (ereg("^NamedEntityParam2 ->(.*)$", $ais_line, $eregs))
{
$values_read++;
$entity['entity_param2'] = trim($eregs[1]);
}
if (sizeof($entity) && ($values_read == $values) && ($values > 0))
{
$entity['service'] = $service_name;
$entity['service_code'] = md5($service_name);
$entity_data[] = $entity;
$entity = array();
$values = 0;
$values_read = 0;
}
}
}
return $entity_data;
}
function tool_ee_get_entities($data)
{
$entities = array();
reset($data);
foreach($data as $dkey => $dval)
{
$dkey_bits = explode('_', $dkey);
$dkey_nums = sizeof($dkey_bits);
if ($dkey_nums > 4)
{
$_entity_bit_4 = array_pop($dkey_bits);
$_entity_bit_3 = array_pop($dkey_bits);
$_entity_bit_2 = array_pop($dkey_bits);
$_entity_bit_1 = array_pop($dkey_bits);
$dkey_bits = array_reverse($dkey_bits);
$_entity_service = array_pop($dkey_bits);
$dkey_bits = array_reverse($dkey_bits);
$dkey_entity = $_entity_bit_1 .'_'. $_entity_bit_2 .'_'. $_entity_bit_3 .'_'. $_entity_bit_4;
$dkey_name = implode('_', $dkey_bits);
if (!isset($entities[$_entity_service .'_'. $dkey_entity]))
{
$entities[$_entity_service .'_'. $dkey_entity] = array();
}
$entities[$_entity_service .'_'. $dkey_entity][$dkey_name] = trim($dval);
}
}
return $entities;
}
?>