function mgm_replace_message_tags($message, $user_id = NULL) { // get user if (!$user_id) { // cusrrent user $current_user = wp_get_current_user(); // set $user_id = $current_user->ID; } // int $logged_in = isset($current_user) && $current_user->ID > 0 ? true : false; // user if ($user_id > 0) { // get user $user = get_userdata($user_id); // mgm member $member = mgm_get_member($user_id); // set $username = $user->user_login; $name = mgm_str_concat($user->first_name, $user->last_name); $email = $user->user_email; $url = $user->user_url; $display_name = $user->display_name; $first_name = $user->first_name; $last_name = $user->last_name; $description = $user->description; $nickname = $user->nickname; // get active custom fields $custom_fields = mgm_get_class('member_custom_fields')->get_fields_where(array('display' => array('on_register' => true, 'on_profile' => true, 'on_public_profile' => true))); // init $custom_field_tags = array(); // loop foreach ($custom_fields as $custom_field) { // if already set skip it if (!isset(${$custom_field['name']}) || isset(${$custom_field['name']}) && empty(${$custom_field['name']})) { // check if (isset($member->custom_fields->{$custom_field}['name'])) { // skip password always if ($custom_field['name'] == 'password') { continue; } // value $value = $member->custom_fields->{$custom_field}['name']; // country if ($custom_field['name'] == 'country') { $value = mgm_country_from_code($value); } // set $custom_field_tags[$custom_field['name']] = $value; } } } } else { // get active custom fields $custom_fields = mgm_get_class('member_custom_fields')->get_fields_where(array('display' => array('on_register' => true, 'on_profile' => true, 'on_public_profile' => true))); // init $custom_field_tags = array(); // loop foreach ($custom_fields as $custom_field) { // set $custom_field_tags[$custom_field['name']] = ''; } } /* * [[purchase_cost]] = Cost and currency of a purchasable post * [[login_register]] = Login or register form * [[login_register_links]] = Links for login and register * [[login_link]] = Login link only * [[facebook_login_button]] = Facebook login button * [[register_link]] = Register link only * [[membership_types]] = A list of membership levels that can see this post/page * [[duration]] = number of days that the user will have access for * [[username]] = username * [[name]] = name / username * [[register]] = register form */ // post $post_id = get_the_ID(); // vars $system_obj = mgm_get_class('system'); $currency = $system_obj->setting['currency']; $post_obj = mgm_get_post($post_id); $duration = $post_obj->get_access_duration(); if (!$duration) { $duration = __('unlimited', 'mgm'); } $purchase_cost = $post_obj->purchase_cost; $currency_sign = mgm_get_currency_symbols($system_obj->setting['currency']); // these function calls are called repeadtedly as filter is used in multiple places // call only when tag present in message // [login_register_links] if (preg_match('/[[login_register_links]]/', $message)) { $login_register_links = !$logged_in ? mgm_get_login_register_links() : ''; } // [login_link] if (preg_match('/[[login_link]]/', $message)) { $login_link = !$logged_in ? mgm_get_login_link() : ''; } // [facebook_login_button] if (preg_match('/[[facebook_login_button]]/', $message)) { $facebook_login_button = !$logged_in ? mgm_generate_facebook_login() : ''; } // [register_link] if (preg_match('/[[register_link]]/', $message)) { $register_link = !$logged_in ? mgm_get_register_link() : ''; } // [login_register] if (preg_match('/[[login_register]]/', $message)) { $login_register = !$logged_in ? mgm_sidebar_user_login_form(__('Register', 'mgm')) : ''; } // [register] if (preg_match('/[[register]]/', $message)) { $register = !$logged_in ? mgm_user_register_form() : ''; } // membership type if (!($membership_types = $post_obj->get_access_membership_types())) { // purchasble if (mgm_post_is_purchasable($post_id)) { $membership_types = 'Purchasable Only'; } else { // access $membership_types = 'No access'; } } else { // get object $membership_types_obj = mgm_get_class('membership_types'); // init array $ms_types_array = array(); // loop foreach ($membership_types as $membership_type) { // set if (isset($membership_types_obj->membership_types[$membership_type])) { $ms_types_array[] = $membership_types_obj->membership_types[$membership_type]; } } // reset $membership_types = implode(', ', $ms_types_array); // unset unset($ms_types_array); } // loop defined $tags = array('purchase_cost', 'login_register', 'login_register_links', 'login_link', 'register_link', 'membership_types', 'duration', 'register', 'username', 'name', 'email', 'url', 'display_name', 'first_name', 'last_name', 'description', 'nickname', 'facebook_login_button', 'currency_sign'); // loop foreach ($tags as $tag) { // check if (!isset(${$tag})) { ${$tag} = ''; } // set $message = str_replace('[[' . $tag . ']]', ${$tag}, $message); } // custom_field_tags if (is_array($custom_field_tags)) { // loop foreach ($custom_field_tags as $tag => $value) { // check if (!isset($value)) { $value = ''; } // set $message = str_replace('[[' . $tag . ']]', $value, $message); } } // return return $message; }
/** * login widget : multiple instance * front end instance * * @param array $args * @param array $widget_args * @return void * @since 1.0 */ function mgm_sidebar_widget_login($args, $widget_args = 1) { global $user_ID, $current_user, $mgm_sidebar_widget; // if hide on custom login page $post_id = get_the_ID(); // post custom register if ($post_id > 0) { // if match if (get_permalink($post_id) == mgm_get_custom_url('login')) { return ""; } } // actual widget extract($args, EXTR_SKIP); if (is_numeric($widget_args)) { $widget_args = array('number' => $widget_args); } $widget_args = wp_parse_args($widget_args, array('number' => -1)); extract($widget_args, EXTR_SKIP); // get widget options $options = $mgm_sidebar_widget->login_widget; // validate if (!isset($options[$number])) { return; } // home url $home_url = home_url(); // get options $title_logged_in = isset($options[$number]['title_logged_in']) ? $options[$number]['title_logged_in'] : __('Magic Membership Details', 'mgm'); $title_logged_out = isset($options[$number]['title_logged_out']) ? $options[$number]['title_logged_out'] : __('Login', 'mgm'); $profile_text = isset($options[$number]['profile_text']) ? $options[$number]['profile_text'] : __('Profile', 'mgm'); $membership_details_text = isset($options[$number]['membership_details_text']) ? $options[$number]['membership_details_text'] : __('Membership Details', 'mgm'); $membership_contents_text = isset($options[$number]['membership_contents_text']) ? $options[$number]['membership_contents_text'] : __('Membership Contents', 'mgm'); $logout_text = isset($options[$number]['logout_text']) ? $options[$number]['logout_text'] : __('Logout', 'mgm'); $register_text = isset($options[$number]['register_text']) ? $options[$number]['register_text'] : __('Register', 'mgm'); $lostpassword_text = isset($options[$number]['lostpassword_text']) ? $options[$number]['lostpassword_text'] : __('Lost your Password?', 'mgm'); $logged_out_intro = isset($options[$number]['logged_out_intro']) ? stripslashes($options[$number]['logged_out_intro']) : ''; // logged in user view if ($user_ID) { echo $before_widget; if (trim($title_logged_in)) { echo $before_title . $title_logged_in . $after_title; } //>=WP2.7 = DB9872 if (get_option('db_version') >= 9872) { $logout_url = wp_logout_url($home_url); } else { //$logout_url = trailingslashit($home_url) . 'wp-login.php?action=logout'; $logout_url = add_query_arg(array('action' => 'logout'), mgm_get_custom_field_array('login')); } // @todo check the actual reason $membership_details_link = mgm_get_custom_url('membership_details'); $membership_contents_link = mgm_get_custom_url('membership_contents'); $profile_link = mgm_get_custom_url('profile'); // issue #945 // $system_obj = mgm_get_class('system'); // $membership_details_link = esc_html($system_obj->get_setting('membership_details_url')); // $membership_contents_link = esc_html($system_obj->get_setting('membership_contents_url')); // set tmpl $logged_in_template = isset($options[$number]['logged_in_template']) ? $options[$number]['logged_in_template'] : $mgm_sidebar_widget->default_text['logged_in_template']; $logged_in_template = str_replace('[display_name]', $current_user->display_name, $logged_in_template); $logged_in_template = str_replace('[membership_details_url]', $membership_details_link, $logged_in_template); $logged_in_template = str_replace('[membership_details_link]', sprintf('<a href="%s">%s</a>', $membership_details_link, $membership_details_text), $logged_in_template); $logged_in_template = str_replace('[membership_contents_url]', $membership_contents_link, $logged_in_template); $logged_in_template = str_replace('[membership_contents_link]', sprintf('<a href="%s">%s</a>', $membership_contents_link, $membership_contents_text), $logged_in_template); $logged_in_template = str_replace('[profile_url]', $profile_link, $logged_in_template); $logged_in_template = str_replace('[profile_link]', sprintf('<a href="%s">%s</a>', $profile_link, $profile_text), $logged_in_template); //Issue #825 $logged_in_template = str_replace('[logout_url]', $logout_url, $logged_in_template); $logged_in_template = str_replace('[logout_link]', '<a href="' . $logout_url . '">' . $logout_text . '</a>', $logged_in_template); echo $logged_in_template; echo $after_widget; } else { echo $before_widget; if (trim($title_logged_out)) { echo $before_title . $title_logged_out . $after_title; } echo $logged_out_intro; echo mgm_sidebar_user_login_form($register_text, $lostpassword_text); echo $after_widget; } }