function wf_crm_activity_find in Webform CiviCRM Integration 7.3
Fetch an existing activity for a contact based on activity & case criteria Maybe someday this will be possible through the CiviCRM API
Parameters
$params: Array of activity & case info
Return value
string
2 calls to wf_crm_activity_find()
- wf_crm_process_submission in ./
webform_civicrm_forms.inc - Webform submission handler Create/update CiviCRM contacts and related data Called by presave, insert and update webform hooks
- _wf_crm_frontend_form_alter in ./
webform_civicrm_forms.inc - Alter front-end of webforms: Called by hook_form_alter() when rendering a civicrm-enabled webform Add custom prefix. Display messages. Block users who should not have access. Set webform default values.
File
- ./
webform_civicrm_utils.inc, line 1362 - Webform CiviCRM module's common utility functions.
Code
function wf_crm_activity_find($params) {
if (!empty($params['status_id'])) {
$cid = wf_crm_aval($params, 'contact_id');
unset($params['contact_id']);
$sql = 'SELECT civicrm_activity.id FROM civicrm_activity';
if (!empty($params['case_id'])) {
$sql .= ' INNER JOIN civicrm_case_activity ON civicrm_activity.id = civicrm_case_activity.activity_id';
}
$sql .= " WHERE is_current_revision = 1 AND is_deleted = 0";
if ($cid) {
$sql .= " AND (civicrm_activity.id IN (SELECT activity_id FROM civicrm_activity_target WHERE target_contact_id = {$cid}) OR source_contact_id = {$cid})";
}
foreach ($params as $field => $value) {
if ($value && is_array($value)) {
$sql .= " AND {$field} IN (" . implode(',', $value) . ")";
}
elseif ($value) {
$sql .= " AND {$field} = {$value}";
}
}
$sql .= ' LIMIT 0, 1';
return CRM_Core_DAO::singleValueQuery($sql);
}
}