function export_members_to_csv() { global $wpdb; if (isset($_POST['wp_emember_export'])) { $filename = "member_list_" . date("Y-m-d_H-i", time()); header('Content-Encoding: UTF-8'); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Description: File Transfer"); header('Content-Type: text/csv; charset=utf-8'); header("Content-disposition: attachment; filename=" . $filename . ".csv"); $output = apply_filters('emember_export_csv', ''); if (!empty($output)) { header("Content-Length: " . strlen($output)); echo ""; echo $output; exit; } ob_start(); $output_buffer = fopen("php://output", 'w'); $emember_config = Emember_Config::getInstance(); $wpememmeta = new WPEmemberMeta(); $member_meta_tbl = $wpememmeta->get_table('member_meta'); $customer_field_indices = array(); $member_table = $wpememmeta->get_table('member'); $ret_member_db = $wpdb->get_results("SELECT * FROM {$member_table} ORDER BY member_id DESC", OBJECT); $header = array("User name", "First Name", "Last Name", "Street", "City", "State", "ZIP", "Country", "Email", "Phone", "Membership Start", "Membership Expiry", "Member Since", "Membership Level", "Account State", "Last Accessed", "Last Accessed From IP", "Gender", "Referrer", "Reg Code", "Txn ID", "Subscr ID", "Company"); if ($emember_config->getValue('eMember_custom_field')) { $custom_fields = get_option('emember_custom_field_type'); $custom_names = $custom_fields['emember_field_name']; $custom_types = $custom_fields['emember_field_type']; $custom_extras = $custom_fields['emember_field_extra']; if (count($custom_names) > 0) { foreach ($custom_names as $i => $name) { $name = stripslashes($name); $customer_field_indices[$i] = emember_escape_custom_field($name); array_push($header, $name); } } } fputcsv($output_buffer, $header); $membership_levels = Emember_Level_Collection::get_instance(); $order = array('user_name', 'first_name', 'last_name', 'address_street', 'address_city', 'address_state', 'address_zipcode', 'country', 'email', 'phone', 'subscription_starts', 'expiry_date', 'member_since', 'alias', 'account_state', 'last_accessed', 'last_accessed_from_ip', 'gender', 'referrer', 'reg_code', 'txn_id', 'subscr_id', 'company_name'); foreach ($ret_member_db as $result) { $level = $membership_levels->get_levels($result->membership_level); $data = array(); foreach ($order as $key) { switch ($key) { case 'alias': $value = empty($level) || is_array($level) ? '' : escape_csv_value(stripslashes($level->get('alias'))); break; case 'expiry_date': $value = emember_get_expiry_by_member_id($result->member_id); $value = escape_csv_value(stripslashes($value)); break; default: $value = escape_csv_value(stripslashes($result->{$key})); break; } array_push($data, $value); } if ($emember_config->getValue('eMember_custom_field')) { $custom_values = $wpdb->get_col("select meta_value from " . $member_meta_tbl . ' WHERE user_id=' . $result->member_id . ' AND meta_key="custom_field"'); $custom_values = unserialize(isset($custom_values[0]) ? $custom_values[0] : ""); foreach ($customer_field_indices as $i => $n) { $v = isset($custom_values[$n]) ? $custom_values[$n] : ""; if ($custom_types[$i] == 'dropdown') { $m = explode(",", stripslashes($custom_extras[$i])); $e = array(); foreach ($m as $k) { $k = explode("=>", $k); $e[$k[0]] = $k[1]; } $v = isset($e[$v]) ? $e[$v] : ""; } $value = escape_csv_value(stripslashes($v)); array_push($data, $value); } } fputcsv($output_buffer, $data); } fclose($output_buffer); $output = ob_get_clean(); header("Content-Length: " . strlen($output)); echo ""; echo $output; exit; } }
function emember_dynamically_replace_member_details_in_message($member_id, $message_body, $additional_params = '') { global $wpdb; $emember_config = Emember_Config::getInstance(); $resultset = dbAccess::find(WP_EMEMBER_MEMBERS_TABLE_NAME, ' member_id=' . $member_id); $password = ""; $login_link = ""; if (!empty($additional_params)) { $password = $additional_params['password']; $login_link = $additional_params['login_link']; } $level_name = emember_get_membership_level_by_id($resultset->membership_level); $tags = array("{member_id}", "{user_name}", "{first_name}", "{last_name}", "{member_since}", "{membership_level}", "{more_membership_levels}", "{account_state}", "{email}", "{phone}", "{address_street}", "{address_city}", "{address_state}", "{address_zipcode}", "{home_page}", "{country}", "{gender}", "{referrer}", "{extra_info}", "{subscription_starts}", "{txn_id}", "{subscr_id}", "{company_name}", "{password}", "{login_link}", "{membership_level_name}"); $vals = array($member_id, $resultset->user_name, $resultset->first_name, $resultset->last_name, $resultset->member_since, $resultset->membership_level, $resultset->more_membership_levels, $resultset->account_state, $resultset->email, $resultset->phone, $resultset->address_street, $resultset->address_city, $resultset->address_state, $resultset->address_zipcode, $resultset->home_page, $resultset->country, $resultset->gender, $resultset->referrer, $resultset->extra_info, $resultset->subscription_starts, $resultset->txn_id, $resultset->subscr_id, $resultset->company_name, $password, $login_link, $level_name); if ($emember_config->getValue('eMember_custom_field')) { $wpememmeta = new WPEmemberMeta(); $member_meta_tbl = $wpememmeta->get_table('member_meta'); $custom_fields = get_option('emember_custom_field_type'); $custom_names = (array) $custom_fields['emember_field_name']; $custom_types = (array) $custom_fields['emember_field_type']; $custom_extras = (array) $custom_fields['emember_field_extra']; $custom_values = $wpdb->get_col("select meta_value from " . $member_meta_tbl . ' WHERE user_id=' . $member_id . ' AND meta_key="custom_field"'); $custom_values = unserialize(isset($custom_values[0]) ? $custom_values[0] : ""); if (empty($custom_values)) { $custom_values = array(); } foreach ($custom_names as $i => $name) { $name = stripslashes($name); $index = emember_escape_custom_field($name); $tags[] = "{" . $index . "}"; $v = isset($custom_values[$index]) ? $custom_values[$index] : ""; if ($custom_types[$i] == 'dropdown') { $m = explode(",", stripslashes($custom_extras[$i])); $e = array(); foreach ($m as $k) { $k = explode("=>", $k); $e[$k[0]] = $k[1]; } $v = isset($e[$v]) ? $e[$v] : ""; } $vals[] = stripslashes($v); } } $message_body = str_replace($tags, $vals, $message_body); return $message_body; }
function wp_eMember_scheduled_membership_upgrade() { global $wpdb; $emember_config = Emember_Config::getInstance(); $wpememmeta = new WPEmemberMeta(); $membership_tbl = $wpememmeta->get_table('membership_level'); $members_tbl = $wpememmeta->get_table('member'); $email_list = array(); $emails_for_followup_notification = array(); $query_start = 0; $query_limit = 500; $iterations = 0; $membership_levels = Emember_Level_Collection::get_instance(); while (1) { $query = 'SELECT member_id,membership_level,email,subscription_starts,account_state, ' . 'more_membership_levels, expiry_1st, expiry_2nd FROM ' . $members_tbl . ' WHERE account_state="active" LIMIT ' . $query_start . ', ' . $query_limit; $members = $wpdb->get_results($query, OBJECT); if (count($members) < 1) { break; } foreach ($members as $member) { if (empty($member->subscription_starts)) { continue; } $should_update_db = false; $level_info = array(); $my_level = $membership_levels->get_levels($member->membership_level); $options = unserialize($my_level->get('options')); $current_level = $member->membership_level; $more_levels = $member->more_membership_levels; $more_levels = is_array($more_levels) ? array_filter($more_levels) : $more_levels; $sec_levels = explode(',', $more_levels); $level_info['membership_level'] = $current_level; $level_info['account_state'] = $member->account_state; //Initialize the account state with the current data $level_data_modified = false; if (isset($options['promoted_level_id']) && !empty($options['promoted_level_id']) && $options['promoted_level_id'] != -1) { $current_subscription_starts = strtotime($member->subscription_starts); $current_time = time(); while (1) { if ($current_level === $options['promoted_level_id']) { break; } $promoted_after = trim($options['days_after']); if (empty($promoted_after)) { break; } $d = $promoted_after == 1 ? ' day' : ' days'; $expires = strtotime(" + " . abs($promoted_after) . $d, $current_subscription_starts); if ($expires > $current_time) { break; } if (!isset($options['promoted_level_id']) || empty($options['promoted_level_id']) || $options['promoted_level_id'] == -1) { break; } $sec_levels[] = $current_level; $current_level = $options['promoted_level_id']; $my_level = $membership_levels->get_levels($current_level); // $options = unserialize($my_level->get('options')); } if ($current_level != -1 && !empty($current_level) && $member->membership_level != $current_level) { $level_info['membership_level'] = $current_level; $level_data_modified = true; if ($emember_config->getValue('eMember_enable_secondary_membership')) { $level_info['more_membership_levels'] = array_unique($sec_levels); } } } if (wp_emember_is_subscription_expired($member, $my_level)) { $level_info['account_state'] = 'expired'; $level_data_modified = true; $sec = $emember_config->getValue('eMember_enable_secondary_membership'); $migrate = $emember_config->getValue('eMember_secondary_membership_migrate'); if ($sec && $migrate) { foreach ($sec_levels as $key => $level) { if (empty($level)) { continue; } if (wp_emember_is_subscription_expired($member, $membership_levels->get_levels($level))) { continue; } $sec_levels[$key] = $level_info['membership_level']; $level_info['membership_level'] = $level; $level_info['account_state'] = 'active'; $level_info['more_membership_levels'] = array_unique($sec_levels); break; } } } /*** notification after x day of account expiry ***/ if (isset($level_info['account_state']) && $level_info['account_state'] == 'expired') { $is_auto_email = $emember_config->getValue('eMember_email_notification'); $notification_interval = $emember_config->getValue('eMember_after_expiry_num_days'); //$is_recurring = $emember_config->getValue('eMember_after_expiry_num_days_recurring'); if (!empty($is_auto_email) && !empty($notification_interval)) { $current_mem_level = $membership_levels->get_levels($level_info['membership_level']); $days_elapsed = wp_emember_num_days_since_expired($current_mem_level->get('subscription_period'), $current_mem_level->get('subscription_unit'), $member->get('subscription_starts')); if ($days_elapsed == $notification_interval) { $emails_for_followup_notification[] = $member->email; } } } /*** Auto upgrade ***/ if ($level_data_modified) { eMember_log_cronjob_debug('Auto upgrading the member account with member ID: ' . $member->member_id . ' Level: ' . $level_info['membership_level'], true); eMember_log_cronjob_debug('Users account state: ' . $level_info['account_state'], true); $email_list[] = $member->email; if (isset($level_info['more_membership_levels'])) { $level_info['more_membership_levels'] = implode(',', $level_info['more_membership_levels']); } if (!empty($level_info)) { dbAccess::update(WP_EMEMBER_MEMBERS_TABLE_NAME, 'member_id=' . $member->member_id, $level_info); } do_action('emember_membership_changed', array('member_id' => $member->member_id, 'from_level' => $member->membership_level, 'to_level' => $level_info['membership_level'])); } } $query_start = $query_limit * ++$iterations + 1; } //Handle auto upgrade notification if needed if ($emember_config->getValue('eMember_enable_autoupgrade_notification')) { eMember_log_cronjob_debug('Using auto upgrade notification email option.. need to check the email list.', true); if (!empty($email_list)) { $subject = $emember_config->getValue('eMember_autoupgrade_email_subject'); eMember_log_cronjob_debug('Sending auto upgrade notification email with subject: ' . $subject, true); $body = $emember_config->getValue('eMember_autoupgrade_email_body'); $headers = 'From: ' . $emember_config->getValue('eMember_autoupgrade_senders_email_address') . "\r\n"; $headers .= 'bcc: ' . implode(',', $email_list) . "\r\n"; eMember_log_cronjob_debug($headers, true); wp_mail(array(), $subject, $body, $headers); eMember_log_cronjob_debug('Auto upgrade notification email sent.', true); } } // Handle notification email after X days if needed if (!empty($emails_for_followup_notification)) { $subject = $emember_config->getValue('eMember_after_expiry_email_subject_followup'); eMember_log_cronjob_debug('Sending expiry notification email after X days with subject: ' . $subject, true); $body = $emember_config->getValue('eMember_after_expiry_email_body_followup'); $headers = 'From: ' . $emember_config->getValue('eMember_after_expiry_senders_email_address_followup') . "\r\n"; $headers .= 'bcc: ' . implode(',', $emails_for_followup_notification) . "\r\n"; eMember_log_cronjob_debug($headers, true); wp_mail(array(), $subject, $body, $headers); eMember_log_cronjob_debug('Expiry notification email sent.', true); } //mail }
function wp_emember_migrate_protection_list() { //TODO - remove @v10 $cpm_ran_once = get_option("wp_emmeber_cpm_ran_once"); if ($cpm_ran_once == "1") { return; //This has already been done once in this install } global $wpdb; $wpememmeta = new WPEmemberMeta(); $table = $wpememmeta->get_table('membership_level'); $results = $wpdb->get_results("SELECT id, permissions, post_list, attachment_list, custom_post_list FROM " . $table); $builtin_types = get_post_types('', 'names'); foreach ($results as $result) { $mixed = unserialize($result->post_list); $posts = array(); $pages = array(); $attachments = (array) unserialize($result->attachment_list); $custom_posts = (array) unserialize($result->custom_post_list); foreach ($mixed as $id) { $type = get_post_type($id); if ($type == 'post') { $posts[] = $id; } else { if ($type == 'attachment') { $attachments[] = $id; } else { if (in_array($type, $builtin_types)) { continue; } else { $custom_posts[] = $id; } } } } $permssions = $result->permissions; if (!empty($attachments)) { $permissions += 16; } if (!empty($custom_posts)) { $permissions += 32; } $fields = array('post_list' => serialize($posts), 'attachment_list' => serialize($attachments), 'custom_post_list' => serialize($custom_posts), 'permissions' => $permissions); $wpdb->update($table, $fields, array('id' => $result->id)); } update_option("wp_emmeber_cpm_ran_once", "1"); }