/** * @param string $name * @param $mode * @param $side * * @return null|string */ public static function from($name, $mode, $side) { $from = NULL; //get survey clause in force, //only when we have survey id. if (!self::$_applySurveyClause) { return $from; } $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name'); $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); switch ($name) { case self::CIVICRM_ACTIVITY_TARGET: $from = " INNER JOIN civicrm_activity_contact civicrm_activity_target\n ON ( civicrm_activity_target.contact_id = contact_a.id AND civicrm_activity_target.record_type_id = {$targetID}) "; break; case self::CIVICRM_ACTIVITY: $surveyActivityTypes = CRM_Campaign_PseudoConstant::activityType(); $surveyKeys = "(" . implode(',', array_keys($surveyActivityTypes)) . ")"; $from = " INNER JOIN civicrm_activity ON ( civicrm_activity.id = civicrm_activity_target.activity_id\n AND civicrm_activity.activity_type_id IN {$surveyKeys} ) "; break; case self::CIVICRM_ACTIVITY_ASSIGNMENT: $from = "\nINNER JOIN civicrm_activity_contact civicrm_activity_assignment ON ( civicrm_activity.id = civicrm_activity_assignment.activity_id AND\ncivicrm_activity_assignment.record_type_id = {$assigneeID} ) "; break; case 'civicrm_survey': $from = " INNER JOIN civicrm_survey ON ( civicrm_survey.id = civicrm_activity.source_record_id ) "; break; case 'civicrm_campaign': $from = " {$side} JOIN civicrm_campaign ON ( civicrm_campaign.id = civicrm_survey.campaign_id ) "; break; } return $from; }
static function from($name, $mode, $side) { $from = null; //get survey clause in force, //only when we have survey id. if (!self::$_applySurveyClause) { return $from; } switch ($name) { case self::civicrm_activity_target: $from = " INNER JOIN civicrm_activity_target ON civicrm_activity_target.target_contact_id = contact_a.id "; break; case self::civicrm_activity: require_once 'CRM/Campaign/PseudoConstant.php'; $surveyActivityTypes = CRM_Campaign_PseudoConstant::activityType(); $surveyKeys = "(" . implode(',', array_keys($surveyActivityTypes)) . ")"; $from = " \nINNER JOIN civicrm_activity ON ( civicrm_activity.id = civicrm_activity_target.activity_id AND \n civicrm_activity.activity_type_id IN {$surveyKeys} )\nINNER JOIN civicrm_activity_assignment ON ( civicrm_activity.id = civicrm_activity_assignment.activity_id )\n"; break; case 'civicrm_survey': $from = " INNER JOIN civicrm_survey ON civicrm_survey.id = civicrm_activity.source_record_id "; break; case 'civicrm_campaign': $from = " {$side} JOIN civicrm_campaign ON civicrm_campaign.id = civicrm_survey.campaign_id "; break; } return $from; }