コード例 #1
0
function alo_em_ajax_recipient_list_ajaxloop()
{
    global $user_ID;
    check_ajax_referer("alo-easymail");
    $response = array();
    $response['error'] = '';
    if (isset($_POST['newsletter'])) {
        $newsletter = (int) $_POST['newsletter'];
        if (get_post_type($newsletter) != "newsletter") {
            $response['error'] = esc_js(__('The required newsletter does not exist', "alo-easymail"));
        }
        if (!get_post($newsletter)) {
            $response['error'] = esc_js(__('The required newsletter does not exist', "alo-easymail"));
        }
        if (!alo_em_user_can_edit_newsletter($newsletter)) {
            $response['error'] = esc_js(__('Cheatin’ uh?'));
        }
        $post_status = get_post_status($newsletter);
        if ($post_status == "draft" || $post_status == "pending") {
            $response['error'] = esc_js(__('A newsletter cannot be sent if its status is draft or pending review'));
        }
    } else {
        $response['error'] = esc_js(__('Cheatin’ uh?'));
    }
    if ($response['error'] == '') {
        // If missing prepare cache
        if (!alo_em_get_cache_recipients($newsletter)) {
            alo_em_create_cache_recipients($newsletter);
        } else {
            // Now add a part of recipients into the db table
            $sendnow = isset($_POST['sendnow']) && $_POST['sendnow'] == "yes" ? true : false;
            $limit = apply_filters('alo_easymail_ajaxloop_recipient_limit', 15);
            // Hook
            alo_em_add_recipients_from_cache_to_db($newsletter, $limit, $sendnow);
        }
        $response['n_done'] = alo_em_count_newsletter_recipients($newsletter);
        $response['n_tot'] = alo_em_count_recipients_from_meta($newsletter);
        $response['perc'] = $response['n_done'] > 0 && $response['n_tot'] > 0 ? round($response['n_done'] * 100 / $response['n_tot']) : 0;
    }
    header("Content-Type: application/json");
    die(json_encode($response));
}