[development] easy way to check if a value has changed (nodeapi)

Hans Langouche hans.langouche at gmail.com
Mon Aug 24 19:41:06 UTC 2009


tnx all, this approach did the trick and saved me the hassle of creating 
extra value fields or tables.

HnLn

Brian Vuyk wrote:
> Perhaps, on hook_api($op = 'presave'), load a copy of the node from 
> the db, and check if the field has changed?
>
> <?php
>
> function yourmodule_nodeapi($op, &$node, $a3 = NULL, a4 = NULL) {
>
>  if ($op == 'presave' && $node->type == 'your_type') {
>    $old = node_load($node->nid);
>    if ($old->field_notify_by_email == 0 && 
> $node->field_notify_by_email == 1) {
>      // Send the changes via email.
>    }
>  }
>
> }
>
> ?>
>
> Henrique Recidive wrote:
>> 2009/8/22 Hans Langouche <hans.langouche at gmail.com>:
>>  
>>> Hi there,
>>>
>>> I'm working on a (node) profile system that has a checkbox to allow 
>>> people
>>> to be informed by postal mail.  If checked the system sends a mail 
>>> with the
>>> details to a certain email address.  Of course this email shouldn't 
>>> be sent
>>> every time  the profile is updated, but only when the checkbox was
>>> previously unchecked (if it was checked allready, nothing should 
>>> happen).
>>>
>>> For the moment I'm thinking of creating a second (hidden) value to 
>>> which I
>>> compare on 'update' and sync with the actual value after the check.  
>>> But I'm
>>> thinking there must be an easier way, but can't find it in 
>>> documentation or
>>> by inspecting $node on 'update'.
>>>     
>>
>> Wouldn't it suffice adding a table (uid, sent) so when user checked
>> the checkbox it will check for a record in that table for the current
>> user, if not there, it will send system email and add a record to that
>> table?
>>
>> That way, you know if the checkbox was checked previously and can
>> decide to display it defaulting to checked, or just hide the checkbox.
>>
>> Henrique
>>
>>  
>>> Tnx,
>>>
>>> HnLn
>>>
>>>
>>>     
>


More information about the development mailing list