Exemplo n.º 1
0
/**
 * Modify a purchase log's status.
 *
 * @since 3.8.9
 * @access private
 *
 * @uses wpsc_purchlog_edit_status()                    Edits purchase log status
 * @uses WP_Error                                       WordPress Error class
 * @uses WPSC_Purchase_Log_List_Table
 * @uses WPSC_Purchase_Log_List_Table::prepare_items()
 * @uses WPSC_Purchase_Log_List_Table::views()
 * @uses WPSC_Purchase_Log_List_Table::display_tablenav()   @todo docs
 *
 * @return array|WP_Error   $return     Response args if successful, WP_Error if otherwise.
 */
function _wpsc_ajax_change_purchase_log_status()
{
    $result = wpsc_purchlog_edit_status($_POST['id'], $_POST['new_status']);
    if (!$result) {
        return new WP_Error('wpsc_cannot_edit_purchase_log_status', __("Couldn't modify purchase log's status. Please try again.", 'wpsc'));
    }
    $args = array();
    $args['screen'] = 'dashboard_page_wpsc-sales-logs';
    require_once WPSC_FILE_PATH . '/wpsc-admin/includes/purchase-log-list-table-class.php';
    $purchaselog_table = new WPSC_Purchase_Log_List_Table($args);
    $purchaselog_table->prepare_items();
    ob_start();
    $purchaselog_table->views();
    $views = ob_get_clean();
    ob_start();
    $purchaselog_table->display_tablenav('top');
    $tablenav_top = ob_get_clean();
    ob_start();
    $purchaselog_table->display_tablenav('bottom');
    $tablenav_bottom = ob_get_clean();
    $return = array('id' => $_POST['id'], 'new_status' => $_POST['new_status'], 'views' => $views, 'tablenav_top' => $tablenav_top, 'tablenav_bottom' => $tablenav_bottom);
    return $return;
}
Exemplo n.º 2
0
function wpsc_purchlog_edit_status($purchlog_id = '', $purchlog_status = '')
{
    global $wpdb;
    if (empty($purchlog_id) && empty($purchlog_status)) {
        $purchlog_id = absint($_POST['id']);
        $purchlog_status = absint($_POST['new_status']);
    }
    $log_data = $wpdb->get_row("SELECT * FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `id` = '{$purchlog_id}' LIMIT 1", ARRAY_A);
    $is_transaction = wpsc_check_purchase_processed($log_data['processed']);
    if ($is_transaction && function_exists('wpsc_member_activate_subscriptions')) {
        wpsc_member_activate_subscriptions($_POST['id']);
    }
    //in the future when everyone is using the 2.0 merchant api, we should use the merchant class to update the staus,
    // then you can get rid of this hook and have each person overwrite the method that updates the status.
    do_action('wpsc_edit_order_status', array('purchlog_id' => $purchlog_id, 'purchlog_data' => $log_data, 'new_status' => $purchlog_status));
    $wpdb->update(WPSC_TABLE_PURCHASE_LOGS, array('processed' => $purchlog_status), array('id' => $purchlog_id), '%d', '%d');
    wpsc_clear_stock_claims();
    wpsc_decrement_claimed_stock($purchlog_id);
    if ($purchlog_status == 3) {
        transaction_results($log_data['sessionid'], false, null);
    }
    if (defined('DOING_AJAX') && DOING_AJAX) {
        set_current_screen('dashboard_page_wpsc-sales-logs');
        require_once WPSC_FILE_PATH . '/wpsc-admin/includes/purchase-log-list-table-class.php';
        $purchaselog_table = new WPSC_Purchase_Log_List_Table();
        $purchaselog_table->views();
        exit;
    }
}