46 lines
3.0 KiB
PHP
46 lines
3.0 KiB
PHP
<?php
|
|
if(!defined('ABSPATH')) exit;
|
|
class WMF_Service_ActiveCampaign extends WMF_Service {
|
|
public $id='active-campaign'; public $label='ActiveCampaign'; public $group='email';
|
|
protected $credentials=array('api_url'=>'','api_key'=>'','list_id'=>'');
|
|
public function is_connected(){return!empty($this->credentials['api_url'])&&!empty($this->credentials['api_key']);}
|
|
public function admin_widget($prev=array()){
|
|
$c = $this->get_credentials();
|
|
$int = wmf_get_integrations();
|
|
$act = $int->action_update;
|
|
$nonce= wp_create_nonce($act);
|
|
$conn = $this->is_connected();
|
|
echo '<div class="wmf-widget-body">';
|
|
if($conn) echo '<div class="wmf-connected-badge">✓ Verbunden</div>';
|
|
echo '<form class="wmf-int-form">';
|
|
echo '<input type="hidden" name="_wpnonce" value="'.esc_attr($nonce).'">';
|
|
echo '<input type="hidden" name="action" value="'.esc_attr($act).'">';
|
|
echo '<input type="hidden" name="services[]" value="active-campaign">';
|
|
|
|
echo '<p><label>Konto-URL</label>';
|
|
echo '<input type="url" name="credentials[active-campaign][api_url]" value="'.esc_attr($c['api_url']??'').'" class="widefat" placeholder="https://KONTO.api-us1.com">';
|
|
echo '<span class="description">Einstellungen → Entwickler → API-Zugang</span></p>';
|
|
echo '<p><label>API-Schluessel</label>';
|
|
echo '<input type="text" name="credentials[active-campaign][api_key]" value="'.esc_attr($c['api_key']??'').'" class="widefat" autocomplete="off"></p>';
|
|
echo '<p><label>Listen-ID (optional)</label>';
|
|
echo '<input type="text" name="credentials[active-campaign][list_id]" value="'.esc_attr($c['list_id']??'').'" class="widefat"></p>';
|
|
|
|
echo '<p><button type="submit" class="button button-primary">Speichern</button></p>';
|
|
echo '</form>';
|
|
|
|
echo '</div>';
|
|
}
|
|
public function load(){add_action('wmf_form_submitted',array($this,'subscribe'),10,5);}
|
|
public function subscribe($form_id,$meta,$fields,$values,$sub_id){
|
|
if(!$this->is_connected()) return;
|
|
$email=''; foreach($fields as $f){if(($f['type']??'')==='email'&&!empty($values[$f['id']])){$email=$values[$f['id']];break;}}
|
|
if(!is_email($email)) return;
|
|
$api=rtrim($this->credentials['api_url'],'/'); $key=$this->credentials['api_key'];
|
|
$res=wp_remote_post($api.'/api/3/contacts',array('headers'=>array('Api-Token'=>$key,'Content-Type'=>'application/json'),'body'=>wp_json_encode(array('contact'=>array('email'=>$email))),'timeout'=>10));
|
|
if(!is_wp_error($res)&&!empty($this->credentials['list_id'])){
|
|
$body=json_decode(wp_remote_retrieve_body($res),true);
|
|
$cid=$body['contact']['id']??0;
|
|
if($cid) wp_remote_post($api.'/api/3/contactLists',array('headers'=>array('Api-Token'=>$key,'Content-Type'=>'application/json'),'body'=>wp_json_encode(array('contactList'=>array('list'=>intval($this->credentials['list_id']),'contact'=>$cid,'status'=>1))),'timeout'=>10));
|
|
}
|
|
}
|
|
} |