function on_woocommerce_waitlist_loaded()
{
    $canView_settings = false;
    if (is_user_logged_in()) {
        global $current_user, $wpdb;
        $allowed_settings_role = array("administrator");
        $wew_enable_shop_manager_settings = get_option('wew-enable-shop-manager-settings') && get_option('wew-enable-shop-manager-settings') == "on" ? true : false;
        if ($wew_enable_shop_manager_settings) {
            $allowed_settings_role[] = "shop_manager";
        }
        $user = get_userdata($current_user->ID);
        $capabilities = $user->{$wpdb->prefix . 'capabilities'};
        if (!isset($wp_roles)) {
            $wp_roles = new WP_Roles();
        }
        foreach ($wp_roles->role_names as $role => $name) {
            if (array_key_exists($role, $capabilities)) {
                if (!$canView_settings && in_array($role, $allowed_settings_role)) {
                    $canView_settings = true;
                }
            }
        }
    }
    if ($canView_settings) {
        require_once plugin_dir_path(__FILE__) . 'admin/class-woocommerce-waitlist.php';
        Woocommerce_Waitlist_Admin::get_instance();
    }
}
 /**
  * Hook - Execute before wp_header()
  *
  * @since    3.0.0
  *
  * @var      string
  */
 public function execute_before_wp_header()
 {
     if (isset($_GET['delete'])) {
         global $wpdb;
         $wew_DBtable_name = $wpdb->prefix . 'woocommerce_waitlist';
         $_GET['delete'] = absint($_GET['delete']);
         $wpdb->query("DELETE FROM " . $wew_DBtable_name . " WHERE id='" . $_GET['delete'] . "'");
     } elseif (isset($_POST) && !empty($_POST)) {
         if (isset($_POST['action'])) {
             switch ($_POST['action']) {
                 case "update_woowaitlist_settings":
                     $wew_subscribe_to_waitlist_str = trim(wp_unslash($_POST['wew-subscribe-to-waitlist-str']));
                     update_option('wew-subscribe-to-waitlist-str', $wew_subscribe_to_waitlist_str);
                     if (isset($_POST['wew-subscribe-backorders'])) {
                         $subscribe_backorders = $_POST['wew-subscribe-backorders'] == "on" ? "on" : "";
                     } else {
                         $subscribe_backorders = "";
                     }
                     update_option('wew-subscribe-backorders', $subscribe_backorders);
                     $remove_onUninstall = trim($_POST['wew-remove-waitlist-on-uninstall']) != "" ? wp_unslash($_POST['wew-remove-waitlist-on-uninstall']) : "";
                     update_option('wew-remove-waitlist-on-uninstall', $remove_onUninstall);
                     $unsubscribe_page = intval($_POST['wew-unsubscribe-page']);
                     update_option('wew-unsubscribe-page', $unsubscribe_page);
                     if (current_user_can("manage_options")) {
                         if (isset($_POST['wew-enable-shop-manager-settings'])) {
                             $shop_manager_settings = $_POST['wew-enable-shop-manager-settings'] == "on" ? "on" : "";
                         } else {
                             $shop_manager_settings = "";
                         }
                         update_option('wew-enable-shop-manager-settings', $shop_manager_settings);
                     }
                     if (isset($_POST['wew-admin-notification-on-subscription'])) {
                         $admin_subscriptions_notifications = $_POST['wew-admin-notification-on-subscription'] == "on" ? "on" : "";
                     } else {
                         $admin_subscriptions_notifications = "";
                     }
                     update_option('wew-admin-notification-on-subscription', $admin_subscriptions_notifications);
                     $oos_message = trim(wp_unslash($_POST['wew-out-of-stock-message']));
                     update_option('wew-out-of-stock-message', $oos_message);
                     $voos_message = trim(wp_unslash($_POST['wew-variations-out-of-stock-message']));
                     update_option('wew-variations-out-of-stock-message', $voos_message);
                     $sproduct_success = trim(wp_unslash($_POST['wew-subscribe-product-success-msg']));
                     update_option('wew-subscribe-product-success-msg', $sproduct_success);
                     $svariation_success = trim(wp_unslash($_POST['wew-subscribe-variation-success-msg']));
                     update_option('wew-subscribe-variation-success-msg', $svariation_success);
                     $already_subscribed_product = trim(wp_unslash($_POST['wew-already-product-subscribed']));
                     update_option('wew-already-product-subscribed', $already_subscribed_product);
                     $already_subscribed_variation = trim(wp_unslash($_POST['wew-already-variation-subscribed']));
                     update_option('wew-already-variation-subscribed', $already_subscribed_variation);
                     $emptyEmail_alert_msg = trim(wp_unslash($_POST['wew-no-email-alert']));
                     update_option('wew-no-email-alert', $emptyEmail_alert_msg);
                     $custom_css_style = trim(wp_unslash($_POST['wew-custom-css']));
                     update_option('wew-custom-css', $custom_css_style);
                     $a = Woocommerce_Waitlist_Admin::get_instance();
                     $success_message = __("Settings saved successful.", $a->plugin_slug);
                     $a->set_plugin_msg($success_message, 0);
                     break;
                 case "update_woowaitlist_email_settings":
                     $notifyAvail = trim(wp_unslash($_POST['wew-notify-available-product']));
                     $r1 = update_option('wew-notify-available-product', $notifyAvail);
                     $subMail_fromName = trim(wp_unslash($_POST['wew-subscription-email-from-name']));
                     $r2 = update_option('wew-subscription-email-from-name', $subMail_fromName);
                     $subMail_subject = trim(wp_unslash($_POST['wew-subscription-email-subject']));
                     $r3 = update_option('wew-subscription-email-subject', $subMail_subject);
                     $default_emailSettings = !isset($_POST['woowaitilist-default-email-options']) || $_POST['woowaitilist-default-email-options'] != "on" ? "unselected" : "on";
                     $r4 = update_option('woowaitilist-default-email-options', $default_emailSettings);
                     $insertedSenderEmail = trim($_POST['notifications-sender-email']);
                     $custom_senderEmail = $insertedSenderEmail ? $insertedSenderEmail : "";
                     $r5 = update_option('notifications-sender-email', $custom_senderEmail);
                     $back_in_stock_quantity = intval($_POST['wew-back-in-stock_quantity']);
                     $r6 = update_option('wew-back-in-stock_quantity', $back_in_stock_quantity);
                     $a = Woocommerce_Waitlist_Admin::get_instance();
                     if ($default_emailSettings == "unselected" && !is_email($custom_senderEmail)) {
                         $success_message = __("Please insert a valid email address.", $a->plugin_slug);
                         $a->set_plugin_msg($success_message, 1);
                     } else {
                         $success_message = __("Email settings saved successful.", $a->plugin_slug);
                         $a->set_plugin_msg($success_message, 0);
                     }
                     break;
                 case "update_woowaitlist_data":
                     global $wpdb;
                     $wew_DBtable_name = $wpdb->prefix . 'woocommerce_waitlist';
                     if (isset($_POST['wewd_id']) && !empty($_POST['wewd_id'])) {
                         $checked_elem = false;
                         if (isset($_POST['wew_data_actions_changes-2'])) {
                             $checked_elem = $_POST['wew_data_form_actions-2'];
                         } elseif (isset($_POST['wew_data_actions_changes'])) {
                             $checked_elem = $_POST['wew_data_form_actions'];
                         }
                         if ($checked_elem) {
                             switch ($checked_elem) {
                                 case 'delete':
                                     if (is_array($_POST['wewd_id'])) {
                                         $pids_array = $_POST['wewd_id'];
                                         foreach ($pids_array as $key => $value) {
                                             $v = absint($value);
                                             $wpdb->query("DELETE FROM " . $wew_DBtable_name . " WHERE id='" . $v . "'");
                                         }
                                     }
                                     break;
                                 case 'export':
                                     $this->export_woowaitilist_data($_POST['wewd_id']);
                                     break;
                             }
                         }
                     }
                     break;
             }
         }
     }
 }
