protected function _build($options)
 {
     echo "\nsettings...\n";
     if (!file_exists('build/component')) {
         mkdir('build/component');
     }
     Kwf_Component_Settings::resetSettingsCache();
     foreach (glob('build/component/*') as $f) {
         unlink($f);
     }
     $fileName = 'build/component/settings';
     try {
         $data = Kwf_Component_Settings::_getSettingsCached();
     } catch (Kwf_Trl_BuildFileMissingException $e) {
         $originatingException = $e->getSettingsNonStaticTrlException();
         if ($originatingException) {
             throw $originatingException;
         }
         throw $e;
     }
     foreach ($data as $cmp => $settings) {
         self::_checkSettings($cmp, $settings);
     }
     file_put_contents($fileName, serialize($data));
     $componentClasses = Kwc_Abstract::getComponentClasses();
     echo "masterLayouts...\n";
     Kwf_Component_MasterLayout_Abstract::_buildAll($componentClasses);
     echo "layouts...\n";
     Kwf_Component_Layout_Abstract::_buildAll($componentClasses);
 }
예제 #2
0
 protected function _build($options)
 {
     if (!file_exists('build/component')) {
         mkdir('build/component');
     }
     Kwf_Component_Settings::resetSettingsCache();
     $fileName = 'build/component/settings';
     if (file_exists($fileName)) {
         unlink($fileName);
     }
     $data = Kwf_Component_Settings::_getSettingsCached();
     foreach ($data as $cmp => $settings) {
         self::_checkSettings($cmp, $settings);
     }
     file_put_contents($fileName, serialize($data));
 }
 protected function _build($options)
 {
     if (!file_exists('build/component')) {
         mkdir('build/component');
     }
     Kwf_Component_Settings::resetSettingsCache();
     $fileName = 'build/component/settings';
     if (file_exists($fileName)) {
         unlink($fileName);
     }
     try {
         $data = Kwf_Component_Settings::_getSettingsCached();
     } catch (Kwf_Trl_BuildFileMissingException $e) {
         $originatingException = $e->getSettingsNonStaticTrlException();
         if ($originatingException) {
             throw $originatingException;
         }
         throw $e;
     }
     foreach ($data as $cmp => $settings) {
         self::_checkSettings($cmp, $settings);
     }
     file_put_contents($fileName, serialize($data));
 }
예제 #4
0
 private static function _clearComponentSettingsCache($componentClasses, $setting = null)
 {
     Kwf_Component_Abstract::resetSettingsCache();
     $settings = Kwf_Component_Settings::_getSettingsCached();
     $dependenciesChanged = false;
     $generatorssChanged = false;
     $dimensionsChanged = false;
     $menuConfigChanged = false;
     foreach ($componentClasses as $c) {
         Kwf_Component_Settings::$_rebuildingSettings = true;
         if ($setting) {
             //a single setting changed
             $newSettings = $settings[$c];
             $newSettings[$setting] = Kwc_Abstract::getSetting($c, $setting);
         } else {
             //all settings might have changed
             $newSettings = Kwf_Component_Settings::_getSettingsIncludingPreComputed($c);
         }
         Kwf_Component_Settings::$_rebuildingSettings = false;
         if ($newSettings['assets'] != $settings[$c]['assets'] || $newSettings['assetsAdmin'] != $settings[$c]['assetsAdmin']) {
             $dependenciesChanged = true;
         }
         if ($newSettings['generators'] != $settings[$c]['generators']) {
             $generatorssChanged = true;
             $oldChildComponentClasses = self::_getComponentClassesFromGeneratorsSetting($settings[$c]['generators']);
             $newChildComponentClasses = self::_getComponentClassesFromGeneratorsSetting($newSettings['generators']);
         }
         if (isset($newSettings['dimensions']) && $newSettings['dimensions'] != $settings[$c]['dimensions']) {
             $dimensionsChanged = true;
         }
         if (isset($newSettings['menuConfig']) && $newSettings['menuConfig'] != $settings[$c]['menuConfig']) {
             $menuConfigChanged = true;
         }
         $settings[$c] = $newSettings;
     }
     echo "refreshed component settings cache...\n";
     if ($dependenciesChanged) {
         echo "assets changed...\n";
         self::_clearAssetsDependencies();
         self::_clearAssetsAll();
     }
     $clearCacheSimpleStatic = array('has-', 'cs-', 'flag-', 'componentClasses-', 'recCCGen-', 'genInst-', 'childComponentClasses-');
     if ($generatorssChanged) {
         echo "generators changed...\n";
         echo count(Kwc_Abstract::getComponentClasses()) . " component classes (previously)\n";
         $m = Kwf_Component_Cache::getInstance()->getModel('url');
         foreach ($m->getRows() as $r) {
             Kwf_Cache_Simple::delete('url-' . $r->url);
             $r->delete();
         }
         foreach ($newChildComponentClasses as $cmpClass) {
             if (!in_array($cmpClass, Kwc_Abstract::getComponentClasses())) {
                 self::_loadSettingsRecursive($settings, $cmpClass);
             }
         }
         $removedComponentClasses = array_diff($oldChildComponentClasses, $newChildComponentClasses);
         foreach ($removedComponentClasses as $removedCls) {
             self::_removeSettingsRecursive($settings, $removedCls);
         }
     }
     file_put_contents('build/component/settings', serialize($settings));
     echo "cleared component settings apc cache...\n";
     if (Kwf_Util_Apc::isAvailable()) {
         self::_clearApcCache(array('clearCacheSimpleStatic' => $clearCacheSimpleStatic));
     } else {
         foreach ($clearCacheSimpleStatic as $i) {
             Kwf_Cache_SimpleStatic::clear($i);
         }
     }
     echo "\n";
     if ($dimensionsChanged) {
         echo "dimensions changed...\n";
         $clearCacheSimple = array();
         foreach ($componentClasses as $c) {
             $idPrefix = str_replace(array('.', '>'), array('___', '____'), $c) . '_';
             $clearCacheSimple[] = 'media-output-' . $idPrefix;
             $clearCacheSimple[] = 'media-output-mtime-' . $idPrefix;
             foreach (glob('cache/media/' . $idPrefix . '*') as $f) {
                 echo $f . " [DELETED]\n";
                 unlink($f);
             }
         }
         Kwf_Cache_Simple::delete($clearCacheSimple);
         echo "cleared media cache...\n";
     }
     if ($menuConfigChanged) {
         echo "menu config changed...\n";
         Kwf_Acl::clearCache();
         echo "cleared acl cache...\n";
     }
     $dependentComponentClasses = array();
     foreach (Kwc_Abstract::getComponentClasses() as $c) {
         if (strpos($c, '.') !== false) {
             $params = substr($c, strpos($c, '.') + 1);
             foreach ($componentClasses as $i) {
                 if (strpos($params, $i) !== false) {
                     $dependentComponentClasses[] = $c;
                 }
             }
         }
     }
     if ($dependentComponentClasses) {
         echo "dependent componentClasses: " . count($dependentComponentClasses) . " (Cc, Trl)\n";
         echo implode(', ', $dependentComponentClasses) . "\n";
         self::_clearComponentSettingsCache($dependentComponentClasses, $setting);
     }
 }