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 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_emem_wp_user_list_ajax() { global $wpdb; if (!current_user_can('manage_options')) { die("Access Forbidden"); } if (!empty($_GET['t'])) { $params = array('blog_id' => $GLOBALS['blog_id'], 'offset' => $_GET['start'], 'number' => $_GET['limit'], 'search' => $_GET['t']); } else { $params = array('blog_id' => $GLOBALS['blog_id'], 'offset' => $_GET['start'], 'number' => $_GET['limit']); } $wp_users = get_users($params); //echo json_encode($wp_users); $all_levels = Emember_Level_Collection::get_instance()->get_levels(); if (count($wp_users) > 0) { ?> <tbody> <?php $count = 0; foreach ($wp_users as $wp_user) { ?> <tr valign="top" <?php echo $count % 2 ? "class='alternate'" : ""; ?> > <td class="check-column" scope="row"><input type="checkbox" value="<?php echo $wp_user->ID; ?> " name="selected_wp_users[<?php echo $count; ?> ][ID]"></td> <td><?php echo $wp_user->user_login; ?> </td> <td><?php echo $wp_user->user_email; ?> </td> <td><select name="selected_wp_users[<?php echo $count; ?> ][membership_level]"> <?php foreach ($all_levels as $l) { ?> <option value="<?php echo $l->get('id'); ?> "><?php echo $l->get('alias'); ?> </option> <?php } ?> </select> </td> <td> <input type="date" value="<?php echo date('Y-m-d'); ?> " name="selected_wp_users[<?php echo $count; ?> ][subscription_starts]" /> </td> <td><select name="selected_wp_users[<?php echo $count; ?> ][account_state]"> <option value="active">Active</option> <option value="inactive">Inactive</option> <option value="blocked">Blocked</option> </select> </td> <td><input type="checkbox" value="1" name="selected_wp_users[<?php echo $count; ?> ][preserve_wp_role]" checked="checked"></td> </tr> <?php $count++; } } else { ?> <tr valign="top"> <td colspan="7"><?php echo EMEMBER_DATA_NOT_FOUND; ?> </td> </tr> <?php } ?> </tbody> <script type="text/javascript"> /* <![CDATA[ */ jQuery('#wp_member_list').find('input[type^="date"]').each(function(e) { jQuery(this).dateinput({'format': 'yyyy-mm-dd', selectors: true, yearRange: [-100, 100]}); }); /* ]]> */ </script> <?php exit(0); }
public static function get_instance() { self::$_this = empty(self::$_this) ? new Emember_Level_Collection() : self::$_this; return self::$_this; }
function wp_emember_update_membership_level_reply($post_id) { if (!wp_is_post_revision($post_id)) { $post = get_post($post_id); if ($post->post_type == "reply") { $parent = $post->post_parent; global $wpdb; $auth = Emember_Auth::getInstance(); $tbl = WP_EMEMBER_MEMBERSHIP_LEVEL_TABLE; if ($auth->protected->is_protected_custom_post($parent)) { if (!$auth->protected->is_protected_custom_post($post_id)) { $auth->protected->add_custom_posts(array($post_id))->save(); } $levels = Emember_Level_Collection::get_instance()->get_levels(); foreach ($levels as $level) { if ($level->is_permitted_custom_post($post_id)) { continue; } if ($level->is_permitted_custom_post($parent)) { $level->add_custom_posts(array($post_id))->save(); } } } else { if ($auth->protected->is_protected_page($parent)) { if (!$auth->protected->is_protected_page($post_id)) { $auth->protected->add_pages(array($post_id))->save(); } $levels = Emember_Level_Collection::get_instance()->get_levels(); foreach ($levels as $level) { if ($level->is_permitted_page($post_id)) { continue; } if ($level->is_permitted_page($parent)) { $level->add_pages(array($post_id))->save(); } } } } } } }