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

Nicolás Valera nvalera at gmail.com
Wed Apr 24 13:21:17 UTC 2013


On 04/23/2013 01:31 PM, Michael M Slusarz wrote:
> Quoting Nicolás Valera <nvalera at gmail.com>:
>
>> On 03/20/2013 05:48 AM, lst_hoe02 at kwsoft.de wrote:
>>>
>>> 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:")
>>> );
>
> [snip]
>
>> Im trying to do the same but my list of aliases is in another host.
>> The parameters to connect to the database are defined in the conf.php
>> because they are the same i use to authenticate the horde
>
> Then you need to manually instantiate a Horde_Db object (e.g. new
> Horde_Db_Adapter_Foo) instead of using the Horde_Db_Adapter instance.
> You can use the code in the Horde_Db_Adapter factory
> (Horde_Core_Factory_Db class) to aid you in doing this.
>
> michael
>
> ___________________________________
> Michael Slusarz [slusarz at horde.org]
>
Michael, thanks for the answer!

I wrote somthing like this:

global $conf;
        require dirname( __FILE__ ) . '/../config/conf.php';

	$dbhost   = $conf['auth']['params']['hostspec'];
	$dbuser   = $conf['auth']['params']['username'];
	$dbpasswd = $conf['auth']['params']['password'];
	$dbname   = $conf['auth']['params']['database'];

$mysqli = new mysqli( $dbhost, $dbuser, $dbpasswd, $dbname );        if( 
$mysqli->connect_error ) { die( 'Cannot connect to database' ); }

$query = $mysqli->query( " SELECT alias FROM virtual_aliases WHERE 
virtual_user_email like'%$userId%' " );

if( ! $query ) { Horde::logMessage( $mysqli->error, 'ERR' ); die( 
'Cannot query from_addr' ); }

$result = $query->fetch_assoc( );

$_prefs['from_addr']['hook'] = true;
$_prefs['from_addr']['type'] = 'enum';
$_prefs['from_addr']['enum'] = $result;

But i got this error:

[horde] PHP ERROR: Invalid argument supplied for foreach() [pid 584 on 
line 515 of "/usr/share/php/Horde/Core/Prefs/Ui.php"]


mysql output:

mysql> SELECT alias FROM vmail.virtual_aliases WHERE virtual_user_email 
like'%test%';
+-----------------------+
| alias                 |
+-----------------------+
| aaa at example.com       |
| bbb at example.com       |
+-----------------------+




More information about the horde mailing list