You are here

protected function CRMFeedsActivityProcessor::existingEntityId in CRM Core 8.3

Same name and namespace in other branches
  1. 8 modules/crm_core_activity/legacy/CRMFeedsActivityProcessor.inc \CRMFeedsActivityProcessor::existingEntityId()
  2. 8.2 modules/crm_core_activity/legacy/CRMFeedsActivityProcessor.inc \CRMFeedsActivityProcessor::existingEntityId()
  3. 7 modules/crm_core_activity/includes/CRMFeedsActivityProcessor.inc \CRMFeedsActivityProcessor::existingEntityId()

Get activity_id of an existing feed item activity if available.

File

modules/crm_core_activity/legacy/CRMFeedsActivityProcessor.inc, line 288
Class definition of CRMFeedsActivityProcessor. @TODO: Remove Feeds integration

Class

CRMFeedsActivityProcessor
Creates activities from feed items.

Code

protected function existingEntityId(FeedsSource $source, FeedsParserResult $result) {
  if ($activity_id = parent::existingEntityId($source, $result)) {
    return $activity_id;
  }

  // Iterate through all unique targets and test whether they do already
  // exist in the database.
  foreach ($this
    ->uniqueTargets($source, $result) as $target => $value) {
    switch ($target) {
      case 'activity_id':
        $activity_id = db_query("SELECT activity_id FROM {crm_core_activity} WHERE activity_id = :activity_id", [
          ':activity_id' => $value,
        ])
          ->fetchField();
        break;
      case 'feeds_source':
        if ($id = feeds_get_importer_id($this->config['activity_type'])) {
          $activity_id = db_query("SELECT fs.feed_activity_id FROM {crm_core_activity} c JOIN {feeds_source} fs ON c.activity_id = fs.feed_activity_id WHERE fs.id = :id AND fs.source = :source", [
            ':id' => $id,
            ':source' => $value,
          ])
            ->fetchField();
        }
        break;
    }
    if ($activity_id) {

      // Return with the first activity_id found.
      return $activity_id;
    }
  }
  return 0;
}