Hallo zusammen,
ich habe mein Modul unter „unter der Haube“ ziemlich stark überarbeitet und diverse Dinge optimiert.
Nun gibt es aber in der neuen Version auch eine neue Property, welche abgefüllt werden soll.
Dabei würde ich gerne beim Update aus dem Modul-Store eine bereits vorhandene Property auslesen und die neue Porperty basierend auf Werten aus der alten Registrieren.
Nun frag ich mich, was der beste Weg dazu ist. Einfach mit
public function create(){
....
$alt = $this->ReadPropertyString("Alte Eigenschaft");
$neu = $alt . " zusätzlicher Text oder was auch immer";
$this->RegisterPropertyString("Neue Eigenschaft", $neu);
....
}
Dann würde „die Ableitung“ aus der alten Eigenschaft beim ersten Aufruf umgesetzt und danach bei jedem Start von IPS gemacht, jedoch nicht mehr in die neue Eigenschaft gespeichert, da diese ja nach dem ersten Aufruf bereits vorhanden ist?
Gibt es eine bessere Alternative, wie z.B. eine Funktion oder eine Nachricht, welche nur beim Modul-Update und danach nicht mehr aufgerufen wird?
Gleichzeitig habe ich bestehenden Eigenschaften, welche teilweise „bereinigt“ werden müssen, da diese so nicht mehr benötigt werden. Ist es möglich, beim Update-Prozess „alte Propertys“ zu löschen?
Als letztes gibt es noch Eigenschaften, welche angepasst werden müssen. Dies sollte ebenfalls beim Update geschehen. Im Moment würde ich das so lösen
$pollIdents = $this->ReadPropertyString("PollIdents");
$knownIdents = "Angepasste Liste"; //Werte, welche nicht mehr möglich sind werden herausgefiltert
IPS_SetProperty($this->InstanceID, "PollIdents", $knownIdents);
IPS_ApplyChanges($this->InstanceID);
Dieses Vorgehen ist aber gemäss Best Practice für PHP-Modul Erstellung von paresy „nicht erwünscht“. Darf ich hier eine Ausnahme machen oder gibt es eine andere Lösung?
Danke für eure Tipps