当前位置: 首页>>代码示例>>PHP>>正文


PHP CRM_Dedupe_BAO_RuleGroup类代码示例

本文整理汇总了PHP中CRM_Dedupe_BAO_RuleGroup的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Dedupe_BAO_RuleGroup类的具体用法?PHP CRM_Dedupe_BAO_RuleGroup怎么用?PHP CRM_Dedupe_BAO_RuleGroup使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了CRM_Dedupe_BAO_RuleGroup类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: preProcess

 /**
  * Function to pre processing
  *
  * @return None
  * @access public
  */
 function preProcess()
 {
     $this->_rgid = CRM_Utils_Request::retrieve('id', 'Positive', $this, false, 0);
     $this->_contactType = CRM_Utils_Request::retrieve('contact_type', 'String', $this, false, 0);
     if ($this->_rgid) {
         $rgDao =& new CRM_Dedupe_DAO_RuleGroup();
         $rgDao->id = $this->_rgid;
         $rgDao->find(true);
         $this->_defaults['threshold'] = $rgDao->threshold;
         $this->_contactType = $rgDao->contact_type;
         $this->_defaults['level'] = $rgDao->level;
         $this->_defaults['name'] = $rgDao->name;
         $ruleDao =& new CRM_Dedupe_DAO_Rule();
         $ruleDao->dedupe_rule_group_id = $this->_rgid;
         $ruleDao->find();
         $count = 0;
         while ($ruleDao->fetch()) {
             $this->_defaults["where_{$count}"] = "{$ruleDao->rule_table}.{$ruleDao->rule_field}";
             $this->_defaults["length_{$count}"] = $ruleDao->rule_length;
             $this->_defaults["weight_{$count}"] = $ruleDao->rule_weight;
             $count++;
         }
     }
     $supported =& CRM_Dedupe_BAO_RuleGroup::supportedFields($this->_contactType);
     if (is_array($supported)) {
         foreach ($supported as $table => $fields) {
             foreach ($fields as $field => $title) {
                 $this->_fields["{$table}.{$field}"] = $title;
             }
         }
     }
     asort($this->_fields);
 }
开发者ID:ksecor,项目名称:civicrm,代码行数:39,代码来源:DedupeRules.php

示例2: preProcess

 /**
  * Pre processing.
  *
  * @return void
  */
 public function preProcess()
 {
     // Ensure user has permission to be here
     if (!CRM_Core_Permission::check('administer dedupe rules')) {
         CRM_Utils_System::permissionDenied();
         CRM_Utils_System::civiExit();
     }
     $this->_options = CRM_Core_SelectValues::getDedupeRuleTypes();
     $this->_rgid = CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE, 0);
     $this->_contactType = CRM_Utils_Request::retrieve('contact_type', 'String', $this, FALSE, 0);
     if ($this->_rgid) {
         $rgDao = new CRM_Dedupe_DAO_RuleGroup();
         $rgDao->id = $this->_rgid;
         $rgDao->find(TRUE);
         $this->_defaults['threshold'] = $rgDao->threshold;
         $this->_contactType = $rgDao->contact_type;
         $this->_defaults['used'] = CRM_Utils_Array::key($rgDao->used, $this->_options);
         $this->_defaults['title'] = $rgDao->title;
         $this->_defaults['name'] = $rgDao->name;
         $this->_defaults['is_reserved'] = $rgDao->is_reserved;
         $this->assign('isReserved', $rgDao->is_reserved);
         $this->assign('ruleName', $rgDao->name);
         $ruleDao = new CRM_Dedupe_DAO_Rule();
         $ruleDao->dedupe_rule_group_id = $this->_rgid;
         $ruleDao->find();
         $count = 0;
         while ($ruleDao->fetch()) {
             $this->_defaults["where_{$count}"] = "{$ruleDao->rule_table}.{$ruleDao->rule_field}";
             $this->_defaults["length_{$count}"] = $ruleDao->rule_length;
             $this->_defaults["weight_{$count}"] = $ruleDao->rule_weight;
             $count++;
         }
     }
     $supported = CRM_Dedupe_BAO_RuleGroup::supportedFields($this->_contactType);
     if (is_array($supported)) {
         foreach ($supported as $table => $fields) {
             foreach ($fields as $field => $title) {
                 $this->_fields["{$table}.{$field}"] = $title;
             }
         }
     }
     asort($this->_fields);
 }
开发者ID:riyadennis,项目名称:my_civicrm,代码行数:48,代码来源:DedupeRules.php

示例3: preProcess

 /**
  * Function to pre processing
  *
  * @return None
  * @access public
  */
 function preProcess()
 {
     // Ensure user has permission to be here
     require_once 'CRM/Core/Permission.php';
     if (!CRM_Core_Permission::check('administer dedupe rules')) {
         CRM_Utils_System::permissionDenied();
         CRM_Utils_System::civiExit();
     }
     $this->_rgid = CRM_Utils_Request::retrieve('id', 'Positive', $this, false, 0);
     $this->_contactType = CRM_Utils_Request::retrieve('contact_type', 'String', $this, false, 0);
     if ($this->_rgid) {
         $rgDao = new CRM_Dedupe_DAO_RuleGroup();
         $rgDao->id = $this->_rgid;
         $rgDao->find(true);
         $this->_defaults['threshold'] = $rgDao->threshold;
         $this->_contactType = $rgDao->contact_type;
         $this->_defaults['level'] = $rgDao->level;
         $this->_defaults['name'] = $rgDao->name;
         $this->_defaults['is_default'] = $rgDao->is_default;
         $ruleDao = new CRM_Dedupe_DAO_Rule();
         $ruleDao->dedupe_rule_group_id = $this->_rgid;
         $ruleDao->find();
         $count = 0;
         while ($ruleDao->fetch()) {
             $this->_defaults["where_{$count}"] = "{$ruleDao->rule_table}.{$ruleDao->rule_field}";
             $this->_defaults["length_{$count}"] = $ruleDao->rule_length;
             $this->_defaults["weight_{$count}"] = $ruleDao->rule_weight;
             $count++;
         }
     }
     $supported =& CRM_Dedupe_BAO_RuleGroup::supportedFields($this->_contactType);
     if (is_array($supported)) {
         foreach ($supported as $table => $fields) {
             foreach ($fields as $field => $title) {
                 $this->_fields["{$table}.{$field}"] = $title;
             }
         }
     }
     asort($this->_fields);
 }
