Make WordPress Core


Ignore:
Timestamp:
09/13/2006 09:39:53 PM (20 years ago)
Author:
ryan
Message:

AJAX responsiveness improvements from mdawaffe. fixes #3099

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/classes.php

    r4186 r4187  
    710710}
    711711
     712class WP_Ajax_Response {
     713        var $responses = array();
     714
     715        function WP_Ajax_Response( $args = '' ) {
     716                if ( !empty($args) )
     717                        $this->add($args);
     718        }
     719
     720        // a WP_Error object can be passed in 'id' or 'data'
     721        function add( $args = '' ) {
     722                if ( is_array($args) )
     723                        $r = &$args;
     724                else
     725                        parse_str($args, $r);
     726
     727                $defaults = array('what' => 'object', 'action' => false, 'id' => '0', 'old_id' => false,
     728                                'data' => '', 'supplemental' => array());
     729
     730                $r = array_merge($defaults, $r);
     731                extract($r);
     732
     733                if ( is_wp_error($id) ) {
     734                        $data = $id;
     735                        $id = 0;
     736                }
     737
     738                $response = '';
     739                if ( is_wp_error($data) )
     740                        foreach ( $data->get_error_codes() as $code )
     741                                $response .= "<wp_error code='$code'><![CDATA[" . $data->get_error_message($code) . "]]></wp_error>";
     742                else
     743                        $response = "<response_data><![CDATA[$data]]></response_data>";
     744
     745                $s = '';
     746                if ( (array) $supplemental )
     747                        foreach ( $supplemental as $k => $v )
     748                                $s .= "<$k><![CDATA[$v]]></$k>";
     749
     750                if ( false === $action )
     751                        $action = $_POST['action'];
     752
     753                $x = '';
     754                $x .= "<response action='$action_$id'>"; // The action attribute in the xml output is formatted like a nonce action
     755                $x .=   "<$what id='$id'" . ( false !== $old_id ? "old_id='$old_id'>" : '>' );
     756                $x .=           $response;
     757                $x .=           $s;
     758                $x .=   "</$what>";
     759                $x .= "</response>";
     760
     761                $this->responses[] = $x;
     762                return $x;
     763        }
     764
     765        function send() {
     766                header('Content-type: text/xml');
     767                echo "<?xml version='1.0' standalone='yes'?><wp_ajax>";
     768                foreach ( $this->responses as $response )
     769                        echo $response;
     770                echo '</wp_ajax>';
     771                die();
     772        }
     773}
     774
    712775?>
Note: See TracChangeset for help on using the changeset viewer.