Example #1
0
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
}
Example #3
0
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();
                        }
                    }
                }
            }
        }
    }
}