开发者ID:hampelm,项目名称:Ginsberg-CiviDemo,代码行数:46,代码来源:DedupeRules.php

示例4: formRule

 /**
  * global validation rules for the form
  *
  * @param array $fields posted values of the form
  *
  * @return array list of errors to be posted back to the form
  * @static
  * @access public
  */
 static function formRule($fields)
 {
     $errors = array();
     // define so we avoid notices below
     $errors['_qf_default'] = '';
     $fieldMessage = NULL;
     if (!array_key_exists('savedMapping', $fields)) {
         $importKeys = array();
         foreach ($fields['mapper'] as $mapperPart) {
             $importKeys[] = $mapperPart[0];
         }
         // FIXME: should use the schema titles, not redeclare them
         $requiredFields = array('target_contact_id' => ts('Contact ID'), 'activity_date_time' => ts('Activity Date'), 'activity_subject' => ts('Activity Subject'), 'activity_type_id' => ts('Activity Type Id'));
         $params = array('used' => 'Unsupervised', 'contact_type' => 'Individual');
         list($ruleFields, $threshold) = CRM_Dedupe_BAO_RuleGroup::dedupeRuleFieldsWeight($params);
         $weightSum = 0;
         foreach ($importKeys as $key => $val) {
             if (array_key_exists($val, $ruleFields)) {
                 $weightSum += $ruleFields[$val];
             }
         }
         foreach ($ruleFields as $field => $weight) {
             $fieldMessage .= ' ' . $field . '(weight ' . $weight . ')';
         }
         foreach ($requiredFields as $field => $title) {
             if (!in_array($field, $importKeys)) {
                 if ($field == 'target_contact_id') {
                     if ($weightSum >= $threshold || in_array('external_identifier', $importKeys)) {
                         continue;
                     } else {
                         $errors['_qf_default'] .= ts('Missing required contact matching fields.') . $fieldMessage . ' ' . ts('(Sum of all weights should be greater than or equal to threshold: %1).', array(1 => $threshold)) . '<br />';
                     }
                 } elseif ($field == 'activity_type_id') {
                     if (in_array('activity_label', $importKeys)) {
                         continue;
                     } else {
                         $errors['_qf_default'] .= ts('Missing required field: Provide %1 or %2', array(1 => $title, 2 => 'Activity Type Label')) . '<br />';
                     }
                 } else {
                     $errors['_qf_default'] .= ts('Missing required field: %1', array(1 => $title)) . '<br />';
                 }
             }
         }
     }
     if (!empty($fields['saveMapping'])) {
         $nameField = CRM_Utils_Array::value('saveMappingName', $fields);
         if (empty($nameField)) {
             $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
         } else {
             $mappingTypeId = CRM_Core_OptionGroup::getValue('mapping_type', 'Import Activity', 'name');
             if (CRM_Core_BAO_Mapping::checkMapping($nameField, $mappingTypeId)) {
                 $errors['saveMappingName'] = ts('Duplicate Import Mapping Name');
             }
         }
     }
     if (empty($errors['_qf_default'])) {
         unset($errors['_qf_default']);
     }
     if (!empty($errors)) {
         if (!empty($errors['saveMappingName'])) {
             $_flag = 1;
             $assignError = new CRM_Core_Page();
             $assignError->assign('mappingDetailsError', $_flag);
         }
         return $errors;
     }
     return TRUE;
 }
开发者ID:prashantgajare,项目名称:civicrm-core,代码行数:77,代码来源:MapField.php

