/** * @param $contactIDs * @param $values */ function getAddressInfo(&$contactIDs, &$values) { $ids = implode(',', $contactIDs); $sql = "\nSELECT c.id as contact_id, l.name as location_type,\n a.street_address, a.supplemental_address_1, a.supplemental_address_2,\n a.city, a.postal_code,\n s.name as state, co.name as country\nFROM civicrm_contact c\nINNER JOIN civicrm_address a ON a.contact_id = c.id\nLEFT JOIN civicrm_location_type l ON a.location_type_id = l.id\nLEFT JOIN civicrm_state_province s ON a.state_province_id = s.id\nLEFT JOIN civicrm_country co ON a.country_id = co.id\nWHERE c.id IN ( {$ids} )\n"; $fields = array('location_type', 'street_address', 'supplemental_address_1', 'supplemental_address_2', 'city', 'postal_code', 'state', 'country'); $dao =& CRM_Core_DAO::executeQuery($sql); while ($dao->fetch()) { $address = ''; foreach ($fields as $fld) { if (empty($dao->{$fld})) { continue; } $address .= $fld == 'location_type' ? "{$dao->{$fld}}: " : " {$dao->{$fld}},"; appendValue($values, $dao->contact_id, $fld, $dao->{$fld}); } if (!empty($address)) { $address = rtrim($address, ","); appendValue($values, $dao->contact_id, 'address', $address); } } }
/** * @param $contactIDs * @param $values * @param $allContactIDs * @param $additionalContacts */ function getActivityInfo(&$contactIDs, &$values, &$allContactIDs, &$additionalContacts) { static $_activitiesHandled = array(); $ids = implode(',', $contactIDs); $sql = "(\n SELECT a.*\n FROM civicrm_activity a\n INNER JOIN civicrm_activity_assignment aa ON aa.activity_id = a.id\n WHERE aa.assignee_contact_id IN ( {$ids} )\n AND ( a.activity_type_id != 3 AND a.activity_type_id != 20 )\n) UNION (\n SELECT a.*\n FROM civicrm_activity a\n INNER JOIN civicrm_activity_target at ON at.activity_id = a.id\n WHERE at.target_contact_id IN ( {$ids} )\n AND ( a.activity_type_id != 3 AND a.activity_type_id != 20 )\n)\n"; $activityFields =& getDBFields('CRM_Activity_DAO_Activity'); $fields = array_keys($activityFields); $activityIDs = array(); $dao =& CRM_Core_DAO::executeQuery($sql); while ($dao->fetch()) { if (isset($_activitiesHandled[$dao->id])) { continue; } $_activitiesHandled[$dao->id] = $dao->id; $activityIDs[] = $dao->id; $activity = array(); foreach ($fields as $fld) { if (empty($dao->{$fld})) { $activity[$fld] = NULL; } else { $activity[$fld] = $dao->{$fld}; } } appendValue($values, $dao->id, 'activity', $activity); addAdditionalContacts(array($dao->source_contact_id), $allContactIDs, $additionalContacts); } $dao->free(); if (empty($activityIDs)) { return; } $activityIDString = implode(",", $activityIDs); // now get all assignee contact ids and target contact ids for this activity $sql = "SELECT * FROM civicrm_activity_assignment WHERE activity_id IN ({$activityIDString})"; $aaDAO =& CRM_Core_DAO::executeQuery($sql); $activityContacts = array(); while ($aaDAO->fetch()) { $activityAssignee = array('id' => $aaDAO->id, 'assignee_contact_id' => $aaDAO->assignee_contact_id, 'activity_id' => $aaDAO->activity_id); appendValue($values, $aaDAO->id, 'activity_assignment', $activityAssignee); $activityContacts[] = $aaDAO->assignee_contact_id; } $aaDAO->free(); $sql = "SELECT * FROM civicrm_activity_target WHERE activity_id IN ({$activityIDString})"; $atDAO =& CRM_Core_DAO::executeQuery($sql); while ($atDAO->fetch()) { $activityTarget = array('id' => $atDAO->id, 'target_contact_id' => $atDAO->target_contact_id, 'activity_id' => $atDAO->activity_id); appendValue($values, $atDAO->id, 'activity_target', $activityTarget); $activityContacts[] = $atDAO->target_contact_id; } $atDAO->free(); addAdditionalContacts($activityContacts, $allContactIDs, $additionalContacts); }