public static function initdb()
 {
     $settings = BSettings::get_instance();
     $installed_version = $settings->get_value('swpm-active-version');
     //Set other default settings values
     $reg_prompt_email_subject = "Complete your registration";
     $reg_prompt_email_body = "Dear {first_name} {last_name}" . "\n\nThank you for joining us!" . "\n\nPlease complete your registration by visiting the following link:" . "\n\n{reg_link}" . "\n\nThank You";
     $reg_email_subject = "Your registration is complete";
     $reg_email_body = "Dear {first_name} {last_name}\n\n" . "Your registration is now complete!\n\n" . "Registration details:\n" . "Username: {user_name}\n" . "Password: {password}\n\n" . "Please login to the member area at the following URL:\n\n" . "{login_link}\n\n" . "Thank You";
     $upgrade_email_subject = "Subject for email sent after account upgrade";
     $upgrade_email_body = "Dear {first_name} {last_name}" . "\n\nYour Account Has Been Upgraded." . "\n\nThank You";
     $reset_email_subject = get_bloginfo('name') . ": New Password";
     $reset_email_body = "Dear {first_name} {last_name}" . "\n\nHere is your new password" . "\n\nUser name: {user_name}" . "\n\nPassword: {password}" . "\n\nThank You";
     $status_change_email_subject = "Account Updated!";
     $status_change_email_body = "Dear {first_name} {last_name}," . "\n\n Your account status has been updated!" . " Please login to the member area at the following URL:" . "\n\n {login_link}" . "\n\nThank You";
     if (empty($installed_version)) {
         //Do fresh install tasks
         /*             * * Create the mandatory pages (if they are not there) ** */
         miscUtils::create_mandatory_wp_pages();
         /*             * * End of page creation ** */
         $settings->set_value('reg-complete-mail-subject', stripslashes($reg_email_subject))->set_value('reg-complete-mail-body', stripslashes($reg_email_body))->set_value('reg-prompt-complete-mail-subject', stripslashes($reg_prompt_email_subject))->set_value('reg-prompt-complete-mail-body', stripslashes($reg_prompt_email_body))->set_value('upgrade-complete-mail-subject', stripslashes($upgrade_email_subject))->set_value('upgrade-complete-mail-body', stripslashes($upgrade_email_body))->set_value('reset-mail-subject', stripslashes($reset_email_subject))->set_value('reset-mail-body', stripslashes($reset_email_body))->set_value('account-change-email-subject', stripslashes($status_change_email_subject))->set_value('account-change-email-body', stripslashes($status_change_email_body))->set_value('email-from', trim(get_option('admin_email')));
     }
     if (version_compare($installed_version, SIMPLE_WP_MEMBERSHIP_VER) == -1) {
         //Do upgrade tasks
     }
     $settings->set_value('swpm-active-version', SIMPLE_WP_MEMBERSHIP_VER)->save();
     //save everything.
 }
 protected function send_reg_email()
 {
     global $wpdb;
     if (empty($this->member_info)) {
         return false;
     }
     $member_info = $this->member_info;
     $settings = BSettings::get_instance();
     $subject = $settings->get_value('reg-complete-mail-subject');
     $body = $settings->get_value('reg-complete-mail-body');
     $from_address = $settings->get_value('email-from');
     $login_link = $settings->get_value('login-page-url');
     $headers = 'From: ' . $from_address . "\r\n";
     $member_info['membership_level_name'] = BPermission::get_instance($member_info['membership_level'])->get('alias');
     $member_info['password'] = $member_info['plain_password'];
     $member_info['login_link'] = $login_link;
     $values = array_values($member_info);
     $keys = array_map('swpm_enclose_var', array_keys($member_info));
     $body = str_replace($keys, $values, $body);
     $email = sanitize_email(filter_input(INPUT_POST, 'email', FILTER_UNSAFE_RAW));
     wp_mail(trim($email), $subject, $body, $headers);
     if ($settings->get_value('enable-admin-notification-after-reg')) {
         $subject = "Notification of New Member Registration";
         $body = "A new member has registered. The following email was sent to the member." . "\n\n-------Member Email----------\n" . $body . "\n\n------End------\n";
         wp_mail($from_address, $subject, $body, $headers);
     }
     return true;
 }
