Changeset 2970 for branches/plugin/bbp-includes/bbp-topic-functions.php
- Timestamp:
- 04/01/2011 01:33:09 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/plugin/bbp-includes/bbp-topic-functions.php
r2955 r2970 9 9 10 10 /** Post Form Handlers ********************************************************/ 11 12 /** 13 * Insert a topic. 14 * 15 * If $topicarr has 'ID' set to a value, then topic will be updated. 16 * 17 * You can set the topic date manually, by setting the values for 'post_date' 18 * and 'post_date_gmt' keys. You can open or close replies by setting the value 19 * for 'post_status' key. 20 * 21 * The defaults for the parameter $postarr are: 22 * 'post_status' - Default is 'draft'. 23 * 'post_type' - Default is 'post'. 24 * 'post_author' - Default is current user ID ($user_ID). The ID of the user who added the post. 25 * 'ping_status' - Default is the value in 'default_ping_status' option. 26 * Whether the attachment can accept pings. 27 * 'post_parent' - Default is 0. Set this for the post it belongs to, if any. 28 * 'menu_order' - Default is 0. The order it is displayed. 29 * 'to_ping' - Whether to ping. 30 * 'pinged' - Default is empty string. 31 * 'post_password' - Default is empty string. The password to access the attachment. 32 * 'guid' - Global Unique ID for referencing the attachment. 33 * 'post_content_filtered' - Post content filtered. 34 * 'post_excerpt' - Post excerpt. 35 * 36 * @since 1.0.0 37 * 38 * @uses $wpdb 39 * @uses $wp_rewrite 40 * @uses $user_ID 41 * 42 * @uses do_action() Calls 'pre_post_update' on post ID if this is an update. 43 * @uses do_action() Calls 'edit_post' action on post ID and post data if this is an update. 44 * @uses do_action() Calls 'save_post' and 'wp_insert_post' on post id and post data just before returning. 45 * @uses apply_filters() Calls 'wp_insert_post_data' passing $data, $postarr prior to database update or insert. 46 * @uses wp_transition_post_status() 47 * 48 * @param array $postarr Elements that make up post to insert. 49 * @param bool $wp_error Optional. Allow return of WP_Error on failure. 50 * @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success. 51 */ 52 function bbp_insert_topic( $post_args = '', $meta_args = '' ) { 53 global $bbp, $wpdb, $wp_rewrite; 54 55 // Default post fields and post meta 56 $post_defaults = array( 57 58 // Pass a topic_id if you want to update rather than insert 59 'topic_id' => 0, 60 61 // Essential post fields 62 'post_title' => '', 63 'post_content' => '', 64 'post_content_filtered' => '', 65 'post_excerpt' => '', 66 'post_author' => $user_ID, 67 'post_status' => 'publish', 68 'post_type' => bbp_get_topic_post_type(), 69 'post_parent' => 0, 70 'post_password' => '', 71 'menu_order' => 0, 72 73 // Ping fields - (Not yet used by bbPress core) 74 'ping_status' => get_option( 'default_ping_status' ), 75 'to_ping' => '', 76 'pinged' => '', 77 78 // Additional post fields 79 'guid' => '', 80 'import_id' => 0, 81 82 ); 83 84 // Parse 85 $p = wp_parse_args( $post_args, $post_defaults ); 86 extract( $p, EXTR_SKIP ); 87 88 // Additional parameters for bbPress topics 89 $meta_defaults = array( 90 91 // 'forum_id' typically be synced with post_parent above 92 'forum_id' => 0, 93 94 // Anonymous user 95 'anonymous_name' => '', 96 'anonymous_email' => '', 97 'anonymous_ip' => '', 98 'anonymous_website' => '', 99 100 // Reply and voice counts 101 'anonymous_reply_count' => 0, 102 'reply_count' => 0, 103 'hidden_reply_count' => 0, 104 'voice_count' => 0, 105 106 // Last active 107 'last_active_id' => 0, 108 'last_active_time' => '', 109 'last_reply_id' => 0, 110 111 // Additional post meta 112 'revision_log' => false, 113 'status' => '', 114 'spam_meta_status' => '', 115 'pre_trashed_replies' => '', 116 117 ); 118 119 // Parse 120 $m = wp_parse_args( $meta_args, $meta_defaults ); 121 extract( $m, EXTR_SKIP ); 122 123 // Handle the post insertion 124 $topic = wp_insert_post( $r ); 125 126 // 127 foreach( $m as $meta_key => $meta_value ) { 128 update_post_meta( $topic->ID, '_bbp_' . $meta_key, $meta_value ); 129 } 130 bbp_update_topic_last_active_id( $topic->ID, $last_active_id ); 131 132 $post = wp_insert_post( $r ); 133 134 // Updating an existing post 135 if ( !empty( $ID ) ) { 136 $update = true; 137 $previous_status = get_post_field( 'post_status', $ID ); 138 $post_ID = (int) $ID; 139 $guid = get_post_field( 'guid', $post_ID ); 140 $post_before = get_post( $post_ID ); 141 142 // Not updating 143 } else { 144 $update = false; 145 $previous_status = 'new'; 146 } 147 148 } 11 149 12 150 /** … … 1745 1883 do_action( 'bbp_close_topic', $topic_id ); 1746 1884 1747 add_post_meta( $topic_id, '_bbp_ topic_status', $topic['post_status'] );1885 add_post_meta( $topic_id, '_bbp_status', $topic['post_status'] ); 1748 1886 1749 1887 $topic['post_status'] = $bbp->closed_status_id; … … 1781 1919 do_action( 'bbp_open_topic', $topic_id ); 1782 1920 1783 $topic_status = get_post_meta( $topic_id, '_bbp_ topic_status', true );1921 $topic_status = get_post_meta( $topic_id, '_bbp_status', true ); 1784 1922 $topic['post_status'] = $topic_status; 1785 1923 1786 delete_post_meta( $topic_id, '_bbp_ topic_status' );1924 delete_post_meta( $topic_id, '_bbp_status' ); 1787 1925 1788 1926 $topic_id = wp_insert_post( $topic );
Note: See TracChangeset
for help on using the changeset viewer.