[ Index ] |
WordPress Cross Reference |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Send XML response back to AJAX request. 4 * 5 * @package WordPress 6 * @since 2.1.0 7 */ 8 class WP_Ajax_Response { 9 /** 10 * Store XML responses to send. 11 * 12 * @since 2.1.0 13 * @var array 14 * @access private 15 */ 16 var $responses = array(); 17 18 /** 19 * Constructor - Passes args to {@link WP_Ajax_Response::add()}. 20 * 21 * @since 2.1.0 22 * @see WP_Ajax_Response::add() 23 * 24 * @param string|array $args Optional. Will be passed to add() method. 25 * @return WP_Ajax_Response 26 */ 27 function __construct( $args = '' ) { 28 if ( !empty($args) ) 29 $this->add($args); 30 } 31 32 /** 33 * Append to XML response based on given arguments. 34 * 35 * The arguments that can be passed in the $args parameter are below. It is 36 * also possible to pass a WP_Error object in either the 'id' or 'data' 37 * argument. The parameter isn't actually optional, content should be given 38 * in order to send the correct response. 39 * 40 * 'what' argument is a string that is the XMLRPC response type. 41 * 'action' argument is a boolean or string that acts like a nonce. 42 * 'id' argument can be WP_Error or an integer. 43 * 'old_id' argument is false by default or an integer of the previous ID. 44 * 'position' argument is an integer or a string with -1 = top, 1 = bottom, 45 * html ID = after, -html ID = before. 46 * 'data' argument is a string with the content or message. 47 * 'supplemental' argument is an array of strings that will be children of 48 * the supplemental element. 49 * 50 * @since 2.1.0 51 * 52 * @param string|array $args Override defaults. 53 * @return string XML response. 54 */ 55 function add( $args = '' ) { 56 $defaults = array( 57 'what' => 'object', 'action' => false, 58 'id' => '0', 'old_id' => false, 59 'position' => 1, 60 'data' => '', 'supplemental' => array() 61 ); 62 63 $r = wp_parse_args( $args, $defaults ); 64 extract( $r, EXTR_SKIP ); 65 $position = preg_replace( '/[^a-z0-9:_-]/i', '', $position ); 66 67 if ( is_wp_error($id) ) { 68 $data = $id; 69 $id = 0; 70 } 71 72 $response = ''; 73 if ( is_wp_error($data) ) { 74 foreach ( (array) $data->get_error_codes() as $code ) { 75 $response .= "<wp_error code='$code'><![CDATA[" . $data->get_error_message($code) . "]]></wp_error>"; 76 if ( !$error_data = $data->get_error_data($code) ) 77 continue; 78 $class = ''; 79 if ( is_object($error_data) ) { 80 $class = ' class="' . get_class($error_data) . '"'; 81 $error_data = get_object_vars($error_data); 82 } 83 84 $response .= "<wp_error_data code='$code'$class>"; 85 86 if ( is_scalar($error_data) ) { 87 $response .= "<![CDATA[$error_data]]>"; 88 } elseif ( is_array($error_data) ) { 89 foreach ( $error_data as $k => $v ) 90 $response .= "<$k><![CDATA[$v]]></$k>"; 91 } 92 93 $response .= "</wp_error_data>"; 94 } 95 } else { 96 $response = "<response_data><![CDATA[$data]]></response_data>"; 97 } 98 99 $s = ''; 100 if ( is_array($supplemental) ) { 101 foreach ( $supplemental as $k => $v ) 102 $s .= "<$k><![CDATA[$v]]></$k>"; 103 $s = "<supplemental>$s</supplemental>"; 104 } 105 106 if ( false === $action ) 107 $action = $_POST['action']; 108 109 $x = ''; 110 $x .= "<response action='{$action}_$id'>"; // The action attribute in the xml output is formatted like a nonce action 111 $x .= "<$what id='$id' " . ( false === $old_id ? '' : "old_id='$old_id' " ) . "position='$position'>"; 112 $x .= $response; 113 $x .= $s; 114 $x .= "</$what>"; 115 $x .= "</response>"; 116 117 $this->responses[] = $x; 118 return $x; 119 } 120 121 /** 122 * Display XML formatted responses. 123 * 124 * Sets the content type header to text/xml. 125 * 126 * @since 2.1.0 127 */ 128 function send() { 129 header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ) ); 130 echo "<?xml version='1.0' encoding='" . get_option( 'blog_charset' ) . "' standalone='yes'?><wp_ajax>"; 131 foreach ( (array) $this->responses as $response ) 132 echo $response; 133 echo '</wp_ajax>'; 134 if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) 135 wp_die(); 136 else 137 die(); 138 } 139 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 25 01:41:18 2014 | WordPress honlapkészítés: online1.hu |