Builder
4 weeks ago
MyAccount
4 weeks ago
EditProfileTag.php
1 year ago
FormProcessor.php
1 year ago
FrontendProfileTag.php
1 year ago
Init.php
3 years ago
LoginFormTag.php
2 years ago
MelangeTag.php
1 year ago
MemberDirectoryTag.php
1 year ago
MembershipShortcodes.php
1 year ago
PasswordResetTag.php
4 weeks ago
RegistrationFormTag.php
1 year ago
index.php
5 years ago
EditProfileTag.php
127 lines
| 1 | <?php |
| 2 | |
| 3 | namespace ProfilePress\Core\ShortcodeParser; |
| 4 | |
| 5 | use ProfilePress\Core\Classes\EditUserProfile; |
| 6 | use ProfilePress\Core\Classes\FormRepository as FR; |
| 7 | |
| 8 | class EditProfileTag extends FormProcessor |
| 9 | { |
| 10 | public function __construct() |
| 11 | { |
| 12 | add_action('wp', [$this, 'process_edit_profile_form']); |
| 13 | |
| 14 | add_shortcode('profilepress-edit-profile', array($this, 'parse_shortcode')); |
| 15 | } |
| 16 | |
| 17 | /** Get the current user id */ |
| 18 | public static function get_current_user_id() |
| 19 | { |
| 20 | $current_user = wp_get_current_user(); |
| 21 | |
| 22 | return $current_user->ID; |
| 23 | } |
| 24 | |
| 25 | /** |
| 26 | * Shortcode callback function to parse the shortcode. |
| 27 | * |
| 28 | * @param $atts |
| 29 | * |
| 30 | * @return string |
| 31 | */ |
| 32 | public function parse_shortcode($atts) |
| 33 | { |
| 34 | do_action('ppress_edit_profile_before_parse_shortcode'); |
| 35 | |
| 36 | $id = absint($atts['id']); |
| 37 | |
| 38 | do_action('ppress_edit_profile_form_before', $id, $atts); |
| 39 | |
| 40 | $redirect = isset($atts['redirect']) ? esc_url_raw($atts['redirect']) : ''; |
| 41 | |
| 42 | $response = ''; |
| 43 | if (isset($this->edit_profile_form_error[$id])) { |
| 44 | $response = $this->edit_profile_form_error[$id]; |
| 45 | } |
| 46 | |
| 47 | if (isset($_GET['edit']) && ($_GET['edit'] == 'true')) { |
| 48 | $response = wp_kses_post(html_entity_decode(EditUserProfile::get_success_message($id))); |
| 49 | } |
| 50 | |
| 51 | $response = apply_filters('ppress_edit_profile_status', $response, $id); |
| 52 | |
| 53 | $attribution_start = apply_filters('ppress_hide_attribution', '<!-- This form was created and powered by ProfilePress WordPress plugin - https://profilepress.com -->' . "\r\n"); |
| 54 | $attribution_end = apply_filters('ppress_hide_attribution', "\r\n" . '<!-- / ProfilePress WordPress plugin. -->' . "\r\n"); |
| 55 | $css = self::get_edit_profile_css($id); |
| 56 | |
| 57 | $container_div_start = sprintf('<div id="pp-edit-profile-%s-wrap" class="pp-form-container pp-edit-profile-form-wrap">', $id); |
| 58 | $container_div_end = '</div>'; |
| 59 | |
| 60 | return apply_filters('ppress_edit_profile_form', $attribution_start . $css . $container_div_start . $response . self::get_edit_profile_structure($id, $redirect) . $container_div_end . $attribution_end, $id); |
| 61 | } |
| 62 | |
| 63 | /** |
| 64 | * Get the registration structure from the database |
| 65 | * |
| 66 | * @param int $id |
| 67 | * @param string $redirect URL to redirect to after edit profile. |
| 68 | * |
| 69 | * @return string |
| 70 | */ |
| 71 | public static function get_edit_profile_structure($id, $redirect = '') |
| 72 | { |
| 73 | $structure = "<input type='hidden' name='editprofile_form_id' value='$id'>"; |
| 74 | |
| 75 | if ( ! empty($redirect)) { |
| 76 | $structure .= "<input type='hidden' name='editprofile_redirect' value='" . esc_attr($redirect) . "'>"; |
| 77 | } |
| 78 | |
| 79 | if (FR::is_drag_drop($id, FR::EDIT_PROFILE_TYPE)) { |
| 80 | $form_instance = FR::dnd_class_instance($id, FR::EDIT_PROFILE_TYPE); |
| 81 | if ( ! $form_instance) return esc_html__('Form class not found. Please check if this ProfilePress form actually exist.', 'wp-user-avatar'); |
| 82 | $structure .= $form_instance->form_structure(); |
| 83 | } else { |
| 84 | $structure .= FR::get_form_meta($id, FR::EDIT_PROFILE_TYPE, FR::FORM_STRUCTURE); |
| 85 | } |
| 86 | |
| 87 | $GLOBALS['pp_edit_profile_form_id'] = $id; |
| 88 | |
| 89 | $structure = do_shortcode($structure); |
| 90 | |
| 91 | $form_tag = "<form data-pp-form-submit=\"editprofile\" id='pp_edit-profile_$id' method='post' autocomplete=\"off\" enctype='multipart/form-data'" . apply_filters('ppress_edit_profile_form_tag', '', $id) . ">"; |
| 92 | |
| 93 | return $form_tag . $structure . '</form>'; |
| 94 | } |
| 95 | |
| 96 | /** |
| 97 | * Get the CSS stylesheet for the ID registration |
| 98 | * |
| 99 | * @return mixed |
| 100 | */ |
| 101 | |
| 102 | public static function get_edit_profile_css($id) |
| 103 | { |
| 104 | if ( ! isset($id)) return ''; |
| 105 | |
| 106 | if (FR::is_drag_drop($id, FR::EDIT_PROFILE_TYPE)) { |
| 107 | $form_instance = FR::dnd_class_instance($id, FR::EDIT_PROFILE_TYPE); |
| 108 | if ( ! $form_instance) return ''; |
| 109 | $css = $form_instance->minified_form_css(); |
| 110 | } else { |
| 111 | $css = FR::get_form_meta($id, FR::EDIT_PROFILE_TYPE, FR::FORM_CSS); |
| 112 | } |
| 113 | |
| 114 | return "<style type=\"text/css\">\r\n $css \r\n</style>"; |
| 115 | } |
| 116 | |
| 117 | public static function get_instance() |
| 118 | { |
| 119 | static $instance = false; |
| 120 | |
| 121 | if ( ! $instance) { |
| 122 | $instance = new self; |
| 123 | } |
| 124 | |
| 125 | return $instance; |
| 126 | } |
| 127 | } |