Re: Programmatically update allowed_html filter settings

Bob Hutchinson <[email protected]>
Newsgroups gmane.comp.php.drupal.devel
Message-ID <[email protected]>
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
-----------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.