Ticket #2432: bp-core-messages.patch
File bp-core-messages.patch, 3.9 KB (added by , 14 years ago) |
---|
-
bp-core.php
1234 1234 * 1235 1235 * Adds a feedback (error/success) message to the WP cookie so it can be displayed after the page reloads. 1236 1236 * 1237 * supported arguments variants: 1238 * bp_core_add_message( $message, $type ) 1239 * bp_core_add_message( array('content' => $message, 'type' => $type) ) 1240 * bp_core_add_message( array( array('content' => $message, 'type' => $type), array('content' => $message, 'type' => $type) ) ) 1241 * 1237 1242 * @package BuddyPress Core 1238 1243 */ 1239 function bp_core_add_message( $message, $type = false) {1244 function bp_core_add_message( $message, $type = 'success' ) { 1240 1245 global $bp; 1246 1247 $messages = array(); 1241 1248 1242 if ( !$type ) 1243 $type = 'success'; 1249 if( ! is_array($message) )/* Case 1: not an array, single message */ 1250 $messages[] = array('content' => $message, 'type' => $type); 1251 elseif( ! is_array($message[key($message)]) )/* Case 2: single array message */ 1252 $messages[] = array('content' => $message[0], 'type' => $message[1] ); 1253 else/* Case 3: presumably, an array containing multiple messages, each as an array */ 1254 $messages = $message; 1255 1256 /* This is to prevent problems with cookies handling serialized strings */ 1257 $messages = base64_encode( serialize($messages) ); 1244 1258 1245 1259 /* Send the values to the cookie for page reload display */ 1246 @setcookie( 'bp-message', $message , time()+60*60*24, COOKIEPATH );1260 @setcookie( 'bp-message', $messages, time()+60*60*24, COOKIEPATH ); 1247 1261 @setcookie( 'bp-message-type', $type, time()+60*60*24, COOKIEPATH ); 1248 1262 1249 1263 /*** 1250 1264 * Send the values to the $bp global so we can still output messages 1251 1265 * without a page reload 1252 1266 */ 1253 $bp->template_message = $message ;1267 $bp->template_message = $messages; 1254 1268 $bp->template_message_type = $type; 1255 1269 } 1256 1270 … … 1270 1284 */ 1271 1285 function bp_core_setup_message() { 1272 1286 global $bp; 1287 1288 if( ! isset($_COOKIE['bp-message']) ) 1289 $_COOKIE['bp-message'] = ""; 1273 1290 1274 if ( empty( $bp->template_message) )1291 if( empty($bp->template_message) ) 1275 1292 $bp->template_message = $_COOKIE['bp-message']; 1276 1293 1277 if ( empty( $bp->template_message_type ) ) 1278 $bp->template_message_type = $_COOKIE['bp-message-type']; 1294 add_action('template_notices', 'bp_core_render_message'); 1279 1295 1280 add_action( 'template_notices', 'bp_core_render_message' ); 1281 1282 @setcookie( 'bp-message', false, time() - 1000, COOKIEPATH ); 1283 @setcookie( 'bp-message-type', false, time() - 1000, COOKIEPATH ); 1296 @setcookie('bp-message', false, time() - 1000, COOKIEPATH); 1297 @setcookie('bp-message-type', false, time() - 1000, COOKIEPATH); 1284 1298 } 1285 add_action( 'bp_init', 'bp_core_setup_message');1299 add_action('bp_init', 'bp_core_setup_message'); 1286 1300 1287 1301 1288 1302 /** … … 1297 1311 function bp_core_render_message() { 1298 1312 global $bp; 1299 1313 1300 if ( $bp->template_message ) { 1301 $type = ( 'success' == $bp->template_message_type ) ? 'updated' : 'error'; 1314 if( $bp->template_message ) 1315 { 1316 do_action('bp_core_pre_render_message'); 1317 1318 /* Check if it's really a base64 encoded string using regex; try to decode it */ 1319 if( preg_match('%^[a-zA-Z0-9/+]*={0,2}$%', $bp->template_message) && $b64 = imap_base64($bp->template_message) ) 1320 $bp->template_message = unserialize($b64); 1321 else 1322 $bp->template_message = array( array('content' => $bp->template_message, 'type' => $bp->template_message_type) ); 1323 1324 echo '<div id="message">'; 1325 1326 foreach( (array) $bp->template_message as $message ) 1327 { 1328 if( ! $message['type'] ) 1329 $message['type'] = 'success'; 1302 1330 ?> 1303 <div id="message" class="<?php echo $type; ?>"> 1304 <p><?php echo stripslashes( attribute_escape( $bp->template_message ) ); ?></p> 1305 </div> 1331 <p class="<?php echo $message['type']; ?>"><?php echo stripslashes( attribute_escape($message['content']) ); ?></p> 1306 1332 <?php 1307 do_action( 'bp_core_render_message' ); 1333 } 1334 1335 echo '</div>'; 1336 1337 do_action('bp_core_render_message'); 1308 1338 } 1309 1339 } 1310 1340