function pcpteams_civicrm_post($op, $objectName, $objectId, &$objectRef) { if ($objectName == 'ContributionSoft' && $op == 'create' && $objectRef->pcp_id) { // switch to event's campaign id where the pcp is related to while contribution is created where contribution has contribution page's campaign id $updateQuery = "\n UPDATE civicrm_contribution cc\n INNER JOIN civicrm_contribution_soft cs ON cs.contribution_id = cc.id\n INNER JOIN civicrm_pcp cp ON cp.id = cs.pcp_id\n INNER JOIN civicrm_event ce ON ce.id = cp.page_id\n SET cc.campaign_id = ce.campaign_id, cc.source = %3\n WHERE cp.page_type = %1 AND cs.id = %2 "; $queryParams = array(1 => array('event', 'String'), 2 => array($objectId, 'Int'), 3 => array('PCP', 'String')); CRM_Core_DAO::executeQuery($updateQuery, $queryParams); $query = "SELECT pcp.contact_id, cs.tribute_contact_id, cs.org_id \n FROM civicrm_value_pcp_custom_set cs\n INNER JOIN civicrm_pcp pcp ON cs.team_pcp_id = pcp.id \n WHERE cs.entity_id = %1"; $dao = CRM_Core_DAO::executeQuery($query, array(1 => array($objectRef->pcp_id, 'Integer'))); $dao->fetch(); if ($dao->contact_id) { $newSoft = clone $objectRef; $newSoft->contact_id = $dao->contact_id; // $newSoft->pcp_personal_note = "Created From Hook"; unset($newSoft->id); $newSoft->save(); } if ($dao->tribute_contact_id) { $newSoft = clone $objectRef; $newSoft->contact_id = $dao->tribute_contact_id; // $newSoft->pcp_personal_note = "Created From Hook"; unset($newSoft->id); $newSoft->save(); } if ($dao->org_id) { $newSoft = clone $objectRef; $newSoft->contact_id = $dao->org_id; // $newSoft->pcp_personal_note = "Created From Hook"; unset($newSoft->id); $newSoft->save(); } } if ($op == 'create' && $objectName == 'Participant') { $pcpBlockId = CRM_Pcpteams_Utils::getPcpBlockId($objectRef->event_id); if ($pcpBlockId) { // Auto create default PCP CRM_Pcpteams_Utils::getPcpId($objectRef->event_id, 'event', TRUE, $objectRef->contact_id); } } if ($objectName == 'PCP' && $op == 'edit') { CRM_Pcpteams_Utils::adjustTeamTarget($objectId); } }