public function getDependency($dependencyName)
 {
     if ($dependencyName == 'Components') {
         $ret = array();
         $nonDeferDep = array();
         $files = Kwf_Component_Abstract_Admin::getComponentFiles($this->_rootComponentClass, array('css' => array('filename' => 'Web', 'ext' => 'css', 'returnClass' => false, 'multiple' => true), 'scss' => array('filename' => 'Web', 'ext' => 'scss', 'returnClass' => false, 'multiple' => true)));
         foreach ($files as $i) {
             foreach ($i as $j) {
                 $cwd = str_replace(DIRECTORY_SEPARATOR, '/', getcwd());
                 if (substr($j, 0, 3) == '../') {
                     $cwd = substr($cwd, 0, strrpos($cwd, '/'));
                     $j = substr($j, 3);
                 }
                 $j = $cwd . '/' . $j;
                 $jj = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($j);
                 if (!$jj) {
                     throw new Kwf_Exception("Can't find path type for '{$j}'");
                 }
                 $nonDeferDep[] = $this->_createDependencyForFile($jj, true);
             }
         }
         if ($nonDeferDep) {
             $nonDeferDep = new Kwf_Assets_Dependency_Dependencies($nonDeferDep, 'Web');
             $ret[] = $nonDeferDep;
         }
         $componentClasses = $this->_getRecursiveChildClasses($this->_rootComponentClass);
         foreach ($componentClasses as $class) {
             $deps = $this->_getComponentSettingDependenciesDep($class, 'assetsDefer', true);
             if ($deps) {
                 $deps = new Kwf_Assets_Dependency_Dependencies($deps, $class . '-deps-defer');
                 $deps->setDeferLoad(true);
                 $ret[] = $deps;
             }
             $deps = $this->_getComponentSettingDependenciesDep($class, 'assets', true);
             if ($deps) {
                 $deps = new Kwf_Assets_Dependency_Dependencies($deps, $class . '-deps');
                 $ret[] = $deps;
             }
             $deps = array();
             foreach ($this->_getComponentSettingDependenciesFiles($class, 'assets', true) as $dep) {
                 if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z]+$#', $dep->getFileNameWithType())) {
                     $deps[] = array('dep' => $dep, 'master' => true, 'defer' => false);
                 } else {
                     $deps[] = array('dep' => $dep, 'master' => false, 'defer' => false);
                 }
             }
             foreach ($this->_getComponentSettingDependenciesFiles($class, 'assetsDefer', true) as $dep) {
                 if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z]+$#', $dep->getFileNameWithType())) {
                     $deps[] = array('dep' => $dep, 'master' => true, 'defer' => true);
                 } else {
                     $deps[] = array('dep' => $dep, 'master' => false, 'defer' => true);
                 }
             }
             //alle dateien der vererbungshierache includieren
             $files = Kwc_Abstract::getSetting($class, 'componentFiles');
             $componentCssFiles = array();
             foreach (array_merge($files['css'], $files['js']) as $f) {
                 $componentCssFiles[] = $f;
             }
             //reverse damit css von weiter unten in der vererbungshierachie überschreibt
             $componentCssFiles = array_reverse($componentCssFiles);
             foreach ($componentCssFiles as $i) {
                 $dep = $this->_createDependencyForFile($i, true);
                 if (substr($i, -8) == 'defer.js') {
                     $deps[] = array('dep' => $dep, 'master' => false, 'defer' => true);
                 } else {
                     $deps[] = array('dep' => $dep, 'master' => false, 'defer' => false);
                 }
             }
             //reverse damit css von weiter unten in der vererbungshierachie überschreibt
             $componentCssFiles = array_reverse($files['masterCss']);
             foreach ($componentCssFiles as $i) {
                 $dep = $this->_createDependencyForFile($i, true);
                 if (substr($i, -8) == 'defer.js') {
                     $deps[] = array('dep' => $dep, 'master' => true, 'defer' => true);
                 } else {
                     $deps[] = array('dep' => $dep, 'master' => true, 'defer' => false);
                 }
             }
             //css, not master
             $matchingDeps = array();
             foreach ($deps as $i) {
                 if ($i['dep']->getMimeType() == 'text/css' && $i['master'] == false) {
                     $matchingDeps[] = $i['dep'];
                 }
             }
             if ($matchingDeps) {
                 $ret[] = new Kwf_Assets_Components_Dependency_Css($class, $matchingDeps, false);
             }
             //css, master
             $matchingDeps = array();
             foreach ($deps as $i) {
                 if ($i['dep']->getMimeType() == 'text/css' && $i['master'] == true) {
                     $matchingDeps[] = $i['dep'];
                 }
             }
             if ($matchingDeps) {
                 $ret[] = new Kwf_Assets_Components_Dependency_Css($class, $matchingDeps, true);
             }
             //js, not master, not defer
             $matchingDeps = array();
             foreach ($deps as $i) {
                 if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == false && $i['defer'] == false) {
                     $matchingDeps[] = $i['dep'];
                 }
             }
             if ($matchingDeps) {
                 $ret[] = new Kwf_Assets_Components_Dependency_Js($class, $matchingDeps, false);
             }
             //js, master, not defer
             $matchingDeps = array();
             foreach ($deps as $i) {
                 if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == true && $i['defer'] == false) {
                     $matchingDeps[] = $i['dep'];
                 }
             }
             if ($matchingDeps) {
                 $ret[] = new Kwf_Assets_Components_Dependency_Js($class, $matchingDeps, true);
             }
             //js, not master, defer
             $matchingDeps = array();
             foreach ($deps as $i) {
                 if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == false && $i['defer'] == true) {
                     $matchingDeps[] = $i['dep'];
                 }
             }
             if ($matchingDeps) {
                 $dep = new Kwf_Assets_Components_Dependency_Js($class, $matchingDeps, false);
                 $dep->setDeferLoad(true);
                 $ret[] = $dep;
             }
             //js, master, defer
             $matchingDeps = array();
             foreach ($deps as $i) {
                 if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == true && $i['defer'] == true) {
                     $matchingDeps[] = $i['dep'];
                 }
             }
             if ($matchingDeps) {
                 $dep = new Kwf_Assets_Components_Dependency_Js($class, $matchingDeps, true);
                 $dep->setDeferLoad(true);
                 $ret[] = $dep;
             }
         }
         return new Kwf_Assets_Dependency_Dependencies($ret, $dependencyName);
     } else {
         if ($dependencyName == 'ComponentsAdmin') {
             $ret = array();
             $componentClasses = $this->_getRecursiveChildClasses($this->_rootComponentClass);
             foreach ($componentClasses as $class) {
                 $ret = array_merge($ret, $this->_getComponentSettingDependencies($class, 'assetsAdmin', false));
             }
             return new Kwf_Assets_Dependency_Dependencies($ret, $dependencyName);
         } else {
             if ($dependencyName == 'FrontendCore') {
                 $deps = array();
                 $dep = new Kwf_Assets_Dependency_File_Js('kwf/commonjs/frontend-core.js');
                 $dep->setIsCommonJsEntry(true);
                 $deps[] = $dep;
                 $dep = new Kwf_Assets_Dependency_File_Js('kwf/commonjs/frontend-core.defer.js');
                 $dep->setIsCommonJsEntry(true);
                 $dep->setDeferLoad(true);
                 $deps[] = $dep;
                 return new Kwf_Assets_Dependency_Dependencies($deps, 'FrontendCore');
             }
         }
     }
     return null;
 }
 public function getDependency($dependencyName)
 {
     if ($dependencyName == 'Components') {
         $ret = array();
         $nonDeferDep = array();
         $files = Kwf_Component_Abstract_Admin::getComponentFiles($this->_rootComponentClass, array('css' => array('filename' => 'Web', 'ext' => 'css', 'returnClass' => false, 'multiple' => true), 'scss' => array('filename' => 'Web', 'ext' => 'scss', 'returnClass' => false, 'multiple' => true)));
         foreach ($files as $i) {
             foreach ($i as $j) {
                 $cwd = str_replace(DIRECTORY_SEPARATOR, '/', getcwd());
                 if (substr($j, 0, 3) == '../') {
                     $cwd = substr($cwd, 0, strrpos($cwd, '/'));
                     $j = substr($j, 3);
                 }
                 $j = $cwd . '/' . $j;
                 $jj = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($this->_providerList, $j);
                 if (!$jj) {
                     throw new Kwf_Exception("Can't find path type for '{$j}'");
                 }
                 $nonDeferDep[] = $this->_createDependencyForFile($jj, true);
             }
         }
         if ($nonDeferDep) {
             $nonDeferDep = new Kwf_Assets_Dependency_Dependencies($this->_providerList, $nonDeferDep, 'Web');
             $ret[] = $nonDeferDep;
         }
         $componentClassesPackages = $this->_getComponentClassesPackages();
         foreach ($componentClassesPackages['Frontend'] as $c) {
             $packageName = Kwc_Abstract::getFlag($c, 'assetsPackage');
             if ($packageName == 'Default') {
                 $packageName = false;
             }
             if (!$packageName) {
                 $d = $this->_providerList->findDependency('Component-' . $c);
                 if (!$d) {
                     throw new Kwf_Exception("Didn't get dependency 'Component-{$c}'");
                 }
                 $ret[] = $d;
             }
         }
         return new Kwf_Assets_Dependency_Dependencies($this->_providerList, $ret, $dependencyName);
     } else {
         if (substr($dependencyName, 0, 17) == 'ComponentsPackage') {
             $ret = array();
             $assetsPackageName = substr($dependencyName, 17);
             $componentClassesPackages = $this->_getComponentClassesPackages();
             foreach ($componentClassesPackages[$assetsPackageName] as $c) {
                 $d = $this->_providerList->findDependency('Component-' . $c);
                 if (!$d) {
                     throw new Kwf_Exception("Didn't get dependency 'Component-{$c}'");
                 }
                 $ret[] = $d;
             }
             return new Kwf_Assets_Dependency_Dependencies($this->_providerList, $ret, $dependencyName);
         } else {
             if ($dependencyName == 'ComponentsAdmin') {
                 $ret = array();
                 foreach (Kwc_Abstract::getComponentClasses() as $class) {
                     //dep
                     $ret = array_merge($ret, $this->_getComponentSettingDependenciesDep($class, 'assetsAdmin'));
                     //files
                     $assets = Kwc_Abstract::getSetting($class, 'assetsAdmin');
                     foreach ($assets['files'] as $file) {
                         if (!isset($this->_fileDependencies[$file])) {
                             $this->_fileDependencies[$file] = Kwf_Assets_Dependency_File::createDependency($file, $this->_providerList);
                         }
                         $ret[] = $this->_fileDependencies[$file];
                     }
                 }
                 return new Kwf_Assets_Dependency_Dependencies($this->_providerList, $ret, $dependencyName);
             } else {
                 if ($dependencyName == 'FrontendCore') {
                     $deps = array();
                     $dep = new Kwf_Assets_Dependency_File_Js($this->_providerList, 'kwf/commonjs/frontend-core.js');
                     $dep->setIsCommonJsEntry(true);
                     $deps[] = $dep;
                     $dep = new Kwf_Assets_Dependency_File_Js($this->_providerList, 'kwf/commonjs/frontend-core.defer.js');
                     $dep->setIsCommonJsEntry(true);
                     $dep->setDeferLoad(true);
                     $deps[] = $dep;
                     return new Kwf_Assets_Dependency_Dependencies($this->_providerList, $deps, 'FrontendCore');
                 } else {
                     if (substr($dependencyName, 0, 10) == 'Component-') {
                         $class = substr($dependencyName, 10);
                         $ret = array();
                         $deps = $this->_getComponentSettingDependenciesDep($class, 'assetsDefer', true);
                         if ($deps) {
                             $deps = new Kwf_Assets_Dependency_Dependencies($this->_providerList, $deps, $class . '-deps-defer');
                             $deps->setDeferLoad(true);
                             $ret[] = $deps;
                         }
                         $deps = $this->_getComponentSettingDependenciesDep($class, 'assets', true);
                         if ($deps) {
                             $deps = new Kwf_Assets_Dependency_Dependencies($this->_providerList, $deps, $class . '-deps');
                             $ret[] = $deps;
                         }
                         $deps = array();
                         foreach ($this->_getComponentSettingDependenciesFiles($class, 'assets', true) as $dep) {
                             if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z]+$#', $dep->getFileNameWithType())) {
                                 //Master.css/js needs to be part of Kwf_Assets_Components_Dependency_Abstract for .kwcClass to work correctly
                                 $deps[] = array('dep' => $dep, 'master' => true, 'defer' => false);
                             } else {
                                 //other files are dependencies like dep
                                 if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Web(\\.defer)?\\.js+$#', $dep->getFileNameWithType())) {
                                     $dep->setIsCommonJsEntry(true);
                                 }
                                 $ret[] = $dep;
                             }
                         }
                         foreach ($this->_getComponentSettingDependenciesFiles($class, 'assetsDefer', true) as $dep) {
                             if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z\\.]+$#', $dep->getFileNameWithType())) {
                                 //Master.css/js needs to be part of Kwf_Assets_Components_Dependency_Abstract for .kwcClass to work correctly
                                 $deps[] = array('dep' => $dep, 'master' => true, 'defer' => true);
                             } else {
                                 //other files are dependencies like dep
                                 if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Web(\\.defer)?\\.js+$#', $dep->getFileNameWithType())) {
                                     $dep->setIsCommonJsEntry(true);
                                 }
                                 $dep->setDeferLoad(true);
                                 $ret[] = $dep;
                             }
                         }
                         if (Kwc_Abstract::hasSetting($class, 'masterExtends') && Kwc_Abstract::getSetting($class, 'masterExtends')) {
                             //plus masterExtends for inherited styles
                             foreach ($this->_getComponentSettingDependenciesFiles(Kwc_Abstract::getSetting($class, 'masterExtends'), 'assets', true) as $dep) {
                                 if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z]+$#', $dep->getFileNameWithType())) {
                                     //Master.css/js needs to be part of Kwf_Assets_Components_Dependency_Abstract for .kwcClass to work correctly
                                     $deps[] = array('dep' => $dep, 'master' => true, 'defer' => false);
                                 }
                             }
                             foreach ($this->_getComponentSettingDependenciesFiles(Kwc_Abstract::getSetting($class, 'masterExtends'), 'assetsDefer', true) as $dep) {
                                 if ($dep instanceof Kwf_Assets_Dependency_File && preg_match('#Master\\.[a-z]+$#', $dep->getFileNameWithType())) {
                                     //Master.css/js needs to be part of Kwf_Assets_Components_Dependency_Abstract for .kwcClass to work correctly
                                     $deps[] = array('dep' => $dep, 'master' => true, 'defer' => true);
                                 }
                             }
                             //                 d($deps);
                         }
                         //alle dateien der vererbungshierache includieren
                         $files = Kwc_Abstract::getSetting($class, 'componentFiles');
                         $componentCssFiles = array();
                         foreach (array_merge($files['css'], $files['js']) as $f) {
                             $componentCssFiles[] = $f;
                         }
                         //reverse damit css von weiter unten in der vererbungshierachie überschreibt
                         $componentCssFiles = array_reverse($componentCssFiles);
                         foreach ($componentCssFiles as $path) {
                             $pathWithType = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($this->_providerList, './' . $path);
                             if (!$pathWithType) {
                                 throw new Kwf_Exception("Can't find path type for '{$path}'");
                             }
                             $dep = $this->_createDependencyForFile($pathWithType, true);
                             if (substr($path, -8) == 'defer.js') {
                                 $deps[] = array('dep' => $dep, 'master' => false, 'defer' => true);
                             } else {
                                 $deps[] = array('dep' => $dep, 'master' => false, 'defer' => false);
                             }
                             if ($dep instanceof Kwf_Assets_Dependency_File_Scss) {
                                 if ($scssConfig = Kwc_Admin::getInstance($class)->getScssConfig()) {
                                     $dep->setConfig($scssConfig, Kwc_Admin::getInstance($class)->getScssConfigMasterFiles());
                                 }
                             }
                         }
                         //reverse damit css von weiter unten in der vererbungshierachie überschreibt
                         $componentCssFiles = array_reverse($files['masterCss']);
                         foreach ($componentCssFiles as $path) {
                             $pathWithType = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($this->_providerList, './' . $path);
                             if (!$pathWithType) {
                                 throw new Kwf_Exception("Can't find path type for '{$path}'");
                             }
                             $dep = $this->_createDependencyForFile($pathWithType, true);
                             if (substr($path, -8) == 'defer.js') {
                                 $deps[] = array('dep' => $dep, 'master' => true, 'defer' => true);
                             } else {
                                 $deps[] = array('dep' => $dep, 'master' => true, 'defer' => false);
                             }
                         }
                         //css, not master
                         $matchingDeps = array();
                         foreach ($deps as $i) {
                             if ($i['dep']->getMimeType() == 'text/css' && $i['master'] == false) {
                                 $matchingDeps[] = $i['dep'];
                             }
                         }
                         if ($matchingDeps) {
                             $ret[] = new Kwf_Assets_Components_Dependency_Css($this->_providerList, $class, $matchingDeps, false, $class . '-css');
                         }
                         //css, master
                         $matchingDeps = array();
                         foreach ($deps as $i) {
                             if ($i['dep']->getMimeType() == 'text/css' && $i['master'] == true) {
                                 $matchingDeps[] = $i['dep'];
                             }
                         }
                         if ($matchingDeps) {
                             $ret[] = new Kwf_Assets_Components_Dependency_Css($this->_providerList, $class, $matchingDeps, true, $class . '-master-css');
                         }
                         //js, not master, not defer
                         $matchingDeps = array();
                         foreach ($deps as $i) {
                             if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == false && $i['defer'] == false) {
                                 $matchingDeps[] = $i['dep'];
                             }
                         }
                         if ($matchingDeps) {
                             $ret[] = new Kwf_Assets_Components_Dependency_Js($this->_providerList, $class, $matchingDeps, false, $class . '-js');
                         }
                         //js, master, not defer
                         $matchingDeps = array();
                         foreach ($deps as $i) {
                             if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == true && $i['defer'] == false) {
                                 $matchingDeps[] = $i['dep'];
                             }
                         }
                         if ($matchingDeps) {
                             $ret[] = new Kwf_Assets_Components_Dependency_Js($this->_providerList, $class, $matchingDeps, true, $class . '-master-js');
                         }
                         //js, not master, defer
                         $matchingDeps = array();
                         foreach ($deps as $i) {
                             if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == false && $i['defer'] == true) {
                                 $matchingDeps[] = $i['dep'];
                             }
                         }
                         if ($matchingDeps) {
                             $dep = new Kwf_Assets_Components_Dependency_Js($this->_providerList, $class, $matchingDeps, false, $class . '-defer-js');
                             $dep->setDeferLoad(true);
                             $ret[] = $dep;
                         }
                         //js, master, defer
                         $matchingDeps = array();
                         foreach ($deps as $i) {
                             if ($i['dep']->getMimeType() != 'text/css' && $i['master'] == true && $i['defer'] == true) {
                                 $matchingDeps[] = $i['dep'];
                             }
                         }
                         if ($matchingDeps) {
                             $dep = new Kwf_Assets_Components_Dependency_Js($this->_providerList, $class, $matchingDeps, true, $class . '-master-defer-js');
                             $dep->setDeferLoad(true);
                             $ret[] = $dep;
                         }
                         return new Kwf_Assets_Dependency_Dependencies($this->_providerList, $ret, $dependencyName);
                     }
                 }
             }
         }
     }
     return null;
 }
