Make WordPress Core

Ticket #23816: 23816.3.diff

File 23816.3.diff, 4.0 KB (added by rmccue, 10 years ago)

Trigger errors on development by default

  • wp-includes/class.wp-dependencies.php

    diff --git a/wp-includes/class.wp-dependencies.php b/wp-includes/class.wp-dependencies.php
    index c1bac65..6a91e53 100644
    a b class WP_Dependencies { 
    174174                                continue;
    175175
    176176                        $keep_going = true;
    177                         if ( !isset($this->registered[$handle]) )
     177                        if ( !isset($this->registered[$handle]) ) {
    178178                                $keep_going = false; // Item doesn't exist.
    179                         elseif ( $this->registered[$handle]->deps && array_diff($this->registered[$handle]->deps, array_keys($this->registered)) )
     179                        }
     180                        elseif ( $this->registered[$handle]->deps && $missing = array_diff($this->registered[$handle]->deps, array_keys($this->registered)) ) {
    180181                                $keep_going = false; // Item requires dependencies that don't exist.
    181                         elseif ( $this->registered[$handle]->deps && !$this->all_deps( $this->registered[$handle]->deps, true, $group ) )
     182                                $this->missing_dependencies( $handle, $missing );
     183                        }
     184                        elseif ( $this->registered[$handle]->deps && !$this->all_deps( $this->registered[$handle]->deps, true, $group ) ) {
    182185                                $keep_going = false; // Item requires dependencies that don't exist.
     186                        }
    183187
    184188                        if ( ! $keep_going ) { // Either item or its dependencies don't exist.
    185189                                if ( $recursion )
    class WP_Dependencies { 
    201205        }
    202206
    203207        /**
     208         * Report missing dependencies for an item.
     209         *
     210         * @param string $handle Item handle.
     211         * @param array $missing Handles of missing dependencies (array of strings).
     212         */
     213        public function missing_dependencies( $handle, $missing ) {
     214                // No-op by default, override this in subclasses.
     215        }
     216
     217        /**
    204218         * Register an item.
    205219         *
    206220         * Registers the item if no item of that name already exists.
  • wp-includes/class.wp-scripts.php

    diff --git a/wp-includes/class.wp-scripts.php b/wp-includes/class.wp-scripts.php
    index 89a9ec9..43eb53e 100644
    a b class WP_Scripts extends WP_Dependencies { 
    4747        }
    4848
    4949        /**
     50         * Report missing dependencies for an item.
     51         *
     52         * @param string $handle Item handle.
     53         * @param array $missing Handles of missing dependencies (array of strings).
     54         */
     55        public function missing_dependencies( $handle, $missing ) {
     56                /**
     57                 * Allow reporting of missing dependencies
     58                 *
     59                 * @param string $handle Script/style handle
     60                 * @param array $missing List of missing dependencies
     61                 * @param array $registered Dependencies registered
     62                 */
     63                do_action( 'wp_scripts_missing_dependency', $handle, $missing, $this->registered[$handle] );
     64
     65                if ( WP_DEBUG && apply_filters( 'scripts_missing_dependency_trigger_error', true ) ) {
     66                        trigger_error( sprintf( __('Could not solve dependencies for script %1$s: missing %2$s'), $handle, implode( ', ', $missing ) ) );
     67                }
     68        }
     69
     70        /**
    5071         * Prints scripts
    5172         *
    5273         * Prints the scripts passed to it or the print queue. Also prints all necessary dependencies.
  • wp-includes/class.wp-styles.php

    diff --git a/wp-includes/class.wp-styles.php b/wp-includes/class.wp-styles.php
    index 1a017ac..f49491a 100644
    a b class WP_Styles extends WP_Dependencies { 
    3939                do_action_ref_array( 'wp_default_styles', array(&$this) );
    4040        }
    4141
     42        /**
     43         * Report missing dependencies for an item.
     44         *
     45         * @param string $handle Item handle.
     46         * @param array $missing Handles of missing dependencies (array of strings).
     47         */
     48        public function missing_dependencies( $handle, $missing ) {
     49                /**
     50                 * Allow reporting of missing dependencies
     51                 *
     52                 * @param string $handle Script/style handle
     53                 * @param array $missing List of missing dependencies
     54                 * @param array $registered Dependencies registered
     55                 */
     56                do_action( 'wp_styles_missing_dependency', $handle, $missing, $this->registered[$handle] );
     57
     58                if ( WP_DEBUG && apply_filters( 'styles_missing_dependency_trigger_error', true ) ) {
     59                        trigger_error( sprintf( __('Could not solve dependencies for style %1$s: missing %2$s'), $handle, implode( ', ', $missing ) ) );
     60                }
     61        }
     62
    4263        public function do_item( $handle ) {
    4364                if ( !parent::do_item($handle) )
    4465                        return false;