2010-03-10 73 views
1

我在D6中創建規則以在「已批准」志願小時數達到8的倍數時通知某人。小時被記錄爲具有數字CCK字段,「已批准」是一個標誌。我正在模8計算,但意識到這是不夠的。如果用戶有7小時的批准時間並且放入另一個2,則規則返回false,並且不發送通知。這裏是目前的規則代碼,每當一個節點被標記時觸發:基於閾值觸發Drupal規則(或任何PHP邏輯)

$result = db_result(db_query("SELECT 
SUM(vol_hours.field_hours_worked_value) AS TotalHours 
FROM node 
INNER JOIN content_type_volunteer_log vol_hours ON node.vid = vol_hours.vid 
INNER JOIN flag_content ON node.vid = flag_content.content_id AND flag_content.fid = 3 
WHERE node.uid = '%d' 
AND YEAR(field_date_worked_value) = YEAR(NOW())" , $node->uid)); 

if ($result % 8 == 0) { 
return TRUE; 
} 
else { 
return FALSE; 
} 

有關如何解決此問題的任何建議?我是否需要一個額外的「8的倍數」的標誌類型,在每個閾值傳遞後遞增,可能是作爲預定的規則而不是觸發規則?

回答

0

我會存放 「last_checked_value」,當樓層(current_value/8)>地板(last_checked_value/8)

+0

非常有意義觸發事件。也許我會運行一個cron作業來填充該字段並按照預定規則執行此操作。 – Nicholai 2010-03-11 13:12:50