本文整理匯總了PHP中CRM_Dedupe_BAO_RuleGroup::combos方法的典型用法代碼示例。如果您正苦於以下問題:PHP CRM_Dedupe_BAO_RuleGroup::combos方法的具體用法?PHP CRM_Dedupe_BAO_RuleGroup::combos怎麽用?PHP CRM_Dedupe_BAO_RuleGroup::combos使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類CRM_Dedupe_BAO_RuleGroup
的用法示例。
在下文中一共展示了CRM_Dedupe_BAO_RuleGroup::combos方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: canProfilesDedupe
/**
* Check if the profiles collect enough information to dedupe.
*
* @param $profileIds
* @param int $rgId
* @return bool
*/
public static function canProfilesDedupe($profileIds, $rgId = 0)
{
// find the unsupervised rule
$rgParams = array('used' => 'Unsupervised', 'contact_type' => 'Individual');
if ($rgId > 0) {
$rgParams['id'] = $rgId;
}
$activeRg = CRM_Dedupe_BAO_RuleGroup::dedupeRuleFieldsWeight($rgParams);
// get the combinations that could be a match for the rule
$okCombos = $combos = array();
CRM_Dedupe_BAO_RuleGroup::combos($activeRg[0], $activeRg[1], $combos);
// create an index of what combinations involve each field
$index = array();
foreach ($combos as $comboid => $combo) {
foreach ($combo as $cfield) {
$index[$cfield][$comboid] = TRUE;
}
$combos[$comboid] = array_fill_keys($combo, 0);
$okCombos[$comboid] = array_fill_keys($combo, 2);
}
// get profiles and see if they have the necessary combos
$profileReqFields = array();
foreach ($profileIds as $profileId) {
if ($profileId && is_numeric($profileId)) {
$fields = CRM_Core_BAO_UFGroup::getFields($profileId);
// walk through the fields in the profile
foreach ($fields as $field) {
// check each of the fields in the index against the profile field
foreach ($index as $ifield => $icombos) {
if (strpos($field['name'], $ifield) !== FALSE) {
// we found the field in the profile, now record it in the index
foreach ($icombos as $icombo => $dontcare) {
$combos[$icombo][$ifield] = $combos[$icombo][$ifield] != 2 && !$field['is_required'] ? 1 : 2;
if ($combos[$icombo] == $okCombos[$icombo]) {
// if any combo is complete with 2s (all fields are present and required), we can go home
return 2;
}
}
}
}
}
}
}
// check the combos to see if everything is > 0
foreach ($combos as $comboid => $combo) {
$complete = FALSE;
foreach ($combo as $cfield) {
if ($cfield > 0) {
$complete = TRUE;
} else {
// this combo isn't complete--skip to the next combo
continue 2;
}
}
if ($complete) {
return 1;
}
}
// no combo succeeded
return 0;
}