/** * 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; }
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; } }