Exemple #3
0
 public function getDependency($dependencyName)
 {
     if ($dependencyName == 'Components') {
         $ret = array();
         $nonDeferDep = array();
         $files = Kwf_Component_Abstract_Admin::getComponentFiles($this->_rootComponentClass, array('css' => array('filename' => 'Web', 'ext' => 'css', 'returnClass' => false, 'multiple' => true), 'printcss' => array('filename' => 'Web', 'ext' => 'printcss', 'returnClass' => false, 'multiple' => true), 'scss' => array('filename' => 'Web', 'ext' => 'scss', 'returnClass' => false, 'multiple' => true)));
         foreach ($files as $i) {
             foreach ($i as $j) {
                 $cwd = str_replace(DIRECTORY_SEPARATOR, '/', getcwd());
                 if (substr($j, 0, 3) == '../') {
                     $cwd = substr($cwd, 0, strrpos($cwd, '/'));
                     $j = substr($j, 3);
                 }
                 $j = $cwd . '/' . $j;
                 $jj = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($j);
                 if (!$jj) {
                     throw new Kwf_Exception("Can't find path type for '{$j}'");
                 }
                 $nonDeferDep[] = $this->_createDependencyForFile($jj);
             }
         }
         if ($nonDeferDep) {
             $nonDeferDep = new Kwf_Assets_Dependency_Dependencies($nonDeferDep, 'Web');
             $ret[] = $nonDeferDep;
         }
         $componentClasses = $this->_getRecursiveChildClasses($this->_rootComponentClass);
         foreach ($componentClasses as $class) {
             $nonDeferDep = $this->_getComponentSettingDependencies($class, 'assets');
             $deferDep = $this->_getComponentSettingDependencies($class, 'assetsDefer');
             //alle dateien der vererbungshierache includieren
             $files = Kwc_Abstract::getSetting($class, 'componentFiles');
             $componentCssFiles = array();
             foreach (array_merge($files['css'], $files['printcss'], $files['js'], $files['masterCss']) as $f) {
                 $componentCssFiles[] = $f;
             }
             //reverse damit css von weiter unten in der vererbungshierachie überschreibt
             $componentCssFiles = array_reverse($componentCssFiles);
             foreach ($componentCssFiles as $i) {
                 $i = getcwd() . '/' . $i;
                 $i = Kwf_Assets_Dependency_File::getPathWithTypeByFileName($i);
                 if (!isset($this->_componentFiles[$i])) {
                     $addedFiles[] = $i;
                     $dep = $this->_createDependencyForFile($i);
                     if (substr($i, -8) == 'defer.js') {
                         $deferDep[] = $dep;
                     } else {
                         $nonDeferDep[] = $dep;
                     }
                 }
             }
             if ($deferDep) {
                 $deferDep = new Kwf_Assets_Dependency_Dependencies($deferDep, $class . ' defer');
                 $deferDep->setDeferLoad(true);
                 $ret[] = $deferDep;
             }
             if ($nonDeferDep) {
                 $nonDeferDep = new Kwf_Assets_Dependency_Dependencies($nonDeferDep, $class);
                 $ret[] = $nonDeferDep;
             }
         }
         return new Kwf_Assets_Dependency_Dependencies($ret, $dependencyName);
     } else {
         if ($dependencyName == 'ComponentsAdmin') {
             $ret = array();
             $componentClasses = $this->_getRecursiveChildClasses($this->_rootComponentClass);
             foreach ($componentClasses as $class) {
                 $ret = array_merge($ret, $this->_getComponentSettingDependencies($class, 'assetsAdmin'));
             }
             return new Kwf_Assets_Dependency_Dependencies($ret, $dependencyName);
         }
     }
     return null;
 }