Hallo Gemeinde,
nachdem der RS Project Exporter leider ab IPS V4.X nicht mehr funktioniert und ich für Backup und Transferzwecke sehr gern einen Teil des Projektbaumes extrahieren und z.B. auf einem anderen System wieder installieren möchte, habe ich mich die letzten Tage intensivst hinter das Thema geklemmt.
Das Programmieren geht voran, wobei der Teilbaum der Management-Konsole schon korrekt ausgelesen und wieder neu (mit anderen ID´s) installiert wird. Sozusagen Backup and Restore.
Jetzt habe ich das Problem, dass ich die verlinkte Webfront-Ansicht mit sichern möchte. Dazu durchsuche ich die einzelnen Items des durch WFC_GetItems erhaltenen WFC-Baumes, ob Quell-ObjectID´s des extrahierten Objectbaumes der Management Console enthalten sind (vergleichen des String unter [Configuration]). Anschließend lese ich dann rückwärts die ParentID´s aus und komme letztendlich zum ersten Element unter „roottp“.
Soweit so gut.
Dann dachte ich den Baum wieder vorwärts über eventuell vorhandene Childs auslesen zu können. Allerdings sind diese weder durch WFC_GetItems , noch über ein IPS_GetObject erreichbar
Hat jemand einen Tipp,wie ich an die jeweiligen Childs komme oder eine andere Idee ?
Mein Testskript zur Aufwärtssuche:
$ObjectIDs = unserialize(GetValue(48107 /*[Test Exporter\Variable\ObjectIDs]*/));
echo("
ObjectIDs:
"); print_r($ObjectIDs);
// ModuleID des WebFront Configurator (WFC) ////////////////////////////////////
$ModulID = "{3565B1F2-8F7B-4311-A4B6-1BF1D868F39E}";
// WebFront Configurator ID herausfinden (erste) ///////////////////////////////
$WFC_ID = IPS_GetInstanceListByModuleID($ModulID)[0];
echo("Die WFC_ID lautet: $WFC_ID");
// WebFront Configurator Items auslesen ////////////////////////////////////////
$WFC_Items = WFC_GetItems($WFC_ID);
// WebFront Configurator Items nach verlinkten ObjectIDs durchsuchen ///////////
// z.B. [0] => array(...[Configuration] => {"title":"START","baseID":15042 /*[Test Exporter\Variable]*/}...)
foreach($ObjectIDs as $ObjectID)
{
//echo("ObjectID: $ObjectID
");
foreach ($WFC_Items as $WFC_Item)
{
//print_r($Item);
if (strpos(serialize($WFC_Item['Configuration']), "\"baseID\":$ObjectID"))
{
echo("
ObjectID: $ObjectID im WFC gefunden:
");
$WFC_Items_matched[] = $WFC_Item;
}
}
}
print_r($WFC_Items_matched);
/*//////////////////////////////////////////////////////////////////////////////
Aufwärtssuche im WFC-Baum bis Ursprung mit [ParentID] => 'roottp'
/*//////////////////////////////////////////////////////////////////////////////
foreach ($WFC_Items_matched as $WFC_Item_matched)
{
WFC_search_root_origin($WFC_Item_matched, $WFC_Items);
}
echo("
WFC_Item_root_origin: "); print_r($WFC_Item_root_origin);
echo("
WFC_Items_related: "); print_r($WFC_Items_related);
function WFC_search_root_origin($WFC_Item_matched, $WFC_Items)
{
global $WFC_Item_root_origin;
global $WFC_Items_related;
foreach ($WFC_Items as $WFC_Item)
{
if(($WFC_Item_matched['ParentID'] == $WFC_Item['ID']) && ($WFC_Item['ID'] != "roottp"))
{
$WFC_Item_related = $WFC_Item;
//echo("\r\WFC_Item_related: "); print_r($WFC_Item_related);
$WFC_Items_related[] = $WFC_Item_related;
WFC_search_root_origin($WFC_Item_related, $WFC_Items);
}
if(($WFC_Item_matched['ParentID'] == $WFC_Item['ID']) && ($WFC_Item['ParentID'] == "roottp"))
{
$WFC_Item_root_origin = $WFC_Item;
//echo("
WFC_Item_root_origin: "); print_r($WFC_Item_root_origin);
}
}
}
Gruß
André