class MLM_Construct{public function __construct(){add_action(login_form_loginarray($this,redirect_to_custom_login));add_filter(authenticatearray($this,maybe_redirect_at_authenticate),101,3);add_filter(login_redirectarray($this,redirect_after_login),10,3);add_action(wp_logoutarray($this,redirect_after_logout));add_action(login_form_registerarray($this,redirect_to_custom_register));add_action(login_form_lostpasswordarray($this,redirect_to_custom_lostpassword));add_action(login_form_rparray($this,redirect_to_custom_password_reset));add_action(login_form_resetpassarray($this,redirect_to_custom_password_reset));add_action(login_form_registerarray($this,do_register_user));add_action(login_form_lostpasswordarray($this,do_password_lost));add_action(login_form_rparray($this,do_password_reset));add_action(login_form_resetpassarray($this,do_password_reset));add_filter(retrieve_password_messagearray($this,replace_retrieve_password_message),10,4);add_action(admin_initarray($this,redirect_admin_restrict),1);add_shortcode(mlm-login-formarray($this,render_login_form));add_shortcode(mlm-register-formarray($this,render_register_form));add_shortcode(mlm-password-lost-formarray($this,render_password_lost_form));add_shortcode(mlm-password-reset-formarray($this,render_password_reset_form));}public function redirect_to_custom_login(){if($_SERVER[REQUEST_METHOD]==GET){if(is_user_logged_in()){$this->redirect_logged_in_user();exit;}$login_url=mlm_page_url(login);if(!empty($_REQUEST[redirect_to])){$login_url=add_query_arg(redirect_to$_REQUEST[redirect_to],$login_url);}if(!empty($_REQUEST[checkemail])){$login_url=add_query_arg(checkemail$_REQUEST[checkemail],$login_url);}wp_redirect($login_url);exit;}}public function maybe_redirect_at_authenticate($user,$username,$password){if($_SERVER[REQUEST_METHOD]===POST){if(is_wp_error($user)&&(!defined(DOING_AJAX)||!DOING_AJAX)){$error_codes=join(,$user->get_error_codes());$login_url=mlm_page_url(login);$login_url=add_query_arg(login$error_codes,$login_url);wp_redirect($login_url);exit;}}return $user;}public function redirect_after_login($redirect_to,$requested_redirect_to,$user){$redirect_url=home_url();if(!isset($user->ID)){return $redirect_url;}if(user_can($user,moderate_comments)){if($requested_redirect_to==''){$redirect_url=admin_url();}else{$redirect_url=$redirect_to;}}else{$redirect_url=mlm_page_url(panel);}return wp_validate_redirect($redirect_url,home_url());}public function redirect_after_logout(){$redirect_url=mlm_page_url(login);$redirect_url=add_query_arg(logged_outtrue$redirect_url);wp_redirect($redirect_url);exit;}public function redirect_to_custom_register(){if(GET==$_SERVER[REQUEST_METHOD]){if(is_user_logged_in()){$this->redirect_logged_in_user();}else{$register_url=mlm_page_url(register);wp_redirect($register_url);}exit;}}public function redirect_to_custom_lostpassword(){if(GET==$_SERVER[REQUEST_METHOD]){if(is_user_logged_in()){$this->redirect_logged_in_user();exit;}$lost_url=mlm_page_url(lost);wp_redirect($lost_url);exit;}}public function redirect_to_custom_password_reset(){if(GET==$_SERVER[REQUEST_METHOD]){$user=check_password_reset_key($_REQUEST[key],$_REQUEST[login]);$login_url=mlm_page_url(login);if(!$user||is_wp_error($user)){if($user&&$user->get_error_code()===expired_key){$login_url=add_query_arg(loginexpiredkey$login_url);}else{$login_url=add_query_arg(logininvalidkey$login_url);}wp_redirect($login_url);exit;}$redirect_url=mlm_page_url(reset);$redirect_url=add_query_arg(loginesc_attr($_REQUEST[login]),$redirect_url);$redirect_url=add_query_arg(keyesc_attr($_REQUEST[key]),$redirect_url);wp_redirect($redirect_url);exit;}}public function redirect_admin_restrict(){$redirect_url=mlm_page_url(panel);if(!current_user_can(moderate_comments)&&(!defined(DOING_AJAX)||!DOING_AJAX)){wp_redirect($redirect_url);exit;}}public function render_login_form($attributes,$content=null){$default_attributes=array(show_title=>false);$attributes=shortcode_atts($default_attributes,$attributes);if(is_user_logged_in()){return <div class="alert alert-success">شما با موفقیت به حساب کاربری خود وارد شده اید.</div>;}$attributes[redirect]='';if(isset($_REQUEST[redirect_to])){$attributes[redirect]=wp_validate_redirect($_REQUEST[redirect_to],$attributes[redirect]);}$errors=array();if(isset($_REQUEST[login])){$error_codes=explode(,$_REQUEST[login]);foreach($error_codes as $code){$errors[]=$this->get_error_message($code);}}$attributes[errors]=$errors;$attributes[logged_out]=isset($_REQUEST[logged_out])&&$_REQUEST[logged_out]==true;$attributes[registered]=isset($_REQUEST[registered]);$attributes[lost_password_sent]=isset($_REQUEST[checkemail])&&$_REQUEST[checkemail]==confirm;$attributes[password_updated]=isset($_REQUEST[password])&&$_REQUEST[password]==changed;return mlm_get_template(class/user-forms/login$attributes);}public function render_register_form($attributes,$content=null){$default_attributes=array(show_title=>false);$attributes=shortcode_atts($default_attributes,$attributes);if(is_user_logged_in()){return <div class="alert alert-success">شما با موفقیت به حساب کاربری خود وارد شده اید.</div>;}elseif(!get_option(users_can_register)){return <div class="alert alert-danger">ثبت نام کاربر جدید در حال حاضر پذیرفته نمی شود.</div>;}else{$attributes[errors]=array();if(isset($_REQUEST[register-errors])){$error_codes=explode(,$_REQUEST[register-errors]);foreach($error_codes as $error_code){$attributes[errors][]=$this->get_error_message($error_code);}}return mlm_get_template(class/user-forms/register$attributes);}}public function render_password_lost_form($attributes,$content=null){$default_attributes=array(show_title=>false);$attributes=shortcode_atts($default_attributes,$attributes);if(is_user_logged_in()){return <div class="alert alert-success">شما با موفقیت به حساب کاربری خود وارد شده اید.</div>;}else{$attributes[errors]=array();if(isset($_REQUEST[errors])){$error_codes=explode(,$_REQUEST[errors]);foreach($error_codes as $error_code){$attributes[errors][]=$this->get_error_message($error_code);}}$user_login=isset($_REQUEST[verified])?esc_attr($_REQUEST[verified]):'';$verified=false;if(username_exists($user_login)){$user_obj=get_user_by(login$user_login);$user_id=$user_obj->ID;$db_code=get_transient(mlm_reset_.$user_id);if(!empty($db_code)){$verified=$user_login;}}$attributes[verified]=$verified;return mlm_get_template(class/user-forms/password-lost$attributes);}}public function render_password_reset_form($attributes,$content=null){$default_attributes=array(show_title=>false);$attributes=shortcode_atts($default_attributes,$attributes);if(is_user_logged_in()){return <div class="alert alert-success">شما با موفقیت به حساب کاربری خود وارد شده اید.</div>;}else{return <div class="alert alert-danger">لینک بازیابی رمز عبور معتبر نیست.</div>;if(isset($_REQUEST[login])&&isset($_REQUEST[key])){$attributes[login]=$_REQUEST[login];$attributes[key]=$_REQUEST[key];$errors=array();if(isset($_REQUEST[error])){$error_codes=explode(,$_REQUEST[error]);foreach($error_codes as $code){$errors[]=$this->get_error_message($code);}}$attributes[errors]=$errors;return mlm_get_template(class/user-forms/password-reset$attributes);}else{return <div class="alert alert-danger">لینک بازیابی رمز عبور معتبر نیست.</div>;}}}public function do_register_user(){if(POST==$_SERVER[REQUEST_METHOD]){$redirect_url=mlm_page_url(register);$captcha=isset($_POST[mlm_recaptcha])?esc_attr($_POST[mlm_recaptcha]):'';if(!get_option(users_can_register)){$redirect_url=add_query_arg(register-errorsclosed$redirect_url);}elseif(!mlmFire()->dashboard->verify_recaptcha($captcha)){$redirect_url=add_query_arg(register-errorscaptcha$redirect_url);}else{$uname=isset($_POST[mlm_uname])?esc_attr($_POST[mlm_uname]):'';$email=isset($_POST[mlm_email])?esc_attr($_POST[mlm_email]):'';$mobile=isset($_POST[mlm_mobile])?esc_attr($_POST[mlm_mobile]):'';$pass=isset($_POST[mlm_pass])?esc_attr($_POST[mlm_pass]):'';$code=isset($_POST[mlm_code])?esc_attr($_POST[mlm_code]):'';$result=$this->register_user($uname,$email,$mobile,$pass,$code);if(is_wp_error($result)){$errors=join(,$result->get_error_codes());$redirect_url=add_query_arg(register-errors$errors,$redirect_url);}else{$redirect_url=mlm_page_url(login);$redirect_url=add_query_arg(registered$mobile,$redirect_url);}}wp_redirect($redirect_url);exit;}}public function do_password_lost(){if(POST==$_SERVER[REQUEST_METHOD]){$errors=retrieve_password();if(is_wp_error($errors)){$redirect_url=mlm_page_url(lost);$redirect_url=add_query_arg(errorsjoin(,$errors->get_error_codes()),$redirect_url);}else{$redirect_url=mlm_page_url(login);$redirect_url=add_query_arg(checkemailconfirm$redirect_url);if(!empty($_REQUEST[redirect_to])){$redirect_url=$_REQUEST[redirect_to];}}wp_safe_redirect($redirect_url);exit;}}public function do_password_reset(){if(POST==$_SERVER[REQUEST_METHOD]){$rp_key=$_REQUEST[rp_key];$rp_login=$_REQUEST[rp_login];$user=check_password_reset_key($rp_key,$rp_login);$login_url=mlm_page_url(login);if(!$user||is_wp_error($user)){if($user&&$user->get_error_code()===expired_key){$login_url=add_query_arg(loginexpiredkey$login_url);}else{$login_url=add_query_arg(logininvalidkey$login_url);}wp_redirect($login_url);exit;}if(isset($_POST[pass1])){if($_POST[pass1]!=$_POST[pass2]){$redirect_url=mlm_page_url(reset);$redirect_url=add_query_arg(key$rp_key,$redirect_url);$redirect_url=add_query_arg(login$rp_login,$redirect_url);$redirect_url=add_query_arg(errorpassword_reset_mismatch$redirect_url);wp_redirect($redirect_url);exit;}if(empty($_POST[pass1])){$redirect_url=mlm_page_url(reset);$redirect_url=add_query_arg(key$rp_key,$redirect_url);$redirect_url=add_query_arg(login$rp_login,$redirect_url);$redirect_url=add_query_arg(errorpassword_reset_empty$redirect_url);wp_redirect($redirect_url);exit;}reset_password($user,$_POST[pass1]);$login_url=add_query_arg(passwordchanged$login_url);wp_redirect($login_url);}else{echo شما مجاز به این کار نیستید.;}exit;}}public function replace_retrieve_password_message($message,$key,$user_login,$user_data){$msg=سلام.
;$msg.=sprintf(شما درخواست تغییر رمز عبور حساب کاربری خود با نام کاربری %s را ارسال کرده اید.$user_login).
;$msg.=در صورتی که اشتباهی رخ داده است یا شما چنین درخواستی ارسال نکرده اید، کافیست این ایمیل را نادیده بگیرید و هیچ اتفاقی نمی افتد..
;$msg.=جهت تغییر رمز عبور به آدرس زیر مراجعه کنید:.
;$msg.=site_url("wp-login.php?action=rp&key=$key&login=".rawurlencode($user_login),login).
;$msg.=با تشکر.
;return $msg;}private function register_user($uname,$email,$mobile,$pass,$code){$errors=new WP_Error();if(empty($uname)||empty($email)||empty($pass)){$errors->add(empty$this->get_error_message(empty));return $errors;}if(!preg_match(/^[a-zA-Z0-9_-]+$/$uname)){$errors->add(username_invalid$this->get_error_message(username_invalid));return $errors;}if(username_exists($uname)||strlen($uname)<3){$errors->add(user_reserved$this->get_error_message(user_reserved));return $errors;}if(!is_email($email)){$errors->add(email$this->get_error_message(email));return $errors;}if(email_exists($email)){$errors->add(email_exists$this->get_error_message(email_exists));return $errors;}if(!mlm_is_mobile($mobile)){$errors->add(invalid_mobile$this->get_error_message(invalid_mobile));return $errors;}if(mlm_mobile_exists($mobile)){$errors->add(mobile_exists$this->get_error_message(mobile_exists));return $errors;}if(strlen($pass)<7){$errors->add(password$this->get_error_message(password));return $errors;}$user_data=array(user_login=>$uname,user_email=>$email,user_pass=>$pass,display_name=>$uname,nickname=>$uname,);$user_id=wp_insert_user($user_data);if(!empty($code)){$parent_id=mlmFire()->referral->get_userid_by_ref($code);mlmFire()->network->add_user_to_network($user_id,$parent_id);}update_user_meta($user_id,mlm_mobile$mobile);return $user_id;}private function redirect_logged_in_user($redirect_to=null){$user=wp_get_current_user();if(user_can($user,moderate_comments)){if($redirect_to){wp_safe_redirect($redirect_to);}else{wp_redirect(admin_url());}}else{$panel_url=mlm_page_url(panel);wp_redirect($panel_url);}}private function get_error_message($error_code){switch($error_code){case empty:return تکمیل همه فیلدها الزامی است.;case empty_username:return درج آدرس ایمیل الزامی است.;case username_invalid:return برای نام کاربری فقط می توانید ترکیبی از اعداد و حروف لاتین استفاده نمایید.;case user_exists:return کاربری با این نام کاربری قبلا در سایت ثبت نام کرده است.;case incorrect_password:$err=رمز عبوری که استفاده نمودید صحیح نیست. <a href='%s'>رمز عبور خود را فراموش کرده اید</a>؟;return sprintf($err,wp_lostpassword_url());case password:return رمز عبور باید حداقل 7 کاراکتر داشته باشد.;case user_reserved:return این نام کاربری قبلا رزرو شده است. لطفا نام کاربری دیگری انتخاب نمایید.;case email:return آدرس ایمیل شما معتبر نیست.;case email_exists:return کاربری با این آدرس ایمیل قبلا ثبت نام کرده است.;case closed:return ثبت نام کاربران جدید در حال حاضر غیرفعال است.;case captcha:return تکمیل کد کپچا برای پیشگیری از ثبت نام ربات ها ضروری است.;case invalid_mobile:return شماره موبایل وارد شده صحیح نیست. شماره را به صورت 11 رقمی با شروع از 09 درج کنید.;case not_activated:return فعالسازی شماره موبایل انجام نشده است.;case mobile_exists:return کاربری با این شماره موبایل قبلا ثبت نام کرده است. در صورتی که این شماره برای شماست از بخش ورود به حساب کاربری خود وارد شوید.;case empty_username:return جهت ادامه لازم است نام کاربری خود را وارد نمایید.;case invalid_email:case invalidcombo:return کاربری با این آدرس ایمیل در سایت وجود ندارد.;case expiredkey:case invalidkey:return لینک بازیابی رمز عبور شما معتبر نیست.;case password_reset_mismatch:return رمز عبور در هر دو فیلد باید مطابقت داشته باشند.;case password_reset_empty:return فیلد رمز عبور نمی تواند خالی باشد.;default:break;}return خطای غیرمنتظره ای پیش آمده است، لطفا بعدا مجددا امتحان نمایید.;}}
© 2023 Quttera Ltd. All rights reserved.