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; }
/** * API helper method get userdata * * @param int $user_id * @return array $userdata */ function _get_userdata($user_id) { // get userdata $user = mgm_get_userdata($user_id); // user data $email = stripslashes($user->user_email); $first_name = !empty($user->first_name) ? stripslashes($user->first_name) : ''; $last_name = !empty($user->last_name) ? stripslashes($user->last_name) : ''; $full_name = !empty($first_name) ? mgm_str_concat($first_name, $last_name) : $user->display_name; // return $userdata = array('email' => $email, 'full_name' => $full_name, 'first_name' => $first_name, 'last_name' => $last_name); // member $member = mgm_get_member($user_id); // custom fields if ($member->custom_fields) { // get vars $custom_fields = get_object_vars($member->custom_fields); // check if (count($custom_fields) > 0) { // loop foreach ($custom_fields as $custom_field => $value) { // check if (!isset($userdata[$custom_field])) { // ensure fields already set are not overwritten $userdata[$custom_field] = $value; } } } } //other membership types -issue #1073 if ($member->other_membership_types) { $other_membership_types = array(); foreach ($member->other_membership_types as $o_membership_type) { if (!empty($o_membership_type)) { $other_membership_types[] = $o_membership_type['membership_type']; } } $userdata['other_membership_types'] = $other_membership_types; } // membership type if ($member->membership_type) { $userdata['membership_type'] = $member->membership_type; } // return return $userdata; }
/** * API helper method set address fields * * @param object $user * @param array $data * @param array $mapping * @param string $callback * @return none */ function _set_address_fields($user, &$data, $mapping, $callback = NULL) { // get address_fields $address_fields = $this->_get_address_fields($user); // consider post alter, #762 if (isset($_POST['mgm_payment_field']) && is_array($_POST['mgm_payment_field'])) { // merge $address_fields = array_merge($address_fields, $_POST['mgm_payment_field']); } // loop custom fields map foreach ($mapping as $custom_field => $payment_field) { // string if (is_string($payment_field)) { // set if (isset($address_fields[$custom_field])) { // filter $value = $callback ? call_user_func_array($callback, array($custom_field, $address_fields[$custom_field])) : $this->_address_field_filter($custom_field, $address_fields[$custom_field]); // set $data[$payment_field] = $value; } } else { if (is_array($payment_field)) { // array for address $uf_values = explode("\n", $address_fields[$custom_field]); // loop foreach ($payment_field as $pf) { // set if ($uf_value = array_shift($uf_values)) { $data[$pf] = substr($uf_value, 0, 64); // take 64 chars only per line } } } } } // concat name if (isset($mapping['full_name'])) { // value $value = $user->first_name ? mgm_str_concat($user->first_name, $user->last_name) : $user->display_name; // filter $value = $callback ? call_user_func_array($callback, array('full_name', $value)) : $this->_address_field_filter('full_name', $value); // set $data[$mapping['full_name']] = $value; } }