protected function registerPradoScriptInternal($name)
{
// $this->checkIfNotInRender();
if (!isset($this->_registeredScripts[$name])) {
if (self::$_scripts === null) {
$packageFile = Prado::getFrameworkPath() . DIRECTORY_SEPARATOR . self::PACKAGES_FILE;
list($folders, $packages, $deps) = (include $packageFile);
self::$_scriptsFolders = $folders;
self::$_scripts = $deps;
self::$_scriptsPackages = $packages;
}
if (isset(self::$_scripts[$name])) {
$this->_registeredScripts[$name] = true;
} else {
throw new TInvalidOperationException('csmanager_pradoscript_invalid', $name);
}
if (($packages = array_keys($this->_registeredScripts)) !== array()) {
$packagesUrl = array();
$isDebug = $this->getApplication()->getMode() === TApplicationMode::Debug;
foreach ($packages as $p) {
foreach (self::$_scripts[$p] as $dep) {
foreach (self::$_scriptsPackages[$dep] as $script) {
if (!isset($this->_expandedScripts[$script])) {
list($base, $subPath) = $this->getScriptPackageFolder($script);
list($path, $baseUrl) = $this->getPackagePathUrl($base);
$this->_expandedScripts[$script] = true;
if ($isDebug) {
if (!in_array($url = $baseUrl . '/' . $subPath, $packagesUrl)) {
$packagesUrl[] = $url;
}
} else {
if (!in_array($url = $baseUrl . '/min/' . $subPath, $packagesUrl)) {
if (!is_file($filePath = $path . '/min/' . $subPath)) {
$dirPath = dirname($filePath);
if (!is_dir($dirPath)) {
mkdir($dirPath, PRADO_CHMOD, true);
}
file_put_contents($filePath, TJavaScript::JSMin(file_get_contents($base . '/' . $subPath)));
chmod($filePath, PRADO_CHMOD);
}
$packagesUrl[] = $url;
}
}
}
}
}
}
foreach ($packagesUrl as $url) {
$this->registerScriptFile($url, $url);
}
}
}
}