public static function validate_user_name_ajax() { global $wpdb; $field_value = filter_input(INPUT_GET, 'fieldValue'); $field_id = filter_input(INPUT_GET, 'fieldId'); $table = $wpdb->prefix . "swpm_members_tbl"; $query = $wpdb->prepare("SELECT COUNT(*) FROM {$table} WHERE user_name = %s", $field_value); $exists = $wpdb->get_var($query) > 0; echo '[ "' . $field_id . ($exists ? '",false,"χ ' . BUtils::_('Aready taken') . '"]' : '",true,"√ ' . BUtils::_('Available') . '"]'); exit; }
public function edit($id) { global $wpdb; $query = $wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id = %d", $id); $level = $wpdb->get_row($query, ARRAY_A); $form = new BLevelForm($level); if ($form->is_valid()) { $wpdb->update($wpdb->prefix . "swpm_membership_tbl", $form->get_sanitized(), array('id' => $id)); //@todo meta table and collect all relevant info and pass as argument $custom = apply_filters('swpm_admin_edit_membership_level', array(), $id); $this->save_custom_fields($id, $custom); $message = array('succeeded' => true, 'message' => BUtils::_('Updated Successfully.')); BTransfer::get_instance()->set('status', $message); wp_redirect('admin.php?page=simple_wp_membership_levels'); return; } $message = array('succeeded' => false, 'message' => BUtils::_('Please correct the following:'), 'extra' => $form->get_errors()); BTransfer::get_instance()->set('status', $message); }
protected function subscription_period() { $subscript_duration_type = filter_input(INPUT_POST, 'subscription_duration_type'); if ($subscript_duration_type == BMembershipLevel::NO_EXPIRY) { $this->sanitized['subscription_period'] = ""; return; } $subscription_period = filter_input(INPUT_POST, 'subscription_period_' . $subscript_duration_type); if ($subscript_duration_type == BMembershipLevel::FIXED_DATE) { $dateinfo = date_parse($subscription_period); if ($dateinfo['warning_count'] || $dateinfo['error_count']) { $this->errors['subscription_period'] = BUtils::_("Date format is not valid."); return; } $this->sanitized['subscription_period'] = sanitize_text_field($subscription_period); return; } if (!is_numeric($subscription_period)) { $this->errors['subscription_period'] = BUtils::_("Access duration must be > 0."); return; } $this->sanitized['subscription_period'] = sanitize_text_field($subscription_period); }
function prepare_items() { $submitted = filter_input(INPUT_POST, 'update_category_list'); if (!empty($submitted)) { $args = array('ids' => array('filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_ARRAY)); $filtered = filter_input_array(INPUT_POST, $args); $ids = $filtered['ids']; $args = array('ids_in_page' => array('filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_ARRAY)); $filtered = filter_input_array(INPUT_POST, $args); $ids_in_page = $filtered['ids_in_page']; $this->category->remove($ids_in_page, 'category')->apply($ids, 'category')->save(); $message = array('succeeded' => true, 'message' => BUtils::_('Updated! ')); BTransfer::get_instance()->set('status', $message); } $all_categories = array(); $all_cat_ids = get_categories(array('hide_empty' => '0')); $totalitems = count($all_cat_ids); $perpage = 100; $paged = !empty($_GET["paged"]) ? mysql_real_escape_string($_GET["paged"]) : ''; if (empty($paged) || !is_numeric($paged) || $paged <= 0) { $paged = 1; } $totalpages = ceil($totalitems / $perpage); $offset = 0; if (!empty($paged) && !empty($perpage)) { $offset = ($paged - 1) * $perpage; } for ($i = $offset; $i < (int) $offset + (int) $perpage && !empty($all_cat_ids[$i]); $i++) { $all_categories[] = $all_cat_ids[$i]; } $this->set_pagination_args(array("total_items" => $totalitems, "total_pages" => $totalpages, "per_page" => $perpage)); $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); $this->_column_headers = array($columns, $hidden, $sortable); $this->items = $all_categories; }
public function reset_password($email) { $email = sanitize_email($email); if (!is_email($email)) { $message = '<div class="swpm-reset-pw-error">' . BUtils::_("Email address not valid.") . '</div>'; $message = array('succeeded' => false, 'message' => $message); BTransfer::get_instance()->set('status', $message); return; } global $wpdb; $query = 'SELECT member_id,user_name,first_name, last_name FROM ' . $wpdb->prefix . 'swpm_members_tbl ' . ' WHERE email = %s'; $user = $wpdb->get_row($wpdb->prepare($query, $email)); if (empty($user)) { $message = '<div class="swpm-reset-pw-error">' . BUtils::_("No user not found with that email address.") . '</div>'; $message .= '<div class="swpm-reset-pw-error-email">' . BUtils::_("Email Address: ") . $email . '</div>'; $message = array('succeeded' => false, 'message' => $message); BTransfer::get_instance()->set('status', $message); return; } $settings = BSettings::get_instance(); $password = wp_generate_password(); $password_hash = BUtils::encrypt_password(trim($password)); //should use $saned??; $wpdb->update($wpdb->prefix . "swpm_members_tbl", array('password' => $password_hash), array('member_id' => $user->member_id)); // update wp user pass. BUtils::update_wp_user($user->user_name, array('plain_password' => $password)); $body = $settings->get_value('reset-mail-body'); $subject = $settings->get_value('reset-mail-subject'); $search = array('{user_name}', '{first_name}', '{last_name}', '{password}'); $replace = array($user->user_name, $user->first_name, $user->last_name, $password); $body = str_replace($search, $replace, $body); $from = $settings->get_value('email-from'); $headers = "From: " . $from . "\r\n"; wp_mail($email, $subject, $body, $headers); $message = '<div class="swpm-reset-pw-success">' . BUtils::_("New password has been sent to your email address.") . '</div>'; $message .= '<div class="swpm-reset-pw-success-email">' . BUtils::_("Email Address: ") . $email . '</div>'; $message = array('succeeded' => false, 'message' => $message); BTransfer::get_instance()->set('status', $message); }
public static function delete_account_button() { $allow_account_deletion = BSettings::get_instance()->get_value('allow-account-deletion'); if (empty($allow_account_deletion)) { return ""; } return '<a href="/?delete_account=1"><div class="swpm-account-delete-button">' . BUtils::_("Delete Account") . '</div></a>'; }
public function edit($id) { global $wpdb; $query = $wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "swpm_members_tbl WHERE member_id = %d", $id); $member = $wpdb->get_row($query, ARRAY_A); $email_address = $member['email']; $user_name = $member['user_name']; unset($member['member_id']); unset($member['user_name']); $form = new BForm($member); if ($form->is_valid()) { $member = $form->get_sanitized(); BUtils::update_wp_user($user_name, $member); unset($member['plain_password']); $wpdb->update($wpdb->prefix . "swpm_members_tbl", $member, array('member_id' => $id)); $message = array('succeeded' => true, 'message' => 'Updated Successfully.'); do_action('swpm_admin_edit_custom_fields', $member + array('member_id' => $id)); BTransfer::get_instance()->set('status', $message); $send_notification = filter_input(INPUT_POST, 'account_status_change'); if (!empty($send_notification)) { $settings = BSettings::get_instance(); $from_address = $settings->get_value('email-from'); $headers = 'From: ' . $from_address . "\r\n"; $subject = filter_input(INPUT_POST, 'notificationmailhead'); $body = filter_input(INPUT_POST, 'notificationmailbody'); $settings->set_value('account-change-email-body', $body)->set_value('account-change-email-subject', $subject)->save(); $member['login_link'] = $settings->get_value('login-page-url'); $values = array_values($member); $keys = array_map('swpm_enclose_var', array_keys($member)); $body = str_replace($keys, $values, $body); wp_mail($email_address, $subject, $body, $headers); } wp_redirect('admin.php?page=simple_wp_membership'); } $message = array('succeeded' => false, 'message' => BUtils::_('Please correct the following:'), 'extra' => $form->get_errors()); BTransfer::get_instance()->set('status', $message); }
function get_bulk_actions() { $actions = array('bulk_delete' => BUtils::_('Delete')); return $actions; }
public static function create_mandatory_wp_pages() { $settings = BSettings::get_instance(); //Create join us page $swpm_join_page_content = '<p style="color:red;font-weight:bold;">This page and the content has been automatically generated for you to give you a basic idea of how a "Join Us" page should look like. You can customize this page however you like it by editing this page from your WordPress page editor.</p>'; $swpm_join_page_content .= '<p style="font-weight:bold;">If you end up changing the URL of this page then make sure to update the URL value in the settings menu of the plugin.</p>'; $swpm_join_page_content .= '<p style="border-top:1px solid #ccc;padding-top:10px;margin-top:10px;"></p> <strong>Free Membership</strong> <br /> You get unlimited access to free membership content <br /> <em><strong>Price: Free!</strong></em> <br /><br />Link the following image to go to the Registration Page if you want your visitors to be able to create a free membership account<br /><br /> <img title="Join Now" src="' . SIMPLE_WP_MEMBERSHIP_URL . '/images/join-now-button-image.gif" alt="Join Now Button" width="277" height="82" /> <p style="border-bottom:1px solid #ccc;padding-bottom:10px;margin-bottom:10px;"></p>'; $swpm_join_page_content .= '<p><strong>You can register for a Free Membership or pay for one of the following membership options</strong></p>'; $swpm_join_page_content .= '<p style="border-top:1px solid #ccc;padding-top:10px;margin-top:10px;"></p> [ ==> Insert Payment Button For Your Paid Membership Levels Here <== ] <p style="border-bottom:1px solid #ccc;padding-bottom:10px;margin-bottom:10px;"></p>'; $swpm_join_page = array('post_title' => 'Join Us', 'post_name' => 'membership-join', 'post_content' => $swpm_join_page_content, 'post_parent' => 0, 'post_status' => 'publish', 'post_type' => 'page', 'comment_status' => 'closed', 'ping_status' => 'closed'); $join_page_obj = get_page_by_path('membership-join'); if (!$join_page_obj) { $join_page_id = wp_insert_post($swpm_join_page); } else { $join_page_id = $join_page_obj->ID; if ($join_page_obj->post_status == 'trash') { //For cases where page may be in trash, bring it out of trash wp_update_post(array('ID' => $join_page_obj->ID, 'post_status' => 'publish')); } } $swpm_join_page_permalink = get_permalink($join_page_id); $settings->set_value('join-us-page-url', $swpm_join_page_permalink); //Create registration page $swpm_rego_page = array('post_title' => BUtils::_('Registration'), 'post_name' => 'membership-registration', 'post_content' => '[swpm_registration_form]', 'post_parent' => $join_page_id, 'post_status' => 'publish', 'post_type' => 'page', 'comment_status' => 'closed', 'ping_status' => 'closed'); $rego_page_obj = get_page_by_path('membership-registration'); if (!$rego_page_obj) { $rego_page_id = wp_insert_post($swpm_rego_page); } else { $rego_page_id = $rego_page_obj->ID; if ($rego_page_obj->post_status == 'trash') { //For cases where page may be in trash, bring it out of trash wp_update_post(array('ID' => $rego_page_obj->ID, 'post_status' => 'publish')); } } $swpm_rego_page_permalink = get_permalink($rego_page_id); $settings->set_value('registration-page-url', $swpm_rego_page_permalink); //Create login page $swpm_login_page = array('post_title' => BUtils::_('Member Login'), 'post_name' => 'membership-login', 'post_content' => '[swpm_login_form]', 'post_parent' => 0, 'post_status' => 'publish', 'post_type' => 'page', 'comment_status' => 'closed', 'ping_status' => 'closed'); $login_page_obj = get_page_by_path('membership-login'); if (!$login_page_obj) { $login_page_id = wp_insert_post($swpm_login_page); } else { $login_page_id = $login_page_obj->ID; if ($login_page_obj->post_status == 'trash') { //For cases where page may be in trash, bring it out of trash wp_update_post(array('ID' => $login_page_obj->ID, 'post_status' => 'publish')); } } $swpm_login_page_permalink = get_permalink($login_page_id); $settings->set_value('login-page-url', $swpm_login_page_permalink); //Create profile page $swpm_profile_page = array('post_title' => BUtils::_('Profile'), 'post_name' => 'membership-profile', 'post_content' => '[swpm_profile_form]', 'post_parent' => $login_page_id, 'post_status' => 'publish', 'post_type' => 'page', 'comment_status' => 'closed', 'ping_status' => 'closed'); $profile_page_obj = get_page_by_path('membership-profile'); if (!$profile_page_obj) { $profile_page_id = wp_insert_post($swpm_profile_page); } else { $profile_page_id = $profile_page_obj->ID; if ($profile_page_obj->post_status == 'trash') { //For cases where page may be in trash, bring it out of trash wp_update_post(array('ID' => $profile_page_obj->ID, 'post_status' => 'publish')); } } $swpm_profile_page_permalink = get_permalink($profile_page_id); $settings->set_value('profile-page-url', $swpm_profile_page_permalink); //Create reset page $swpm_reset_page = array('post_title' => BUtils::_('Password Reset'), 'post_name' => 'password-reset', 'post_content' => '[swpm_reset_form]', 'post_parent' => $login_page_id, 'post_status' => 'publish', 'post_type' => 'page', 'comment_status' => 'closed', 'ping_status' => 'closed'); $reset_page_obj = get_page_by_path('password-reset'); if (!$profile_page_obj) { $reset_page_id = wp_insert_post($swpm_reset_page); } else { $reset_page_id = $reset_page_obj->ID; if ($reset_page_obj->post_status == 'trash') { //For cases where page may be in trash, bring it out of trash wp_update_post(array('ID' => $reset_page_obj->ID, 'post_status' => 'publish')); } } $swpm_reset_page_permalink = get_permalink($reset_page_id); $settings->set_value('reset-page-url', $swpm_reset_page_permalink); $settings->save(); //Save all settings object changes }
public function get_login_link() { $login = $this->get_value('login-page-url'); $joinus = $this->get_value('join-us-page-url'); if (empty($login) || empty($joinus)) { return '<span style="color:red;">Simple Membership is not configured correctly.' . 'Please contact <a href="mailto:' . get_option('admin_email') . '">Admin</a>'; } return BUtils::_('Please') . ' <a class="swpm-login-link" href="' . $login . '">' . BUtils::_('Login') . '</a>. ' . BUtils::_('Not a Member?') . ' <a href="' . $joinus . '">' . BUtils::_('Join Us') . '</a>'; }
public function filter_post_with_moretag($id, $more_link, $more_link_text) { $this->moretags[] = $id; if ($this->can_i_read_post($id)) { return $more_link; } $msg = BUtils::_("You need to login to view the rest of the content. ") . BSettings::get_instance()->get_login_link(); return apply_filters('swpm_not_logged_in_more_tag_msg', $msg); }
private function validate() { $auth_cookie_name = is_ssl() ? SIMPLE_WP_MEMBERSHIP_SEC_AUTH : SIMPLE_WP_MEMBERSHIP_AUTH; if (!isset($_COOKIE[$auth_cookie_name]) || empty($_COOKIE[$auth_cookie_name])) { return false; } $cookie_elements = explode('|', $_COOKIE[$auth_cookie_name]); if (count($cookie_elements) != 3) { return false; } Blog::log_simple_debug("validate:" . $_COOKIE[$auth_cookie_name], true); list($username, $expiration, $hmac) = $cookie_elements; $expired = $expiration; // Allow a grace period for POST and AJAX requests if (defined('DOING_AJAX') || 'POST' == $_SERVER['REQUEST_METHOD']) { $expired += HOUR_IN_SECONDS; } // Quick check to see if an honest cookie has expired if ($expired < time()) { $this->lastStatusMsg = BUtils::_("Session Expired."); //do_action('auth_cookie_expired', $cookie_elements); return false; } Blog::log_simple_debug("validate:Session Expired", true); global $wpdb; $query = " SELECT * FROM " . $wpdb->prefix . "swpm_members_tbl WHERE user_name = %s"; $user = $wpdb->get_row($wpdb->prepare($query, $username)); if (empty($user)) { $this->lastStatusMsg = BUtils::_("Invalid User Name"); return false; } Blog::log_simple_debug("validate:Invalid User Name:" . serialize($user), true); $pass_frag = substr($user->password, 8, 4); $key = BAuth::b_hash($username . $pass_frag . '|' . $expiration); $hash = hash_hmac('md5', $username . '|' . $expiration, $key); if ($hmac != $hash) { $this->lastStatusMsg = BUtils::_("Sorry! Something went wrong"); return false; } Blog::log_simple_debug("validate:bad hash", true); if ($expiration < time()) { $GLOBALS['login_grace_period'] = 1; } $this->userData = $user; return $this->check_constraints(); }
protected function membership_level() { $membership_level = filter_input(INPUT_POST, 'membership_level', FILTER_SANITIZE_NUMBER_INT); if ($membership_level == 1) { $this->errors['membership_level'] = BUtils::_('Invalid membership level'); return; } if (empty($membership_level)) { return; } $this->sanitized['membership_level'] = $membership_level; }