[drupal-support] Applying filter(s) to a node upon cron
    Steven Wittens 
    steven at acko.net
       
    Fri Jan 14 17:23:41 UTC 2005
    
    
  
Mark Quinn wrote:
>Hi all,
>
>I have a "page" node on my corporate intranet that contains deadlines
>and other date information. I've developed a filter which "lives
>inside" the html filter so that deadlines that are approaching or
>overdue are rendered in a different style to highlight them.
>
>Now, of course, this filter will only run on the node's body when the
>node is updated. I would like to update the node each night from a
>cron hook.
>
>I understand I can load the node with: $node = node_load( $nid => x );
>manipulate the body by setting $node->body 
>and save the node with node_save( $node );
>
>But i'm lost on how to apply the filters. How is this done?
>
Filters are applied on output, not on input. However, there is a filter 
cache which keeps the last filtered version of a piece of text to 
prevent it from being reprocessed every time. The easiest way to force a 
piece of text to be refiltered it to delete its entry from the filter 
cache. The next time someone views it, it will be refiltered. This 
requires you to hash the body and use it as an index into the cache, see 
check_output() for the details.
However, it sounds like filters are not what you need. The filter system 
is there to transform user-supplied content to HTML. It should not be 
used to add new info or meta-info, especially not when it's only for 
nodes, as the filter system is used for many more things than just nodes 
(comments, profile fields, private messages, aggregated content, ...). 
In fact, if I were you, I'd implement all this in the theme rather than 
the filter system.
Steven Wittens
    
    
More information about the drupal-support
mailing list