File "contact-form-properties.php"
Full Path: /home/flipjqml/onlinebetsolution.com/wp-content/plugins/contact-form-7/modules/sendinblue/contact-form-properties.php
File size: 7.28 KB
MIME-type: text/x-php
Charset: utf-8
<?php
add_filter(
'wpcf7_pre_construct_contact_form_properties',
'wpcf7_sendinblue_register_property',
10, 2
);
/**
* Registers the sendinblue contact form property.
*/
function wpcf7_sendinblue_register_property( $properties, $contact_form ) {
$service = WPCF7_Sendinblue::get_instance();
if ( $service->is_active() ) {
$properties += array(
'sendinblue' => array(),
);
}
return $properties;
}
add_action(
'wpcf7_save_contact_form',
'wpcf7_sendinblue_save_contact_form',
10, 3
);
/**
* Saves the sendinblue property value.
*/
function wpcf7_sendinblue_save_contact_form( $contact_form, $args, $context ) {
$service = WPCF7_Sendinblue::get_instance();
if ( ! $service->is_active() ) {
return;
}
$prop = (array) ( $_POST['wpcf7-sendinblue'] ?? array() );
$prop = wp_parse_args(
$prop,
array(
'enable_contact_list' => false,
'contact_lists' => array(),
'enable_transactional_email' => false,
'email_template' => 0,
)
);
$prop['contact_lists'] = array_map( 'absint', $prop['contact_lists'] );
$prop['email_template'] = absint( $prop['email_template'] );
$contact_form->set_properties( array(
'sendinblue' => $prop,
) );
}
add_filter(
'wpcf7_editor_panels',
'wpcf7_sendinblue_editor_panels',
10, 1
);
/**
* Builds the editor panel for the sendinblue property.
*/
function wpcf7_sendinblue_editor_panels( $panels ) {
$service = WPCF7_Sendinblue::get_instance();
if ( ! $service->is_active() ) {
return $panels;
}
$contact_form = WPCF7_ContactForm::get_current();
$prop = wp_parse_args(
$contact_form->prop( 'sendinblue' ),
array(
'enable_contact_list' => false,
'contact_lists' => array(),
'enable_transactional_email' => false,
'email_template' => 0,
)
);
$editor_panel = static function () use ( $prop, $service ) {
$description = sprintf(
esc_html(
__( "You can set up the Brevo integration here. For details, see %s.", 'contact-form-7' )
),
wpcf7_link(
__( 'https://contactform7.com/sendinblue-integration/', 'contact-form-7' ),
__( 'Brevo integration', 'contact-form-7' )
)
);
$lists = wpcf7_sendinblue_get_lists();
$templates = $service->get_templates();
?>
<h2><?php echo esc_html( __( 'Brevo', 'contact-form-7' ) ); ?></h2>
<fieldset>
<legend><?php echo $description; ?></legend>
<table class="form-table" role="presentation">
<tbody>
<tr class="<?php echo $prop['enable_contact_list'] ? '' : 'inactive'; ?>">
<th scope="row">
<?php
echo esc_html( __( 'Contact lists', 'contact-form-7' ) );
?>
</th>
<td>
<fieldset>
<legend class="screen-reader-text">
<?php
echo esc_html( __( 'Contact lists', 'contact-form-7' ) );
?>
</legend>
<label for="wpcf7-sendinblue-enable-contact-list">
<input type="checkbox" name="wpcf7-sendinblue[enable_contact_list]" id="wpcf7-sendinblue-enable-contact-list" value="1" <?php checked( $prop['enable_contact_list'] ); ?> />
<?php
echo esc_html(
__( "Add form submitters to your contact lists", 'contact-form-7' )
);
?>
</label>
</fieldset>
</td>
</tr>
<tr>
<th scope="row"></th>
<td>
<fieldset>
<?php
if ( $lists ) {
echo sprintf(
'<legend>%1$s</legend>',
esc_html( __( 'Select lists to which contacts are added:', 'contact-form-7' ) )
);
echo '<ul>';
foreach ( $lists as $list ) {
echo sprintf(
'<li><label><input %1$s /> %2$s</label></li>',
wpcf7_format_atts( array(
'type' => 'checkbox',
'name' => 'wpcf7-sendinblue[contact_lists][]',
'value' => $list['id'],
'checked' => in_array( $list['id'], $prop['contact_lists'] ),
) ),
esc_html( $list['name'] )
);
}
echo '</ul>';
} else {
echo sprintf(
'<legend>%1$s</legend>',
esc_html( __( 'You have no contact list yet.', 'contact-form-7' ) )
);
}
?>
</fieldset>
<?php
echo sprintf(
'<p><a %1$s>%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a></p>',
wpcf7_format_atts( array(
'href' => 'https://my.sendinblue.com/lists',
'target' => '_blank',
'rel' => 'external noreferrer noopener',
) ),
esc_html( __( 'Manage your contact lists', 'contact-form-7' ) ),
esc_html( __( '(opens in a new tab)', 'contact-form-7' ) )
);
?>
</td>
</tr>
<tr class="<?php echo $prop['enable_transactional_email'] ? '' : 'inactive'; ?>">
<th scope="row">
<?php
echo esc_html( __( 'Welcome email', 'contact-form-7' ) );
?>
</th>
<td>
<fieldset>
<legend class="screen-reader-text">
<?php
echo esc_html( __( 'Welcome email', 'contact-form-7' ) );
?>
</legend>
<label for="wpcf7-sendinblue-enable-transactional-email">
<input type="checkbox" name="wpcf7-sendinblue[enable_transactional_email]" id="wpcf7-sendinblue-enable-transactional-email" value="1" <?php checked( $prop['enable_transactional_email'] ); ?> />
<?php
echo esc_html(
__( "Send a welcome email to new contacts", 'contact-form-7' )
);
?>
</label>
</fieldset>
</td>
</tr>
<tr>
<th scope="row"></th>
<td>
<fieldset>
<?php
if ( $templates ) {
echo sprintf(
'<legend>%1$s</legend>',
esc_html( __( 'Select an email template:', 'contact-form-7' ) )
);
echo '<select name="wpcf7-sendinblue[email_template]">';
echo sprintf(
'<option %1$s>%2$s</option>',
wpcf7_format_atts( array(
'value' => 0,
'selected' => 0 === $prop['email_template'],
) ),
esc_html( __( '— Select —', 'contact-form-7' ) )
);
foreach ( $templates as $template ) {
echo sprintf(
'<option %1$s>%2$s</option>',
wpcf7_format_atts( array(
'value' => $template['id'],
'selected' => $prop['email_template'] === $template['id'],
) ),
esc_html( $template['name'] )
);
}
echo '</select>';
} else {
echo sprintf(
'<legend>%1$s</legend>',
esc_html( __( 'You have no active email template yet.', 'contact-form-7' ) )
);
}
?>
</fieldset>
<?php
echo sprintf(
'<p><a %1$s>%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a></p>',
wpcf7_format_atts( array(
'href' => 'https://my.sendinblue.com/camp/lists/template',
'target' => '_blank',
'rel' => 'external noreferrer noopener',
) ),
esc_html( __( 'Manage your email templates', 'contact-form-7' ) ),
esc_html( __( '(opens in a new tab)', 'contact-form-7' ) )
);
?>
</td>
</tr>
</tbody>
</table>
</fieldset>
<?php
};
$panels += array(
'sendinblue-panel' => array(
'title' => __( 'Brevo', 'contact-form-7' ),
'callback' => $editor_panel,
),
);
return $panels;
}
/**
* Retrieves contact lists from Brevo's database.
*/
function wpcf7_sendinblue_get_lists() {
static $lists = array();
$service = WPCF7_Sendinblue::get_instance();
if ( ! empty( $lists ) or ! $service->is_active() ) {
return $lists;
}
$limit = 50;
$offset = 0;
while ( count( $lists ) < $limit * 10 ) {
$lists_next = (array) $service->get_lists( array(
'limit' => $limit,
'offset' => $offset,
) );
if ( ! empty( $lists_next ) ) {
$lists = array_merge( $lists, $lists_next );
}
if ( count( $lists_next ) < $limit ) {
break;
}
$offset += $limit;
}
return $lists;
}