123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- <?php
- class SwpmInitTimeTasks {
- public function __construct() {
- }
- public function do_init_tasks() {
- //Set up localisation. First loaded ones will override strings present in later loaded file.
- //Allows users to have a customized language in a different folder.
- $locale = apply_filters( 'plugin_locale', get_locale(), 'simple-membership' );
- load_textdomain( 'simple-membership', WP_LANG_DIR . "/simple-membership-$locale.mo" );
- load_plugin_textdomain( 'simple-membership', false, SIMPLE_WP_MEMBERSHIP_DIRNAME . '/languages/' );
- if ( ! isset( $_COOKIE['swpm_session'] ) ) { // give a unique ID to current session.
- $uid = md5( microtime() );
- $_COOKIE['swpm_session'] = $uid; // fake it for current session/
- if ( ! headers_sent() ) {
- setcookie( 'swpm_session', $uid, 0, '/' );
- }
- }
- //Crete the custom post types
- $this->create_post_type();
- //Do frontend-only init time tasks
- if ( ! is_admin() ) {
- SwpmAuth::get_instance();
- $this->check_and_handle_auto_login();
- $this->verify_and_delete_account();
- $swpm_logout = filter_input( INPUT_GET, 'swpm-logout' );
- if ( ! empty( $swpm_logout ) ) {
- SwpmAuth::get_instance()->logout();
- $redirect_url = apply_filters( 'swpm_after_logout_redirect_url', SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL );
- wp_redirect( trailingslashit( $redirect_url ) );
- exit( 0 );
- }
- $this->process_password_reset();
- $this->register_member();
- $this->check_and_do_email_activation();
- $this->edit_profile();
- SwpmCommentFormRelated::check_and_restrict_comment_posting_to_members();
- } else {
- //Do admin side init time tasks
- if ( current_user_can( SWPM_MANAGEMENT_PERMISSION ) ) {
- //Admin dashboard side stuff
- $this->admin_init();
- }
- }
- }
- public function admin_init() {
- $createswpmuser = filter_input( INPUT_POST, 'createswpmuser' );
- if ( ! empty( $createswpmuser ) ) {
- SwpmAdminRegistration::get_instance()->register_admin_end();
- }
- $editswpmuser = filter_input( INPUT_POST, 'editswpmuser' );
- if ( ! empty( $editswpmuser ) ) {
- $id = filter_input( INPUT_GET, 'member_id', FILTER_VALIDATE_INT );
- SwpmAdminRegistration::get_instance()->edit_admin_end( $id );
- }
- $createswpmlevel = filter_input( INPUT_POST, 'createswpmlevel' );
- if ( ! empty( $createswpmlevel ) ) {
- SwpmMembershipLevel::get_instance()->create_level();
- }
- $editswpmlevel = filter_input( INPUT_POST, 'editswpmlevel' );
- if ( ! empty( $editswpmlevel ) ) {
- $id = filter_input( INPUT_GET, 'id' );
- SwpmMembershipLevel::get_instance()->edit_level( $id );
- }
- $update_category_list = filter_input( INPUT_POST, 'update_category_list' );
- if ( ! empty( $update_category_list ) ) {
- include_once 'class.swpm-category-list.php';
- SwpmCategoryList::update_category_list();
- }
- $update_post_list = filter_input( INPUT_POST, 'update_post_list' );
- if ( ! empty( $update_post_list ) ) {
- include_once 'class.swpm-post-list.php';
- SwpmPostList::update_post_list();
- }
- }
- public function create_post_type() {
- //The payment button data for membership levels will be stored using this CPT
- register_post_type(
- 'swpm_payment_button',
- array(
- 'public' => false,
- 'publicly_queryable' => false,
- 'show_ui' => false,
- 'query_var' => false,
- 'rewrite' => false,
- 'capability_type' => 'page',
- 'has_archive' => false,
- 'hierarchical' => false,
- 'supports' => array( 'title', 'editor' ),
- )
- );
- //Transactions will be stored using this CPT in parallel with swpm_payments_tbl DB table
- $args = array(
- 'supports' => array( '' ),
- 'hierarchical' => false,
- 'public' => false,
- 'show_ui' => false,
- 'can_export' => false,
- 'has_archive' => false,
- 'exclude_from_search' => true,
- 'publicly_queryable' => false,
- 'capability_type' => 'post',
- );
- register_post_type( 'swpm_transactions', $args );
- }
- private function verify_and_delete_account() {
- include_once SIMPLE_WP_MEMBERSHIP_PATH . 'classes/class.swpm-members.php';
- $delete_account = filter_input( INPUT_GET, 'swpm_delete_account' );
- if ( empty( $delete_account ) ) {
- return;
- }
- $password = filter_input( INPUT_POST, 'account_delete_confirm_pass', FILTER_UNSAFE_RAW );
- $auth = SwpmAuth::get_instance();
- if ( ! $auth->is_logged_in() ) {
- return;
- }
- if ( empty( $password ) ) {
- SwpmUtils::account_delete_confirmation_ui();
- }
- $nonce_field = filter_input( INPUT_POST, 'account_delete_confirm_nonce' );
- if ( empty( $nonce_field ) || ! wp_verify_nonce( $nonce_field, 'swpm_account_delete_confirm' ) ) {
- SwpmUtils::account_delete_confirmation_ui( SwpmUtils::_( 'Sorry, Nonce verification failed.' ) );
- }
- if ( $auth->match_password( $password ) ) {
- $auth->delete();
- wp_safe_redirect( get_home_url() );
- exit( 0 );
- } else {
- SwpmUtils::account_delete_confirmation_ui( SwpmUtils::_( "Sorry, Password didn't match." ) );
- }
- }
- public function process_password_reset() {
- $message = '';
- $swpm_reset = filter_input( INPUT_POST, 'swpm-reset' );
- $swpm_reset_email = filter_input( INPUT_POST, 'swpm_reset_email', FILTER_UNSAFE_RAW );
- if ( ! empty( $swpm_reset ) ) {
- SwpmFrontRegistration::get_instance()->reset_password( $swpm_reset_email );
- }
- }
- private function register_member() {
- $registration = filter_input( INPUT_POST, 'swpm_registration_submit' );
- if ( ! empty( $registration ) ) {
- SwpmFrontRegistration::get_instance()->register_front_end();
- }
- }
- private function check_and_do_email_activation() {
- $email_activation = filter_input( INPUT_GET, 'swpm_email_activation', FILTER_SANITIZE_NUMBER_INT );
- if ( ! empty( $email_activation ) ) {
- SwpmFrontRegistration::get_instance()->email_activation();
- }
- //also check activation email resend request
- $email_activation_resend = filter_input( INPUT_GET, 'swpm_resend_activation_email', FILTER_SANITIZE_NUMBER_INT );
- if ( ! empty( $email_activation_resend ) ) {
- SwpmFrontRegistration::get_instance()->resend_activation_email();
- }
- }
- private function edit_profile() {
- $swpm_editprofile_submit = filter_input( INPUT_POST, 'swpm_editprofile_submit' );
- if ( ! empty( $swpm_editprofile_submit ) ) {
- SwpmFrontRegistration::get_instance()->edit_profile_front_end();
- //TODO - allow an option to do a redirect if successful edit profile form submission?
- }
- }
- public function check_and_handle_auto_login() {
- if ( isset( $_REQUEST['swpm_auto_login'] ) && $_REQUEST['swpm_auto_login'] == '1' ) {
- //Handle the auto login
- SwpmLog::log_simple_debug( 'Handling auto login request...', true );
- $enable_auto_login = SwpmSettings::get_instance()->get_value( 'auto-login-after-rego' );
- if ( empty( $enable_auto_login ) ) {
- SwpmLog::log_simple_debug( 'Auto login after registration feature is disabled in settings.', true );
- return;
- }
- //Check auto login nonce value
- $auto_login_nonce = isset( $_REQUEST['swpm_auto_login_nonce'] ) ? $_REQUEST['swpm_auto_login_nonce'] : '';
- if ( ! wp_verify_nonce( $auto_login_nonce, 'swpm-auto-login-nonce' ) ) {
- SwpmLog::log_simple_debug( 'Error! Auto login nonce verification check failed!', false );
- wp_die( 'Auto login nonce verification check failed!' );
- }
- //Perform the login
- $auth = SwpmAuth::get_instance();
- $user = apply_filters( 'swpm_user_name', filter_input( INPUT_GET, 'swpm_user_name' ) );
- $user = sanitize_user( $user );
- $encoded_pass = filter_input( INPUT_GET, 'swpm_encoded_pw' );
- $pass = base64_decode( $encoded_pass );
- $auth->login( $user, $pass );
- SwpmLog::log_simple_debug( 'Auto login request completed for: ' . $user, true );
- }
- }
- }
|