Email Auswertung nach Upd. 2.5 als fehlerhaft markiert

Hallo

verwende ein vorgestelltes Script zum Emails auswerten - Steuerung durch Emails - und dieses funkt jetzt nicht mehr - hätte schon versucht die Schreibweise an 2.5 anzupassen - davor wurde mir angezeit in welcher Zeile der Fehler ist - jetzt wird das Script nur mehr als fehlerhaft markiert! - Wo ist der Fehler oder hat vielleicht schon wer das Script angepasst?

<?
$allowedSenders = Array("mein name@adresse.xxx");
$prefix = "IPS";

//Hier im switch-case die einzelnen Kommandos einfügen. Wer nicht weiß wie, sollte die PHP Doku zu switch-case lesen
function processCommand($str)
{
    switch($str)
    {
	    case "RAFFSTOREAUF":
   	 	include("RaffstoreFunctions.php");
			RaffstoreAuf(RAFFIS);
	      return true;
		case "RAFFSTOREZU":
   	 	include("RaffstoreFunctions.php");
			RaffstoreZu(RAFFIS);
	      return true;
       case "STECKDOSEAN":
          FS20_SwitchMode(15460, true);
            return true;
       case "STECKDOSEAUS":
          FS20_SwitchMode(15460, false);
            return true;
    }
    return false; //Fehler zurückschicken!
}

/*
 * Ab hier nichts mehr ändern!
 *
 */

 $iid = IPS_GetParent($_IPS['SELF']);

 if($_IPS['SENDER'] == "Variable")
 {
    $ins = IPS_GetInstance($iid);
    switch($ins['ModuleInfo']['ModuleID'])
    {
     case "{CABFCCA1-FBFF-4AB7-B11B-9879E67E152F}":
       $isIMAP = true;
       break;
     case "{69CA7DBF-5FCE-4FDF-9F36-C05E0136ECFD}":
       $isIMAP = false;
       break;
     default:
         die("Diese Skript muss unterhalb einer POP3 oder IMAP Instanz liegen");
    }

    if($isIMAP)
    {
        $mails = IMAP_GetCachedMails($iid);
    }
    else
    {
        $mails = POP3_GetCachedMails($iid);
    }

    $uid = CreateVariableByName($_IPS['SELF'], "LastRun", 1);
    $last = GetValue($uid);

    //$mails = array_reverse($mails);
    if(sizeof($mails) == 0)
        return;

        $lastmail = $last;
    foreach($mails as $mail)
    {
        if(($last > 0) && ($mail['Date'] > $last))
        {
           if(substr($mail['Subject'], 0, strlen($prefix)) == $prefix)
           {
            if(in_array($mail['SenderAddress'], $allowedSenders))
            {
               $cmd = substr($mail['Subject'], strlen($prefix)+1);
               $status = processCommand($cmd);
               if($status)
               {
                  $message = $cmd." ausgeführt!";
                } else {
                  $message = $cmd." ist nicht bekannt!";
                }
                if(IPS_InstanceExists($sendResponse))
                {
                    SMTP_SendMailEx($sendResponse, $mail['SenderAddress'], "IP-Symcon Rückmeldung", $message);
                }
            } else {
                if(IPS_InstanceExists($sendResponse))
                {
                    SMTP_SendMail($sendResponse, "IP-Symcon Rückmeldung", "Unerlaubter Zugriff: ". $mail['SenderAddress'].", Befehl: ".$cmd);
                }
            }
         }
        }
        $lastmail = max($lastmail, $mail['Date']);
    }
    SetValue($uid, $lastmail);
 }

 if($_IPS['SENDER'] == "Execute")
 {
    $vid = @IPS_GetStatusVariableID($iid, "LastMessage");
   if($vid === false)
      die("Irgendwie fehlt die benötigte StatusVariablen!");

   $eid = @IPS_GetEventIDByName("MailUpdate", $_IPS['SELF']);
   if($eid === false)
   {
        $eid = IPS_CreateEvent(0);
        IPS_SetEventTrigger($eid, 1, $vid);
        IPS_SetParent($eid, $_IPS['SELF']);
        IPS_SetName($eid, "MailUpdate");
        IPS_SetEventActive($eid, true);
   }
   IPS_SetHidden($_IPS['SELF'], true);
   echo "Skript erfolgreich installiert!";
 }

function CreateVariableByName($id, $name, $type)
{
//    global $_IPS['SELF'];  das brauche ich seit 2.5 auch nicht - oder?
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #" .$_IPS['SELF']);
    }
    return $vid;
}


?>

global $_IPS[‚SELF‘]; // das brauche ich seit 2.5 auch nicht - oder? hab ich im Script bereits auskommentiert!

Kann mir da jemand helfen?
Danke
Rudolf

Hab nach Stunden des Suchens - den Ursprünglichen Beitrag wieder gefunden - dort wird auch auf Seite 3 der Fehler behandelt! :wink:

Vielleicht hilfts ja wem!
LG
rudolf

global $_IPS[‚SELF‘]; // das brauche ich seit 2.5 auch nicht - oder? hab ich im Script bereits auskommentiert!

global ${$_IPS['SELF']}; 

Ich dachte

$_IPS[‚SELF‘] ist GLOBAL und muss nicht als global deklariert werden.
Ich hab das doch irgendwo im Forum gelesen.

Stimmt das? :confused:

Oder muss ich den Code wie oben angegeben einbauen?

LG
Rudolf

$_IPS[‚SELF‘] ist GLOBAL und muss nicht als global deklariert werden.

Ja das sehe ich auch so, meiner Meinung nach ist es eine superglobale Variable, welche vorher schon mit Werten befüllt wird, also ist sie auch in allen Funktionen und in Klassen sichtbar, ohne dass sie mit der Anweisung global importiert werden muß.
Der Gültigkeitsbereich hat allerdings nichts mit dem Inhalt der Variablen selbst zu tun, dieser kann durchaus ohne Wert sein. Dann behelfe ich mir mit:


if (!isset($_IPS['VALUE'])) $_IPS['VALUE']	="";

um eine Fehlermeldung zu vermeiden.

Für alle, die nicht raten wollen … :smiley:

Gruß
Bruno

Gut geraten ist halb gewusst!:cool:

Hat sich das seit 2.5 erst geändert oder seit wann?
Alle Skripte dieser Art enthalten noch diese Zuweisung.

Und ich hab das mühsam in allen Skripten umgestellt.:o

Seit 2.5, ja (siehe Titel des Links), der Rest galt in der Schule als Fleißarbeit. Da Du jetzt die Stellen schon kennst ist das Löschen (oder lieber auskommentieren, wegen 2.6, 2.7, …, 3.0, …) einfacher. :smiley:

Gruß
Bruno

Bruno,
Was stimmt mit mir nicht, dass ich Deinen Humor so mag. :stuck_out_tongue:

:eek: ach?! hatte ich nicht neulich noch lesen müssen: „… hier wird nicht vermutet, hier wird gewusst!“
?!?
:smiley:

:loveips:

Erwischt.:smiley:

Du schon … :D:D

Habe das ähnliche Problem mit der Umstellung, allerdings damals etwas länger gewartet … Von dem her … :smiley:

Gruß
Bruno