Upload folder via GUI - integrations

This commit is contained in:
Git Manager GUI
2026-04-13 18:52:48 +02:00
parent 09ac38e9fa
commit 9514db9454
19 changed files with 1042 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
<?php
if(!defined('ABSPATH')) exit;
class WMF_Service_Mailchimp extends WMF_Service {
public $id='mailchimp'; public $label='Mailchimp'; public $group='email';
protected $credentials=array('api_key'=>'','list_id'=>'');
public function is_connected(){return!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">&#10003; 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="mailchimp">';
echo '<p><label>API-Schluessel</label>';
echo '<input type="text" name="credentials[mailchimp][api_key]" value="'.esc_attr($c['api_key']??'').'" class="widefat" autocomplete="off">';
echo '<span class="description"><a href="https://mailchimp.com/help/about-api-keys/" target="_blank">API-Schluessel erstellen &rarr;</a></span></p>';
echo '<p><label>Audience-ID (Listen-ID)</label>';
echo '<input type="text" name="credentials[mailchimp][list_id]" value="'.esc_attr($c['list_id']??'').'" class="widefat">';
echo '<span class="description">Einstellungen &rarr; Audience &rarr; Audience ID</span></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']])&&is_email($values[$f['id']])){$email=$values[$f['id']];break;}}
if(!is_email($email)||empty($this->credentials['list_id'])) return;
$key=$this->credentials['api_key'];
$dash=strrpos($key,'-'); if($dash===false) return;
$dc=substr($key,$dash+1);
wp_remote_post("https://{$dc}.api.mailchimp.com/3.0/lists/{$this->credentials['list_id']}/members",array(
'headers'=>array('Authorization'=>'Basic '.base64_encode('key:'.$key),'Content-Type'=>'application/json'),
'body'=>wp_json_encode(array('email_address'=>$email,'status'=>'subscribed')),'timeout'=>10,
));
}
}