private function _getAllLanguages() { $config = Zend_Registry::get('config'); $langs = array(); if ($config->webCodeLanguage) { $langs[] = $config->webCodeLanguage; } if ($config->languages) { foreach ($config->languages as $lang => $name) { $langs[] = $lang; } } if (Kwf_Component_Data_Root::getComponentClass()) { foreach (Kwc_Abstract::getComponentClasses() as $c) { if (Kwc_Abstract::getFlag($c, 'hasAvailableLanguages')) { foreach (call_user_func(array($c, 'getAvailableLanguages'), $c) as $i) { if (!in_array($i, $langs)) { $langs[] = $i; } } } } } $langs = array_unique($langs); return $langs; }
public static function getLanguages() { $config = Zend_Registry::get('config'); $langs = array(); if ($config->webCodeLanguage) { $langs[] = $config->webCodeLanguage; } $possibleUserLanguages = array(); if ($config->languages) { foreach ($config->languages as $lang => $name) { $possibleUserLanguages[] = $lang; } } $userModel = Kwf_Registry::get('userModel'); if (isset($userModel->getAuthedUser()->language) && $userModel->getAuthedUser()->language && in_array($userModel->getAuthedUser()->language, $possibleUserLanguages)) { $langs[] = $userModel->getAuthedUser()->language; } if (Kwf_Component_Data_Root::getComponentClass()) { $lngClasses = array(); foreach (Kwc_Abstract::getComponentClasses() as $c) { if (Kwc_Abstract::hasSetting($c, 'baseProperties') && in_array('language', Kwc_Abstract::getSetting($c, 'baseProperties'))) { $lngClasses[] = $c; } } $lngs = Kwf_Component_Data_Root::getInstance()->getComponentsBySameClass($lngClasses, array('ignoreVisible' => true)); foreach ($lngs as $c) { if (Kwf_Registry::get('acl')->getComponentAcl()->isAllowed($userModel->getAuthedUser(), $c)) { $langs[] = $c->getLanguage(); } } } return array_unique($langs); }
public function __construct() { $providers = array(); if (Kwf_Component_Data_Root::getComponentClass()) { $providers[] = new Kwf_Assets_Components_Provider(Kwf_Component_Data_Root::getComponentClass()); } else { $providers[] = new Kwf_Assets_Provider_NoComponents(); } if (file_exists('dependencies.ini')) { $providers[] = new Kwf_Assets_Provider_Ini('dependencies.ini'); } $providers = array_merge($providers, self::getVendorProviders()); $providers[] = new Kwf_Assets_Provider_IniNoFiles(); $providers[] = new Kwf_Assets_Provider_Dynamic(); $providers[] = new Kwf_Assets_TinyMce_Provider(); $providers[] = new Kwf_Assets_Provider_JsClassKwf(); $providers[] = new Kwf_Assets_Provider_JsClass('./ext', 'web/ext', 'App'); $providers[] = new Kwf_Assets_Provider_CssByJs(array('web/ext', 'kwf/commonjs')); $providers[] = new Kwf_Assets_Provider_ExtTrl(); $providers[] = new Kwf_Assets_Provider_ErrorHandler(); $providers[] = new Kwf_Assets_Provider_AtRequires(); $providers[] = new Kwf_Assets_Provider_ViewsUser(); $providers[] = new Kwf_Assets_Modernizr_Provider(); $providers[] = new Kwf_Assets_CommonJs_Provider(); $providers[] = new Kwf_Assets_Provider_KwfCommonJs(); $providers[] = new Kwf_Assets_CommonJs_JQueryPluginProvider(); $providers[] = new Kwf_Assets_ResponsiveEl_Provider(); parent::__construct($providers); }
/** * Gibt den Komponenten-Baum aus (für CLI) **/ public static function output() { $componentClass = Kwf_Component_Data_Root::getComponentClass(); $model = new self(); $maxComponentLength = self::_maxComponentLength($componentClass, $model); self::_output(null, $model, $maxComponentLength); }
protected function _renderHtml($exception, $msg) { if ($this->getComponentClass() && Kwf_Component_Data_Root::getComponentClass() && isset($_SERVER['REQUEST_URI']) && isset($_SERVER['HTTP_HOST'])) { $uri = $_SERVER['REQUEST_URI']; $acceptLanguage = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : null; $data = null; while (!$data && $uri) { $data = Kwf_Component_Data_Root::getInstance()->getPageByUrl('http://' . $_SERVER['HTTP_HOST'] . $uri, $acceptLanguage); $uri = substr($uri, 0, strrpos($uri, '/')); } if (!$data) { $data = Kwf_Component_Data_Root::getInstance()->getPageByUrl('http://' . $_SERVER['HTTP_HOST'] . '/', $acceptLanguage); } if (!$data) { $data = Kwf_Component_Data_Root::getInstance(); } $notFound = Kwf_Component_Data_Root::getInstance()->getComponentByClass($this->getComponentClass(), array('limit' => 1, 'subroot' => $data)); if ($notFound) { return str_replace('{logId}', $this->_logId, $notFound->render(null, true)); } } class_exists('Kwf_Trl'); //eventually trigger autoloader $view = Kwf_Debug::getView(); $view->exception = $msg; $view->message = $exception->getMessage(); $view->requestUri = isset($_SERVER['REQUEST_URI']) ? htmlspecialchars($_SERVER['REQUEST_URI']) : ''; $view->debug = Kwf_Exception::isDebug(); try { if (Kwf_Registry::get('userModel') && Kwf_Registry::get('userModel')->getAuthedUserRole() == 'admin') { $view->debug = true; } } catch (Exception $e) { } if (Kwf_Component_Data_Root::getComponentClass()) { $data = null; if (isset($_SERVER['HTTP_HOST'])) { //try to get the page of current domain to get correct language $acceptLanguage = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : null; try { $data = Kwf_Component_Data_Root::getInstance()->getPageByUrl('http://' . $_SERVER['HTTP_HOST'] . '/', $acceptLanguage); } catch (Exception $e) { } } if (!$data) { $data = Kwf_Component_Data_Root::getInstance(); } $view->data = $data; //can be used for trl } else { //no components used, use Kwf_Trl object that also has trl() methods //HACK, but will work if only trl is used in template $view->data = Kwf_Trl::getInstance(); } $template = $this->getTemplate(); $template = strtolower(Zend_Filter::filterStatic($template, 'Word_CamelCaseToDash') . '.tpl'); return $view->render($template); }
public function indexAction() { parent::indexAction(); $this->view->assign(Kwc_Admin::getInstance($this->_getParam('class'))->getExtConfig()); $this->view->baseParams = array('id' => $this->_getParam('componentId'), 'componentId' => $this->_getParam('componentId')); if ($this->getRequest()->module == 'component_test' && isset($this->view->controllerUrl)) { $this->view->controllerUrl = str_replace('/admin/component/edit/', '/kwf/componentedittest/' . Kwf_Component_Data_Root::getComponentClass() . '/', $this->view->controllerUrl); } }
public function getTypes() { $types = array(); if (Kwf_Component_Data_Root::getComponentClass()) { $types[] = new Kwf_Util_Build_Types_ComponentSettings(); } $types[] = new Kwf_Util_Build_Types_Trl(); $types[] = new Kwf_Util_Build_Types_Events(); $types[] = new Kwf_Util_Build_Types_Assets(); return $types; }
public function __construct($iniFile) { $providers = array(); if (Kwf_Component_Data_Root::getComponentClass()) { $providers[] = new Kwf_Assets_Components_Provider(Kwf_Component_Data_Root::getComponentClass()); } $providers[] = new Kwf_Assets_Provider_Ini(KWF_PATH . '/dependencies.ini'); $providers[] = new Kwf_Assets_Provider_Ini($iniFile); $providers[] = new Kwf_Assets_Provider_Dynamic(); parent::__construct($providers, array()); }
public function indexAction() { $this->_config = Kwf_Registry::get('config'); $assetsType = 'Frontend'; $rootComponent = Kwf_Component_Data_Root::getComponentClass(); foreach ($this->_config->assets->{$assetsType} as $d => $v) { if ($v) { $this->_processDependency($assetsType, $d, $rootComponent); } } exit; }
protected function _build() { if (!file_exists('build/trl')) { mkdir('build/trl'); } foreach (glob('build/trl/*') as $f) { unlink($f); } $config = Zend_Registry::get('config'); $langs = array(); if ($config->webCodeLanguage) { $langs[] = $config->webCodeLanguage; } if ($config->languages) { foreach ($config->languages as $lang => $name) { $langs[] = $lang; } } try { if (Kwf_Component_Data_Root::getComponentClass()) { foreach (Kwc_Abstract::getComponentClasses() as $c) { if (Kwc_Abstract::getFlag($c, 'hasAvailableLanguages')) { foreach (call_user_func(array($c, 'getAvailableLanguages'), $c) as $i) { if (!in_array($i, $langs)) { $langs[] = $i; } } } } } } catch (Kwf_Trl_BuildFileMissingException $e) { $originatingException = $e->getSettingsNonStaticTrlException(); if ($originatingException) { throw $originatingException; } throw $e; } foreach ($langs as $l) { if ($l != $config->webCodeLanguage) { $c = $this->_loadTrlArray(Kwf_Trl::SOURCE_WEB, $l, true); file_put_contents(Kwf_Trl::generateBuildFileName(Kwf_Trl::SOURCE_WEB, $l, true), serialize($c)); $c = $this->_loadTrlArray(Kwf_Trl::SOURCE_WEB, $l, false); file_put_contents(Kwf_Trl::generateBuildFileName(Kwf_Trl::SOURCE_WEB, $l, false), serialize($c)); } if ($l != 'en') { $c = $this->_loadTrlArray(Kwf_Trl::SOURCE_KWF, $l, true); file_put_contents(Kwf_Trl::generateBuildFileName(Kwf_Trl::SOURCE_KWF, $l, true), serialize($c)); $c = $this->_loadTrlArray(Kwf_Trl::SOURCE_KWF, $l, false); file_put_contents(Kwf_Trl::generateBuildFileName(Kwf_Trl::SOURCE_KWF, $l, false), serialize($c)); } } }
public static function getDomains() { if (!Kwf_Component_Data_Root::getComponentClass()) { return null; } $ret = array(); $acl = Zend_Registry::get('acl'); $user = Kwf_Registry::get('userModel')->getAuthedUser(); foreach (Kwf_Component_Data_Root::getInstance()->getDomainComponents() as $component) { if ($acl->getComponentAcl()->isAllowed($user, $component)) { $ret[$component->dbId] = $component->name; } } return $ret; }
public function getTypes() { $types = array(); if (Kwf_Component_Data_Root::getComponentClass()) { $types[] = new Kwf_Util_Build_Types_ComponentSettings(); } $types[] = new Kwf_Util_Build_Types_Trl(); $types[] = new Kwf_Util_Build_Types_Events(); $types[] = new Kwf_Util_Build_Types_Assets(); if (Kwf_Component_Data_Root::getComponentClass()) { $types[] = new Kwf_Util_Build_Types_RteStyles(); } $ev = new Kwf_Events_Event_FetchBuildTypes(get_class($this)); Kwf_Events_Dispatcher::fireEvent($ev); $types = array_merge($types, $ev->types); return $types; }
public static function getDomains() { if (!Kwf_Component_Data_Root::getComponentClass()) { return null; } $domainComponentClasses = array(); foreach (Kwc_Abstract::getComponentClasses() as $c) { if (Kwc_Abstract::hasSetting($c, 'baseProperties') && in_array('domain', Kwc_Abstract::getSetting($c, 'baseProperties'))) { $domainComponentClasses[] = $c; } } $domains = array(); foreach (Kwf_Component_Data_Root::getInstance()->getComponentsBySameClass($domainComponentClasses, array('ignoreVisible' => true)) as $c) { $acl = Zend_Registry::get('acl'); if ($acl->getComponentAcl()->isAllowed(Kwf_Registry::get('userModel')->getAuthedUser(), $c)) { $domains[$c->dbId] = $c->name; } } return $domains; }
protected function _afterInsert() { parent::_afterInsert(); $c = Kwc_Shop_Cart_Checkout_Payment_Wirecard_LogModel::decodeCallback($this->custom); if ($c && $c['cb']) { $ret = false; if (Kwf_Loader::isValidClass($c['cb'])) { $ret = call_user_func(array($c['cb'], 'processIpn'), $this, $c['data']); } else { if (Kwf_Component_Data_Root::getComponentClass()) { $component = Kwf_Component_Data_Root::getInstance()->getComponentById($c['cb']); if ($component) { $ret = $component->getComponent()->processIpn($this, $c['data']); } } } $this->callback_success = $ret; $this->save(); } }
public function __construct($testDependenciesIni, $dependencyName = 'TestFiles', $rootComponentClass = null) { $this->_testDependenciesIni = $testDependenciesIni; if (is_null($rootComponentClass)) { $rootComponentClass = Kwf_Component_Data_Root::getComponentClass(); } $this->_rootComponentClass = $rootComponentClass; $testDependenciesIni = str_replace('_', '/', $testDependenciesIni) . '/dependencies.ini'; if (file_exists('tests/' . $testDependenciesIni)) { $testDependenciesIni = 'tests/' . $testDependenciesIni; } else { if (file_exists(KWF_PATH . '/tests/' . $testDependenciesIni)) { $testDependenciesIni = KWF_PATH . '/tests/' . $testDependenciesIni; } } $providers = array(); $providers[] = new Kwf_Assets_Provider_Ini(KWF_PATH . '/dependencies.ini'); $providers[] = new Kwf_Assets_Provider_Ini($testDependenciesIni); $providers = array_merge($providers, Kwf_Assets_ProviderList_Abstract::getVendorProviders()); if (file_exists('dependencies.ini')) { $providers[] = new Kwf_Assets_Provider_Ini('dependencies.ini'); } $providers[] = new Kwf_Assets_Provider_IniNoFiles(); $providers[] = new Kwf_Assets_Provider_Components($rootComponentClass); $providers[] = new Kwf_Assets_Provider_Dynamic(); $providers[] = new Kwf_Assets_TinyMce_Provider(); $providers[] = new Kwf_Assets_Provider_KwfUtils(); $providers[] = new Kwf_Assets_Provider_DefaultAssets(); $providers[] = new Kwf_Assets_Provider_AtRequires(); $providers[] = new Kwf_Assets_Provider_ViewsUser(); $providers[] = new Kwf_Assets_Provider_ErrorHandler(); $providers[] = new Kwf_Assets_Provider_JsClassKwf(); $providers[] = new Kwf_Assets_Modernizr_Provider(); $providerList = new Kwf_Assets_ProviderList_Abstract($providers); parent::__construct($providerList, $dependencyName); }
public static function getSharedComponents($component) { static $sharedClasses = array(); if (!isset($sharedClasses[Kwf_Component_Data_Root::getComponentClass()])) { //pro root klasse cachen weil die sich ja bei den tests ändern kann $componentClasses = Kwc_Abstract::getComponentClasses(); $sharedClasses[Kwf_Component_Data_Root::getComponentClass()] = array(); foreach ($componentClasses as $componentClass) { $class = Kwc_Abstract::getFlag($componentClass, 'sharedDataClass'); if ($class) { $sharedClasses[Kwf_Component_Data_Root::getComponentClass()][$componentClass] = $class; } } } $ret = array(); foreach ($sharedClasses[Kwf_Component_Data_Root::getComponentClass()] as $componentClass => $sharedClass) { $targetComponent = null; if (is_instance_of($component->componentClass, $sharedClass)) { $targetComponent = $component; } if (!$targetComponent) { $components = $component->getRecursiveChildComponents(array('componentClass' => $sharedClass, 'pseudoPage' => false)); if (count($components) > 0) { $targetComponent = array_shift($components); } } if ($targetComponent) { $ret[$componentClass] = $targetComponent; } } return $ret; }
public function getComponentAcl() { if (!Kwf_Component_Data_Root::getComponentClass()) { return null; } if (!isset($this->_componentAcl)) { $this->_componentAcl = new $this->_componentAclClass($this->_getRoleRegistry()); } return $this->_componentAcl; }
public function graphAction() { $svg = $this->_process(Kwf_Component_Data_Root::getComponentClass(), 'root'); $svg = '<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/ REC-SVG-20010904/DTD/svg10.dtd"> <svg width="' . $this->_maxX . '" height="' . $this->_maxY . '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g style="stroke:black;fill:white" transform="translate(0,0)"> ' . $svg . ' <!--<rect x="0" y="0" width="100" height="30" /> <text x="20" y="20" width="100">Root</text> <ellipse cx="170" cy="100" rx="60" ry="20" /> <text x="170" y="100">Foo</text> <line x1="50" y1="30" x2="50" y2="100" /> <line x1="50" y1="100" x2="110" y2="100" />--> </g> </svg>'; $file = tempnam('/tmp', 'svg'); file_put_contents($file . '.svg', $svg); system("convert {$file}.svg {$file}.png"); header('Content-Type: image/png'); echo file_get_contents("{$file}.png"); unlink("{$file}"); unlink("{$file}.svg"); unlink("{$file}.png"); exit; }
private function _checkTheSizes($html, $largeImageNum, $largeWidth, $largeHeight, $smallImageNum, $smallWidth, $smallHeight) { // getMediaOutput aufrufen, damit Cache-Meta geschrieben wird (wegen d0cf3812b20fa19c40617ac5b08ed08a18ff808d) // muss so gemacht werden, weil der request über getimagesize weiter unten // nicht das FnF-Cache Model dieses Request schreiben kann preg_match_all('#/media/([^/]+)/([^/]+)/([^/]+)#', $html, $matches); foreach ($matches[0] as $key => $m) { if (substr($matches[3][$key], 0, 10) == 'dh-{width}') { continue; } Kwf_Media::getOutput($matches[1][$key], $matches[2][$key], $matches[3][$key]); } preg_match('#^.*?<a.+?"width":(\\d+),"height":(\\d+).+?<img.+?src=".+?(\\d+)\\.jpg.+width="(\\d+)".+height="(\\d+)".+$#ms', $html, $matches); $this->assertEquals($matches[1], $largeWidth); $this->assertEquals($matches[2], $largeHeight); $this->assertEquals($matches[3], $smallImageNum); $this->assertEquals($matches[4], $smallWidth); $this->assertEquals($matches[5], $smallHeight); preg_match('#href="(.+?)".*? src="(.+?)"#ms', $html, $matches); $smallSrcSize = getimagesize('http://' . Kwf_Registry::get('testDomain') . $matches[2]); $this->assertEquals($smallWidth, $smallSrcSize[0]); $this->assertEquals($smallHeight, $smallSrcSize[1]); preg_match('#data-kwc-lightbox="([^"]*)"#ms', $html, $matches); $lightboxData = json_decode(htmlspecialchars_decode($matches[1]), true); $c = Kwf_Component_Data_Root::getInstance()->getPageByUrl('http://' . Kwf_Registry::get('testDomain') . str_replace('/kwf/kwctest/' . Kwf_Component_Data_Root::getComponentClass(), '', $lightboxData['lightboxUrl']), ''); $c->render(true, true); //first render in-process so we find the cache entry when doing a clear-cache //then render "real" thru http $largeHtml = file_get_contents('http://' . Kwf_Registry::get('testDomain') . $lightboxData['lightboxUrl']); preg_match('#class="lightboxBody.*?<img .*?src="(.*?)"#s', $largeHtml, $matches); $this->assertRegExp('#' . $largeImageNum . '\\.jpg#', $matches[1]); $largeSrcSize = getimagesize('http://' . Kwf_Registry::get('testDomain') . $matches[1]); $this->assertEquals($largeWidth, $largeSrcSize[0]); $this->assertEquals($largeHeight, $largeSrcSize[1]); }
protected function _build() { if (!file_exists('build/trl')) { mkdir('build/trl'); } foreach (glob('build/trl/*') as $f) { unlink($f); } $config = Zend_Registry::get('config'); $langs = array(); if ($config->webCodeLanguage) { $langs[] = $config->webCodeLanguage; } if ($config->languages) { foreach ($config->languages as $lang => $name) { $langs[] = $lang; } } try { if (Kwf_Component_Data_Root::getComponentClass()) { foreach (Kwc_Abstract::getComponentClasses() as $c) { if (Kwc_Abstract::getFlag($c, 'hasAvailableLanguages')) { foreach (call_user_func(array($c, 'getAvailableLanguages'), $c) as $i) { if (!in_array($i, $langs)) { $langs[] = $i; } } } } } } catch (Kwf_Exception $e) { $exceptionLocation = null; foreach ($e->getTrace() as $trace) { if (strpos($trace['file'], 'Kwf/Trl.php') === false && ($trace['function'] == 'trlKwf' || $trace['function'] == 'trl' || $trace['function'] == 'trlcKwf' || $trace['function'] == 'trlc' || $trace['function'] == 'trlpKwf' || $trace['function'] == 'trlp' || $trace['function'] == 'trlcpKwf' || $trace['function'] == 'trlcp')) { $exceptionLocation = $trace; break; } } if ($exceptionLocation) { $file = $exceptionLocation['file']; $line = $exceptionLocation['line']; throw new Kwf_Exception("In getSettings-method only static version of trl is allowed {$file}:{$line}"); } else { throw $e; } } foreach ($langs as $l) { if ($l != $config->webCodeLanguage) { $c = $this->_loadTrlArray(Kwf_Trl::SOURCE_WEB, $l, true); file_put_contents(Kwf_Trl::generateBuildFileName(Kwf_Trl::SOURCE_WEB, $l, true), serialize($c)); $c = $this->_loadTrlArray(Kwf_Trl::SOURCE_WEB, $l, false); file_put_contents(Kwf_Trl::generateBuildFileName(Kwf_Trl::SOURCE_WEB, $l, false), serialize($c)); } if ($l != 'en') { $c = $this->_loadTrlArray(Kwf_Trl::SOURCE_KWF, $l, true); file_put_contents(Kwf_Trl::generateBuildFileName(Kwf_Trl::SOURCE_KWF, $l, true), serialize($c)); $c = $this->_loadTrlArray(Kwf_Trl::SOURCE_KWF, $l, false); file_put_contents(Kwf_Trl::generateBuildFileName(Kwf_Trl::SOURCE_KWF, $l, false), serialize($c)); } } }
public static function fireEvent($event) { $logger = Kwf_Events_Log::getInstance(); if ($logger && $logger->indent == 0) { $logger->info('----'); $logger->resetTimer(); } $class = $event->class; $eventClass = get_class($event); $cacheId = '-ev-lst-' . Kwf_Component_Data_Root::getComponentClass() . '-' . $eventClass . '-' . $class; $callbacks = Kwf_Cache_SimpleStatic::fetch($cacheId); if ($callbacks === false) { $listeners = self::getAllListeners(); $callbacks = array(); if ($class && isset($listeners[$eventClass][$class])) { $callbacks = $listeners[$eventClass][$class]; } if (isset($listeners[$eventClass]['all'])) { $callbacks = array_merge($callbacks, $listeners[$eventClass]['all']); } Kwf_Cache_SimpleStatic::add($cacheId, $callbacks); } if ($logger) { $logger->info($event->__toString() . ':'); $logger->indent++; } static $callbackBenchmark = array(); foreach ($callbacks as $callback) { $ev = call_user_func(array($callback['class'], 'getInstance'), $callback['class'], $callback['config']); if ($logger) { $msg = '-> ' . $callback['class'] . '::' . $callback['method'] . '(' . Kwf_Debug::_btArgsString($callback['config']) . ')'; $logger->info($msg . ':'); $start = microtime(true); } $ev->{$callback['method']}($event); if ($logger) { if (!isset($callbackBenchmark[$callback['class'] . '::' . $callback['method']])) { $callbackBenchmark[$callback['class'] . '::' . $callback['method']] = array('calls' => 0, 'time' => 0); } $callbackBenchmark[$callback['class'] . '::' . $callback['method']]['calls']++; $callbackBenchmark[$callback['class'] . '::' . $callback['method']]['time'] += (microtime(true) - $start) * 1000; //ATM includes everything which is missleading } } if ($logger) { $logger->indent--; if ($logger->indent == 0) { foreach ($callbackBenchmark as $cb => $i) { $logger->info(sprintf("% 3d", $i['calls']) . "x " . sprintf("%3d", round($i['time'], 0)) . " ms: {$cb}"); } $callbackBenchmark = array(); } } self::$eventsCount++; }
public function openKwcEdit($componentClass, $componentId) { $url = '/kwf/componentedittest/' . Kwf_Component_Data_Root::getComponentClass() . '/' . $componentClass . '/Index' . '?componentId=' . $componentId; return $this->open($url); }
/** * Returns componentClasses that match a given class in their inheritance chain * * Fast, as the result is static and will be cached * * @param string * @return string[] */ public static function getComponentClassesByParentClass($class) { if (!is_array($class)) { $class = array($class); } static $prefix; $cacheId = 'cclsbpc-' . implode('-', $class) . '-' . Kwf_Component_Data_Root::getComponentClass(); $ret = Kwf_Cache_SimpleStatic::fetch($cacheId, $success); if ($success) { return $ret; } $ret = array(); foreach (Kwc_Abstract::getComponentClasses() as $c) { if (in_array($c, $class) || in_array(strpos($c, '.') ? substr($c, 0, strpos($c, '.')) : $c, $class)) { $ret[] = $c; continue; } foreach (Kwc_Abstract::getParentClasses($c) as $p) { if (in_array($p, $class)) { $ret[] = $c; break; } } } Kwf_Cache_SimpleStatic::add($cacheId, $ret); return $ret; }
public static function generateCode() { $preloadIncludePaths = array(); $namespaces = (require VENDOR_PATH . '/composer/autoload_namespaces.php'); $ret = array(); foreach ($namespaces as $ns => $dirs) { $preloadIncludePaths = array_merge($preloadIncludePaths, $dirs); } $ret = "<?php\n"; $ret .= "\$cwd = getcwd();\n"; $preloadClasses = array('Kwf_Benchmark', 'Kwf_Loader', 'Kwf_Debug'); $ret .= "if (!class_exists('Kwf_Loader', false)) {\n"; $ret .= self::_generatePreloadClassesCode($preloadClasses, $preloadIncludePaths); $ret .= "}\n"; $ret .= "Kwf_Benchmark::\$startTime = microtime(true);\n"; $ret .= "\n"; //override the default cache (/tmp) dir used by Zend_Cache_Backend to have the cache per web $ret .= "\$_SERVER['TMP'] = 'cache/zend';\n"; //only replace configured value to avoid spoofing //required eg. behind load balancers if (Kwf_Config::getValueArray('server.replaceVars.remoteAddr')) { $a = Kwf_Config::getValueArray('server.replaceVars.remoteAddr'); if (substr($a['if'], -2) == '.*') { $comparison = "substr(\$_SERVER['REMOTE_ADDR'], 0, " . (strlen($a['if']) - 1) . ") == '" . substr($a['if'], 0, -1) . "'"; } else { $comparison = "\$_SERVER['REMOTE_ADDR'] == '{$a['if']}'"; } $ret .= "\nif (isset(\$_SERVER['REMOTE_ADDR']) && {$comparison} && isset(\$_SERVER['{$a['replace']}'])) {\n"; $ret .= " \$_SERVER['REMOTE_ADDR'] = \$_SERVER['{$a['replace']}'];\n"; if (isset($a['removeTrailing'])) { $ret .= " if (substr(\$_SERVER['REMOTE_ADDR'], -" . strlen($a['removeTrailing']) . ") == '" . $a['removeTrailing'] . "') {\n"; $ret .= " \$_SERVER['REMOTE_ADDR'] = substr(\$_SERVER['REMOTE_ADDR'], 0, -" . strlen($a['removeTrailing']) . ");\n"; $ret .= " }\n"; } $ret .= "}\n"; } //try different values, if one spoofs this this is no security issue $ret .= "if (isset(\$_SERVER['HTTP_SSL_SESSION_ID'])) \$_SERVER['HTTPS'] = 'on';\n"; $ret .= "if (isset(\$_SERVER['HTTP_SESSION_ID_TAG'])) \$_SERVER['HTTPS'] = 'on';\n"; $ret .= "if (isset(\$_SERVER['HTTP_X_FORWARDED_PROTO']) && \$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {\n"; $ret .= " \$_SERVER['HTTPS'] = 'on';\n"; $ret .= "}\n"; if (VENDOR_PATH == '../vendor') { $kwfPath = '..'; } else { $kwfPath = VENDOR_PATH . '/koala-framework/koala-framework'; } $ret .= "if (!defined('KWF_PATH')) define('KWF_PATH', '{$kwfPath}');\n"; $ret .= "if (!defined('VENDOR_PATH')) define('VENDOR_PATH', 'vendor');\n"; $ip = array(); foreach (include VENDOR_PATH . '/composer/include_paths.php' as $p) { if (VENDOR_PATH == '../vendor') { $cwd = getcwd(); $cwd = substr($cwd, 0, strrpos($cwd, '/')); self::_verifyPathInParentPath($p, $cwd); $p = '../' . substr($p, strlen($cwd) + 1); } else { self::_verifyPathInParentPath($p, getcwd()); $p = substr($p, strlen(getcwd()) + 1); } $ip[] = "'.\$cwd.'/" . $p; } $ip[] = '.'; foreach (Kwf_Config::getValueArray('includepath') as $t => $p) { if ($p) { $ip[] = $p; } } $ip = array_unique($ip); $ret .= "Kwf_Loader::setIncludePath('" . implode(PATH_SEPARATOR, $ip) . "');\n"; $ret .= "\n"; $ret .= "\n"; $ret .= "error_reporting(E_ALL & ~E_STRICT);\n"; $ret .= "set_error_handler(array('Kwf_Debug', 'handleError'), E_ALL & ~E_STRICT);\n"; $ret .= "set_exception_handler(array('Kwf_Debug', 'handleException'));\n"; $ret .= "\n"; $ret .= "\$requestUri = isset(\$_SERVER['REQUEST_URI']) ? \$_SERVER['REQUEST_URI'] : null;\n"; if (Kwf_Setup::getBaseUrl()) { $ret .= "if (\$requestUri !== null) {\n"; $ret .= " if (substr(\$requestUri, 0, " . strlen(Kwf_Setup::getBaseUrl()) . ") != '" . Kwf_Setup::getBaseUrl() . "') {\n"; $ret .= " echo 'Invalid baseUrl, expected \\'" . Kwf_Setup::getBaseUrl() . "\\'';\n"; $ret .= " exit;\n"; $ret .= " }\n"; $ret .= " \$requestUri = substr(\$requestUri, " . strlen(Kwf_Setup::getBaseUrl()) . ");\n"; $ret .= "}\n"; } $ret .= "\n"; if (Kwf_Config::getValue('debug.benchmark') || Kwf_Config::getValue('debug.benchmarklog')) { //vor registerAutoload aufrufen damit wir dort benchmarken können $ret .= "Kwf_Benchmark::enable();\n"; } else { $ret .= "if (isset(\$_REQUEST['KWF_BENCHMARK'])) {\n"; foreach (Kwf_Config::getValueArray('debug.benchmarkActivatorIp') as $activatorIp) { $ret .= " if (\$_SERVER['REMOTE_ADDR'] == '{$activatorIp}') Kwf_Benchmark::enable();\n"; } $ret .= "}\n"; } $ret .= "Kwf_Loader::registerAutoload();\n"; $ret .= "\n"; $ret .= "//here to be as fast as possible (and have no session)\n"; $ret .= "if (\$requestUri == '/kwf/json-progress-status'\n"; $ret .= ") {\n"; $ret .= " Kwf_Util_ProgressBar_DispatchStatus::dispatch();\n"; $ret .= "}\n"; $ret .= "\n"; $ret .= "//here to have less dependencies\n"; $ret .= "if (\$requestUri == '/kwf/check-config'\n"; $ret .= ") {\n"; $ret .= " Kwf_Util_Check_Config::dispatch();\n"; $ret .= "}\n"; $ret .= "if (PHP_SAPI == 'cli' && isset(\$_SERVER['argv'][1]) && \$_SERVER['argv'][1] == 'check-config') {\n"; $ret .= " Kwf_Util_Check_Config::dispatch();\n"; $ret .= "}\n"; $ret .= "\$ml = ini_get('memory_limit');\n"; $ret .= "if (strtoupper(substr(\$ml, -1)) == 'M') {\n"; $ret .= " if ((int)substr(\$ml, 0, -1) < 128) {\n"; $ret .= " ini_set('memory_limit', '128M');\n"; $ret .= " }\n"; $ret .= "}\n"; if (Kwf_Config::getValue('debug.error.log')) { $ret .= "ini_set('display_errors', false);\n"; } if (function_exists('mb_internal_encoding')) { $ret .= "mb_internal_encoding('UTF-8');\n"; } if (PHP_VERSION_ID < 50600) { if (function_exists('iconv_set_encoding')) { $ret .= "iconv_set_encoding('internal_encoding', 'utf-8');\n"; } } else { $ret .= "ini_set('default_charset', 'UTF-8');\n"; } $ret .= "umask(000); //nicht 002 weil wwwrun und kwcms in unterschiedlichen gruppen\n"; //this is *NOT* recommended but still works somehow $ret .= "if (get_magic_quotes_gpc()) Kwf_Util_UndoMagicQuotes::undoMagicQuotes();\n"; if (Kwf_Config::getValue('debug.firephp') || Kwf_Config::getValue('debug.querylog')) { $ret .= "if (PHP_SAPI != 'cli') {\n"; if (Kwf_Config::getValue('debug.firephp')) { $ret .= " require_once '" . Kwf_Config::getValue('externLibraryPath.firephp') . "/FirePHPCore/FirePHP.class.php';\n"; $ret .= " FirePHP::init();\n"; $ret .= " ob_start();\n"; } $ret .= "}\n"; } $ret .= "register_shutdown_function(array('Kwf_Setup', 'shutDown'));\n"; $ret .= "if (!class_exists('Kwf_Config', false)) {\n"; $preloadClasses = array('Kwf_Config', 'Kwf_Cache_Simple', 'Kwf_Cache_SimpleStatic'); $ret .= self::_generatePreloadClassesCode($preloadClasses, $preloadIncludePaths); $ret .= " if (substr(\$requestUri, 0, 8) != '/assets/') {\n"; $preloadClasses = array(); $preloadClasses[] = 'Zend_Registry'; $preloadClasses[] = 'Kwf_Registry'; $preloadClasses[] = 'Kwf_Trl'; $preloadClasses[] = 'Kwf_Util_SessionHandler'; $preloadClasses[] = 'Kwf_Util_Memcache'; $preloadClasses[] = 'Zend_Session'; $preloadClasses[] = 'Kwf_Benchmark_Counter'; $preloadClasses[] = 'Kwf_Benchmark_Counter_Apc'; if (Kwf_Component_Data_Root::getComponentClass()) { //only load component related classes if it is a component web $preloadClasses[] = 'Kwf_Component_Data'; $preloadClasses[] = 'Kwf_Component_Data_Root'; $preloadClasses[] = 'Kwf_Component_Settings'; $preloadClasses[] = 'Kwf_Component_Renderer_Abstract'; $preloadClasses[] = 'Kwf_Component_Renderer'; $preloadClasses[] = 'Kwf_Component_Cache'; $preloadClasses[] = 'Kwf_Component_Cache_Mysql'; $preloadClasses[] = 'Kwf_Component_Cache_Memory'; $preloadClasses[] = 'Kwf_Component_Abstract_ContentSender_Abstract'; $preloadClasses[] = 'Kwf_Component_Abstract_ContentSender_Default'; } $ret .= self::_generatePreloadClassesCode($preloadClasses, $preloadIncludePaths); $ret .= " } else {\n"; $preloadClasses = array(); $preloadClasses[] = 'Kwf_Assets_Loader'; $preloadClasses[] = 'Kwf_Media_Output'; $ret .= self::_generatePreloadClassesCode($preloadClasses, $preloadIncludePaths); $ret .= " }\n"; $ret .= "}\n"; Kwf_Cache_Simple::$backend = null; //unset to re-calculate $ret .= "Kwf_Cache_Simple::\$backend = '" . Kwf_Cache_Simple::getBackend() . "';\n"; if (Kwf_Config::getValue('server.memcache.host')) { $host = Kwf_Config::getValue('server.memcache.host'); if ($host == '%webserverHostname%') { if (PHP_SAPI == 'cli') { $host = Kwf_Util_Apc::callUtil('get-hostname', array(), array('returnBody' => true, 'skipCache' => true)); } else { $host = php_uname('n'); } } $ret .= "Kwf_Cache_Simple::\$memcacheHost = '" . $host . "';\n"; $ret .= "Kwf_Cache_Simple::\$memcachePort = '" . Kwf_Config::getValue('server.memcache.port') . "';\n"; } $configSection = call_user_func(array(Kwf_Setup::$configClass, 'getDefaultConfigSection')); $ret .= "Kwf_Setup::\$configSection = '" . $configSection . "';\n"; $ret .= "if (substr(\$requestUri, 0, 8) == '/assets/') {\n"; $ret .= " Kwf_Assets_Loader::load(\$requestUri);\n"; $ret .= "}\n"; if (Kwf_Config::getValue('debug.benchmarkCounter')) { //vor registerAutoload aufrufen damit wir dort benchmarken können $ret .= "Kwf_Benchmark::enableLog();\n"; } $ret .= "Zend_Registry::setClassName('Kwf_Registry');\n"; $ret .= "\$host = isset(\$_SERVER['HTTP_HOST']) ? \$_SERVER['HTTP_HOST'] : null;\n"; $ret .= "session_name('SESSION_" . Kwf_Config::getValue('application.id') . "');\n"; if (Kwf_Config::getValue('server.https') !== 'unknown') { $redirectHttpsCode = " if (\$_SERVER['REQUEST_METHOD'] != 'GET') {\n"; $redirectHttpsCode .= " header('HTTP/1.1 400 Bad Request');\n"; $redirectHttpsCode .= " echo 'Invalid protocol, https required';\n"; $redirectHttpsCode .= " exit;\n"; $redirectHttpsCode .= " }\n"; $redirectHttpsCode .= " \$redirect = 'https://'.\$_SERVER['HTTP_HOST'].\$_SERVER['REQUEST_URI'];\n"; $redirectHttpsCode .= " header('Location: '.\$redirect, true, 301);\n"; $redirectHttpsCode .= " Kwf_Benchmark::shutDown();\n"; $redirectHttpsCode .= " exit;\n"; $redirectHttpCode = str_replace('https', 'http', $redirectHttpsCode); $ret .= "if (PHP_SAPI != 'cli') {\n"; if (!Kwf_Config::getValue('server.https')) { $ret .= "if (isset(\$_SERVER['HTTPS'])) {\n"; $ret .= " {$redirectHttpCode}"; $ret .= "}\n"; } else { if ($domains = Kwf_Config::getValueArray('server.httpsDomains')) { $ret .= "\$domains = array("; foreach ($domains as $d) { $ret .= "'" . $d . "'=>true, "; } $ret .= ");\n"; $ret .= "\$supportsHttps = isset(\$_SERVER['HTTP_HOST']) && isset(\$domains[\$_SERVER['HTTP_HOST']]);\n"; $ret .= "if (\$supportsHttps != isset(\$_SERVER['HTTPS'])) {\n"; $ret .= " if (\$supportsHttps) {\n"; $ret .= " {$redirectHttpsCode}"; $ret .= " } else {\n"; $ret .= " {$redirectHttpCode}"; $ret .= " }\n"; $ret .= "}\n"; } else { $ret .= "if (!isset(\$_SERVER['HTTPS'])) {\n"; $ret .= "{$redirectHttpsCode}"; $ret .= "}\n"; } } $ret .= "}\n"; } $ret .= "session_set_cookie_params(\n"; $ret .= " 0,"; //lifetime $ret .= " '" . Kwf_Setup::getBaseUrl() . "/',"; //path $ret .= " null,"; //domain $ret .= " isset(\$_SERVER['HTTPS']),"; //secure $ret .= " true"; //httponly $ret .= ");\n"; $ret .= "\n"; //store session data in memcache if avaliable if ((Kwf_COnfig::getValue('server.memcache.host') || Kwf_Config::getValue('aws.simpleCacheCluster')) && Kwf_Setup::hasDb()) { $ret .= "\nif (PHP_SAPI != 'cli') Kwf_Util_SessionHandler::init();\n"; } //up here to have less dependencies or broken redirect $ret .= "\n"; $ret .= "if (substr(\$requestUri, 0, 14) == '/kwf/util/apc/'\n"; $ret .= ") {\n"; $ret .= " Kwf_Util_Apc::dispatchUtils();\n"; $ret .= "}\n"; // Falls redirectToDomain eingeschalten ist, umleiten if (Kwf_Config::getValue('server.redirectToDomain')) { $ret .= "if (\$host && substr(\$requestUri, 0, 17) != '/kwf/maintenance/' && substr(\$requestUri, 0, 8) != '/assets/') {\n"; $ret .= " \$redirect = false;\n"; if ($domains = Kwf_Config::getValueArray('kwc.domains')) { $ret .= " \$domainMatches = false;\n"; foreach ($domains as $domain) { $ret .= " if ('{$domain['domain']}' == \$host) \$domainMatches = true;\n"; } $ret .= " if (!\$domainMatches) {\n"; foreach ($domains as $domain) { if (isset($domain['pattern'])) { $ret .= "\n"; $ret .= " //pattern\n"; $ret .= " if (!\$domainMatches && preg_match('/{$domain['pattern']}/', \$host)) {\n"; $ret .= " \$domainMatches = true;\n"; if (isset($domain['noRedirectPattern'])) { $ret .= "\n"; $ret .= " //noRedirectPattern\n"; $ret .= " if (!preg_match('/{$domain['noRedirectPattern']}/', \$host)) {\n"; $ret .= " \$redirect = '{$domain['domain']}';\n"; $ret .= " }\n"; } else { $ret .= " \$redirect = '{$domain['domain']}';\n"; } $ret .= " }\n"; } } $ret .= " }\n"; $ret .= " if (!\$domainMatches) {\n"; $ret .= " \$redirect = '" . Kwf_Config::getValue('server.domain') . "';\n"; $ret .= " }\n"; } else { if (Kwf_Config::getValue('server.domain')) { $ret .= " if (\$host != '" . Kwf_Config::getValue('server.domain') . "') {\n"; if (Kwf_Config::getValue('server.noRedirectPattern')) { $ret .= " if (!preg_match('/" . Kwf_Config::getValue('server.noRedirectPattern') . "/', \$host)) {\n"; $ret .= " \$redirect = '" . Kwf_Config::getValue('server.domain') . "';\n"; $ret .= " }\n"; } else { $ret .= " \$redirect = '" . Kwf_Config::getValue('server.domain') . "';\n"; } $ret .= " }\n"; } } $ret .= " if (\$redirect) {\n"; $ret .= " \$target = Kwf_Model_Abstract::getInstance('Kwf_Util_Model_Redirects')\n"; $ret .= " ->findRedirectUrl('domainPath', \$host.\$_SERVER['REQUEST_URI']);\n"; $ret .= " if (!\$target) {\n"; $ret .= " \$target = Kwf_Model_Abstract::getInstance('Kwf_Util_Model_Redirects')\n"; $ret .= " ->findRedirectUrl('domain', \$host);\n"; $ret .= " }\n"; $ret .= " if (\$target) {\n"; $ret .= " header('Location: '.\$target, true, 301);\n"; $ret .= " } else {\n"; $ret .= " //redirect to main domain (server.domain)\n"; $ret .= " header('Location: http://'.\$redirect.\$_SERVER['REQUEST_URI'], true, 301);\n"; $ret .= " }\n"; $ret .= " exit;\n"; $ret .= " }\n"; $ret .= "}\n"; } if (Kwf_Config::getValue('preLogin')) { $ret .= "if (PHP_SAPI != 'cli' && Kwf_Setup::getRequestPath()!==false) {\n"; $ret .= " \$ignore = false;\n"; foreach (Kwf_Config::getValueArray('preLoginIgnore') as $i) { $ret .= " if (substr(\$_SERVER['REDIRECT_URL'], 0, " . strlen($i) . ") == '{$i}') \$ignore = true;\n"; } foreach (Kwf_Config::getValueArray('preLoginIgnoreIp') as $i) { if (substr($i, -1) == '*') { $i = substr($i, 0, -1); $ret .= " if (substr(\$_SERVER['REMOTE_ADDR'], 0, " . strlen($i) . ") == '{$i}') \$ignore = true;\n"; } else { if (substr($i, 0, 1) == '*') { $i = substr($i, 1); $ret .= " if (substr(\$_SERVER['REMOTE_ADDR'], -" . strlen($i) . ") == '{$i}') \$ignore = true;\n"; } else { $ret .= " if (\$_SERVER['REMOTE_ADDR'] == '{$i}') \$ignore = true;\n"; } } } $ret .= " if (!\$ignore && (empty(\$_SERVER['PHP_AUTH_USER'])\n"; $ret .= " || empty(\$_SERVER['PHP_AUTH_PW'])\n"; $ret .= " || \$_SERVER['PHP_AUTH_USER']!='" . Kwf_Config::getValue('preLoginUser') . "'\n"; $ret .= " || \$_SERVER['PHP_AUTH_PW']!='" . Kwf_Config::getValue('preLoginPassword') . "')\n"; $ret .= " ) {\n"; $ret .= " \$realm = 'Testserver';\n"; $ret .= " header('WWW-Authenticate: Basic realm=\"'.\$realm.'\"');\n"; $ret .= " throw new Kwf_Exception_AccessDenied();\n"; $ret .= " }\n"; $ret .= "}\n"; } if ($parameters = Kwf_Config::getValueArray('parameterToCookie')) { foreach ($parameters as $parameter) { $ret .= "if (isset(\$_GET['" . $parameter . "'])) setcookie('" . $parameter . "', \$_GET['" . $parameter . "'], 0, '/');\n"; } } if ($tl = Kwf_Config::getValue('debug.timeLimit')) { $ret .= "set_time_limit({$tl});\n"; } $ret .= "if (substr(\$requestUri, 0, 9) == '/kwf/pma/' || \$requestUri == '/kwf/pma') {\n"; $ret .= " Kwf_Util_Pma::dispatch();\n"; $ret .= "}\n"; $ret .= "if (isset(\$_GET['kwcPreview'])) {\n"; $ret .= " \$role = Kwf_Registry::get('userModel')->getAuthedUserRole();\n"; $ret .= " if (!Kwf_Registry::get('acl')->isAllowed(\$role, 'kwf_component_preview', 'view')) {\n"; $ret .= " header('Location: /admin/component/preview/redirect/?url='.urlencode(\$_SERVER['REQUEST_URI']));\n"; $ret .= " exit;\n"; $ret .= " }\n"; $ret .= " Kwf_Component_Data_Root::setShowInvisible(true);\n"; $ret .= "}\n"; return $ret; }
public function render($ignoreCli = false) { try { $exception = $this->getException(); $msg = $exception->__toString(); if ($exception instanceof Zend_Db_Adapter_Exception) { try { foreach (Kwf_Registry::get('config')->database as $db) { $msg = str_replace($db->password, 'xxxxxx', $msg); } } catch (Exception $e) { } } if (!$ignoreCli && PHP_SAPI == 'cli') { $this->log(); file_put_contents('php://stderr', $msg . "\n"); exit(1); } class_exists('Kwf_Trl'); //eventually trigger autoloader $view = Kwf_Debug::getView(); $view->exception = $msg; $view->message = $exception->getMessage(); $view->requestUri = isset($_SERVER['REQUEST_URI']) ? htmlspecialchars($_SERVER['REQUEST_URI']) : ''; $view->debug = Kwf_Exception::isDebug() || !Kwf_Registry::get('config')->setupFinished; try { if (Kwf_Registry::get('userModel') && Kwf_Registry::get('userModel')->getAuthedUserRole() == 'admin') { $view->debug = true; } } catch (Exception $e) { } if (Kwf_Component_Data_Root::getComponentClass()) { $data = null; if (isset($_SERVER['HTTP_HOST'])) { //try to get the page of current domain to get correct language $acceptLanguage = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : null; try { $data = Kwf_Component_Data_Root::getInstance()->getPageByUrl('http://' . $_SERVER['HTTP_HOST'] . '/', $acceptLanguage); } catch (Exception $e) { } } if (!$data) { $data = Kwf_Component_Data_Root::getInstance(); } $view->data = $data; //can be used for trl } else { //no components used, use Kwf_Trl object that also has trl() methods //HACK, but will work if only trl is used in template $view->data = Kwf_Trl::getInstance(); } $header = $this->getHeader(); $template = $this->getTemplate(); $template = strtolower(Zend_Filter::filterStatic($template, 'Word_CamelCaseToDash') . '.tpl'); $this->log(); if (!headers_sent()) { header($header); header('Content-Type: text/html; charset=utf-8'); } echo $view->render($template); } catch (Exception $e) { echo '<pre>'; echo $this->getException()->__toString(); echo "\n\n\nError happened while handling exception:"; echo $e->__toString(); echo '</pre>'; } }
public static function getComponentClasses() { $root = Kwf_Component_Data_Root::getComponentClass(); if (!$root) { return array(); } if (!self::$_rebuildingSettings) { $cacheId = 'componentClasses-' . Kwf_Component_Data_Root::getComponentClass(); $ret = Kwf_Cache_SimpleStatic::fetch($cacheId, $success); if ($success) { return $ret; } $s =& self::_getSettingsCached(); $ret = array_keys($s); unset($ret[array_search('mtime', $ret)]); unset($ret[array_search('mtimeFiles', $ret)]); $ret = array_values($ret); Kwf_Cache_SimpleStatic::add($cacheId, $ret); return $ret; } $componentClasses = array($root); self::_getChildComponentClasses($componentClasses, $root); return $componentClasses; }
public static function getAllChainedByMaster($master, $chainedType, $parentDataSelect = array()) { $cacheId = 'hasChainedBMCls-' . Kwf_Component_Data_Root::getComponentClass(); $classes = Kwf_Cache_SimpleStatic::fetch($cacheId); if ($classes === false) { $classes = array(); foreach (Kwc_Abstract::getComponentClasses() as $cls) { if (Kwc_Abstract::getFlag($cls, 'hasAllChainedByMaster')) { $classes[] = $cls; } } Kwf_Cache_SimpleStatic::add($cacheId, $classes); } $ret = array(); foreach ($classes as $cls) { $c = strpos($cls, '.') ? substr($cls, 0, strpos($cls, '.')) : $cls; $ret = array_merge($ret, call_user_func(array($c, 'getAllChainedByMasterFromChainedStart'), $cls, $master, $chainedType, $parentDataSelect)); } return $ret; }