'warning',
'dismiss' => false,
'force' => false,
'message' => __('Plugin settings has been successfully reset.', 'woo-mailerlite')
);
*/
// Integration setup (in case setup was not yet completed via settings handling)
if (MailerLiteSettings::getInstance()->isActive() && ! woo_ml_integration_setup_completed()) {
$notices[] = array(
'type' => 'warning',
'dismiss' => false,
'force' => true,
'message' => sprintf(wp_kses(__('In order to complete our integration setup, please click here.',
'woo-mailerlite'), array('a' => array('href' => array()))),
esc_url(TrackingData::getInstance()->getCompleteIntegrationSetupUrl()))
);
}
//message to be displayed for users who are only using the old functionalities just now
if (MailerLiteSettings::getInstance()->isActive() && woo_ml_shop_not_active()) {
$notices[] = array(
'type' => 'error',
'dismiss' => false,
'force' => true,
'message' => __('Your shop is currently not active. Please reconnect to MailerLite.', 'woo-mailerlite')
);
}
// Integration setup completed
if ('integration_setup_completed' === $admin_notice) {
$notices[] = array(
'type' => 'success',
'dismiss' => true,
'force' => false,
'message' => __('Integration setup has been successfully completed.', 'woo-mailerlite')
);
}
if (MailerLiteSettings::getInstance()->syncFailed()) {
$notices[] = array(
'type' => 'error',
'dismiss' => true,
'force' => true,
'message' => __('We did not manage to sync all of your shop resources. Please try again.', 'woo-mailerlite')
);
}
// Hook
$notices = apply_filters('woo_ml_admin_notices', $notices);
$is_plugin_area = true; // Maybe add a check here later
// Output messages
if (sizeof($notices) > 0) {
foreach ($notices as $notice_id => $notice) {
// Maybe showing the notice on plugin related admin pages only
if (isset($notice['force']) && false === $notice['force'] && ! $is_plugin_area) {
continue;
}
$classes = 'woo-ml-notice notice';
if ( ! empty($notice['type'])) {
$classes .= ' notice-' . $notice['type'];
}
if (isset($notice['dismiss']) && true === $notice['dismiss']) {
$classes .= ' is-dismissible';
}
?>
get_product($product_id);
if ($product) {
$products[$product_id] = $product->get_title();
}
}
}
if (TrackingData::getInstance()->updateData($products) !== false) {
add_option('woo_ml_version', WOO_MAILERLITE_VER);
}
}
/**
* Handle admin actions
*/
function woo_ml_admin_actions()
{
woo_ml_migrations();
if ( ! isset($_GET['woo_ml_action'])) {
return;
}
// Handle admin actions here
if ('setup_integration' === $_GET['woo_ml_action']) {
// Setup integration
woo_ml_setup_integration();
// Afterwards redirect to settings and show success notice
wp_redirect(add_query_arg('woo_ml_admin_notice', 'integration_setup_completed',
TrackingData::getInstance()->getSettingsPageUrl()));
exit;
}
}
add_action('admin_init', 'woo_ml_admin_actions');
/**
* Add checkbox element to bulk and quick edit menu on a product
*/
function woo_ml_bulk_edit_quick_edit()
{
echo '';
woocommerce_wp_checkbox(array(
'id' => 'ml_ignore_product',
'label' => __('MailerLite e-commerce automations', 'woo-mailerlite'),
'description' => __('Ignore product', 'woo-mailerlite'),
'value' => '',
'desc_tip' => false
));
echo '
';
}
add_action('woocommerce_product_quick_edit_end', 'woo_ml_bulk_edit_quick_edit', 99);
add_action('woocommerce_product_bulk_edit_end', 'woo_ml_bulk_edit_quick_edit', 99);
/**
* Populate MailerLite ignore product checkbox
*/
function woo_ml_product_custom_column($column, $post_id)
{
$ignore_list = ProductProcess::getInstance()->getIgnoredProductList();
switch ($column) {
case 'name' :
?>
post_type) {
return $post_id;
}
$ignore_list = ProductProcess::getInstance()->getIgnoredProductList();
if (isset($_REQUEST['ml_ignore_product'])) {
$ignore_list[$post_id] = $post->post_title;
MailerLiteSettings::getInstance()->ignoreProduct($post_id);
} else {
MailerLiteSettings::getInstance()->removeIgnoreProduct($post_id);
if (array_key_exists($post_id, $ignore_list)) {
$ignore_list = TrackingData::getInstance()->removeProductFromList($ignore_list, array($post_id));
}
}
TrackingData::getInstance()->saveLocalIgnoreProducts($ignore_list);
}
add_action('woocommerce_product_bulk_and_quick_edit', 'woo_ml_bulk_edit_quick_edit_save', 10, 2);
/**
* Add a product tab for MailerLite options
*/
function woo_ml_product_data_tab($product_data_tabs)
{
$product_data_tabs['woo-ml'] = array(
'label' => __('MailerLite', 'woo-mailerlite'),
'target' => 'woo-ml-product-data',
'priority' => 99
);
return $product_data_tabs;
}
add_filter('woocommerce_product_data_tabs', 'woo_ml_product_data_tab');
/**
* Add options to MailerLite product tab
*/
function woo_ml_product_data_fields()
{
global $post;
?>
getIgnoredProductList();
woocommerce_wp_checkbox(array(
'id' => 'ml_ignore_product',
'label' => __('Ignore Product', 'woo-mailerlite'),
'description' => __('Select if you do not wish to trigger any e-commerce automations for this product',
'woo-mailerlite'),
'value' => array_key_exists($post->ID, $ignore_list) ? 'yes' : 'no',
'desc_tip' => true,
));
?>
getIgnoredProductList();
if (isset($_POST['ml_ignore_product'])) {
$ignore_list[$post_id] = $title;
MailerLiteSettings::getInstance()->ignoreProduct($post_id);
} else {
MailerLiteSettings::getInstance()->removeIgnoreProduct($post_id);
if (array_key_exists($post_id, $ignore_list)) {
$ignore_list = TrackingData::getInstance()->removeProductFromList($ignore_list, array($post_id));
}
}
TrackingData::getInstance()->saveLocalIgnoreProducts($ignore_list);
}
add_action('woocommerce_process_product_meta', 'woo_ml_product_data_save');
/**
* Add additional script when editing a product
*/
function woo_ml_edit_product_enqueue_admin_scripts()
{
wp_enqueue_script('woo-ml-bulk-quick-edit', WOO_MAILERLITE_URL . 'assets/js/bq_edit.js',
array('jquery', 'inline-edit-post'), WOO_MAILERLITE_VER, true);
}
add_action('admin_print_scripts-edit.php', 'woo_ml_edit_product_enqueue_admin_scripts');