Exemplo n.º 1
0
 /**
  * Setting up new campaign in CiviCRM if this is necessary.
  *
  * @param $externalIdentifier
  * @param $campaign
  * @param $param
  *
  * @return array
  * @throws CiviCRM_API3_Exception
  */
 public function setCampaign($externalIdentifier, $campaign, $param = null)
 {
     if (!$this->isValidCampaign($campaign)) {
         if ($externalIdentifier > 0) {
             $this->urlSpeakout = $this->determineUrlSpeakout($param);
             $externalCampaign = (object) json_decode($this->getContent("https://" . $this->urlSpeakout . "/{$externalIdentifier}.json"));
             if (is_object($externalCampaign) && property_exists($externalCampaign, 'name') && $externalCampaign->name != '' && property_exists($externalCampaign, 'id') && $externalCampaign->id > 0) {
                 $this->defaultCampaignTypeId = CRM_Core_OptionGroup::getValue('campaign_type', 'Petitions', 'name', 'String', 'value');
                 $locale = $this->determineLanguage($externalCampaign->internal_name);
                 $utmCampaign = $externalCampaign->slug != '' ? $externalCampaign->slug : 'speakout_' . $externalCampaign->id;
                 $params = array('sequential' => 1, 'name' => $externalCampaign->internal_name, 'title' => $externalCampaign->internal_name, 'description' => $externalCampaign->name, 'external_identifier' => $externalCampaign->id, 'campaign_type_id' => $this->defaultCampaignTypeId, 'start_date' => date('Y-m-d H:i:s'), $this->fieldLanguage => $this->determineLanguage($externalCampaign->internal_name), $this->fieldSenderMail => CRM_Speakcivi_Tools_Dictionary::getSenderMail($locale), $this->fieldUrlCampaign => "https://" . $this->urlSpeakout . "/" . $utmCampaign, $this->fieldUtmCampaign => $utmCampaign, $this->fieldTwitterShareText => $externalCampaign->twitter_share_text, $this->fieldSubjectNew => CRM_Speakcivi_Tools_Dictionary::getSubjectConfirm($locale), $this->fieldSubjectCurrent => CRM_Speakcivi_Tools_Dictionary::getSubjectImpact($locale));
                 $result = civicrm_api3('Campaign', 'create', $params);
                 if ($result['count'] == 1) {
                     $this->setCustomFieldBySQL($result['id'], $this->fieldMessageNew, CRM_Speakcivi_Tools_Dictionary::getMessageNew($locale));
                     $this->setCustomFieldBySQL($result['id'], $this->fieldMessageCurrent, CRM_Speakcivi_Tools_Dictionary::getMessageCurrent($locale));
                     return $result['values'][0];
                 }
             }
         }
         return array();
     } else {
         return $campaign;
     }
 }