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