/home/smartbloks/www/new/wp-content/plugins/mailoptin/src/connections/GiveWPConnect/Settings.php
<?php
namespace MailOptin\GiveWPConnect;
use MailOptin\Core\Repositories\ConnectionsRepository;
use MailOptin\Core\Connections\ConnectionFactory;
use MailOptin\Connections\Init;
class Settings extends \Give_Settings_Page
{
public function __construct()
{
$this->id = 'give-mailoptin';
$this->label = __('MailOptin', 'mailoptin');
add_action('give_admin_field_mailoptin_upsell', [$this, 'upsell_block']);
add_action('give_admin_field_mailoptin_header', [$this, 'header_block']);
parent::__construct();
}
public function get_settings()
{
$mo_gwp_settings = [
[
'id' => 'mailoptin_gwp_settings',
'name' => __('MailOptin Integration', 'mailoptin'),
'type' => 'title'
]
];
if (defined('MAILOPTIN_DETACH_LIBSODIUM')) {
$connections = GWPInit::get_instance()->email_service_providers();
$saved_connections = give_get_option('mailoptin_gwp_integration_connections');
$mo_gwp_settings[] = [
'id' => 'mailoptin_gwp_integration_connections',
'name' => __('Select Integration', 'mailoptin'),
'desc' => __('Select your email marketing software or CRM.', 'mailoptin'),
'options' => $connections,
'type' => 'select',
'class' => 'mailoptin_gwp_fields'
];
if ( ! empty($saved_connections)) {
$lists = Init::mo_select_list_options($saved_connections);
array_push($mo_gwp_settings, [
'id' => 'mailoptin_gwp_integration_lists',
'name' => __('Select List', 'mailoptin'),
'desc' => __('Select the email list, audience or contact list to add customers.', 'mailoptin'),
'options' => $lists,
'type' => 'select',
'class' => 'mailoptin_gwp_fields'
]);
$double_optins = $this->gwp_double_optin_settings($saved_connections);
array_push($mo_gwp_settings, $double_optins);
$saved_lists = give_get_option('mailoptin_gwp_integration_lists');
if ( ! empty($saved_lists)) {
$mappable_fields = Init::merge_vars_field_map($saved_connections, $saved_lists);
if ( ! empty($mappable_fields)) {
$mo_gwp_settings[] = [
'name' => __('Map Fields', 'mailoptin'),
'type' => 'mailoptin_header'
];
foreach ($mappable_fields as $key => $value) {
$mapped_key = rawurlencode('mailoptin_gwp_mapped_fields-' . $key);
array_push($mo_gwp_settings, [
'id' => $mapped_key,
'name' => $value,
'options' => GWPInit::get_instance()->gwp_fields(),
'type' => 'select',
'class' => 'mailoptin_gwp_fields'
]);
}
}
array_push($mo_gwp_settings, $this->gwp_lead_tag_settings($saved_connections, true));
}
}
$mo_gwp_settings[] = [
'name' => __('Other Settings', 'mailoptin'),
'type' => 'mailoptin_header'
];
$mo_gwp_settings[] = [
'id' => 'mailoptin_gwp_subscribe_customers',
'name' => __('Subscription Method', 'mailoptin'),
'desc' => __('Choose "Ask for permission" to show an opt-in checkbox during the checkout. Customers will only be subscribed to the email marketing list if they check the checkbox. Choose Automatically to subscribe customers silently after purchase.', 'mailoptin'),
'options' => [
'no' => __('Automatically', 'mailoptin'),
'yes' => __('Ask for permission', 'mailoptin')
],
'type' => 'select',
'class' => 'mailoptin_gwp_fields'
];
$mo_gwp_settings[] = [
'id' => 'mailoptin_gwp_optin_checkbox_label',
'name' => __('Optin Checkbox Label', 'mailoptin'),
'desc' => __('This is only used if Subscribe customers is set to "Ask for permission" and It is the text that will display beside the optin checkbox.', 'mailoptin'),
'default' => __('Subscribe to our newsletter', 'mailoptin'),
'type' => 'text',
'class' => 'mailoptin_gwp_fields'
];
} else {
$GLOBALS['give_hide_save_button'] = true;
$mo_gwp_settings[] = ['type' => 'mailoptin_upsell'];
}
// Docs link is always last.
$mo_gwp_settings[] = [
'name' => __('MailOptin Docs Link', 'give-mailchimp'),
'id' => 'mailoptin_settings_docs_link',
'url' => esc_url('https://mailoptin.io/article/givewp-mailchimp-aweber-more/'),
'title' => __('MailOptin Settings', 'give-mailchimp'),
'type' => 'give_docs_link',
];
$mo_gwp_settings[] = [
'id' => 'give_mailoptin_settings',
'type' => 'sectionend',
];
return $mo_gwp_settings;
}
/**
* @param array $sections The subsections
*
* @return array The subsections with Mailchimp added
*/
public function subsection($sections)
{
$sections['mailoptin'] = __('MailOptin', 'mailoptin');
return $sections;
}
public function header_block($args)
{
echo '<tr><td colspan="2"><div class="mo-gwp-map-field-title"><span>' . esc_html($args['name']) . '</span></div></td><td></td></tr>';
}
public function upsell_block()
{
$upsell_url = 'https://mailoptin.io/pricing/?utm_source=wp_dashboard&utm_medium=upgrade&utm_campaign=givewp_connection_settings';
$doc_url = 'https://mailoptin.io/article/givewp-mailchimp-aweber-more/?utm_source=wp_dashboard&utm_medium=upgrade&utm_campaign=givewp_connection_settings';
$content = sprintf(
__("Upgrade to %sMailOptin Premium%s to add all donors and only donors that donated via specific donation forms to your email marketing list.", 'mailoptin'),
'<a target="_blank" href="' . $upsell_url . '">',
'</a>'
);
$html = '<div class="mo-gwp-upsell-block">';
$html .= sprintf('<p>%s</p>', $content);
$html .= sprintf('<p><a href="%s" style="margin-right: 10px;" class="button-primary" target="_blank">', $upsell_url);
$html .= esc_html__('Upgrade to MailOptin Premium', 'mailoptin');
$html .= '</a>';
$html .= sprintf('<a href="%s" target="_blank">', $doc_url);
$html .= esc_html__('Learn more', 'mailoptin');
$html .= '</a>';
$html .= '</p>';
$html .= '</div>';
echo $html;
}
/**
* @param $saved_integration
*
* @return array|false
*/
public function gwp_double_optin_settings($saved_integration)
{
if (empty($saved_integration)) return false;
$is_double_optin = false;
$double_optin_connections = Init::double_optin_support_connections();
foreach ($double_optin_connections as $key => $value) {
if ($saved_integration === $key) {
$is_double_optin = $value;
}
}
if (in_array($saved_integration, Init::double_optin_support_connections(true))) {
return [
'id' => 'mailoptin_gwp_double_optin',
'name' => ($is_double_optin === false) ? esc_html__('Enable Double Optin', 'mailoptin') : esc_html__('Disable Double Optin', 'mailoptin'),
'desc' => esc_html__('Double optin requires customers to confirm their email address before they are added or subscribed.', 'mailoptin'),
'type' => 'checkbox'
];
}
return [];
}
/**
*
* @param $saved_integration
*
* @return array|false|void
*/
public function gwp_lead_tag_settings($saved_integration, $is_give_settings = false)
{
if (empty($saved_integration)) return false;
if (in_array($saved_integration, Init::select2_tag_connections())) {
$tags = [];
$instance = ConnectionFactory::make($saved_integration);
if (is_object($instance) && method_exists($instance, 'get_tags')) {
$tags = $instance->get_tags();
}
$options = [];
foreach ($tags as $value => $label) {
if (empty($value)) continue;
$options[$value] = $label;
}
$argss = [
'id' => 'mailoptin_gwp_select_tags',
'name' => esc_html__('Tags', 'mailoptin'),
'desc' => esc_html__('Select tags to assign to customers.', 'mailoptin'),
'options' => $options,
'class' => 'mo_gwp_select2 mailoptin_gwp_fields',
'type' => 'select',
'multiple' => 'multiple'
];
if ($is_give_settings) {
$argss['type'] = 'chosen';
$argss['data_type'] = 'multiselect';
unset($argss['class']);
}
return $argss;
} elseif (in_array($saved_integration, Init::text_tag_connections())) {
return [
'id' => 'mailoptin_gwp_text_tags',
'name' => esc_html__('Tags', 'mailoptin'),
'desc' => esc_html__('Enter a comma-separated list of tags to assign to customers.', 'mailoptin'),
'type' => 'text',
'class' => 'mailoptin_gwp_fields'
];
}
}
/**
* @return mixed
*/
public static function email_service_providers()
{
$connections = ConnectionsRepository::get_connections();
if (defined('MAILOPTIN_DETACH_LIBSODIUM')) {
$connections['leadbank'] = __('MailOptin Leads', 'mailoptin');
}
unset($connections['WebHookConnect']);
unset($connections['WordPressUserRegistrationConnect']);
return $connections;
}
}