On 13/03/12 07:28, Cameron B. Prince wrote:
Hi,The baseline module I'm developing needs to add the<span> tag to the allowed_html value for the filtered_html text filter when enabled. I've searched the core modules, the standard installation profile, Drupal.org and Google, but I haven't been able to find an example of the proper way to do this in a module.install's hook_enable(). I assume I should use filter_format_save() and tried the following: filter_format_save('filtered_html', 'filter_html', 1, 1, array( 'settings' => array( 'allowed_html' => '<a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <span>' ) ) ); This resulted in "PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'format' cannot be null" which I don't understand because the first argument to filter_format_save() is the format. Could someone point me in the right direction?
I don't know of an all-in example that would 'just work' but there are a few things you can do.
First of all filter_format_save() expects just one parameter, not five, and that parameter should be an object.
Secondly you cannot make the assumption that there is a format 'filtered_html', it might have been deleted so you will need to check that it exists and is enabled. There are functions in filter.module that can help.
The examples module has a filter_example.module that might help you implement hook_filter_info().
Once you have got hold of the existing 'settings' string, you should use explode() to turn it into an array, then use in_array() to check if what you are wanting to add is already there or not, add it if not and turn it back into a string with implode() ready for saving (or not if it was already there).
I also see in the code for filter_format_save() that there is a module hook 'filter_format_update' so you probably should use that, eg create a function in your module in the form of 'mymodule_filter_format_update()' and feed the object into that.
The structure of the object is described in the comments above filter_format_save()
This should be enough to get you started.
Thanks, Cameron
-- ----------------- Bob Hutchinson Midwales dot com -----------------