示例5: formRule

 /**
  * Global validation rules for the form.
  *
  * @param array $fields
  *   Posted values of the form.
  *
  * @param $files
  * @param $self
  *
  * @return array
  *   list of errors to be posted back to the form
  */
 public static function formRule($fields, $files, $self)
 {
     $errors = array();
     $fieldMessage = NULL;
     $contactORContributionId = $self->_onDuplicate == CRM_Import_Parser::DUPLICATE_UPDATE ? 'contribution_id' : 'contribution_contact_id';
     if (!array_key_exists('savedMapping', $fields)) {
         $importKeys = array();
         foreach ($fields['mapper'] as $mapperPart) {
             $importKeys[] = $mapperPart[0];
         }
         $contactTypeId = $self->get('contactType');
         $contactTypes = array(CRM_Import_Parser::CONTACT_INDIVIDUAL => 'Individual', CRM_Import_Parser::CONTACT_HOUSEHOLD => 'Household', CRM_Import_Parser::CONTACT_ORGANIZATION => 'Organization');
         $params = array('used' => 'Unsupervised', 'contact_type' => isset($contactTypes[$contactTypeId]) ? $contactTypes[$contactTypeId] : '');
         list($ruleFields, $threshold) = CRM_Dedupe_BAO_RuleGroup::dedupeRuleFieldsWeight($params);
         $weightSum = 0;
         foreach ($importKeys as $key => $val) {
             if (array_key_exists($val, $ruleFields)) {
                 $weightSum += $ruleFields[$val];
             }
             if ($val == "soft_credit") {
                 $mapperKey = CRM_Utils_Array::key('soft_credit', $importKeys);
                 if (empty($fields['mapper'][$mapperKey][1])) {
                     if (empty($errors['_qf_default'])) {
                         $errors['_qf_default'] = '';
                     }
                     $errors['_qf_default'] .= ts('Missing required fields: Soft Credit') . '<br />';
                 }
             }
         }
         foreach ($ruleFields as $field => $weight) {
             $fieldMessage .= ' ' . $field . '(weight ' . $weight . ')';
         }
         // FIXME: should use the schema titles, not redeclare them
         $requiredFields = array($contactORContributionId == 'contribution_id' ? 'contribution_id' : 'contribution_contact_id' => $contactORContributionId == 'contribution_id' ? ts('Contribution ID') : ts('Contact ID'), 'total_amount' => ts('Total Amount'), 'financial_type' => ts('Financial Type'));
         foreach ($requiredFields as $field => $title) {
             if (!in_array($field, $importKeys)) {
                 if (empty($errors['_qf_default'])) {
                     $errors['_qf_default'] = '';
                 }
                 if ($field == $contactORContributionId) {
                     if (!($weightSum >= $threshold || in_array('external_identifier', $importKeys)) && $self->_onDuplicate != CRM_Import_Parser::DUPLICATE_UPDATE) {
                         $errors['_qf_default'] .= ts('Missing required contact matching fields.') . " {$fieldMessage} " . ts('(Sum of all weights should be greater than or equal to threshold: %1).', array(1 => $threshold)) . '<br />';
                     } elseif ($self->_onDuplicate == CRM_Import_Parser::DUPLICATE_UPDATE && !(in_array('invoice_id', $importKeys) || in_array('trxn_id', $importKeys) || in_array('contribution_id', $importKeys))) {
                         $errors['_qf_default'] .= ts('Invoice ID or Transaction ID or Contribution ID are required to match to the existing contribution records in Update mode.') . '<br />';
                     }
                 } else {
                     $errors['_qf_default'] .= ts('Missing required field: %1', array(1 => $title)) . '<br />';
                 }
             }
         }
         //at least one field should be mapped during update.
         if ($self->_onDuplicate == CRM_Import_Parser::DUPLICATE_UPDATE) {
             $atleastOne = FALSE;
             foreach ($self->_mapperFields as $key => $field) {
                 if (in_array($key, $importKeys) && !in_array($key, array('doNotImport', 'contribution_id', 'invoice_id', 'trxn_id'))) {
                     $atleastOne = TRUE;
                     break;
                 }
             }
             if (!$atleastOne) {
                 $errors['_qf_default'] .= ts('At least one contribution field needs to be mapped for update during update mode.') . '<br />';
             }
         }
     }
     if (!empty($fields['saveMapping'])) {
         $nameField = CRM_Utils_Array::value('saveMappingName', $fields);
         if (empty($nameField)) {
             $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
         } else {
             $mappingTypeId = CRM_Core_OptionGroup::getValue('mapping_type', 'Import Contribution', 'name');
             if (CRM_Core_BAO_Mapping::checkMapping($nameField, $mappingTypeId)) {
                 $errors['saveMappingName'] = ts('Duplicate Import Contribution Mapping Name');
             }
         }
     }
     if (!empty($errors)) {
         if (!empty($errors['saveMappingName'])) {
             $_flag = 1;
             $assignError = new CRM_Core_Page();
             $assignError->assign('mappingDetailsError', $_flag);
         }
         if (!empty($errors['_qf_default'])) {
             CRM_Core_Session::setStatus($errors['_qf_default'], ts("Error"), "error");
             return $errors;
         }
     }
     return TRUE;
 }
开发者ID:FundingWorks,项目名称:civicrm-core,代码行数:100,代码来源:MapField.php

