This class takes care of all mechanisms regarding script building and loading.
When in developer mode, or when running a build script, this class will rebuilt the combined script file, in the correct order, or issue a message where dependencies are missing or circular.
When not in developer mode, this class is simply used to enqueue the minified file, or, the combined file if that is more up to date. That can happen when changes have been made and the combined file has been re-built without the minified file being rebuilt.
Methods summary
public
|
#
__construct( boolean $proMode )
Constructor.
Parameters
- $proMode
- Whether or not to enqueue (and optionally build) the Pro scripts.
|
protected
|
#
log( string $str )
Internal function used for logging, useful when debugging the build process. This function will erase the log for each PHP execution lifespan.
Internal function used for logging, useful when debugging the build process. This function will erase the log for each PHP execution lifespan.
Parameters
- $str
- The string to log. Will be prefixed with a timestamp.
|
protected
string[]
|
#
rglob( string $pattern, integer $flags = 0 )
Recursive glob. This function is used to match files given the specified pattern, recursively.
Recursive glob. This function is used to match files given the specified pattern, recursively.
Parameters
- $pattern
- The pattern to match
- $flags
- Flags to pass to glob
Returns
string[] An array of matching files.
See
http://php.net/manual/en/function.glob.php
|
protected
string
|
#
getHandleFromModuleName( string $module )
Converts a JavaScript module name to a script handle, for instance WPGMZA.GoogleMarker will be converted to wpgmza-google-marker.
Converts a JavaScript module name to a script handle, for instance WPGMZA.GoogleMarker will be converted to wpgmza-google-marker.
Parameters
- $module
- The JavaScript module name.
Returns
string The associated script handle.
|
protected
array
|
#
getLibraryScripts( )
This function returns an array of library scripts that the plugin depends on, where the array key is the script handle and the value is the script URL.
This function returns an array of library scripts that the plugin depends on, where the array key is the script handle and the value is the script URL.
This function will also enqueue all the required jQuery UI scripts required by our plugin as they are needed, for example on the admin pages.
The result is passed through the filter wpgmza-get-library-dependencies before being returned.
Returns
array A key value array of scripts, where the key is the handle and the value is the script URL.
|
protected
array
|
#
getScanDirectories( )
Returns the directories to be scanned for JavaScript files.
Returns the directories to be scanned for JavaScript files.
Returns
array An array of directories, where the keys and values match.
|
protected
|
#
scanDependencies( )
This function performs the following actions:
This function performs the following actions:
- Scans the relevant directories for all JavaScript files.
- Reads the comment header from each JavaScript file.
- Converts each found module name to a script handle, and records it in $this->scripts with the handle as the key, the source file and dependencies as the value.
|
public
object[]
|
#
getCombineOrder( )
This function performs the following actions:
This function performs the following actions:
- Takes a snapshot of $this->scripts, we'll call this the pending queue
- Creates an empty list, we'll call this the combine order queue
- For each script in the pending queue, if the scripts dependencies are satisfied, the script is moved off the pending queue and onto the back of the combine order queue
This process is repeated until either the pending queue is empty, or a built in iteration limit is hit. When the iteration limit is hit, this usually indicates either missing dependencies or circular dependencies. A notice will be issued when this happens.
You must call scanDependencies before getCombineOrder.
Returns
object[] An indexed array of script objects, in the order that they must be combined in to respect their dependencies.
Note
As the plugin becomes increasingly complex, the 100,000 iteration limit may give false positives.
|
public
|
#
buildCombinedFile( )
Builds all the plugin scripts into a combined (concatenated) string. The function will then check if the md5 hash of the existing combined script file matches the hash of the string in memory. If they match, the combined file is up to date and is left untouched. If they do not match, the combined file is updated.
Builds all the plugin scripts into a combined (concatenated) string. The function will then check if the md5 hash of the existing combined script file matches the hash of the string in memory. If they match, the combined file is up to date and is left untouched. If they do not match, the combined file is updated.
|
public
|
#
build( )
This function performs a full rebuild of the combined script file
This function performs a full rebuild of the combined script file
|
public
|
#
enqueueStyles( )
Enqueues all required stylesheets
Enqueues all required stylesheets
|
public
object[]
|
#
getPluginScripts( )
Returns an array of objects representing all scripts used by the plugin. In developer mode, this will be one script for each module, when not in developer mode, this will either be the combined or minified file, dependeing on which is more up to date.
Returns an array of objects representing all scripts used by the plugin. In developer mode, this will be one script for each module, when not in developer mode, this will either be the combined or minified file, dependeing on which is more up to date.
Returns
object[] An array of objects representing the scripts.
|
public
|
#
enqueueScripts( )
Enqueues all the libraries required by the plugin scripts, then enqueues the plugin scripts and localized data (JavaScript globals).
Enqueues all the libraries required by the plugin scripts, then enqueues the plugin scripts and localized data (JavaScript globals).
|
public
|
#
enqueueLocalizedData( )
Enqueues the plugins localized data, as fetched from Plugin::getLocalizedData
Enqueues the plugins localized data, as fetched from Plugin::getLocalizedData
|