Пример #1
0
 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;
 }
Пример #2
0
 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);
 }
Пример #3
0
 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);
 }
Пример #4
0
 /**
  * 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);
 }
Пример #5
0
 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);
 }
Пример #6
0
 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);
     }
 }
Пример #7
0
 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;
 }
Пример #8
0
 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;
 }
Пример #10
0
 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;
 }
Пример #12
0
 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;
 }
Пример #13
0
 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;
 }
Пример #14
0
 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();
     }
 }
Пример #15
0
 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;
 }
Пример #17
0
 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;
    }
Пример #19
0
 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.+?&quot;width&quot;:(\\d+),&quot;height&quot;:(\\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]);
 }
Пример #20
0
 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));
         }
     }
 }
Пример #21
0
 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);
 }
Пример #23
0
 /**
  * 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;
 }
Пример #24
0
 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;
 }
Пример #25
0
 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>';
     }
 }
Пример #26
0
 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;
 }
Пример #27
0
 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;
 }