示例6: formatContactIDSToLinks

    /**
     * Given an array of contact ids this function will return array with links to view contact page.
     *
     * @param array $contactIDs
     *   Associated contact id's.
     * @param bool $addViewLink
     * @param bool $addEditLink
     * @param int $originalId
     *   Associated with the contact which is edited.
     *
     *
     * @return array
     *   returns array with links to contact view
     */
    public static function formatContactIDSToLinks($contactIDs, $addViewLink = TRUE, $addEditLink = TRUE, $originalId = NULL)
    {
        $contactLinks = array();
        if (!is_array($contactIDs) || empty($contactIDs)) {
            return $contactLinks;
        }
        // does contact has sufficient permissions.
        $permissions = array('view' => 'view all contacts', 'edit' => 'edit all contacts', 'merge' => 'merge duplicate contacts');
        $permissionedContactIds = array();
        foreach ($permissions as $task => $permission) {
            // give permission.
            if (CRM_Core_Permission::check($permission)) {
                foreach ($contactIDs as $contactId) {
                    $permissionedContactIds[$contactId][$task] = TRUE;
                }
                continue;
            }
            // check permission on acl basis.
            if (in_array($task, array('view', 'edit'))) {
                $aclPermission = CRM_Core_Permission::VIEW;
                if ($task == 'edit') {
                    $aclPermission = CRM_Core_Permission::EDIT;
                }
                foreach ($contactIDs as $contactId) {
                    if (CRM_Contact_BAO_Contact_Permission::allow($contactId, $aclPermission)) {
                        $permissionedContactIds[$contactId][$task] = TRUE;
                    }
                }
            }
        }
        // retrieve display names for all contacts
        $query = '
   SELECT  c.id, c.display_name, c.contact_type, ce.email
     FROM  civicrm_contact c
LEFT JOIN  civicrm_email ce ON ( ce.contact_id=c.id AND ce.is_primary = 1 )
    WHERE  c.id IN  (' . implode(',', $contactIDs) . ' ) LIMIT 20';
        $dao = CRM_Core_DAO::executeQuery($query);
        $contactLinks['msg'] = NULL;
        $i = 0;
        while ($dao->fetch()) {
            $contactLinks['rows'][$i]['display_name'] = $dao->display_name;
            $contactLinks['rows'][$i]['primary_email'] = $dao->email;
            // get the permission for current contact id.
            $hasPermissions = CRM_Utils_Array::value($dao->id, $permissionedContactIds);
            if (!is_array($hasPermissions) || empty($hasPermissions)) {
                $i++;
                continue;
            }
            // do check for view.
            if (array_key_exists('view', $hasPermissions)) {
                $contactLinks['rows'][$i]['view'] = '<a class="action-item" href="' . CRM_Utils_System::url('civicrm/contact/view', 'reset=1&cid=' . $dao->id) . '" target="_blank">' . ts('View') . '</a>';
                if (!$contactLinks['msg']) {
                    $contactLinks['msg'] = 'view';
                }
            }
            if (array_key_exists('edit', $hasPermissions)) {
                $contactLinks['rows'][$i]['edit'] = '<a class="action-item" href="' . CRM_Utils_System::url('civicrm/contact/add', 'reset=1&action=update&cid=' . $dao->id) . '" target="_blank">' . ts('Edit') . '</a>';
                if (!$contactLinks['msg'] || $contactLinks['msg'] != 'merge') {
                    $contactLinks['msg'] = 'edit';
                }
            }
            if (!empty($originalId) && array_key_exists('merge', $hasPermissions)) {
                $rgBao = new CRM_Dedupe_BAO_RuleGroup();
                $rgBao->contact_type = $dao->contact_type;
                $rgBao->used = 'Supervised';
                if ($rgBao->find(TRUE)) {
                    $rgid = $rgBao->id;
                }
                if ($rgid && isset($dao->id)) {
                    //get an url to merge the contact
                    $contactLinks['rows'][$i]['merge'] = '<a class="action-item" href="' . CRM_Utils_System::url('civicrm/contact/merge', "reset=1&cid=" . $originalId . '&oid=' . $dao->id . '&action=update&rgid=' . $rgid) . '">' . ts('Merge') . '</a>';
                    $contactLinks['msg'] = 'merge';
                }
            }
            $i++;
        }
        return $contactLinks;
    }
开发者ID:FundingWorks,项目名称:civicrm-core,代码行数:92,代码来源:Utils.php

示例7: dedupeRuleFields

 /**
  * To find fields related to a rule group.
  *
  * @param array contains the rule group property to identify rule group
  *
  * @return rule fields array associated to rule group
  * @access public
  */
 static function dedupeRuleFields($params)
 {
     $rgBao = new CRM_Dedupe_BAO_RuleGroup();
     $rgBao->level = $params['level'];
     $rgBao->contact_type = $params['contact_type'];
     $rgBao->is_default = 1;
     $rgBao->find(TRUE);
     $ruleBao = new CRM_Dedupe_BAO_Rule();
     $ruleBao->dedupe_rule_group_id = $rgBao->id;
     $ruleBao->find();
     $ruleFields = array();
     while ($ruleBao->fetch()) {
         $ruleFields[] = $ruleBao->rule_field;
     }
     return $ruleFields;
 }
开发者ID:peteainsworth,项目名称:civicrm-4.2.9-drupal,代码行数:24,代码来源:Rule.php

示例8: 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;
 }
开发者ID:vakeesan26,项目名称:civicrm-core,代码行数:68,代码来源:Registration.php

示例9: dedupeRuleFieldsWeight

 /**
  * find fields related to a rule group.
  *
  * @param array $params
  *
  * @return array
  *   (rule field => weight) array and threshold associated to rule group
  */
 public static function dedupeRuleFieldsWeight($params)
 {
     $rgBao = new CRM_Dedupe_BAO_RuleGroup();
     $rgBao->contact_type = $params['contact_type'];
     if (!empty($params['id'])) {
         // accept an ID if provided
         $rgBao->id = $params['id'];
     } else {
         $rgBao->used = $params['used'];
     }
     $rgBao->find(TRUE);
     $ruleBao = new CRM_Dedupe_BAO_Rule();
     $ruleBao->dedupe_rule_group_id = $rgBao->id;
     $ruleBao->find();
     $ruleFields = array();
     while ($ruleBao->fetch()) {
         $ruleFields[$ruleBao->rule_field] = $ruleBao->rule_weight;
     }
     return array($ruleFields, $rgBao->threshold);
 }
开发者ID:saurabhbatra96,项目名称:civicrm-core,代码行数:28,代码来源:RuleGroup.php

