Make WordPress Core

Ticket #23914: wp-dependencies-patch.txt

File wp-dependencies-patch.txt, 8.8 KB (added by kitchin, 12 years ago)
Line 
1Index: wp-includes/class.wp-dependencies.php
2===================================================================
3--- wp-includes/class.wp-dependencies.php       (revision 23883)
4+++ wp-includes/class.wp-dependencies.php       (working copy)
5@@ -21,27 +21,35 @@
6        var $queue = array();
7        var $to_do = array();
8        var $done = array();
9-       var $args = array();
10-       var $groups = array();
11-       var $group = 0;
12+       var $args = array();  // In extending classes, strings appended to item urls.
13+       var $groups = array();  // In extending class WP_Scripts, header and footer groups.
14+       var $group = 0;  // Internal group state.
15 
16        /**
17         * Do the dependencies
18         *
19-        * Process the items passed to it or the queue. Processes all dependencies.
20+        * Processes the items passed to it or the queue. Processes all dependencies.
21         *
22-        * @param mixed $handles (optional) items to be processed. (void) processes queue, (string) process that item, (array of strings) process those items
23-        * @return array Items that have been processed
24+        * @param mixed $handles (optional) Items to be processed: (false) Process queue, (string) process item, (array of strings) process items
25+        * @param mixed $group Group level: (int) level, (false) no groups
26+        * @return array Handles of items that have been processed
27         */
28        function do_items( $handles = false, $group = false ) {
29-               // Print the queue if nothing is passed. If a string is passed, print that script. If an array is passed, print those scripts.
30+               // Print the queue if nothing is passed. If a string is passed, print that item. If an array is passed, print those items.
31                $handles = false === $handles ? $this->queue : (array) $handles;
32                $this->all_deps( $handles );
33 
34                foreach( $this->to_do as $key => $handle ) {
35                        if ( !in_array($handle, $this->done, true) && isset($this->registered[$handle]) ) {
36 
37-                               if ( ! $this->registered[$handle]->src ) { // Defines a group.
38+                               /**
39+                                * A single item may alias a set of items, by having dependencies but no src.
40+                                * Queuing the item queues the dependencies.
41+                                * Example: the extending class WP_Scripts is used to register 'scriptaculous' as a set of registered handles:
42+                                *   add( 'scriptaculous', false, array('scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls') );
43+                                * The src property is false.
44+                               **/
45+                               if ( ! $this->registered[$handle]->src ) {
46                                        $this->done[] = $handle;
47                                        continue;
48                                }
49@@ -56,18 +64,28 @@
50                return $this->done;
51        }
52 
53+       /**
54+        * Do dependency
55+        *
56+        * Processes one item for dependencies.
57+        *
58+        * @param string $handle Unique item name
59+        * @return bool Success
60+        */
61        function do_item( $handle ) {
62                return isset($this->registered[$handle]);
63        }
64 
65        /**
66-        * Determines dependencies
67+        * Determine dependencies
68         *
69-        * Recursively builds array of items to process taking dependencies into account. Does NOT catch infinite loops.
70+        * Recursively builds array of items to process taking dependencies into account.
71+        * Does NOT catch infinite loops.
72         *
73-        *
74-        * @param mixed $handles Accepts (string) dep name or (array of strings) dep names
75-        * @param bool $recursion Used internally when function calls itself
76+        * @param mixed $handles (string) Dependency handle and argument or (array of strings) Dependency handles and arguments
77+        * @param bool $recursion Internal flag that function is calling itself
78+        * @param mixed $group Group level: (int) level, (false) no groups
79+        * @return bool Success
80         */
81        function all_deps( $handles, $recursion = false, $group = false ) {
82                if ( !$handles = (array) $handles )
83@@ -88,13 +106,13 @@
84 
85                        $keep_going = true;
86                        if ( !isset($this->registered[$handle]) )
87-                               $keep_going = false; // Script doesn't exist
88+                               $keep_going = false; // Item doesn't exist
89                        elseif ( $this->registered[$handle]->deps && array_diff($this->registered[$handle]->deps, array_keys($this->registered)) )
90-                               $keep_going = false; // Script requires deps which don't exist (not a necessary check. efficiency?)
91+                               $keep_going = false; // Item requires deps which don't exist (not a necessary check. efficiency?)
92                        elseif ( $this->registered[$handle]->deps && !$this->all_deps( $this->registered[$handle]->deps, true, $group ) )
93-                               $keep_going = false; // Script requires deps which don't exist
94+                               $keep_going = false; // Item requires deps which don't exist
95 
96-                       if ( !$keep_going ) { // Either script or its deps don't exist.
97+                       if ( !$keep_going ) { // Either item or its deps don't exist.
98                                if ( $recursion )
99                                        return false; // Abort this branch.
100                                else
101@@ -114,15 +132,16 @@
102        }
103 
104        /**
105-        * Adds item
106+        * Register item
107         *
108-        * Adds the item only if no item of that name already exists
109+        * Registers the item if no item of that name already exists.
110         *
111-        * @param string $handle Script name
112-        * @param string $src Script url
113-        * @param array $deps (optional) Array of script names on which this script depends
114-        * @param string $ver (optional) Script version (used for cache busting)
115-        * @return array Hierarchical array of dependencies
116+        * @param string $handle Unique item name
117+        * @param string $src Resource url
118+        * @param array of strings $deps (optional) Item handles on which this item depends
119+        * @param string $ver (optional) Version (used for cache busting)
120+        * @param mixed $args (optional) Custom property of the item. NOT the class property $args. Examples: $media, $in_footer.
121+        * @return bool Success
122         */
123        function add( $handle, $src, $deps = array(), $ver = false, $args = null ) {
124                if ( isset($this->registered[$handle]) )
125@@ -132,14 +151,14 @@
126        }
127 
128        /**
129-        * Adds extra data
130+        * Add extra data
131         *
132-        * Adds data only if script has already been added.
133+        * Adds data if item has been registered.
134         *
135-        * @param string $handle Script name
136-        * @param string $key
137-        * @param mixed $value
138-        * @return bool success
139+        * @param string $handle Unique item name
140+        * @param string $key Data key
141+        * @param mixed $value Data value
142+        * @return bool Success
143         */
144        function add_data( $handle, $key, $value ) {
145                if ( !isset( $this->registered[$handle] ) )
146@@ -151,13 +170,13 @@
147        /**
148         * Get extra data
149         *
150-        * Gets data associated with a certain handle.
151+        * Gets data associated with a registered item.
152         *
153         * @since WP 3.3
154         *
155-        * @param string $handle Script name
156-        * @param string $key
157-        * @return mixed
158+        * @param string $handle Unique item name
159+        * @param string $key Data key
160+        * @return mixed Data value
161         */
162        function get_data( $handle, $key ) {
163                if ( !isset( $this->registered[$handle] ) )
164@@ -169,11 +188,27 @@
165                return $this->registered[$handle]->extra[$key];
166        }
167 
168+       /**
169+        * Unregister items
170+        *
171+        * @param mixed $handles (string) Item handle or (array of strings) Item handles
172+        * @return void
173+        */
174        function remove( $handles ) {
175                foreach ( (array) $handles as $handle )
176                        unset($this->registered[$handle]);
177        }
178 
179+       /**
180+        * Queue items
181+        *
182+        * Decode handle and argument, then queue handle and store argument in the class property $args.
183+        * For example, in extending classes, $args is appended to the item url.
184+        * Note $args is NOT the $args property of items in the $registered array.
185+        *
186+        * @param mixed $handles (string) Item handle and argument or (array of strings) Item handles and arguments
187+        * @return void
188+        */
189        function enqueue( $handles ) {
190                foreach ( (array) $handles as $handle ) {
191                        $handle = explode('?', $handle);
192@@ -185,6 +220,14 @@
193                }
194        }
195 
196+       /**
197+        * Dequeue items
198+        *
199+        * Decode handle and argument, then dequeue handle and remove argument from the class property $args.
200+        *
201+        * @param mixed $handles (string) Item handle and argument or (array of strings) Item handles and arguments
202+        * @return void
203+        */
204        function dequeue( $handles ) {
205                foreach ( (array) $handles as $handle ) {
206                        $handle = explode('?', $handle);
207@@ -196,7 +239,12 @@
208                }
209        }
210 
211-
212+       /**
213+        * Query list for item
214+        *
215+        * @param $handle (string) Item handle
216+        * @return bool Found, or object Item data
217+        */
218        function query( $handle, $list = 'registered' ) {
219                switch ( $list ) {
220                        case 'registered' :
221@@ -220,6 +268,14 @@
222                return false;
223        }
224 
225+       /**
226+        * Set item group, unless already in a lower group
227+        *
228+        * @param $handle (string) Item handle
229+        * @param bool $recursion Internal flag that calling function was called recusively
230+        * @param mixed $group Group level
231+        * @return bool Not already in the group or a lower group
232+        */
233        function set_group( $handle, $recursion, $group ) {
234                $group = (int) $group;
235 
236@@ -242,8 +298,7 @@
237        var $src;
238        var $deps = array();
239        var $ver = false;
240-       var $args = null;
241-
242+       var $args = null;  // Custom property, such as $in_footer or $media.
243        var $extra = array();
244 
245        function __construct() {