[horde] Set "from_addr" as pre populated "enum" field

lst_hoe02 at kwsoft.de lst_hoe02 at kwsoft.de
Wed Mar 20 08:48:05 UTC 2013


Zitat von lst_hoe02 at kwsoft.de:

> Zitat von Michael M Slusarz <slusarz at horde.org>:
>
>> Quoting lst_hoe02 at kwsoft.de:
>>
>>> Zitat von Michael M Slusarz <slusarz at horde.org>:
>>>
>>>> Quoting lst_hoe02 at kwsoft.de:
>>>>
>>>>> Hello,
>>>>>
>>>>> we are on the way to Horde 5 and try to get the prefs.local.php  
>>>>> for Horde altered so a enum filed is used for the from_addr  
>>>>> preference, so the user is only able to choose the from_addr out  
>>>>> of a list of aliases obtained with a database query.
>>>>>
>>>>> What is the easiest way to use a Database query for standard SQL  
>>>>> source in prefs.local.php?
>>>>
>>>> Are you asking how to populate a preference field with dynamic  
>>>> results obtained from an SQL query?  Use the 'on_init' feature  
>>>> (see, e.g., the 'language' preference).
>>>
>>> No, the problem is how to get a Database Connection the "Horde"  
>>> way. The table to query is within the same scope as all the horde  
>>> stuff, but i'm not sure about the horde objects/functions to use.  
>>> The hooks examples are mostly LDAP and i have not yet found a SQL  
>>> example.
>>
>> $db = $GLOBALS['injector']->getInstance('Horde_Db_Adapter');
>>
>> Returns the Horde_Db_Adapter object for the base Horde DB  
>> configuration.  
>> (http://dev.horde.org/api/master/lib/Db/classes/Horde_Db_Adapter.html)
>>
>>>>> Is it correct to use $userId as logged in user?
>>>>
>>>> Not sure where you are getting $userId from?  Authenticated is  
>>>> always $registry->getAuth().
>>>
>>> So a simply username = $registry->getAuth() should do the trick?  
>>> Sorry for asking the obvious but i'm not a PHP coder at all.
>>
>> Should be "$username = $registry->getAuth();"  But yes.
>>
>
> Thanks, i will try and let you know how it works.
>

Hey, cool ;-)

With this set in horde prefs.local.php it works as expected so the  
user can only choose aliases assigned to his/her account:

$userId = $registry->getAuth();
$db = $GLOBALS['injector']->getInstance('Horde_Db_Adapter');
$db->connect();
$result = $db->selectAssoc(" SELECT alias,alias FROM  
postfix_virtual_aliases WHERE user_uid='$userId' ");
$db->disconnect();

$_prefs['from_addr'] = array(
     'value' => '',
//    'type' => 'text',
     'type' => 'enum',
     'enum' => $result,
     'desc' =>  _("The default e-mail address to use with this identity:")
);

Many Thanks

Andreas




More information about the horde mailing list