示例10: run

 /**
  * Browse all rule groups.
  */
 public function run()
 {
     $gid = CRM_Utils_Request::retrieve('gid', 'Positive', $this, FALSE, 0);
     $action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 0);
     $context = CRM_Utils_Request::retrieve('context', 'String', $this);
     $limit = CRM_Utils_Request::retrieve('limit', 'Integer', $this);
     $rgid = CRM_Utils_Request::retrieve('rgid', 'Positive');
     $urlQry = "reset=1&rgid={$rgid}&gid={$gid}&limit={$limit}";
     $this->assign('urlQuery', $urlQry);
     $session = CRM_Core_Session::singleton();
     $contactIds = $session->get('selectedSearchContactIds');
     if ($context == 'search' || !empty($contactIds)) {
         $context = 'search';
         $this->assign('backURL', $session->readUserContext());
     }
     if ($action & CRM_Core_Action::RENEW) {
         // empty cache
         if ($rgid) {
             CRM_Core_BAO_PrevNextCache::deleteItem(NULL, CRM_Dedupe_Merger::getMergeCacheKeyString($rgid, $gid));
         }
         CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contact/dedupefind', $urlQry . "&action=update"));
     } elseif ($action & CRM_Core_Action::MAP) {
         // do a batch merge if requested
         $result = CRM_Dedupe_Merger::batchMerge($rgid, $gid, 'safe', TRUE, 75);
         $skippedCount = CRM_Utils_Request::retrieve('skipped', 'Positive', $this, FALSE, 0);
         $skippedCount = $skippedCount + count($result['skipped']);
         $mergedCount = CRM_Utils_Request::retrieve('merged', 'Positive', $this, FALSE, 0);
         $mergedCount = $mergedCount + count($result['merged']);
         if (empty($result['merged']) && empty($result['skipped'])) {
             $message = '';
             if ($mergedCount >= 1) {
                 $message = ts("%1 pairs of duplicates were merged", array(1 => $mergedCount));
             }
             if ($skippedCount >= 1) {
                 $message = $message ? "{$message} and " : '';
                 $message .= ts("%1 pairs of duplicates were skipped due to conflict", array(1 => $skippedCount));
             }
             $message .= ts(" during the batch merge process with safe mode.");
             CRM_Core_Session::setStatus($message, ts('Merge Complete'), 'success');
             CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contact/dedupefind', $urlQry . "&action=update"));
         } else {
             $urlQry .= "&action=map&skipped={$skippedCount}&merged={$mergedCount}";
             CRM_Utils_System::jsRedirect(CRM_Utils_System::url('civicrm/contact/dedupefind', $urlQry), ts('Batch Merge Task in progress'), ts('The batch merge task is still in progress. This page will be refreshed automatically.'));
         }
     }
     if ($action & CRM_Core_Action::UPDATE || $action & CRM_Core_Action::BROWSE) {
         $cid = CRM_Utils_Request::retrieve('cid', 'Positive', $this, FALSE, 0);
         $this->action = CRM_Core_Action::UPDATE;
         $urlQry .= '&snippet=4';
         if ($context == 'conflicts') {
             $urlQry .= "&selected=1";
         }
         $this->assign('sourceUrl', CRM_Utils_System::url('civicrm/ajax/dedupefind', $urlQry, FALSE, NULL, FALSE));
         //reload from cache table
         $cacheKeyString = CRM_Dedupe_Merger::getMergeCacheKeyString($rgid, $gid);
         $stats = CRM_Dedupe_Merger::getMergeStatsMsg($cacheKeyString);
         if ($stats) {
             CRM_Core_Session::setStatus($stats);
             // reset so we not displaying same message again
             CRM_Dedupe_Merger::resetMergeStats($cacheKeyString);
         }
         $join = CRM_Dedupe_Merger::getJoinOnDedupeTable();
         $where = "de.id IS NULL";
         if ($context == 'conflicts') {
             $where .= " AND pn.is_selected = 1";
         }
         $this->_mainContacts = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, $join, $where);
         if (empty($this->_mainContacts)) {
             if ($context == 'conflicts') {
                 // if the current screen was intended to list only selected contacts, move back to full dupe list
                 CRM_Utils_System::redirect(CRM_Utils_System::url(CRM_Utils_System::currentPath(), $urlQry . '&action=update'));
             }
             if ($gid) {
                 $foundDupes = $this->get("dedupe_dupes_{$gid}");
                 if (!$foundDupes) {
                     $foundDupes = CRM_Dedupe_Finder::dupesInGroup($rgid, $gid, $limit);
                 }
                 $this->set("dedupe_dupes_{$gid}", $foundDupes);
             } elseif (!empty($contactIds)) {
                 $foundDupes = $this->get("search_dedupe_dupes_{$gid}");
                 if (!$foundDupes) {
                     $foundDupes = CRM_Dedupe_Finder::dupes($rgid, $contactIds);
                 }
                 $this->set("search_dedupe_dupes_{$gid}", $foundDupes);
             } else {
                 $foundDupes = $this->get('dedupe_dupes');
                 if (!$foundDupes) {
                     $foundDupes = CRM_Dedupe_Finder::dupes($rgid, array(), TRUE, $limit);
                 }
                 $this->set('dedupe_dupes', $foundDupes);
             }
             if (!$foundDupes) {
                 $ruleGroup = new CRM_Dedupe_BAO_RuleGroup();
                 $ruleGroup->id = $rgid;
                 $ruleGroup->find(TRUE);
                 $session = CRM_Core_Session::singleton();
                 $session->setStatus(ts('No possible duplicates were found using %1 rule.', array(1 => $ruleGroup->name)), ts('None Found'), 'info');
//.........这里部分代码省略.........
开发者ID:nielosz,项目名称:civicrm-core,代码行数:101,代码来源:DedupeFind.php

示例11: formRule

 /**
  * Global validation rules for the form.
  *
  * @param array $fields
  *   Posted values of the form.
  *
  * @param $files
  * @param $self
  *
  * @return array
  *   list of errors to be posted back to the form
  */
 public static function formRule($fields, $files, $self)
 {
     $errors = array();
     if (!array_key_exists('savedMapping', $fields)) {
         $importKeys = array();
         foreach ($fields['mapper'] as $mapperPart) {
             $importKeys[] = $mapperPart[0];
         }
         // FIXME: should use the schema titles, not redeclare them
         $requiredFields = array('membership_contact_id' => ts('Contact ID'), 'membership_type_id' => ts('Membership Type'), 'membership_start_date' => ts('Membership Start Date'));
         $contactTypeId = $self->get('contactType');
         $contactTypes = array(CRM_Import_Parser::CONTACT_INDIVIDUAL => 'Individual', CRM_Import_Parser::CONTACT_HOUSEHOLD => 'Household', CRM_Import_Parser::CONTACT_ORGANIZATION => 'Organization');
         $params = array('used' => 'Unsupervised', 'contact_type' => $contactTypes[$contactTypeId]);
         list($ruleFields, $threshold) = CRM_Dedupe_BAO_RuleGroup::dedupeRuleFieldsWeight($params);
         $weightSum = 0;
         foreach ($importKeys as $key => $val) {
             if (array_key_exists($val, $ruleFields)) {
                 $weightSum += $ruleFields[$val];
             }
         }
         $fieldMessage = '';
         foreach ($ruleFields as $field => $weight) {
             $fieldMessage .= ' ' . $field . '(weight ' . $weight . ')';
         }
         foreach ($requiredFields as $field => $title) {
             if (!in_array($field, $importKeys)) {
                 if ($field == 'membership_contact_id') {
                     if (($weightSum >= $threshold || in_array('external_identifier', $importKeys)) && $self->_onDuplicate != CRM_Import_Parser::DUPLICATE_UPDATE || in_array('membership_id', $importKeys)) {
                         continue;
                     } else {
                         if (!isset($errors['_qf_default'])) {
                             $errors['_qf_default'] = '';
                         }
                         $errors['_qf_default'] .= ts('Missing required contact matching fields.') . " {$fieldMessage} " . ts('(Sum of all weights should be greater than or equal to threshold: %1).', array(1 => $threshold)) . ' ' . ts('(OR Membership ID if update mode.)') . '<br />';
                     }
                 } else {
                     if (!isset($errors['_qf_default'])) {
                         $errors['_qf_default'] = '';
                     }
                     $errors['_qf_default'] .= ts('Missing required field: %1', array(1 => $title)) . '<br />';
                 }
             }
         }
     }
     if (!empty($fields['saveMapping'])) {
         $nameField = CRM_Utils_Array::value('saveMappingName', $fields);
         if (empty($nameField)) {
             $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
         } else {
             $mappingTypeId = CRM_Core_OptionGroup::getValue('mapping_type', 'Import Membership', 'name');
             if (CRM_Core_BAO_Mapping::checkMapping($nameField, $mappingTypeId)) {
                 $errors['saveMappingName'] = ts('Duplicate Import Membership Mapping Name');
             }
         }
     }
     if (!empty($errors)) {
         if (!empty($errors['saveMappingName'])) {
             $_flag = 1;
             $assignError = new CRM_Core_Page();
             $assignError->assign('mappingDetailsError', $_flag);
         }
         return $errors;
     }
     return TRUE;
 }
开发者ID:nielosz,项目名称:civicrm-core,代码行数:77,代码来源:MapField.php

示例12: formRule

 /**
  * global validation rules for the form
  *
  * @param array $fields posted values of the form
  *
  * @return array list of errors to be posted back to the form
  * @static
  * @access public
  */
 static function formRule($fields, $files, $self)
 {
     $errors = array();
     $fieldMessage = NULL;
     if (!array_key_exists('savedMapping', $fields)) {
         $importKeys = array();
         foreach ($fields['mapper'] as $mapperPart) {
             $importKeys[] = $mapperPart[0];
         }
         // FIXME: should use the schema titles, not redeclare them
         $requiredFields = array('participant_contact_id' => ts('Contact ID'), 'event_id' => ts('Event ID'));
         $contactTypeId = $self->get('contactType');
         $contactTypes = array(CRM_Import_Parser::CONTACT_INDIVIDUAL => 'Individual', CRM_Import_Parser::CONTACT_HOUSEHOLD => 'Household', CRM_Import_Parser::CONTACT_ORGANIZATION => 'Organization');
         $params = array('used' => 'Unsupervised', 'contact_type' => $contactTypes[$contactTypeId]);
         list($ruleFields, $threshold) = CRM_Dedupe_BAO_RuleGroup::dedupeRuleFieldsWeight($params);
         $weightSum = 0;
         foreach ($importKeys as $key => $val) {
             if (array_key_exists($val, $ruleFields)) {
                 $weightSum += $ruleFields[$val];
             }
         }
         foreach ($ruleFields as $field => $weight) {
             $fieldMessage .= ' ' . $field . '(weight ' . $weight . ')';
         }
         foreach ($requiredFields as $field => $title) {
             if (!in_array($field, $importKeys)) {
                 if ($field == 'participant_contact_id') {
                     if ($weightSum >= $threshold || in_array('external_identifier', $importKeys) || in_array('participant_id', $importKeys)) {
                         continue;
                     }
                     if ($self->_onDuplicate == CRM_Import_Parser::DUPLICATE_UPDATE) {
                         $errors['_qf_default'] .= ts('Missing required field: Provide Particiapnt ID') . '<br />';
                     } else {
                         $errors['_qf_default'] .= ts('Missing required contact matching fields.') . " {$fieldMessage} " . ts('(Sum of all weights should be greater than or equal to threshold: %1).', array(1 => $threshold)) . ' ' . ts('Or Provide Contact Id or External Identifier.') . '<br />';
                     }
                 } elseif (!in_array('event_title', $importKeys)) {
                     $errors['_qf_default'] .= ts('Missing required field: Provide %1 or %2', array(1 => $title, 2 => 'Event Title')) . '<br />';
                 }
             }
         }
     }
     if (CRM_Utils_Array::value('saveMapping', $fields)) {
         $nameField = CRM_Utils_Array::value('saveMappingName', $fields);
         if (empty($nameField)) {
             $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
         } else {
             $mappingTypeId = CRM_Core_OptionGroup::getValue('mapping_type', 'Import Participant', 'name');
             if (CRM_Core_BAO_Mapping::checkMapping($nameField, $mappingTypeId)) {
                 $errors['saveMappingName'] = ts('Duplicate Import Participant Mapping Name');
             }
         }
     }
     //display Error if loaded mapping is not selected
     if (array_key_exists('loadMapping', $fields)) {
         $getMapName = CRM_Utils_Array::value('savedMapping', $fields);
         if (empty($getMapName)) {
             $errors['savedMapping'] = ts('Select saved mapping');
         }
     }
     if (!empty($errors)) {
         if (!empty($errors['saveMappingName'])) {
             $_flag = 1;
             $assignError = new CRM_Core_Page();
             $assignError->assign('mappingDetailsError', $_flag);
         }
         return $errors;
     }
     return TRUE;
 }
开发者ID:hguru,项目名称:224Civi,代码行数:78,代码来源:MapField.php

示例13: run


//.........这里部分代码省略.........
         $this->_mainContacts = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, $join, $where);
         if (empty($this->_mainContacts)) {
             if ($context == 'conflicts') {
                 // if the current screen was intended to list only selected contacts, move back to full dupe list
                 $sourceParams = 'reset=1&action=update';
                 if ($gid) {
                     $sourceParams .= "&gid={$gid}";
                 }
                 if ($rgid) {
                     $sourceParams .= "&rgid={$rgid}";
                 }
                 CRM_Utils_System::redirect(CRM_Utils_System::url(CRM_Utils_System::currentPath(), $sourceParams));
             }
             if ($gid) {
                 $foundDupes = $this->get("dedupe_dupes_{$gid}");
                 if (!$foundDupes) {
                     $foundDupes = CRM_Dedupe_Finder::dupesInGroup($rgid, $gid);
                 }
                 $this->set("dedupe_dupes_{$gid}", $foundDupes);
             } elseif (!empty($contactIds)) {
                 $foundDupes = $this->get("search_dedupe_dupes_{$gid}");
                 if (!$foundDupes) {
                     $foundDupes = CRM_Dedupe_Finder::dupes($rgid, $contactIds);
                 }
                 $this->get("search_dedupe_dupes_{$gid}", $foundDupes);
             } else {
                 $foundDupes = $this->get('dedupe_dupes');
                 if (!$foundDupes) {
                     $foundDupes = CRM_Dedupe_Finder::dupes($rgid);
                 }
                 $this->set('dedupe_dupes', $foundDupes);
             }
             if (!$foundDupes) {
                 $ruleGroup = new CRM_Dedupe_BAO_RuleGroup();
                 $ruleGroup->id = $rgid;
                 $ruleGroup->find(TRUE);
                 $session = CRM_Core_Session::singleton();
                 $session->setStatus(ts('No possible duplicates were found using %1 rule.', array(1 => $ruleGroup->name)), ts('None Found'), 'info');
                 $url = CRM_Utils_System::url('civicrm/contact/deduperules', 'reset=1');
                 if ($context == 'search') {
                     $url = $session->readUserContext();
                 }
                 CRM_Utils_System::redirect($url);
             } else {
                 $cids = array();
                 foreach ($foundDupes as $dupe) {
                     $cids[$dupe[0]] = 1;
                     $cids[$dupe[1]] = 1;
                 }
                 $cidString = implode(', ', array_keys($cids));
                 $sql = "SELECT id, display_name FROM civicrm_contact WHERE id IN ({$cidString}) ORDER BY sort_name";
                 $dao = new CRM_Core_DAO();
                 $dao->query($sql);
                 $displayNames = array();
                 while ($dao->fetch()) {
                     $displayNames[$dao->id] = $dao->display_name;
                 }
                 // FIXME: sort the contacts; $displayName
                 // is already sort_name-sorted, so use that
                 // (also, consider sorting by dupe count first)
                 // lobo - change the sort to by threshold value
                 // so the more likely dupes are sorted first
                 $session = CRM_Core_Session::singleton();
                 $userId = $session->get('userID');
                 $mainContacts = $permission = array();
                 foreach ($foundDupes as $dupes) {
开发者ID:FundingWorks,项目名称:civicrm-core,代码行数:67,代码来源:DedupeFind.php

示例14: run

 /**
  * Browse all rule groups
  *  
  * @return void
  * @access public
  */
 function run()
 {
     $gid = CRM_Utils_Request::retrieve('gid', 'Positive', $this, false, 0);
     $action = CRM_Utils_Request::retrieve('action', 'String', $this, false, 0);
     $context = CRM_Utils_Request::retrieve('context', 'String', $this);
     $session = CRM_Core_Session::singleton();
     $contactIds = $session->get('selectedSearchContactIds');
     if ($context == 'search' || !empty($contactIds)) {
         $context = 'search';
         $this->assign('backURL', $session->readUserContext());
     }
     if ($action & CRM_Core_Action::UPDATE || $action & CRM_Core_Action::BROWSE) {
         $cid = CRM_Utils_Request::retrieve('cid', 'Positive', $this, false, 0);
         $rgid = CRM_Utils_Request::retrieve('rgid', 'Positive', $this, false, 0);
         $this->action = CRM_Core_Action::UPDATE;
         if ($gid) {
             $foundDupes = $this->get("dedupe_dupes_{$gid}");
             if (!$foundDupes) {
                 $foundDupes = CRM_Dedupe_Finder::dupesInGroup($rgid, $gid);
             }
             $this->set("dedupe_dupes_{$gid}", $foundDupes);
         } else {
             if (!empty($contactIds)) {
                 $foundDupes = $this->get("search_dedupe_dupes_{$gid}");
                 if (!$foundDupes) {
                     $foundDupes = CRM_Dedupe_Finder::dupes($rgid, $contactIds);
                 }
                 $this->get("search_dedupe_dupes_{$gid}", $foundDupes);
             } else {
                 $foundDupes = $this->get("dedupe_dupes");
                 if (!$foundDupes) {
                     $foundDupes = CRM_Dedupe_Finder::dupes($rgid);
                 }
                 $this->set("dedupe_dupes", $foundDupes);
             }
         }
         if (!$foundDupes) {
             $ruleGroup = new CRM_Dedupe_BAO_RuleGroup();
             $ruleGroup->id = $rgid;
             $ruleGroup->find(true);
             $session = CRM_Core_Session::singleton();
             $session->setStatus("No possible duplicates were found using {$ruleGroup->name} rule.");
             $url = CRM_Utils_System::url('civicrm/contact/deduperules', "reset=1");
             if ($context == 'search') {
                 $url = $session->readUserContext();
             }
             CRM_Utils_System::redirect($url);
         } else {
             $cids = array();
             foreach ($foundDupes as $dupe) {
                 $cids[$dupe[0]] = 1;
                 $cids[$dupe[1]] = 1;
             }
             $cidString = implode(', ', array_keys($cids));
             $sql = "SELECT id, display_name FROM civicrm_contact WHERE id IN ({$cidString}) ORDER BY sort_name";
             $dao = new CRM_Core_DAO();
             $dao->query($sql);
             $displayNames = array();
             while ($dao->fetch()) {
                 $displayNames[$dao->id] = $dao->display_name;
             }
             // FIXME: sort the contacts; $displayName
             // is already sort_name-sorted, so use that
             // (also, consider sorting by dupe count first)
             // lobo - change the sort to by threshold value
             // so the more likely dupes are sorted first
             $session = CRM_Core_Session::singleton();
             $userId = $session->get('userID');
             $mainContacts = array();
             foreach ($foundDupes as $dupes) {
                 $srcID = $dupes[0];
                 $dstID = $dupes[1];
                 if ($dstID == $userId) {
                     $srcID = $dupes[1];
                     $dstID = $dupes[0];
                 }
                 $canMerge = CRM_Contact_BAO_Contact_Permission::allow($dstID, CRM_Core_Permission::EDIT) && CRM_Contact_BAO_Contact_Permission::allow($srcID, CRM_Core_Permission::EDIT);
                 $mainContacts[] = array('srcID' => $srcID, 'srcName' => $displayNames[$srcID], 'dstID' => $dstID, 'dstName' => $displayNames[$dstID], 'weight' => $dupes[2], 'canMerge' => $canMerge);
             }
             if ($cid) {
                 $this->_cid = $cid;
             }
             if ($gid) {
                 $this->_gid = $gid;
             }
             $this->_rgid = $rgid;
             $this->_mainContacts = $mainContacts;
             $session = CRM_Core_Session::singleton();
             if ($this->_cid) {
                 $session->pushUserContext(CRM_Utils_System::url('civicrm/contact/deduperules', "action=update&rgid={$this->_rgid}&gid={$this->_gid}&cid={$this->_cid}"));
             } else {
                 $session->pushUserContext(CRM_Utils_System::url('civicrm/contact/dedupefind', "reset=1&action=update&rgid={$this->_rgid}"));
             }
         }
//.........这里部分代码省略.........
开发者ID:hampelm,项目名称:Ginsberg-CiviDemo,代码行数:101,代码来源:DedupeFind.php

示例15: dedupeRuleFieldsWeight

 /**
  * To find fields related to a rule group.
  *
  * @param array contains the rule group property to identify rule group
  *
  * @return (rule field => weight) array and threshold associated to rule group
  * @access public
  */
 function dedupeRuleFieldsWeight($params)
 {
     $rgBao = new CRM_Dedupe_BAO_RuleGroup();
     $rgBao->level = $params['level'];
     $rgBao->contact_type = $params['contact_type'];
     $rgBao->is_default = 1;
     $rgBao->find(TRUE);
     $ruleBao = new CRM_Dedupe_BAO_Rule();
     $ruleBao->dedupe_rule_group_id = $rgBao->id;
     $ruleBao->find();
     $ruleFields = array();
     while ($ruleBao->fetch()) {
         $ruleFields[$ruleBao->rule_field] = $ruleBao->rule_weight;
     }
     return array($ruleFields, $rgBao->threshold);
 }
开发者ID:peteainsworth,项目名称:civicrm-4.2.9-drupal,代码行数:24,代码来源:RuleGroup.php


注:本文中的CRM_Dedupe_BAO_RuleGroup类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。