/** * Create new activity for contact * * @param $param * @param $contactId * @param string $activityType * @param string $activityStatus * * @return array * @throws CiviCRM_API3_Exception */ public function createActivity($param, $contactId, $activityType = 'Petition', $activityStatus = 'Scheduled') { $activityTypeId = CRM_Core_OptionGroup::getValue('activity_type', $activityType, 'name', 'String', 'value'); $activityStatusId = CRM_Core_OptionGroup::getValue('activity_status', $activityStatus, 'name', 'String', 'value'); $params = array('sequential' => 1, 'source_contact_id' => $contactId, 'source_record_id' => $param->external_id, 'campaign_id' => $this->campaignId, 'activity_type_id' => $activityTypeId, 'activity_date_time' => $param->create_dt, 'subject' => $param->action_name, 'location' => $param->action_technical_type, 'status_id' => $activityStatusId); if (property_exists($param, 'comment') && $param->comment != '') { $params['details'] = trim($param->comment); } if (property_exists($param, 'metadata')) { if (property_exists($param->metadata, 'sign_comment') && $param->metadata->sign_comment != '') { $params['details'] = trim($param->metadata->sign_comment); } if (property_exists($param->metadata, 'mail_to_subject') && property_exists($param->metadata, 'mail_to_body')) { $params['details'] = trim($param->metadata->mail_to_subject) . "\n\n" . trim($param->metadata->mail_to_body); } } // fixme move this fix to utils and fix other text fields // those unicode chars invoke bugs if (key_exists('details', $params)) { $params['details'] = preg_replace('/[\\x00-\\x1F\\x80-\\xFF]/', '', $params['details']); } return CRM_Speakcivi_Logic_Activity::setActivity($params); }