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

Brian Vuyk brian at brianvuyk.com
Sat Aug 22 18:04:45 UTC 2009


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