Make WordPress Core

Changeset 10725


Ignore:
Timestamp:
03/06/2009 12:50:19 AM (18 years ago)
Author:
ryan
Message:

Add some default field types. see #7171

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/post.php

    r10724 r10725  
    15001500
    15011501        // expected_slashed (everything!)
    1502         $fields = array( 'post_author' => '%d', 'post_date' => '%s', 'post_date_gmt' => '%s', 'post_content' => '%s', 'post_content_filtered' => '%s', 'post_title' => '%s',
    1503                 'post_excerpt' => '%s', 'post_status' => '%s', 'post_type' => '%s', 'comment_status' => '%s', 'ping_status' => '%s', 'post_password' => '%s', 'post_name' => '%s',
    1504                 'to_ping' => '%s', 'pinged' => '%s', 'post_modified' => '%s', 'post_modified_gmt' => '%s', 'post_parent' => '%d', 'menu_order' => '%d', 'guid' => '%s' );
    1505         $data = compact( array_keys( $fields) );
    1506         $data_formats = array_values( $fields );
     1502        $data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'guid' ) );
    15071503        $data = apply_filters('wp_insert_post_data', $data, $postarr);
    15081504        $data = stripslashes_deep( $data );
    1509         error_log(var_export($data, true));
    15101505        $where = array( 'ID' => $post_ID );
    1511         $where_formats = array('%d');
    1512 
    1513         if ( $update ) {
     1506
     1507        if ($update) {
    15141508                do_action( 'pre_post_update', $post_ID );
    1515                 if ( false === $wpdb->update( $wpdb->posts, $data, $where, $data_formats, $where_formats ) ) {
     1509                if ( false === $wpdb->update( $wpdb->posts, $data, $where ) ) {
    15161510                        if ( $wp_error )
    15171511                                return new WP_Error('db_update_error', __('Could not update post in the database'), $wpdb->last_error);
    … …  
    15291523                        }
    15301524                }
    1531                 if ( false === $wpdb->insert( $wpdb->posts, $data, $data_formats ) ) {
     1525                if ( false === $wpdb->insert( $wpdb->posts, $data ) ) {
    15321526                        if ( $wp_error )
    15331527                                return new WP_Error('db_insert_error', __('Could not insert post into the database'), $wpdb->last_error);
  • trunk/wp-includes/wp-db.php

    r10724 r10725  
    703703         * @return mixed Results of $this->query()
    704704         */
    705         function insert($table, $data, $format = '%s') {
    706                 $format = (array) $format;
     705        function insert($table, $data, $format = null) {
     706                global $db_field_types;
     707
     708                $formats = $format = (array) $format;
    707709                $fields = array_keys($data);
    708710                $formatted_fields = array();
    709                 foreach ( $data as $field ) {
    710                         $form = ( $form = array_shift($format) ) ? $form : $formatted_fields[0];
     711                foreach ( $fields as $field ) {
     712                        if ( !empty($format) )
     713                                $form = ( $form = array_shift($formats) ) ? $form : $format[0];
     714                        elseif ( isset($db_field_types[$field]) )
     715                                $form = $db_field_types[$field];
     716                        else
     717                                $form = '%s';
    711718                        $formatted_fields[] = $form;
    712719                }
    713720                $sql = "INSERT INTO $table (`" . implode( '`,`', $fields ) . "`) VALUES ('" . implode( "','", $formatted_fields ) . "')";
     721                error_log($sql);
    714722                return $this->query( $this->prepare( $sql, $data) );
    715723        }
    … …  
    727735         * @return mixed Results of $this->query()
    728736         */
    729         function update($table, $data, $where, $format = '%s', $where_format = '%s') {
     737        function update($table, $data, $where, $format = null, $where_format = null) {
     738                global $db_field_types;
     739
    730740                if ( !is_array( $where ) )
    731741                        return false;
    … …  
    733743                $formats = $format = (array) $format;
    734744                $bits = $wheres = array();
    735                 foreach ( (array) array_keys($data) as $k ) {
    736                         $form = ( $form = array_shift($formats) ) ? $form : $format[0];
    737                         $bits[] = "`$k` = {$form}";
     745                foreach ( (array) array_keys($data) as $field ) {
     746                        if ( !empty($format) )
     747                                $form = ( $form = array_shift($formats) ) ? $form : $format[0];
     748                        elseif ( isset($db_field_types[$field]) )
     749                                $form = $db_field_types[$field];
     750                        else
     751                                $form = '%s';
     752                        $bits[] = "`$field` = {$form}";
    738753                }
    739754
    740755                $where_formats = $where_format = (array) $where_format;
    741                 foreach ( $where as $c => $v ) {
    742                         $form = ( $form = array_shift($where_formats) ) ? $form : $where_format[0];
    743                         $wheres[] = "$c = {$form}";
     756                foreach ( (array) array_keys($where) as $field ) {
     757                        if ( !empty($where_format) )
     758                                $form = ( $form = array_shift($where_formats) ) ? $form : $where_format[0];
     759                        elseif ( isset($db_field_types[$field]) )
     760                                $form = $db_field_types[$field];
     761                        else
     762                                $form = '%s';
     763                        $wheres[] = "$field = {$form}";
    744764                }
    745765
    746766                $sql = "UPDATE $table SET " . implode( ', ', $bits ) . ' WHERE ' . implode( ' AND ', $wheres );
     767                error_log($sql);
    747768                return $this->query( $this->prepare( $sql, array_merge(array_values($data), array_values($where))) );
    748769        }
  • trunk/wp-settings.php

    r10624 r10725  
    247247require (ABSPATH . WPINC . '/functions.php');
    248248require (ABSPATH . WPINC . '/classes.php');
     249
     250$db_field_types = array( 'post_author' => '%d', 'post_date' => '%s', 'post_date_gmt' => '%s', 'post_content' => '%s', 'post_content_filtered' => '%s', 'post_title' => '%s',
     251                'post_excerpt' => '%s', 'post_status' => '%s', 'post_type' => '%s', 'comment_status' => '%s', 'ping_status' => '%s', 'post_password' => '%s', 'post_name' => '%s',
     252                'to_ping' => '%s', 'pinged' => '%s', 'post_modified' => '%s', 'post_modified_gmt' => '%s', 'post_parent' => '%d', 'menu_order' => '%d', 'guid' => '%s', 'term_id' => '%d',
     253                'name' => '%s', 'slug' => '%s', 'term_group' => '%d', 'term_taxonomy_id' => '%d', 'description' => '%s', 'taxonomy' => '%s', 'parent' => '%d', 'count' => '%d',
     254                'object_id' => '%d', 'term_order' => '%d');
    249255
    250256require_wp_db();
Note: See TracChangeset for help on using the changeset viewer.