Advertisement
Guest User

Untitled

a guest
Dec 6th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.29 KB | None | 0 0
  1. <?php
  2. //error_reporting(E_ALL);
  3. //ini_set("display_errors", 1);
  4. define('PASS_LEN', 6);
  5. //login shortcode
  6. add_shortcode('ajax_login', 'ajaxlogin_shortcode_handler');
  7.  
  8. function ajaxlogin_shortcode_handler($atts, $content = null) {
  9. ob_start();
  10. ?>
  11. <div id="loginform">
  12. <form name="ajaxlogin" id="ajaxlogin" action="" method="post" class="wpcf7">
  13. <span class="login-username">
  14. <label for="user_login">Email Address</label>
  15. <input type="text" name="username" id="user_login" class="input" value="" size="20">
  16. </span>
  17. <span class="login-password">
  18. <label for="user_pass">Password</label>
  19. <input type="password" name="password" id="user_pass" class="input" value="" size="20">
  20. </span>
  21. <div class="login-submit cfx">
  22. <input type="submit" name="wp-submit" id="wp-submit" class="button" value="Login">
  23. <input type="hidden" name="redirect_to" value="<?php echo site_url($_SERVER["REQUEST_URI"]); ?>" />
  24. <?php echo wp_nonce_field('ajax-login-nonce', 'security', null, false); ?>
  25. </div>
  26. <div id="login-result"><span></span></div>
  27. <p id="login-message"></p>
  28. </form>
  29. </div>
  30. <?php
  31. $logform = ob_get_contents();
  32. ob_end_clean();
  33. return $logform;
  34. }
  35.  
  36. add_shortcode('ajax_register', 'ajax_regi_form');
  37.  
  38. function ajax_regi_form($atts, $content = null) {
  39. $atts = shortcode_atts(array('page' => 'register'), $atts);
  40. $frm_name = $atts['page'] == 'profile' ? "ajaxprofile" : "ajaxregi";
  41. $frm_subm = $atts['page'] == 'profile' ? get_field('save', 'options') : get_field('register_text', 'options');
  42. $usr_email = $usr_name = $usr_phone = $usr_phone_2 = "";
  43.  
  44. if (is_user_logged_in()) {
  45. global $current_user;
  46. $cur_usr = $current_user;
  47. $usr_meta = get_user_meta($cur_usr->ID);
  48.  
  49. $usr_email = $cur_usr->user_email;
  50. $usr_name = isset($usr_meta) && trim($cur_usr->first_name) ? $cur_usr->first_name : $cur_usr->display_name;
  51. $usr_phone = isset($usr_meta['phone']) ? $usr_meta['phone'][0] : "";
  52. $usr_phone_2 = isset($usr_meta['phone_2']) ? $usr_meta['phone_2'][0] : "";
  53. }
  54.  
  55. ob_start();
  56. ?>
  57. <form name="<?php echo $frm_name; ?>" id="<?php echo $frm_name; ?>" class="wpcf7">
  58. <span class="regi-username req_star">
  59. <label for="regi_user_login"> <?php the_field('f_name', 'options') ?></label>
  60. <input type="text" name="first_name" id="regi_user_name" class="input" value="<?php echo $usr_name; ?>" size="20" />
  61. </span>
  62. <span class="regi-username req_star">
  63. <label for="user_login">E-mail</label>
  64. <input type="text" name="user_email" id="regi_user_email" class="input" value="<?php echo $usr_email; ?>" size="20" />
  65. </span>
  66. <?php if ($atts['page'] == 'profile') { ?>
  67. <span class="regi-phone req_star">
  68. <label for="user_phone"><?php the_field('phone_number', 'options') ?></label>
  69. <input type="text" name="user_phone" id="regi_user_phone" class="input" value="<?php echo $usr_phone; ?>" size="20"/>
  70. </span>
  71. <span class="regi-phone req_star">
  72. <label for="user_phone"><?php the_field('phone_number', 'options') ?> 2</label>
  73. <input type="text" name="user_phone_2" id="regi_user_phone_2" class="input" value="<?php echo $usr_phone_2; ?>" size="20" />
  74. </span>
  75. <?php } else { ?>
  76. <span class="regi-password req_star">
  77. <label for="regi_user_pass"><?php the_field('pass', 'options') ?></label>
  78. <input type="password" name="user_pass" id="regi_user_pass" class="input" value="" size="20" />
  79. </span>
  80. <span class="regi-password req_star">
  81. <label for="regi_user_pass"><?php the_field('reenter_pass', 'options') ?></label>
  82. <input type="password" name="user_repass" id="regi_user_repass" class="input" value="" size="20" />
  83. </span>
  84. <?php } ?>
  85. <div class="regi-submit cfx">
  86. <input type="submit" name="wp-submit" id="wp-submit" class="button" value="<?php echo $frm_subm; ?>" />
  87. <?php
  88. if ($atts['page'] == 'profile') {
  89. echo '<input type="hidden" name="action" value="update_profile" />';
  90. echo wp_nonce_field('prof_edit_nonce', 'prof_security', null, false);
  91. } else {
  92. echo '<input type="hidden" name="redirect_to" value="' . site_url($_SERVER["REQUEST_URI"]) . '" />';
  93. echo '<input type="hidden" name="action" value="custom_register" />';
  94. echo wp_nonce_field('ajax-login-nonce', 'reg_security', null, false);
  95. }
  96. ?>
  97. </div>
  98. <div class="ajax-result"></div>
  99. </form>
  100. <?php
  101. $reform = ob_get_contents();
  102. ob_end_clean();
  103. return $reform;
  104. }
  105.  
  106. add_shortcode('ajax_changepass', 'ajaxchangepass_shortcode_handler');
  107.  
  108. function ajaxchangepass_shortcode_handler($atts, $content = null) {
  109. ob_start();
  110. ?>
  111.  
  112. <form name="ajaxchangepass" id="ajaxchangepass" action="" method="post" class="wpcf7">
  113. <div class="ajax-result"></div>
  114. <span class="regi-password req_star">
  115. <label for="user_oldpass"><?php the_field('old_p', 'options') ?></label>
  116. <input type="password" name="user_oldpass" id="user_oldpass" class="input" value="" size="20">
  117. </span>
  118. <span class="regi-password req_star">
  119. <label for="user_pass"><?php the_field('n_pass', 'options') ?></label>
  120. <input type="password" name="user_pass" id="user_pass" class="input" value="" size="20">
  121. </span>
  122. <span class="regi-password req_star">
  123. <label for="user_repass"><?php the_field('rep_rass', 'options') ?></label>
  124. <input type="password" name="user_repass" id="user_repass" class="input" value="" size="20">
  125. </span>
  126. <div class="regi-submit cfx">
  127. <input type="submit" name="wp-submit" class="button" value="<?php the_field('save', 'options') ?>">
  128. <input type="hidden" name="action" value="change_password" />
  129. <?php echo wp_nonce_field('ajax-changepass-nonce', 'changepass_security', null, false); ?>
  130. </div>
  131. </form>
  132.  
  133. <?php
  134. $form = ob_get_contents();
  135. ob_end_clean();
  136. return $form;
  137. }
  138.  
  139. add_action('wp_ajax_change_password', 'ajax_change_password');
  140. function ajax_change_password() {
  141. $errors = array();
  142. $addMsg = "";
  143. $user = get_user_by('id', get_current_user_id());
  144.  
  145.  
  146. if (!is_user_logged_in() || !check_ajax_referer('ajax-changepass-nonce', 'changepass_security')) {
  147. $result['msg'] = alertMessage("You don't have sufficient permissions to edit profile!", 1);
  148. } else {
  149. extract($_POST);
  150. if (!trim($user_oldpass)) {
  151. $errors[] = getErrorMessage("Старый пароль", "empty_val");
  152. } elseif (!wp_check_password($user_oldpass, $user->user_pass, $user->ID) ) {
  153. $errors[] = getErrorMessage("Старый пароль", "not_match");
  154. }
  155. if (!trim($user_pass)) {
  156. $errors[] = getErrorMessage("Password", "empty_val");
  157. }elseif ( strlen($user_pass) < PASS_LEN ) {
  158. $errors[] = getErrorMessage("Password", "min_size", PASS_LEN);
  159. }elseif ($user_pass != $user_repass) {
  160. $errors[] = getErrorMessage("Repeat password", "not_match");
  161. }
  162.  
  163. if (sizeof($errors)) {
  164. $result['msg'] = alertMessage($errors, 1);
  165. } elseif( wp_update_user( array('ID' => $user->ID, 'user_pass' => $user_repass) ) ) {
  166. $result['msg'] = alertMessage("Your password has been successfully changed");
  167. $result['reset_form'] = 1;
  168. }else{
  169. $result['msg'] = alertMessage("Error password change!", 1);
  170. }
  171. }
  172. echo json_encode($result);
  173. exit();
  174. }
  175.  
  176. //User can enter e-mail for login
  177. add_filter('authenticate', 'bainternet_allow_email_login', 20, 3);
  178.  
  179. function bainternet_allow_email_login($user, $username, $password) {
  180. if (is_email($username)) {
  181. $user = get_user_by('email', $username);
  182. if ($user)
  183. $username = $user->user_login;
  184. }
  185. return wp_authenticate_username_password(null, $username, $password);
  186. }
  187.  
  188. add_filter('gettext', 'addEmailToLogin', 20, 3);
  189.  
  190. function addEmailToLogin($translated_text, $text, $domain) {
  191. if ("Username" == $translated_text)
  192. $translated_text .= __(' Or Email');
  193. return $translated_text;
  194. }
  195.  
  196. if (!is_admin())
  197. add_action('init', 'ajax_login_init');
  198.  
  199. function ajax_login_init() {
  200. wp_register_script('ajax-login-script', get_stylesheet_directory_uri() . '/js/user.js', array('jquery'), '1.0', true);
  201. wp_enqueue_script('ajax-login-script');
  202. wp_localize_script('ajax-login-script', 'ajax_login_object', array(
  203. 'ajaxurl' => admin_url('admin-ajax.php'),
  204. 'redirecturl' => site_url() . $_SERVER["REQUEST_URI"],
  205. 'loadingmessage' => __('Пожалуйста, подождите...')
  206. ));
  207. }
  208.  
  209. add_action('wp_ajax_nopriv_ajaxlogin', 'ajax_login');
  210.  
  211. function ajax_login() {
  212. check_ajax_referer('ajax-login-nonce', 'security');
  213. $info = array();
  214. $info['user_login'] = $_POST['username'];
  215. $info['user_password'] = $_POST['password'];
  216. $info['remember'] = true;
  217. $result = array();
  218. $user_signon = wp_signon($info, false);
  219. if (is_wp_error($user_signon)) {
  220. $result['loggedin'] = false;
  221. $result['message'] = "<div class='error'><p>Ваш адрес электронной почты или пароль не является правильным. Пожалуйста, попробуйте еще раз</p></div>";
  222. } else {
  223. $result['loggedin'] = true;
  224. $result['message'] = "<div class='sucecess'><p>Пожалуйста, подождите...</p></div>";
  225. }
  226. echo json_encode($result);
  227. exit();
  228. }
  229.  
  230. //user register
  231. add_action('register_form', 'addpass_register_form');
  232.  
  233. function addpass_register_form() {
  234. $first_name = ( isset($_POST['password']) ) ? $_POST['password'] : '';
  235. ?>
  236. <label for="password">Password</label>
  237. <input type="password" name="password" id="password" size="20" />
  238. <?php
  239. }
  240.  
  241. add_filter('registration_errors', 'addpass_registration_errors', 10, 3);
  242.  
  243. function addpass_registration_errors($errors, $sanitized_user_login, $user_email) {
  244. if (empty($_POST['password']))
  245. $errors->add('password_error', 'Пожалуйста, введите пароль');
  246. return $errors;
  247. }
  248.  
  249. add_action('user_register', 'addpass_user_register');
  250.  
  251. function addpass_user_register($user_id) {
  252. if (isset($_POST['password']))
  253. update_user_meta($user_id, 'password', $_POST['password']);
  254. update_user_meta($user_id, 'show_admin_bar_front', 'false');
  255. }
  256.  
  257. add_action('wp_ajax_custom_register', 'custom_register_new_user');
  258. add_action('wp_ajax_nopriv_custom_register', 'custom_register_new_user');
  259.  
  260. function custom_register_new_user() {
  261. $res = validateRegiForm();
  262. if (!$res['errors']) {
  263. $user_data = $res['user_data'];
  264.  
  265. $user_id = wp_create_user($user_data['user_login'], $user_data['user_pass'], $user_data['user_email']);
  266. if ($user_id) {
  267. wp_update_user(array(
  268. 'ID' => $user_id,
  269. 'first_name' => $user_data['first_name'],
  270. 'display_name' => $user_data['first_name']
  271. ));
  272. //$result['user_id'] = $user_id;
  273. $result['log_in'] = 1;
  274. $result['email'] = $user_data['user_email'];
  275. $result['password'] = $user_data['user_pass'];
  276. $result['security'] = $user_data['reg_security'];
  277. $result['error'] = alertMessage("Вы зарегистрированы успешно. Пожалуйста, подождите...");
  278. //update_user_meta($user_id, "phone", $user_data['user_phone']);
  279. wp_new_user_notification($user_id, $user_data['user_pass']);
  280. }
  281. } else {
  282. $result['error'] = alertMessage($res['errors'], 1);
  283. }
  284. echo json_encode($result);
  285. exit();
  286. }
  287.  
  288. add_action('wp_ajax_update_profile', 'ajax_update_profile');
  289.  
  290. function ajax_update_profile() {
  291. $result = array();
  292. $addMsg = "";
  293. if (!is_user_logged_in() || !check_ajax_referer('prof_edit_nonce', 'prof_security')) {
  294. $result['msg'] = alertMessage(" У вас нет достаточных прав для редактирования профиля!", 1);
  295. } else {
  296. global $current_user;
  297. global $wpdb;
  298. $cur_usr = get_currentuserinfo();
  299. $ignore_login = $cur_usr->user_email == trim($_POST['user_email']);
  300. $res = validateRegiForm($ignore_login, true);
  301. if ($res['errors']) {
  302. $result['msg'] = alertMessage($res['errors'], 1);
  303. } else {
  304. update_user_meta($cur_usr->ID, "first_name", $res['user_data']['first_name']); // updt user First name
  305. update_user_meta($cur_usr->ID, "phone", $res['user_data']['user_phone']); // updt user Phone
  306. isset($res['user_data']['user_phone_2']) ? update_user_meta($cur_usr->ID, "phone_2", trim($res['user_data']['user_phone_2'])) : false; // updt user Phone 2
  307.  
  308. if (!$ignore_login) {
  309. $upd_usr_data = array('ID' => $cur_usr->ID, 'user_email' => $res['user_data']['user_email']); // updt user email
  310.  
  311. if ($cur_usr->user_login != $res['user_data']['user_email']) {
  312. $upd_usr_data['user_nicename'] = sanitize_user($res['user_data']['user_email']); // updt user nicename
  313. $wpdb->update($wpdb->users, array('user_login' => $res['user_data']['user_email']), array('ID' => $cur_usr->ID)); // updt user Login
  314. }
  315. wp_update_user($upd_usr_data);
  316. wp_logout();
  317. $result['reload'] = 1;
  318. $addMsg = " Log in with your new Login";
  319. }
  320. $result['msg'] = alertMessage("Данные были успешно обновлены. $addMsg");
  321. }
  322. }
  323. echo json_encode($result);
  324. exit();
  325. }
  326.  
  327. function validateRegiForm($ignore_login = false, $ignore_pass = false) {
  328. extract($_POST);
  329. $out = array();
  330. $user_data = $_POST;
  331. $errors = [];
  332.  
  333. $sanitized_user_login = sanitize_user($user_email);
  334. $user_email = apply_filters('user_registration_email', $user_email);
  335.  
  336. if (!$ignore_login) {
  337. if ($sanitized_user_login == '') {
  338. $errors[] = getErrorMessage("E-mail", "empty_val");
  339. } elseif (!validate_username($sanitized_user_login)) {
  340. $errors[] = getErrorMessage("Username", "illegal_char");
  341. } elseif (username_exists($sanitized_user_login)) {
  342. $errors[] = getErrorMessage("Username", "already_exists");
  343. }
  344. if (!is_email($user_email)) {
  345. $errors[] = getErrorMessage("E-mail", "invalid_val");
  346. } elseif (email_exists($user_email)) {
  347. $errors[] = getErrorMessage("E-mail", "already_exists");
  348. }
  349. }
  350. if (!$ignore_pass) {
  351. if (!trim($user_pass)) {
  352. $errors[] = getErrorMessage("Password", "empty_val");
  353. } elseif ( strlen($user_pass) < PASS_LEN ) {
  354. $errors[] = getErrorMessage("Password", "min_size", PASS_LEN);
  355. } elseif ($user_pass != $user_repass) {
  356. $errors[] = getErrorMessage("Password", "not_match");
  357. }
  358. }
  359. if (!trim($first_name))
  360. $errors[] = getErrorMessage("Full name", "empty_val");
  361. if (isset($user_phone) && !trim($user_phone))
  362. $errors[] = getErrorMessage("Телефон", "empty_val");
  363.  
  364. if (count($errors)) {
  365. $out['errors'] = $errors;
  366. } else {
  367. $out['errors'] = false;
  368. if (!$ignore_login) {
  369. $user_data['user_login'] = $sanitized_user_login;
  370. $user_data['user_email'] = $user_email;
  371. }
  372. }
  373. $out['user_data'] = $user_data;
  374. return $out;
  375. }
  376.  
  377. function getErrorMessage($field, $errorType, $addvalue = NULL) {
  378. $errorTag = "<strong>Ошибка </strong>:";
  379. switch ($errorType) {
  380. case "empty_val" :
  381. return "$errorTag Пожалуйста заполните <b>\"$field\"</b> поле";
  382. case "incorrect_val" :
  383. return "$errorTag Incorrect <b>\"$field\"</b> value";
  384. case "illegal_char" :
  385. return "$errorTag Illegal characters! Please specify a valid <b>\"$field\"</b>";
  386. case "already_exists" :
  387. return "$errorTag This <b>\"$field\"</b> is already exists. Please specify another one";
  388. case "invalid_val":
  389. return "$errorTag Innvalid <b>\"$field\"</b> was specified";
  390. case "not_match":
  391. return "$errorTag The <b>\"$field\"</b> does not match";
  392. case "min_size":
  393. return "$errorTag The <b>\"$field\"</b> must contain at least $addvalue characters";
  394. }
  395. }
  396.  
  397. function alertMessage($msgs, $err = false) {
  398. $class = $err ? "error" : "success";
  399. $txt = is_array($msgs) ? "<p>" . implode("</p><p>", $msgs) . "</p>" : "<p>$msgs</p>";
  400. return "<div class='$class'>$txt</div>";
  401. }
  402. //AJAXSIGN
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432. /////////////////////////////USER JS
  433. // NEW selector
  434. jQuery.expr[':'].Contains = function(a, i, m) {
  435. return jQuery(a).text().toUpperCase()
  436. .indexOf(m[3].toUpperCase()) >= 0;
  437. };
  438.  
  439. $(document).ready(function () {
  440.  
  441.  
  442. $('#ajaxregi').submit(function () {
  443. var $form = $(this);
  444. $.ajax({
  445. type: "POST",
  446. url: ajax_login_object.ajaxurl,
  447. data: $form.serialize(),
  448. dataType: "json",
  449. success: function (response) {
  450. $form.find('.ajax-result').html(response.error);
  451. if (response.log_in === 1) {
  452. $.ajax({
  453. type: 'POST',
  454. dataType: 'json',
  455. url: ajax_login_object.ajaxurl,
  456. data: {
  457. 'action': 'ajaxlogin',
  458. 'username': response.email,
  459. 'password': response.password,
  460. 'security': response.security
  461. },
  462. success: function (data) {
  463. if (data.loggedin === true) {
  464. window.location.reload();
  465. }
  466. }
  467. });
  468. }
  469. }
  470. });
  471. return false;
  472. });
  473.  
  474. $('#ajaxprofile').submit(function () {
  475. var $form = $(this);
  476. $.ajax({
  477. type: "POST",
  478. url: ajax_login_object.ajaxurl,
  479. data: $form.serialize(),
  480. dataType: "json",
  481. success: function (response) {
  482. if (response.msg !== undefined)
  483. $form.find('.ajax-result').html(response.msg);
  484. if (response.reload == 1)
  485. window.location.reload();
  486.  
  487. }
  488. });
  489. return false;
  490. });
  491.  
  492. $('#ajaxchangepass').submit(function () {
  493. var $form = $(this);
  494. $.ajax({
  495. type: "POST",
  496. url: ajax_login_object.ajaxurl,
  497. data: $form.serialize(),
  498. dataType: "json",
  499. success: function (response) {
  500. if (response.msg !== undefined)
  501. $form.find('.ajax-result').html(response.msg);
  502. if (response.reset_form == 1)
  503. $form.find('input[type=password]').val();
  504.  
  505. }
  506. });
  507. return false;
  508. });
  509.  
  510. $(document).on('click', '#admin-order-list .accordeon_item', function () {
  511. order_id = $(this).data('orderid');
  512. $('.order-tables').hide();
  513. $('#' + order_id).fadeIn(400);
  514. $.ajax({
  515. type: "POST",
  516. url: ajax_login_object.ajaxurl,
  517. data: "action=set_viewed_contractors&order_id=" + order_id,
  518. success: function (response) {
  519.  
  520. }
  521. });
  522. })
  523.  
  524. $(document).on('click', '.order-tables .plus, .order-tables .minus', function () {
  525. $this = $(this);
  526. contractor_id = $this.parents('tr').data('contractor-id');
  527. order_id = $this.parents('tr').data('order-id');
  528.  
  529. if ($this.hasClass('plus')) {
  530. event = 'add';
  531. $this.removeClass('plus').addClass('minus');
  532. } else if ($this.hasClass('minus')) {
  533. event = 'remove';
  534. if( $this.parents('.order-tables').hasClass('order-tables-admin') ){
  535. $sel = $this;
  536. }else{
  537. $this.parents('tr').remove();
  538. $sel = $('#' + order_id + " tr[data-contractor-id="+contractor_id+"] .minus");
  539. }
  540. $sel.removeClass('minus').addClass('plus');
  541. }
  542.  
  543. $.ajax({
  544. type: "POST",
  545. url: ajax_login_object.ajaxurl,
  546. data: "action=edit_contributors&event=" + event + "&contractor_id=" + contractor_id + "&order_id=" + order_id,
  547. success: function (response) {
  548. $('#self-order-list .accordeon_content').html(response);
  549. }
  550. });
  551. return false;
  552. })
  553.  
  554. $(document).on('click', '#self-order-list .accordeon_item', function () {
  555. order_id = $(this).data('orderid');
  556. $('.order-tables').hide();
  557.  
  558. $.ajax({
  559. type: "POST",
  560. url: ajax_login_object.ajaxurl,
  561. data: "action=print_self_orders_list&pnl_type=self&order_id=" + order_id,
  562. success: function (response) {
  563. $('.own-list').hide().html(response).fadeIn(400);
  564. }
  565. });
  566. })
  567.  
  568. $('.remodal-confirm').on("click", function(){
  569. $.ajax({
  570. type: "POST",
  571. url: ajax_login_object.ajaxurl,
  572. data: "action=remove_current_user",
  573. success: function (response) {
  574. if(parseInt(response) == 1)
  575. window.location.reload();
  576. }
  577. });
  578.  
  579. })
  580.  
  581. $(document).on('keyup','.search_active', function(){
  582. val = $(this).val().toLowerCase();
  583. par = $(this).parents('.order-tables');
  584. //if (val.length >= 2){
  585. elems = par.find(".main_table .file-name:Contains('"+val+"')");
  586. par.find(".main_table tr").hide();
  587. $(elems).parents('tr').show();
  588. //}
  589. })
  590. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement