[horde] question on horde identities on_change hook

Michael Menge michael.menge at zdv.uni-tuebingen.de
Wed Mar 29 13:50:07 UTC 2017


Quoting Jan Schneider <jan at horde.org>:

> Zitat von Michael Menge <michael.menge at zdv.uni-tuebingen.de>:
>
>> Quoting Jan Schneider <jan at horde.org>:
>>
>>> Zitat von Michael Menge <michael.menge at zdv.uni-tuebingen.de>:
>>>
>>>> Quoting Jan Schneider <jan at horde.org>:
>>>>
>>>>> Zitat von Michael Menge <michael.menge at zdv.uni-tuebingen.de>:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I try to write an on_change hook for horde  
>>>>>> identities/from_addr. My goal is to restrict the
>>>>>> addresses our users can configure in horde/imp to their own  
>>>>>> addresses and variants (plus-addressing).
>>>>>> The address verification feature  
>>>>>> ($conf[user][verify_from_addr]) could work but we don't want to
>>>>>> allow external addresses and it should be unnecessary to send  
>>>>>> an email as we already know the
>>>>>> allowed addresses.
>>>>>>
>>>>>>
>>>>>>
>>>>>> In horde/config/prefs.local.php I have the following function.
>>>>>>
>>>>>> $_prefs['from_addr']['on_change'] = function() {
>>>>>> global $prefs, $registry;
>>>>>> $data = $GLOBALS['registry']->getAuthInfo();
>>>>>> $userID=$data['authId'];
>>>>>> $value=$GLOBALS['prefs']->getValue('identities');
>>>>>> $value2=$prefs->getValue('from_addr');
>>>>>> Horde::logMessage("Horde Prefs call on_change for identities:  
>>>>>> ".$userID." value: ".$value." value2: ".$value2);
>>>>>> myVerifyFunction($userID, $value);
>>>>>> }
>>>>>>
>>>>>> This function is call every time the Identity UI/form is saved.
>>>>>> But the value retrieved by getValue('identities') still contain  
>>>>>> the old value before the change.
>>>>>> This is different then the other on_change calls in horde/imp  
>>>>>> prefs.php (e.g. language, use_trash, trash_folder)
>>>>>> how can I retrieve the new value.
>>>>>
>>>>> This is because the from_addr preference, as being a part of the  
>>>>> identities preference, won't really get stored. You need to use  
>>>>> on_change hook for the identities preference instead.
>>>>
>>>> I tried that before, but if i use  
>>>> $_prefs['identities']['on_change'] = function() { ....
>>>> the hook is not called at all. I guess that is because  
>>>> 'identities' is a prefGroup?
>>>
>>> It's both, but on_change is only set on prefs. Without looking at  
>>> the code, just to the description of on_change in prefs.php, it  
>>> seems to be tied to changing prefs through the *UI*. That would  
>>> explain why it isn't called on 'identities' that's updated  
>>> implicitely. And it would also explain why you cannot update the
>>> identites pref inside this callback: it's updated *after* the form  
>>> submission and thus also after the on_change callback.
>>>
>>
>> Should i open a bug ticket?
>
> No, it's not a bug.

really? either the on_change hook for form_addr should be called after  
the identities pref
is stored or the on_change hook should be called for for identities.  
The later could be called
a missing feature combined with the missing documentation that  
on_change is not called for
identities.


--------------------------------------------------------------------------------
M.Menge                                Tel.: (49) 7071/29-70316
Universität Tübingen                   Fax.: (49) 7071/29-5912
Zentrum für Datenverarbeitung          mail:  
michael.menge at zdv.uni-tuebingen.de
Wächterstraße 76
72074 Tübingen



More information about the horde mailing list