コード例 #1
0
 function postProcess()
 {
     // define some stats
     $activities_total = count($this->_activityHolderIds);
     $activities_processed = 0;
     $activities_detected = 0;
     $activities_fixed = 0;
     // filter for relevant activities
     $activity_type_id = (int) CRM_Householdmerge_Logic_Configuration::getCheckHouseholdActivityTypeID();
     $activity_status_ids = CRM_Householdmerge_Logic_Configuration::getFixableActivityStatusIDs();
     $activity_ids = implode(',', $this->_activityHolderIds);
     $filter_query = "SELECT id AS activity_id FROM civicrm_activity\n                     WHERE civicrm_activity.activity_type_id = {$activity_type_id} \n                       AND civicrm_activity.status_id IN ({$activity_status_ids})\n                       AND civicrm_activity.id IN ({$activity_ids});";
     $filtered_activities = CRM_Core_DAO::executeQuery($filter_query);
     // go through all activites and try to fix them
     while ($filtered_activities->fetch()) {
         $activities_processed += 1;
         $problem = CRM_Householdmerge_Logic_Problem::extractProblem($filtered_activities->activity_id);
         if ($problem) {
             $activities_detected += 1;
             if ($problem->fix()) {
                 $activities_fixed += 1;
             }
         }
     }
     // show stats
     CRM_Core_Session::setStatus(ts('%1 of the %2 selected activities were processed, %3 of them could be fixed.', array(1 => $activities_detected, 2 => $activities_total, 3 => $activities_fixed, 'domain' => 'de.systopia.householdmerge')), ts('%1 Household Problems Fixed', array(1 => $activities_fixed, 'domain' => 'de.systopia.householdmerge')), $activities_fixed > 0 ? 'info' : 'warn');
     parent::postProcess();
 }
コード例 #2
0
 /**
  * extract a problem from a given activity
  */
 public static function extractProblem($activity_id)
 {
     $activity = civicrm_api3('Activity', 'getsingle', array('id' => $activity_id));
     if ($activity['activity_type_id'] != CRM_Householdmerge_Logic_Configuration::getCheckHouseholdActivityTypeID()) {
         return NULL;
     }
     $fixable_status_ids = explode(',', CRM_Householdmerge_Logic_Configuration::getFixableActivityStatusIDs());
     if (!in_array($activity['status_id'], $fixable_status_ids)) {
         return NULL;
     }
     $code = substr($activity['subject'], 1, 4);
     // TODO: load member at this point?
     return self::createProblem($code, $activity['source_contact_id'], array('activity_id' => $activity_id));
 }