WordPress.org

Make WordPress Core

Ticket #10750: wporg-post-user-plugin-hooks.diff

File wporg-post-user-plugin-hooks.diff, 4.7 KB (added by ryan, 9 years ago)

First pass, from Demitrious Kelly

  • wp-includes/post.php

     
    532532
    533533        wp_cache_delete($post_id, 'post_meta');
    534534
     535        do_action( 'added_post_meta', $wpdb->insert_id, $post_id, $meta_key, $meta_value );
     536
    535537        return true;
    536538}
    537539
     
    573575        if ( !$meta_id )
    574576                return false;
    575577
     578        do_action( 'delete_post_meta', $meta_id, $post_id, $meta_key, $meta_value );
     579
    576580        if ( empty( $meta_value ) )
    577581                $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", $post_id, $meta_key ) );
    578582        else
    579583                $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s AND meta_value = %s", $post_id, $meta_key, $meta_value ) );
    580584
    581585        wp_cache_delete($post_id, 'post_meta');
     586       
     587        do_action( 'deleted_post_meta', $meta_id, $post_id, $meta_key, $meta_value );
    582588
    583589        return true;
    584590}
     
    651657        if ( !$meta_key )
    652658                return false;
    653659
    654         if ( ! $wpdb->get_var( $wpdb->prepare( "SELECT meta_key FROM $wpdb->postmeta WHERE meta_key = %s AND post_id = %d", $meta_key, $post_id ) ) ) {
     660        $meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = %s AND post_id = %d", $meta_key, $post_id ) );
     661        if ( ! $meta_id )
    655662                return add_post_meta($post_id, $meta_key, $meta_value);
    656         }
    657663
    658664        $meta_value = maybe_serialize( stripslashes_deep($meta_value) );
    659665
     
    665671                $where['meta_value'] = $prev_value;
    666672        }
    667673
     674        do_action( 'update_post_meta', $meta_id, $post_id, $meta_key, $meta_value );
     675       
    668676        $wpdb->update( $wpdb->postmeta, $data, $where );
    669677        wp_cache_delete($post_id, 'post_meta');
     678       
     679        do_action( 'updated_post_meta', $meta_id, $post_id, $meta_key, $meta_value );
     680       
    670681        return true;
    671682}
    672683
  • wp-includes/user.php

     
    307307                $meta_value = serialize($meta_value);
    308308        $meta_value = trim( $meta_value );
    309309
     310        $cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
     311
     312        if ( $cur && $cur->umeta_id )
     313                do_action( 'delete_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );
     314
    310315        if ( ! empty($meta_value) )
    311316                $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s AND meta_value = %s", $user_id, $meta_key, $meta_value) );
    312317        else
     
    314319
    315320        wp_cache_delete($user_id, 'users');
    316321
     322        if ( $cur && $cur->umeta_id )
     323                do_action( 'deleted_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );
     324
    317325        return true;
    318326}
    319327
     
    399407        }
    400408
    401409        $cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
     410
     411        if ( $cur )
     412                do_action( 'update_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );
     413
    402414        if ( !$cur )
    403415                $wpdb->insert($wpdb->usermeta, compact('user_id', 'meta_key', 'meta_value') );
    404416        else if ( $cur->meta_value != $meta_value )
     
    408420
    409421        wp_cache_delete($user_id, 'users');
    410422
     423        if ( !$cur )
     424                do_action( 'added_usermeta', $wpdb->insert_id, $user_id, $meta_key, $meta_value );
     425        else
     426                do_action( 'updated_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );
     427
    411428        return true;
    412429}
    413430
  • wp-admin/includes/plugin.php

     
    314314                @include(WP_PLUGIN_DIR . '/' . $plugin);
    315315                $current[] = $plugin;
    316316                sort($current);
     317                do_action( 'activate_plugin', trim( $plugin) );
    317318                update_option('active_plugins', $current);
    318                 do_action('activate_' . $plugin);
     319                do_action( 'activate_' . trim( $plugin ) );
     320                do_action( 'activated_plugin', trim( $plugin) );
    319321                ob_end_clean();
    320322        }
    321323
     
    343345                $plugin = plugin_basename($plugin);
    344346                if( ! is_plugin_active($plugin) )
    345347                        continue;
     348                if ( ! $silent )
     349                        do_action( 'deactivate_plugin', trim( $plugin ) );
    346350                array_splice($current, array_search( $plugin, $current), 1 ); // Fixed Array-fu!
    347                 if ( ! $silent ) //Used by Plugin updater to internally deactivate plugin, however, not to notify plugins of the fact to prevent plugin output.
    348                         do_action('deactivate_' . trim( $plugin ));
     351                //Used by Plugin updater to internally deactivate plugin, however, not to notify plugins of the fact to prevent plugin output.
     352                if ( ! $silent ) {
     353                        do_action( 'deactivate_' . trim( $plugin ) );
     354                        do_action( 'deactivated_plugin', trim( $plugin ) );
     355                }
    349356        }
    350357
    351358        update_option('active_plugins', $current);