Changeset 4543 for trunk/templates/default/bbpress-functions.php
- Timestamp:
- 12/05/2012 09:02:01 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/templates/default/bbpress-functions.php
r4513 r4543 85 85 /** Scripts ***********************************************************/ 86 86 87 add_action( 'bbp_enqueue_scripts', array( $this, 'enqueue_styles' ) ); // Enqueue theme CSS 88 add_action( 'bbp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); // Enqueue theme JS 89 add_filter( 'bbp_enqueue_scripts', array( $this, 'localize_topic_script' ) ); // Enqueue theme script localization 90 add_action( 'bbp_head', array( $this, 'head_scripts' ) ); // Output some extra JS in the <head> 91 add_action( 'wp_ajax_dim-favorite', array( $this, 'ajax_favorite' ) ); // Handles the ajax favorite/unfavorite 92 add_action( 'wp_ajax_dim-subscription', array( $this, 'ajax_subscription' ) ); // Handles the ajax subscribe/unsubscribe 87 add_action( 'bbp_enqueue_scripts', array( $this, 'enqueue_styles' ) ); // Enqueue theme CSS 88 add_action( 'bbp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); // Enqueue theme JS 89 add_filter( 'bbp_enqueue_scripts', array( $this, 'localize_topic_script' ) ); // Enqueue theme script localization 90 add_action( 'bbp_head', array( $this, 'head_scripts' ) ); // Output some extra JS in the <head> 91 add_action( 'wp_ajax_dim-favorite', array( $this, 'ajax_favorite' ) ); // Handles the ajax favorite/unfavorite 92 add_action( 'wp_ajax_dim-subscription', array( $this, 'ajax_subscription' ) ); // Handles the ajax subscribe/unsubscribe 93 add_action( 'wp_ajax_nopriv_dim-favorite', array( $this, 'ajax_favorite' ) ); // Handles the ajax favorite/unfavorite 94 add_action( 'wp_ajax_nopriv_dim-subscription', array( $this, 'ajax_subscription' ) ); // Handles the ajax subscribe/unsubscribe 93 95 94 96 /** Template Wrappers *************************************************/ … … 175 177 public function enqueue_scripts() { 176 178 177 if ( bbp_is_single_topic() ) 178 wp_enqueue_script( 'bbpress-topic', $this->url . 'js/topic.js', array( 'wp-lists' ), $this->version, true ); 179 180 elseif ( bbp_is_single_user_edit() ) 179 // Topic favorite/subscribe 180 if ( bbp_is_single_topic() ) { 181 wp_enqueue_script( 'bbpress-topic', $this->url . 'js/topic.js', array( 'jquery' ), $this->version, true ); 182 } 183 184 // User Profile edit 185 if ( bbp_is_single_user_edit() ) { 181 186 wp_enqueue_script( 'user-profile' ); 187 } 182 188 } 183 189 … … 203 209 } 204 210 <?php endif; ?> 205 211 206 212 <?php if ( bbp_use_wp_editor() ) : ?> 207 213 jQuery(document).ready( function() { … … 257 263 return; 258 264 259 // Bail if user is not logged in 260 if ( !is_user_logged_in() ) 261 return; 262 263 $user_id = bbp_get_current_user_id(); 264 265 $localizations = array( 266 'currentUserId' => $user_id, 267 'topicId' => bbp_get_topic_id(), 268 ); 269 270 // Favorites 271 if ( bbp_is_favorites_active() ) { 272 $localizations['favoritesActive'] = 1; 273 $localizations['favoritesLink'] = bbp_get_favorites_permalink( $user_id ); 274 $localizations['isFav'] = (int) bbp_is_user_favorite( $user_id ); 275 $localizations['favLinkYes'] = __( 'favorites', 'bbpress' ); 276 $localizations['favLinkNo'] = __( '?', 'bbpress' ); 277 $localizations['favYes'] = __( 'This topic is one of your %favLinkYes% [%favDel%]', 'bbpress' ); 278 $localizations['favNo'] = __( '%favAdd% (%favLinkNo%)', 'bbpress' ); 279 $localizations['favDel'] = __( '×', 'bbpress' ); 280 $localizations['favAdd'] = __( 'Add this topic to your favorites', 'bbpress' ); 281 } else { 282 $localizations['favoritesActive'] = 0; 283 } 284 285 // Subscriptions 286 if ( bbp_is_subscriptions_active() ) { 287 $localizations['subsActive'] = 1; 288 $localizations['isSubscribed'] = (int) bbp_is_user_subscribed( $user_id ); 289 $localizations['subsSub'] = __( 'Subscribe', 'bbpress' ); 290 $localizations['subsUns'] = __( 'Unsubscribe', 'bbpress' ); 291 $localizations['subsLink'] = bbp_get_topic_permalink(); 292 } else { 293 $localizations['subsActive'] = 0; 294 } 295 296 wp_localize_script( 'bbpress-topic', 'bbpTopicJS', $localizations ); 297 } 298 299 /** 300 * Add or remove a topic from a user's favorites 265 wp_localize_script( 'bbpress-topic', 'bbpTopicJS', array( 266 'ajaxurl' => admin_url( 'admin-ajax.php', ( is_ssl() ? 'https' : 'http' ) ), 267 'generic_ajax_error' => __( 'Something went wrong. Refresh your browser and try again.', 'bbpress' ), 268 'is_user_logged_in' => is_user_logged_in(), 269 'fav_nonce' => wp_create_nonce( 'toggle-favorite_' . get_the_ID() ), 270 'subs_nonce' => wp_create_nonce( 'toggle-subscription_' . get_the_ID() ) 271 ) ); 272 } 273 274 /** 275 * AJAX handler to add or remove a topic from a user's favorites 301 276 * 302 277 * @since bbPress (r3732) … … 305 280 * @uses current_user_can() To check if the current user can edit the user 306 281 * @uses bbp_get_topic() To get the topic 307 * @uses check_ajax_referer() To verify the nonce & check the referer282 * @uses wp_verify_nonce() To verify the nonce & check the referer 308 283 * @uses bbp_is_user_favorite() To check if the topic is user's favorite 309 284 * @uses bbp_remove_user_favorite() To remove the topic from user's favorites 310 285 * @uses bbp_add_user_favorite() To add the topic from user's favorites 286 * @uses bbp_ajax_response() To return JSON 311 287 */ 312 288 public function ajax_favorite() { 289 290 // Bail if favorites are not active 291 if ( ! bbp_is_favorites_active() ) { 292 bbp_ajax_response( false, __( 'Favorites are no longer active.', 'bbpress' ), 300 ); 293 } 294 295 // Bail if user is not logged in 296 if ( !is_user_logged_in() ) { 297 bbp_ajax_response( false, __( 'Please login to make this topic a favorite.', 'bbpress' ), 301 ); 298 } 299 300 // Get user and topic data 313 301 $user_id = bbp_get_current_user_id(); 314 $id = intval( $_POST['id'] ); 315 316 if ( !current_user_can( 'edit_user', $user_id ) ) 317 die( '-1' ); 318 302 $id = !empty( $_POST['id'] ) ? intval( $_POST['id'] ) : 0; 303 304 // Bail if user cannot add favorites for this user 305 if ( !current_user_can( 'edit_user', $user_id ) ) { 306 bbp_ajax_response( false, __( 'You do not have permission to do this.', 'bbpress' ), 302 ); 307 } 308 309 // Get the topic 319 310 $topic = bbp_get_topic( $id ); 320 311 321 if ( empty( $topic ) ) 322 die( '0' ); 323 324 check_ajax_referer( 'toggle-favorite_' . $topic->ID ); 325 326 if ( bbp_is_user_favorite( $user_id, $topic->ID ) ) { 327 if ( bbp_remove_user_favorite( $user_id, $topic->ID ) ) { 328 die( '1' ); 329 } 330 } else { 331 if ( bbp_add_user_favorite( $user_id, $topic->ID ) ) { 332 die( '1' ); 333 } 334 } 335 336 die( '0' ); 337 } 338 339 /** 340 * Subscribe/Unsubscribe a user from a topic 312 // Bail if topic cannot be found 313 if ( empty( $topic ) ) { 314 bbp_ajax_response( false, __( 'The topic could not be found.', 'bbpress' ), 303 ); 315 } 316 317 // Bail if user did not take this action 318 if ( !isset( $_POST['nonce'] ) || !wp_verify_nonce( $_POST['nonce'], 'toggle-favorite_' . $topic->ID ) ) { 319 bbp_ajax_response( false, __( 'Are you sure you meant to do that?', 'bbpress' ), 304 ); 320 } 321 322 // Take action 323 $status = bbp_is_user_favorite( $user_id, $topic->ID ) ? bbp_remove_user_favorite( $user_id, $topic->ID ) : bbp_add_user_favorite( $user_id, $topic->ID ); 324 325 // Bail if action failed 326 if ( empty( $status ) ) { 327 bbp_ajax_response( false, __( 'The request was unsuccessful. Please try again.', 'bbpress' ), 305 ); 328 } 329 330 // Action succeeded 331 bbp_ajax_response( true, bbp_get_user_favorites_link( array(), array(), $user_id, $id, false ), 200 ); 332 } 333 334 /** 335 * AJAX handler to Subscribe/Unsubscribe a user from a topic 341 336 * 342 337 * @since bbPress (r3732) … … 346 341 * @uses current_user_can() To check if the current user can edit the user 347 342 * @uses bbp_get_topic() To get the topic 348 * @uses check_ajax_referer() To verify the nonce & check the referer 349 * @uses bbp_is_user_subscribed() To check if the topic is in user's 350 * subscriptions 351 * @uses bbp_remove_user_subscriptions() To remove the topic from user's 352 * subscriptions 343 * @uses wp_verify_nonce() To verify the nonce 344 * @uses bbp_is_user_subscribed() To check if the topic is in user's subscriptions 345 * @uses bbp_remove_user_subscriptions() To remove the topic from user's subscriptions 353 346 * @uses bbp_add_user_subscriptions() To add the topic from user's subscriptions 347 * @uses bbp_ajax_response() To return JSON 354 348 */ 355 349 public function ajax_subscription() { 356 if ( !bbp_is_subscriptions_active() ) 357 return; 358 350 351 // Bail if subscriptions are not active 352 if ( !bbp_is_subscriptions_active() ) { 353 bbp_ajax_response( false, __( 'Subscriptions are no longer active.', 'bbpress' ), 300 ); 354 } 355 356 // Bail if user is not logged in 357 if ( !is_user_logged_in() ) { 358 bbp_ajax_response( false, __( 'Please login to subscribe to this topic.', 'bbpress' ), 301 ); 359 } 360 361 // Get user and topic data 359 362 $user_id = bbp_get_current_user_id(); 360 363 $id = intval( $_POST['id'] ); 361 364 362 if ( !current_user_can( 'edit_user', $user_id ) ) 363 die( '-1' ); 364 365 // Bail if user cannot add favorites for this user 366 if ( !current_user_can( 'edit_user', $user_id ) ) { 367 bbp_ajax_response( false, __( 'You do not have permission to do this.', 'bbpress' ), 302 ); 368 } 369 370 // Get the topic 365 371 $topic = bbp_get_topic( $id ); 366 372 367 if ( empty( $topic ) ) 368 die( '0' ); 369 370 check_ajax_referer( 'toggle-subscription_' . $topic->ID ); 371 372 if ( bbp_is_user_subscribed( $user_id, $topic->ID ) ) { 373 if ( bbp_remove_user_subscription( $user_id, $topic->ID ) ) { 374 die( '1' ); 375 } 376 } else { 377 if ( bbp_add_user_subscription( $user_id, $topic->ID ) ) { 378 die( '1' ); 379 } 380 } 381 382 die( '0' ); 373 // Bail if topic cannot be found 374 if ( empty( $topic ) ) { 375 bbp_ajax_response( false, __( 'The topic could not be found.', 'bbpress' ), 303 ); 376 } 377 378 // Bail if user did not take this action 379 if ( !isset( $_POST['nonce'] ) || !wp_verify_nonce( $_POST['nonce'], 'toggle-subscription_' . $topic->ID ) ) { 380 bbp_ajax_response( false, __( 'Are you sure you meant to do that?', 'bbpress' ), 304 ); 381 } 382 383 // Take action 384 $status = bbp_is_user_subscribed( $user_id, $topic->ID ) ? bbp_remove_user_subscription( $user_id, $topic->ID ) : bbp_add_user_subscription( $user_id, $topic->ID ); 385 386 // Bail if action failed 387 if ( empty( $status ) ) { 388 bbp_ajax_response( false, __( 'The request was unsuccessful. Please try again.', 'bbpress' ), 305 ); 389 } 390 391 // Put subscription attributes in convenient array 392 $attrs = array( 393 'topic_id' => $topic->ID, 394 'user_id' => $user_id 395 ); 396 397 // Action succeeded 398 bbp_ajax_response( true, bbp_get_user_subscribe_link( $attrs, $user_id, false ), 200 ); 383 399 } 384 400 }
Note: See TracChangeset
for help on using the changeset viewer.