Example #3
0
 public static function log_simple_debug($message, $success, $end = false)
 {
     $settings = BSettings::get_instance();
     $debug_enabled = $settings->get_value('enable-debug');
     if (empty($debug_enabled)) {
         //Debug is not enabled
         return;
     }
     //Lets write to the log file
     $debug_log_file_name = SIMPLE_WP_MEMBERSHIP_PATH . 'log.txt';
     // Timestamp
     $text = '[' . date('m/d/Y g:i A') . '] - ' . ($success ? 'SUCCESS :' : 'FAILURE :') . $message . "\n";
     if ($end) {
         $text .= "\n------------------------------------------------------------------\n\n";
     }
     // Write to log
     $fp = fopen($debug_log_file_name, 'a');
     fwrite($fp, $text);
     fclose($fp);
     // close file
 }
 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);
 }
 public function delete_pending_account()
 {
     global $wpdb;
     $interval = BSettings::get_instance()->get_value('delete-pending-account');
     if (empty($interval)) {
         return;
     }
     for ($counter = 0;; $counter += 100) {
         $query = $wpdb->prepare("SELECT member_id\n                                     FROM \n                                        {$wpdb->prefix}swpm_members_tbl \n                                    WHERE account_state='pending' \n                                         AND subscription_starts < DATE_SUB(NOW(), INTERVAL %d MONTH) LIMIT %d, 100", $interval, $counter);
         $results = $wpdb->get_results($query);
         if (empty($results)) {
             break;
         }
         $to_delete = array();
         foreach ($results as $result) {
             $to_delete[] = $result->member_id;
         }
         if (count($to_delete) > 0) {
             Blog::log_simple_debug("Auto deleting pending account.", true);
             $query = "DELETE FROM {$wpdb->prefix}swpm_members_tbl \n                          WHERE member_id IN (" . implode(',', $to_delete) . ")";
             $wpdb->query($query);
         }
     }
 }
 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 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 static function get_instance()
 {
     self::$_this = empty(self::$_this) ? new BSettings() : self::$_this;
     return self::$_this;
 }
 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);
 }
Example #11
0
 private function set_cookie($remember = '', $secure = '')
 {
     if ($remember) {
         $expiration = time() + 1209600;
         // 14 days
         $expire = $expiration + 43200;
         // 12 hours grace period
     } else {
         $expiration = time() + 172800;
         // 2 days.
         $expire = $expiration;
         //The minimum cookie expiration should be at least couple of days.
     }
     $expiration_timestamp = BUtils::get_expiration_timestamp($this->userData);
     $enable_expired_login = BSettings::get_instance()->get_value('enable-expired-account-login', '');
     // make sure cookie doesn't live beyond account expiration date.
     // but if expired account login is enabled then ignore if account is expired
     $expiration = empty($enable_expired_login) ? min($expiration, $expiration_timestamp) : $expiration;
     $pass_frag = substr($this->userData->password, 8, 4);
     $scheme = 'auth';
     if (!$secure) {
         $secure = is_ssl();
     }
     $key = BAuth::b_hash($this->userData->user_name . $pass_frag . '|' . $expiration, $scheme);
     $hash = hash_hmac('md5', $this->userData->user_name . '|' . $expiration, $key);
     $auth_cookie = $this->userData->user_name . '|' . $expiration . '|' . $hash;
     $auth_cookie_name = $secure ? SIMPLE_WP_MEMBERSHIP_SEC_AUTH : SIMPLE_WP_MEMBERSHIP_AUTH;
     //setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true);
     setcookie($auth_cookie_name, $auth_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure, true);
 }