You are here

protected function CRMFeedsActivityProcessor::existingEntityId in CRM Core 7

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

Get activity_id of an existing feed item activity if available.

File

modules/crm_core_activity/includes/CRMFeedsActivityProcessor.inc, line 265
Class definition of CRMFeedsActivityProcessor.

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", array(
          ':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", array(
            ':id' => $id,
            ':source' => $value,
          ))
            ->fetchField();
        }
        break;
    }
    if ($activity_id) {

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