| 1 | Index: 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() { |
|---|