Пример #3
0
    $plugin_slug = 'woocommerce-waitlist';
    $tabs = array('woowaitlist_settings' => __('WooWaitlist Settings', $plugin_slug), 'email_settings' => __('Email Settings', $plugin_slug), 'woowaitlist_data' => __('WooWaitlist Data', $plugin_slug));
    echo '<div id="icon-themes" class="icon32"><br></div>';
    echo '<h2 class="nav-tab-wrapper">';
    foreach ($tabs as $tab => $name) {
        $class = $tab == $current ? ' nav-tab-active' : '';
        if ($tab == "woowaitlist_settings") {
            $tab_str = "";
        } else {
            $tab_str = "&tab={$tab}";
        }
        echo "<a class='nav-tab{$class}' href='?page=" . $plugin_slug . $tab_str . "'>{$name}</a>";
    }
    echo '</h2>';
}
$a = Woocommerce_Waitlist_Admin::get_instance();
$message = $a->get_plugin_msg();
$errorMessage = $message['error'];
$message = $message['message'];
$updated_html = "";
if ($message) {
    $updated_classes = array('updated');
    if ($errorMessage) {
        $updated_classes[] = 'error';
    }
    $updated_html .= "<div class='" . implode(" ", $updated_classes) . "'>";
    $updated_html .= $message;
    $updated_html .= "</div>";
}
?>