[horde] Re: horde_prefs - categories and category_colors

Craig White craigwhite at azapple.com
Sat Feb 26 18:27:18 PST 2005


On Sat, 2005-02-26 at 16:15 -0700, Craig White wrote:
> I am not understanding what is getting written to the horde_prefs
> table...
> 
----
I still don't understand some of the values in this field as discussed
BUT

- I think that I have made a significant breakthrough in setting
preferences.

- This process would be EASILY repeatable for many modules and default
preferences if not most of them...

I am keying on the first name in the Horde Setup -> Admins 
(* Which users should be treated as administrators (root, super-user) by
Horde?)

I make all users 'categories' and 'category colors' derived from
whatever 'Administrator' had set up.

by setting 'hook = true'; in horde/config/prefs.php for 
// categories
$_prefs['categories'] = array(

// category colors
$_prefs['category_colors'] = array(

and then adding to horde/config/hooks.php

if (!function_exists('_prefs_hook_category_colors')) {

   function _prefs_hook_category_colors($user = null)
   {

     $def_value = 'category_colors';

     require_once 'DB.php';
     global $conf;
     $def_user = $conf['auth']['admins'][0];
     $search_params = array($def_user, $def_value);
     $search_string = 'SELECT * FROM horde_prefs WHERE pref_uid = ? \
AND pref_scope = "horde" AND pref_name = ?';
     $db =& DB::connect($conf['sql'], true);
     $res =& $db->query($search_string, $search_params);
     while ($res->fetchInto($row)) {
     $name = $row[3];
     }
     $db->disconnect();
     return $name;
   }
}

if (!function_exists('_prefs_hook_categories')) {

   function _prefs_hook_categories($user = null)
   {

     $def_value = 'categories';

     require_once 'DB.php';
     global $conf;
     $def_user = $conf['auth']['admins'][0];
     $search_params = array($def_user, $def_value);
     $search_string = 'SELECT * FROM horde_prefs WHERE pref_uid = ? \
AND pref_scope = "horde" AND pref_name = ?';
     $db =& DB::connect($conf['sql'], true);
     $res =& $db->query($search_string, $search_params);
     while ($res->fetchInto($row)) {
     $name = $row[3];
     }
     $db->disconnect();
     return $name;
   }
}

----
I have a few thoughts...

1 - this only considers sql preferences backend. Probably wouldn't be
hard to modify for ldap preferences backend. Each 'hook' would require
only that you change 3 entries on the first 5 lines.

2 - this might be worthy of a 'tab' in Horde Setup for 'Default User'
settings which could activate a bunch of 'preset' hooks for commonly
considered default preferences and checkbox activation. Jan asked if I
wanted to offer a patch for this type of logic and this is the path that
I am thinking unless this is objectionable.

3 - If '2' were a logical concept to persue, it would also make sense
for a button alongside the checkbox that did something like
'DELETE FROM horde_prefs WHERE pref_uid != "Administrator" AND pref_name
= $PREFERENCE' so all user preferences were cleared and upon next login
or usage. (of course, this is SQL lingo and LDAP would need to be
accomodated) 

Craig



More information about the horde mailing list