Page 1 of 1

Class-Problem

Posted: 2008-07-10 12:09
by fireball22
Hallo Leute,

ich habe folgende Funktion in der Horde-Funktion "Fetchmail.php" geändert:

Code: Select all

function _checkMessageSize($size, $subject, $from)
    {
    $current_user = $this->_activeparams['id'];
    if($current_user == "uli@michis-homepage.net" AND $size < 31457280)
        {
        return true;
        }
        else
        {
    if (!empty($GLOBALS['conf']['fetchmail']['size_limit']) &&
            ($size > $GLOBALS['conf']['fetchmail']['size_limit'])) {
            require_once 'Horde/MIME.php';
            $GLOBALS['notification']->push(sprintf(_("The message "%s" from "%s" (%d bytes) exceeds fetch size limit."), MIME::Decode($subject), MIME::Decode($from), $size), 'horde.warning');
            return false;
        } else {
            return true;
        }
        }
    }
Leider gibt die erste If-Anweisung aber nie einen Wert mit true aus, auch wenn die User-ID mit der angegebenen E-Mail-Adresse (bzw. ja die ID) übereinstimmt.

Ich denke daher, dass der Fehler bei der Variable $_activeparams['id'] liegt.

Diese ist so deklariert:

Code: Select all

class IMP_Fetchmail {

    /**
     * Parameters used by the driver.
     *
     * @var array
     */
    var $_params;

    /**
     * The list of active fetchmail parameters for the current driver.
     * ALL DRIVERS SHOULD UNSET ANY FETCHMAIL PARAMETERS THEY DO NOT USE
     * OR ELSE THEY WILL APPEAR IN THE PREFERENCES PAGE.
     * The following parameters are available:
     *   'id'          --  The account name.
     *   'driver'      --  The driver to use.
     *   'protocol'    --  The protocol type.
     *   'username'    --  The username on the remote server.
     *   'password'    --  The password on the remote server.
     *   'server'      --  The remote server name/address.
     *   'rmailbox'    --  The remote mailbox name.
     *   'lmailbox'    --  The local mailbox to download messages to.
     *   'onlynew'     --  Only retrieve new messages?
     *   'markseen'    --  Mark messages as seen?
     *   'del'         --  Delete messages after fetching?
     *   'loginfetch'  --  Fetch mail from other accounts on login?
     *   'acctcolor'   --  Should these messages be colored differently
     *                     in mailbox view?
     *
     * @var array
     */
    var $_activeparams = array(
        'id', 'driver', 'type', 'protocol', 'username', 'password', 'server',
        'rmailbox', 'lmailbox', 'onlynew', 'markseen', 'del', 'loginfetch',
        'acctcolor'
    );
Wo liegt der Fehler?

MfG
Michael

Re: Class-Problem

Posted: 2008-07-10 18:08
by smoove
Hi,

mach mal nach $current_user = $this->_activeparams['id'];

var_dump($current_user, $size);
die();

dann führ das script mit einem "positiv fall" aus und poste die ausgabe.

mfg. smoove :)

Re: Class-Problem

Posted: 2008-07-10 21:21
by fireball22
Vielen Dank für deine Hilfe!

Hab das ganze eingebaut und das Script spuckt mir folgendes aus:

Code: Select all

NULL int(1003) 
MfG
Michael

Re: Class-Problem

Posted: 2008-07-11 01:01
by smoove
Hi,

das heisst also dass $this->_activeparams['id'] leer ist, warum kann ich dir nicht sagen, da ich das Script weder habe noch kenne, musste leider selber gucken, oder jemand anderes muss sich dazu äussern :/

Edit: ok, habs mir kurz angesehen.
mach mal statt dem var_dump($current_user, $size) ein

var_dump($this->getParameterList());

mfg. smoove :)

Re: Class-Problem

Posted: 2008-07-11 11:38
by fireball22
Vielen Dank für deine Mühe, also die ganze Ausgabe sieht folgendermaßen aus:

Code: Select all

array(14) { [0]=>  string(2) "id" [1]=>  string(6) "driver" [2]=>  string(4) "type" [3]=>  string(8) "protocol" [4]=>  string(8) "username" [5]=>  string(8) "password" [6]=>  string(6) "server" [7]=>  string(8) "rmailbox" [8]=>  string(8) "lmailbox" [9]=>  string(7) "onlynew" [10]=>  string(8) "markseen" [11]=>  string(3) "del" [12]=>  string(10) "loginfetch" [13]=>  string(9) "acctcolor" } 
Das müsste doch eigentlich zeigen, dass die Array mit dem Wert 'id' existiert...

Mfg
Michael

Re: Class-Problem

Posted: 2008-07-11 12:17
by smoove
Hi,

Yep, das zeigt es, es zeigt aber gleichzeitig dass dieses Array absolut leer ist.
So wird das alles also nicht funktionieren, du musst wohl auf anderem weg herausfinden müssen wie die aktive Email Adresse lautet - aber da kann ich dir grade echt nicht weiterhelfen.

mfg. smoove :)

Re: Class-Problem

Posted: 2008-07-11 15:22
by fireball22
Okay, ich habe nun noch ein Objekt gefunden, was aufjedenfall die User-ID beinhaltet:

Code: Select all

$fm_account = new IMP_Fetchmail_Account();
Nur wie greife ich dann auch die ID in der Array zu?

Code: Select all

var_dump(fm_account);
... gibt folgendes aus:

Code: Select all

object(imp_fetchmail_account)(1) { ["_accounts"]=>  array(2) { [0]=>  array(14) { ["id"]=>  string(6) "Web.de" ["driver"]=>  string(4) "imap" ["type"]=>  NULL ["protocol"]=>  string(8) "pop3auto" ["username"]=>  string(16) "XXX" ["password"]=>  string(11) "XXX" ["server"]=>  string(11) "pop3.web.de" ["rmailbox"]=>  string(0) "" ["lmailbox"]=>  string(5) "INBOX" ["onlynew"]=>  bool(false) ["markseen"]=>  bool(false) ["del"]=>  bool(true) ["loginfetch"]=>  bool(true) ["acctcolor"]=>  NULL } [1]=>  array(14) { ["id"]=>  string(9) "Gmail.com" ["driver"]=>  string(4) "imap" ["type"]=>  NULL ["protocol"]=>  string(12) "pop3sslvalid" ["username"]=>  string(16) "XXX" ["password"]=>  string(11) "XXX" ["server"]=>  string(18) "pop.googlemail.com" ["rmailbox"]=>  string(0) "" ["lmailbox"]=>  string(5) "INBOX" ["onlynew"]=>  bool(false) ["markseen"]=>  bool(false) ["del"]=>  bool(true) ["loginfetch"]=>  bool(true) ["acctcolor"]=>  NULL } } } 
Würde mich sehr freuen, wenn wir das Problem noch hinbekommen!
Vielen Dank für deine Hilfe!

MfG
Michael

EDIT: Zugangsdaten entfernt. Du schuldest den Nutzern, die den Beitrag gemeldet haben, ein kühles Bier.--Roger Wilco

Re: Class-Problem

Posted: 2008-07-11 17:18
by smoove
Du hast jetzt nicht grade wirklich das passwort der armen Frau geposted, oder? ôÔ

Re: Class-Problem

Posted: 2008-07-11 17:26
by Roger Wilco
Daten entfernt. Nächstes mal bitte etwas vorsichtiger mit sensiblen Daten umgehen.

Re: Class-Problem

Posted: 2008-07-11 17:56
by fireball22
Omg, sorry, da war ich wohl zu voreilig mit dem Absenden der Message, wollte die Daten eigentlich noch entfernen...
Vielen Dank, dass ihr so schnell reagiert habt, bin euch was schuldig ;)

MfG
Michael