X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/wordpress.git/blobdiff_plain/8ab4a4532479e8db471032b51042ec8c4716d091..refs/tags/wordpress-4.5.3-scripts:/wp-includes/class.wp-scripts.php
diff --git a/wp-includes/class.wp-scripts.php b/wp-includes/class.wp-scripts.php
index b7c7deda..144bfce2 100644
--- a/wp-includes/class.wp-scripts.php
+++ b/wp-includes/class.wp-scripts.php
@@ -1,40 +1,156 @@
init();
add_action( 'init', array( $this, 'init' ), 0 );
}
+ /**
+ * Initialize the class.
+ *
+ * @since 3.4.0
+ * @access public
+ */
public function init() {
/**
* Fires when the WP_Scripts instance is initialized.
@@ -51,6 +167,10 @@ class WP_Scripts extends WP_Dependencies {
*
* Prints the scripts passed to it or the print queue. Also prints all necessary dependencies.
*
+ * @since 2.1.0
+ * @since 2.8.0 Added the `$group` parameter.
+ * @access public
+ *
* @param mixed $handles Optional. Scripts to be printed. (void) prints queue, (string) prints
* that script, (array of strings) prints those scripts. Default false.
* @param int $group Optional. If scripts were queued in groups prints this group number.
@@ -61,12 +181,37 @@ class WP_Scripts extends WP_Dependencies {
return $this->do_items( $handles, $group );
}
- // Deprecated since 3.3, see print_extra_script()
+ /**
+ * Prints extra scripts of a registered script.
+ *
+ * @since 2.1.0
+ * @since 2.8.0 Added the `$echo` parameter.
+ * @deprecated 3.3.0
+ * @access public
+ *
+ * @see print_extra_script()
+ *
+ * @param string $handle The script's registered handle.
+ * @param bool $echo Optional. Whether to echo the extra script instead of just returning it.
+ * Default true.
+ * @return bool|string|void Void if no data exists, extra scripts if `$echo` is true, true otherwise.
+ */
public function print_scripts_l10n( $handle, $echo = true ) {
_deprecated_function( __FUNCTION__, '3.3', 'print_extra_script()' );
return $this->print_extra_script( $handle, $echo );
}
+ /**
+ * Prints extra scripts of a registered script.
+ *
+ * @since 3.3.0
+ * @access public
+ *
+ * @param string $handle The script's registered handle.
+ * @param bool $echo Optional. Whether to echo the extra script instead of just returning it.
+ * Default true.
+ * @return bool|string|void Void if no data exists, extra scripts if `$echo` is true, true otherwise.
+ */
public function print_extra_script( $handle, $echo = true ) {
if ( !$output = $this->get_data( $handle, 'data' ) )
return;
@@ -83,6 +228,19 @@ class WP_Scripts extends WP_Dependencies {
return true;
}
+ /**
+ * Processes a script dependency.
+ *
+ * @since 2.6.0
+ * @since 2.8.0 Added the `$group` parameter.
+ * @access public
+ *
+ * @see WP_Dependencies::do_item()
+ *
+ * @param string $handle The script's registered handle.
+ * @param int|false $group Optional. Group level: (int) level, (false) no groups. Default false.
+ * @return bool True on success, false on failure.
+ */
public function do_item( $handle, $group = false ) {
if ( !parent::do_item($handle) )
return false;
@@ -115,6 +273,17 @@ class WP_Scripts extends WP_Dependencies {
$cond_after = "\n";
}
+ $before_handle = $this->print_inline_script( $handle, 'before', false );
+ $after_handle = $this->print_inline_script( $handle, 'after', false );
+
+ if ( $before_handle ) {
+ $before_handle = sprintf( "\n", $before_handle );
+ }
+
+ if ( $after_handle ) {
+ $after_handle = sprintf( "\n", $after_handle );
+ }
+
if ( $this->do_concat ) {
/**
* Filter the script loader source.
@@ -125,7 +294,14 @@ class WP_Scripts extends WP_Dependencies {
* @param string $handle Script handle.
*/
$srce = apply_filters( 'script_loader_src', $src, $handle );
- if ( $this->in_default_dir( $srce ) && ! $conditional ) {
+
+ if ( $this->in_default_dir( $srce ) && ( $before_handle || $after_handle ) ) {
+ $this->do_concat = false;
+
+ // Have to print the so-far concatenated scripts right away to maintain the right order.
+ _print_scripts();
+ $this->reset();
+ } elseif ( $this->in_default_dir( $srce ) && ! $conditional ) {
$this->print_code .= $this->print_extra_script( $handle, false );
$this->concat .= "$handle,";
$this->concat_version .= "$handle$ver";
@@ -148,6 +324,11 @@ class WP_Scripts extends WP_Dependencies {
echo $cond_after;
}
+ // A single item may alias a set of items, by having dependencies, but no source.
+ if ( ! $obj->src ) {
+ return true;
+ }
+
if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
$src = $this->base_url . $src;
}
@@ -161,9 +342,9 @@ class WP_Scripts extends WP_Dependencies {
if ( ! $src )
return true;
- $tag = "{$cond_before}\n{$cond_after}";
+ $tag = "{$cond_before}{$before_handle}\n{$after_handle}{$cond_after}";
- /**
+ /**
* Filter the HTML script tag of an enqueued script.
*
* @since 4.1.0
@@ -184,9 +365,71 @@ class WP_Scripts extends WP_Dependencies {
}
/**
- * Localizes a script
+ * Adds extra code to a registered script.
+ *
+ * @since 4.5.0
+ * @access public
+ *
+ * @param string $handle Name of the script to add the inline script to. Must be lowercase.
+ * @param string $data String containing the javascript to be added.
+ * @param string $position Optional. Whether to add the inline script before the handle
+ * or after. Default 'after'.
+ * @return bool True on success, false on failure.
+ */
+ public function add_inline_script( $handle, $data, $position = 'after' ) {
+ if ( ! $data ) {
+ return false;
+ }
+
+ if ( 'after' !== $position ) {
+ $position = 'before';
+ }
+
+ $script = (array) $this->get_data( $handle, $position );
+ $script[] = $data;
+
+ return $this->add_data( $handle, $position, $script );
+ }
+
+ /**
+ * Prints inline scripts registered for a specific handle.
*
- * Localizes only if the script has already been added
+ * @since 4.5.0
+ * @access public
+ *
+ * @param string $handle Name of the script to add the inline script to. Must be lowercase.
+ * @param string $position Optional. Whether to add the inline script before the handle
+ * or after. Default 'after'.
+ * @param bool $echo Optional. Whether to echo the script instead of just returning it.
+ * Default true.
+ * @return string|false Script on success, false otherwise.
+ */
+ public function print_inline_script( $handle, $position = 'after', $echo = true ) {
+ $output = $this->get_data( $handle, $position );
+
+ if ( empty( $output ) ) {
+ return false;
+ }
+
+ $output = trim( implode( "\n", $output ), "\n" );
+
+ if ( $echo ) {
+ printf( "\n", $output );
+ }
+
+ return $output;
+ }
+
+ /**
+ * Localizes a script, only if the script has already been added.
+ *
+ * @since 2.1.0
+ * @access public
+ *
+ * @param string $handle
+ * @param string $object_name
+ * @param array $l10n
+ * @return bool
*/
public function localize( $handle, $object_name, $l10n ) {
if ( $handle === 'jquery' )
@@ -217,9 +460,21 @@ class WP_Scripts extends WP_Dependencies {
return $this->add_data( $handle, 'data', $script );
}
+ /**
+ * Sets handle group.
+ *
+ * @since 2.8.0
+ * @access public
+ *
+ * @see WP_Dependencies::set_group()
+ *
+ * @param string $handle Name of the item. Should be unique.
+ * @param bool $recursion Internal flag that calling function was called recursively.
+ * @param int|false $group Optional. Group level: (int) level, (false) no groups. Default false.
+ * @return bool Not already in the group or a lower group
+ */
public function set_group( $handle, $recursion, $group = false ) {
-
- if ( $this->registered[$handle]->args === 1 )
+ if ( isset( $this->registered[$handle]->args ) && $this->registered[$handle]->args === 1 )
$grp = 1;
else
$grp = (int) $this->get_data( $handle, 'group' );
@@ -230,8 +485,21 @@ class WP_Scripts extends WP_Dependencies {
return parent::set_group( $handle, $recursion, $grp );
}
+ /**
+ * Determines script dependencies.
+ *
+ * @since 2.1.0
+ * @access public
+ *
+ * @see WP_Dependencies::all_deps()
+ *
+ * @param mixed $handles Item handle and argument (string) or item handles and arguments (array of strings).
+ * @param bool $recursion Internal flag that function is calling itself.
+ * @param int|false $group Optional. Group level: (int) level, (false) no groups. Default false.
+ * @return bool True on success, false on failure.
+ */
public function all_deps( $handles, $recursion = false, $group = false ) {
- $r = parent::all_deps( $handles, $recursion );
+ $r = parent::all_deps( $handles, $recursion, $group );
if ( ! $recursion ) {
/**
* Filter the list of script dependencies left to print.
@@ -245,16 +513,45 @@ class WP_Scripts extends WP_Dependencies {
return $r;
}
+ /**
+ * Processes items and dependencies for the head group.
+ *
+ * @since 2.8.0
+ * @access public
+ *
+ * @see WP_Dependencies::do_items()
+ *
+ * @return array Handles of items that have been processed.
+ */
public function do_head_items() {
$this->do_items(false, 0);
return $this->done;
}
+ /**
+ * Processes items and dependencies for the footer group.
+ *
+ * @since 2.8.0
+ * @access public
+ *
+ * @see WP_Dependencies::do_items()
+ *
+ * @return array Handles of items that have been processed.
+ */
public function do_footer_items() {
$this->do_items(false, 1);
return $this->done;
}
+ /**
+ * Whether a handle's source is in a default directory.
+ *
+ * @since 2.8.0
+ * @access public
+ *
+ * @param string $src The source of the enqueued script.
+ * @return bool True if found, false if not.
+ */
public function in_default_dir( $src ) {
if ( ! $this->default_dirs ) {
return true;
@@ -272,6 +569,12 @@ class WP_Scripts extends WP_Dependencies {
return false;
}
+ /**
+ * Resets class properties.
+ *
+ * @since 2.8.0
+ * @access public
+ */
public function reset() {
$this->do_concat = false;
$this->print_code = '';