Changeset 5093
- Timestamp:
- 09/02/2013 05:09:31 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/includes/admin/converter.php
r4950 r5093 468 468 break; 469 469 470 // STEP 9. Convert reply_to parents. 471 case 9 : 472 if ( $converter->convert_reply_to_parents( $start ) ) { 473 update_option( '_bbp_converter_step', $step + 1 ); 474 update_option( '_bbp_converter_start', 0 ); 475 if ( empty( $start ) ) { 476 $this->converter_output( __( 'No reply_to parents to convert', 'bbpress' ) ); 477 } 478 } else { 479 update_option( '_bbp_converter_start', $max + 1 ); 480 $this->converter_output( sprintf( __( 'Calculating reply_to parents (%1$s - %2$s)', 'bbpress' ), $min, $max ) ); 481 } 482 483 break; 484 470 485 default : 471 486 delete_option( '_bbp_converter_step' ); … … 558 573 */ 559 574 private $map_topicid = array(); 575 576 /** 577 * @var array() Map of from old reply_to ids to new reply_to ids. It is for optimization. 578 */ 579 private $map_reply_to = array(); 560 580 561 581 /** … … 964 984 $this->wpdb->insert( $this->sync_table_name, array( 'value_type' => 'post', 'value_id' => $post_id, 'meta_key' => $key, 'meta_value' => $value ) ); 965 985 } 986 987 // Replies need to save their old reply_to ID for hierarchical replies association 988 if ( ( 'reply' == $to_type ) && ( '_bbp_reply_to' == $key ) ) { 989 add_post_meta( $post_id, '_bbp_old_reply_to', $value ); 990 } 966 991 } 967 992 } … … 977 1002 } 978 1003 1004 /** 1005 * This method conerts old forum heirarchy to new bbPress heirarchy. 1006 */ 979 1007 public function convert_forum_parents( $start ) { 980 1008 … … 994 1022 $parent_id = $this->callback_forumid( $row->meta_value ); 995 1023 $this->wpdb->query( 'UPDATE ' . $this->wpdb->posts . ' SET post_parent = "' . $parent_id . '" WHERE ID = "' . $row->value_id . '" LIMIT 1' ); 1024 $has_update = true; 1025 } 1026 1027 return ! $has_update; 1028 } 1029 1030 /** 1031 * This method conerts old reply_to post id to new bbPress reply_to post id. 1032 */ 1033 public function convert_reply_to_parents( $start ) { 1034 1035 $has_update = false; 1036 1037 if ( !empty( $this->sync_table ) ) { 1038 $query = 'SELECT value_id, meta_value FROM ' . $this->sync_table_name . ' WHERE meta_key = "_bbp_old_reply_to" AND meta_value > 0 LIMIT ' . $start . ', ' . $this->max_rows; 1039 } else { 1040 $query = 'SELECT post_id AS value_id, meta_value FROM ' . $this->wpdb->postmeta . ' WHERE meta_key = "_bbp_old_reply_to" AND meta_value > 0 LIMIT ' . $start . ', ' . $this->max_rows; 1041 } 1042 1043 update_option( '_bbp_converter_query', $query ); 1044 1045 $reply_to_array = $this->wpdb->get_results( $query ); 1046 1047 foreach ( (array) $reply_to_array as $row ) { 1048 $reply_to = $this->callback_reply_to( $row->meta_value ); 1049 $this->wpdb->query( 'UPDATE ' . $this->wpdb->postmeta . ' SET meta_value = "' . $reply_to . '" WHERE meta_key = "_bbp_reply_to" AND post_id = "' . $row->value_id . '" LIMIT 1' ); 996 1050 $has_update = true; 997 1051 } … … 1184 1238 } 1185 1239 return $this->map_topicid[$field]; 1240 } 1241 1242 /** 1243 * A mini cache system to reduce database calls to reply_to post id. 1244 * 1245 * @param string $field 1246 * @return string 1247 */ 1248 private function callback_reply_to( $field ) { 1249 if ( !isset( $this->map_reply_to[$field] ) ) { 1250 if ( !empty( $this->sync_table ) ) { 1251 $row = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT value_id, meta_value FROM ' . $this->sync_table_name . ' WHERE meta_key = "_bbp_reply_to" AND meta_value = "%s" LIMIT 1', $field ) ); 1252 } else { 1253 $row = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT post_id AS value_id FROM ' . $this->wpdb->postmeta . ' WHERE meta_key = "_bbp_reply_to" AND meta_value = "%s" LIMIT 1', $field ) ); 1254 } 1255 1256 if ( !is_null( $row ) ) { 1257 $this->map_reply_to[$field] = $row->value_id; 1258 } else { 1259 $this->map_reply_to[$field] = 0; 1260 } 1261 } 1262 return $this->map_reply_to[$field]; 1186 1263 } 1187 1264
Note: See TracChangeset
for help on using the changeset viewer.