/**
* Register one or more script following the view controller standard
*
* @brief Register
*
* @param array $scripts List of scripts
*
* $scripts = array(
* 'wpxbz-preferences.js' => array(
* 'handle' => 'my-handle', // Optional -sanitize_titile( $key ) + remove '.js'
* 'path' => WPXBANNERIZE_URL_JAVASCRIPT, // Optional if set $path params
* 'deps' => array( 'jquery' ), // Optional if set $deps params
* 'version' => '1.2.3', // Optional if set $version
* 'footer' => false, // Optional override the $in_footer params,
* )
* );
*
* WPDKScripts::registerScripts( $scripts );
*
* OR
*
* $scripts = array(
* 'wpxbz-preferences.js',
* 'wpxbz-admin.js',
* );
*
* WPDKScripts::registerScripts( $scripts, $path, $version );
*
* OR
*
* $scripts = array(
* 'wpxbz-preferences.js' => array(
* 'handle' => 'my-handle', // Optional -sanitize_titile( $key ) + remove '.js'
* 'path' => WPXBANNERIZE_URL_JAVASCRIPT, // Optional if set $path params
* 'version' => '1.2.3', // Optional if set $version
* 'footer' => false, // Optional override the $in_footer params
* ),
* 'wpxbz-admin.js',
* );
*
* // $path and version will be used for 2th iten
* WPDKScripts::registerScripts( $scripts, $path, $version );
*
* @param string $path Optional. If set all scripts will be loaded fron this url
* @param string|array $deps Optional. One or more handle dependiences
* @param bool|string $version Optional. If set will apply to all script
* @param bool $in_footer Optional. Default all scripts are loaded in footer
*
* @return bool
*/
public function registerScripts($scripts, $path = '', $deps = array(), $version = false, $in_footer = true)
{
if (!empty($scripts) && is_array($scripts)) {
foreach ($scripts as $filename => $info) {
// Case 1
if (is_array($info)) {
$handle = isset($info['handle']) ? $info['handle'] : sanitize_title(WPDKFilesystem::filename($filename));
$_path = isset($info['path']) ? $info['path'] : $path;
$_deps = isset($info['deps']) ? $info['deps'] : $deps;
// Sanitize $deps
if (is_string($_deps)) {
$_deps = explode(',', $_deps);
}
$_version = isset($info['version']) ? $info['version'] : $version;
$_in_footer = isset($info['footer']) ? $info['footer'] : $in_footer;
$src = sprintf('%s%s', trailingslashit($_path), $filename);
} elseif (is_string($info)) {
$handle = sanitize_title(WPDKFilesystem::filename($info));
$_path = $path;
$_deps = $deps;
// Sanitize $deps
if (is_string($_deps)) {
$_deps = explode(',', $_deps);
}
$_version = $version;
$_in_footer = $in_footer;
$src = sprintf('%s%s', trailingslashit($_path), $info);
} else {
return false;
}
// Stability
if (!empty($handle) && !empty($src)) {
wp_register_script($handle, $src, $_deps, $_version, $_in_footer);
}
}
}
return true;
}