crm_run_state_machineWhat it does:
Updates all the users' crm_state information.Defined in: /web/philip/tcl/crm-defs.tcl
Source code:
set dbs [ns_db gethandle subquery 2]
set db [lindex $dbs 0]
set sub_db [lindex $dbs 1]
ns_log Notice "Starting CRM update"
set now [database_to_tcl_string $db "select to_char(sysdate, 'YYYYMMDDHH24MISS') from dual"]
# Sleep for a second, so that we don't inadvertently step on our toes below.
ns_sleep 1
set selection [ns_db select $db "select state_name, next_state, transition_condition
from crm_state_transitions
order by triggering_order"]
with_transaction $sub_db {
while { [ns_db getrow $db $selection] } {
set_variables_after_query
ns_db dml $sub_db "update users
set crm_state = '$next_state', crm_state_entered_date = sysdate
where crm_state = '$state_name'
and crm_state_entered_date < to_date('$now', 'YYYYMMDDHH24MISS')
and ($transition_condition)"
}
} {
ns_log Bug "CRM update failed: $errmsg"
}
ns_db releasehandle $db
ns_db releasehandle $sub_db
ns_log Notice "CRM update done"