示例#1
0
 function editProfile()
 {
     global $current_user;
     get_currentuserinfo();
     if ($_POST['submit']) {
         $cont = true;
         if (!wp_verify_nonce($_POST['nonce'], 'loginx_profile')) {
             parent::loginx_errorMessage('Security Token Mismatch');
             $cont = false;
         } else {
             if ($current_user->user_email != $_POST['user_email'] && $_POST['user_email'] != '' && isset($_POST['user_email'])) {
                 if (email_exists($_POST['user_email'])) {
                     parent::loginx_errorMessage('Email already exists.');
                     $cont = false;
                 } else {
                     if ($this->options['email_valid'] == 'on') {
                         $emailVerify = true;
                         $actKey = substr(md5(microtime() . NONCE_SALT), 5, 15);
                         $this->wpdb->insert($this->wpdb->prefix . 'loginx_key', array('user_id' => $current_user->ID, 'loginx_key' => $actKey, 'loginx_expire' => 0, 'act' => 1));
                         $subject = parent::loginx_emailTrans($this->options['act_email_subject']);
                         $message = parent::loginx_emailTrans($this->options['act_email_text'], array('::LINK::' => get_permalink($this->options['login_page']) . '?act=' . $actKey));
                         wp_mail($_POST['user_email'], $subject, $message);
                     }
                 }
             }
         }
         if ($cont == true) {
             $_POST['user_login'] = $current_user->user_login;
             $omit = array('submit', 'nonce', 'user_pass_confirm', 'captcha', 'recaptcha_challenge_field', 'recaptcha_response_field');
             $wpFields = array();
             $createArray = array();
             $metaArray = array();
             $results = $this->wpdb->get_results('select loginx_field_name, loginx_field_wp from ' . $this->wpdb->prefix . 'loginx_field');
             foreach ($results as $row) {
                 if ($row->loginx_field_wp == 1) {
                     $wpFields[] = $row->loginx_field_name;
                 } else {
                     $metaFields[] = $row->loginx_field_name;
                 }
             }
             foreach ($_POST as $k => $v) {
                 if (!in_array($k, $omit)) {
                     if (in_array($k, $wpFields)) {
                         if ($_POST[$k] != '') {
                             $updateArray[$k] = $v;
                         }
                     } else {
                         $metaArray[$k] = $v;
                     }
                 }
             }
             $updateArray['ID'] = $current_user->ID;
             wp_update_user($updateArray);
             foreach ($metaArray as $k => $v) {
                 update_user_meta($current_user->ID, $k, $v);
             }
             foreach ($metaFields as $m) {
                 if (!in_array($m, array_keys($metaArray))) {
                     delete_user_meta($current_user->ID, $m);
                 }
             }
             $message = $emailVerify == true ? $this->options['profile_email_verify_message'] : '';
             $message .= $this->options['profile_success_message'];
             do_action('loginx_after_profile_save', $emailVerify);
             parent::loginx_successMessage($message);
         }
     }
     require_once PHPX_DIR . 'phpx_form.php';
     $form = new phpx_form();
     $form->startForm(get_permalink() . '?edit=1', 'loginxProfileForm');
     $form->hidden('nonce', wp_create_nonce('loginx_profile'));
     $form->hidden('loginx_form', 1);
     if (parent::loginx_errorMessage()) {
         $form->freeText(parent::loginx_errorMessage('get'), 'loginx_error');
     } else {
         if (parent::loginx_successMessage()) {
             $form->freeText(parent::loginx_successMessage('get'), 'loginx_success');
         }
     }
     $results = $this->wpdb->get_results('select loginx_field_name, loginx_field_label, loginx_field_options, loginx_field_type, loginx_field_req, loginx_field_no_edit from ' . $this->wpdb->prefix . 'loginx_field where loginx_field_profile = 1 order by loginx_field_ord asc');
     parent::setFormValue($current_user);
     $form = parent::publicForm($form, $results, false);
     $form->freeText($this->rpx_user_profile());
     $this->text .= '<div id="loginx_form">' . $form->endForm() . '</div>';
 }