ich wollte mal mein IPS ein wenig aufräumen und dabei auch die obsoleten nur mehr über die compatibility.php unterstützen Befehle updaten.
Gibst irgendwo ein Script welches mir alle veralteten Befehle in meinen Scripten sucht und auflistet ?
So könnte man im laufenden Betrieb aktualisieren
Probeweises hartes Abschalten der Kompatiblitätsfunktionen war keine gute Idee. Es funktionierte fast gar nichts mehr, und das Error log war komplett zu.
Da gab es mal ein Skript hier im Forum, welches die ganzen Systemvariablen usw. prüft…nur leider kann ich es grad nicht finden
Den Thread finde ich nicht, aber das Skript habe ich grad noch bei mir gefunden
<?
$search = Array('$IPS_SENDER', '$IPS_SELF', '$IPS_VALUE', '$IPS_VARIABLE', '$IPS_INSTANCE',
'$IPS_EVENT', '$IPS_TRIGGER', '$IPS_OLDVALUE', '$IPS_TARGET', '$IPS_LINK',
'$IPS_REMOTE_ADDR', '$IPS_DIRECTION', '$IPS_DURATION', '$IPS_COMPONENT',
'$IPS_REMOTE_HOST', '$IPS_STATUS', '$IPS_STATUSTEXT' );
$eventIDs = IPS_GetEventList();
$found = false;
$anzahl = 0;
foreach($eventIDs as $id)
{
if ($id != $IPS_SELF)
{
$event = IPS_GetEvent($id);
$data = $event['EventScript'];
foreach($search as $befehl)
{
if(!(strpos($data, $befehl) === false))
{
$found = true;
$anzahl++;
echo "Event: ".IPS_GetName($id)." #".$id.", Systemvariable: ".$befehl.", gefunden.
";
}
}
}
}
echo "\rEs sind noch ".$anzahl." Änderungen bei den Events zu machen!
";
$scriptIDs = IPS_GetScriptList();
$found = false;
$anzahl = 0;
foreach($scriptIDs as $id)
{
if (($id != $IPS_SELF) AND ($id != "39106"))
{
$script = IPS_GetScript($id);
$data = file_get_contents(IPS_GetKernelDir()."/scripts/".$script['ScriptFile']);
foreach($search as $befehl)
{
if(!(strpos($data, $befehl) === false))
{
$found = true;
$anzahl++;
echo "Script: ".IPS_GetName($id)." #".$id.", Systemvariable: ".$befehl.", gefunden.
";
}
}
}
}
echo "\rEs sind noch ".$anzahl." Änderungen bei den Scripts zu machen!
";
?>
Meintest du sowas, oder habe ich dich falsch verstanden? Wenn du so Dinge wie WWWReader oder CSCK meinst, dann kannst du das Skript hier sicher noch erweitern.
Ja danke, genau das suchte ich.
War leider in der Vergangenheit etwas nachlässig und hab nur mit den alten Variablen und Funktionsnamen gearbeitet.
Für 4.0 möchte ich aber alles geradeziehen und dann die compatibility.php rauswerfen.
Hast du eine Ahnung ob ich einfach global mit Suchen&Ersetzen arbeiten kann? Oder bringt das unabsehbare Risiken und besser alles händisch nachziehen.
… das Script hat mir eben 376 Beanstandungen gefunden.
Ich habe mit „Suchen und Ersetzen“ gearbeitet…aber man sollte gut kontrollieren. Denn bei „Global“ muss die Systemvariable dahinter anders geschrieben werden! Um nur mal ein doofes Beispiel zu nennen.
Aber ist sicher weniger Arbeit automatisch ersetzen zu lassen und danach die „Problemfälle“ zu fixen
Ja genau. Hab eben alle durch. Schon interessant wie oft wir hier voneinander abgeschrieben haben.
Die „CreateVariableByName“ ist ja ein Dauerbrenner. Hab die zig mal gefunden, in eigenen und in vielen fremden Scripten.
immer mit Global deklariertem $IPS_SELF, und dann einem daraus entstandenem Folgefehler.
@paresy: War das unter IPS 3.4 auch schon so? Weil da gibt es einige Skripte (nicht von mir) in denen das eingebaut ist Oder war das unter 3.4 auch schon überflüssig? Oder gibt es einen Sinn, warum das eingebaut war?
IPS_SetInfo($vid, "this variable was created by script #$_IPS['SELF']");
erzeugt:
Parse error: syntax error, unexpected ‚‘ (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in [1-Wire Controller E-Service Online\Temp\Temp] on line 136
Abort Processing during Fatal-Error: syntax error, unexpected ‚‘ (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)
Error in Script C:\Program Files\IP-Symcon\scripts\16404.ips.php on Line 136