You are here

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);
  }
}