Hallo zusammen,
habe heute nun auch meine Subscription verlängern können und natürlich nach einem Backup direkt das Update auf 2.10 durchgeführt.
Direkt nach dem Start wurde ich natürlich von Fehlermeldungen in den Skripten erschlagen. Genau die beiden Funktionen die sich geändert haben, hatte ich natürlich auch in Verwendung
Habe mal grob die „alten“ und „neuen“ Varianten gegenübergestellt und kann noch nicht ganz nachvollziehen, warum Funktionen komplett wegfallen bzw. in ihrer Funktionalität komplett geändert werden…
Bsp: IPS_GetStatusVariables
//alte Variante
foreach (IPS_GetStatusVariables($InstanzID) as $StatusVar)
{
...
}
//Neue Variante
foreach(IPS_GetStatusVariableIdents($InstanzID) as $StatusVarString)
{
$StatusVar = IPS_GetStatusVariable($InstanzID, $StatusVarString);
...
}
Bsp: Erstellen eines Event per Skript, welches als Skript sich selber hinzufügt
//alt
$newEventID = IPS_CreateEvent(0);
IPS_SetEventTrigger ($newEventID, 1, $VarID);
IPS_SetEventScript ($newEventID, $IPS_SELF);
IPS_SetName ($newEventID, "ParentID: " . $InstanzID);
IPS_SetEventActive ($newEventID, true);
//neu
$newEventID = IPS_CreateEvent(0);
IPS_SetEventTrigger ($newEventID, 1, $VarID);
IPS_SetName ($newEventID, "ParentID: " . $InstanzID);
IPS_SetParent ($newEventID, $IPS_SELF);
IPS_SetEventActive ($newEventID, true);
Hier hat jetzt die Funktion „IPS_SetEventScript“ eine völlig andere Bedeutung.
Finde die Möglichkeit zwar gut, jetzt einfach dort einen PHP-Code hinterlegen zu können, allerdings das das aufzurufende Skript jetzt rein durch den Parent angegeben wird eher unpraktisch. Vorher konnte ich die Events irgendwo in meiner Hierarchie anlegen, jetzt ist dies nur noch direkt unterhalb des Skripts möglich.
Des weiteren gestaltet sich jetzt die Ermittlung natürlich auch anders, ob für die Variable ein Event existiert, was das aktuelle Skript triggert.
Unschön daran ist jetzt, das durch eine minimale Fehlbedienung (das Event wird aus versehen verschoben) ein ganz anderes Skript aufgerufen werden könnte.
Ich fand die Funktionalität wie sie vorher war schon gut.
Mal dann grob die Frage, warum man die „alten“ Funktionen nicht erst einmal als „deprecated“ markiert, damit man sich darauf einstellen kann das die Funktionen irgendwann flöten gehen, aber zumindest in ihrer Funktion erst ein mal noch das selbe tun.