[development] low hanging fruit for Drupal 6: variable?defaults
Mohammed Sameer
msameer at foolab.org
Fri May 4 16:50:34 UTC 2007
On Fri, May 04, 2007 at 09:26:44AM -0500, Larry Garfield wrote:
> On Friday 04 May 2007, Dries Buytaert wrote:
>
> > Anyway, let's step back for a bit. It seems like we're trying to
> > solve two problems in this thread:
> >
> > 1. For convenience, we want a central place to define a variable's
> > default value.
> >
> > 2. Out of necessity, we want a mechanism to let the locale system
> > translate variables that have dynamic content shown on the UIs (i.e.
> > the footer message).
> >
> > 1 and 2 are somewhat related -- if we had a mechanism to introspect
> > what variables are available, we might be able to extract their
> > default value from a central place, and the locale system could
> > figure out what variables need to be translated.
> >
> > So, each variable should have two properties: (i) a default value and
> > (2) a "dynamic translation"-flag (TRUE if translatable, FALSE if not)
> > and we should be able to poll both. Gabor's original question was:
> > what would be the best implementation?
>
> Because the variables could change at runtime, I think a hook_variables() (or
> similar) would be the best approach. Core may not use more than just node
> type, but I know some contribs do, like form IDs.
>
> hook_variables() {
> $items = array();
> $items['mymod_num_things'] = array(
> '#default_value' => 2, // Same syntax as FAPI uses
> '#realm' => 'mymod', // optional
> '#translatable' => FALSE, // probably default false
> '#cacheable' => TRUE, // default to TRUE if under X chars when serialized
> '#serialize' => FALSE, // default to true for object/array, else false
> );
> foreach (node_get_types('name') as $type) {
> $items['mymod_things_for_' . $type] = array(
> '#default_value' => array(),
> );
> }
>
> return $items;
> }
>
> I kinda like the idea of using FAPI syntax here, as then
> system_settings_form() can fill in defaults for us if they're not specified.
> (I suppose it could anyway, but meh. <g>) I leave that to Gabor to decide.
>
> I'm undecided on whether non-cached big variables should still be considered
> variables or should have some other namespace/table. I guess that depends on
> how expensive it would be to make variable_get() handle both cases.
>
I'd actually declare it as hook_variables($type, $arg2)
The module will not always know about the available node types as we can add a bunch after enabling the module.
So I'd say that whenever we have a new content type (No idea how to detect that) we call this hook to update
our defaults. The problem is that hook_variables() returns the default related to the node types we have as well as
the defaults not related to the node types. That's why $type can either by 'node' for node types related defaults,
'comment' for comments related settings, 'term' for term related, 'vocabulary' for vocabulary related and 'default' for anything else ? Or would this be an over kill ?
--
GPG-Key: 0xA3FD0DF7 - 9F73 032E EAC9 F7AD 951F 280E CB66 8E29 A3FD 0DF7
Debian User and Developer.
Homepage: www.foolab.org
More information about the development
mailing list