File indexing completed on 2024-04-28 05:56:02

0001 <?php
0002 
0003 /**
0004  *  ocs-webserver
0005  *
0006  *  Copyright 2016 by pling GmbH.
0007  *
0008  *    This file is part of ocs-webserver.
0009  *
0010  *    This program is free software: you can redistribute it and/or modify
0011  *    it under the terms of the GNU Affero General Public License as
0012  *    published by the Free Software Foundation, either version 3 of the
0013  *    License, or (at your option) any later version.
0014  *
0015  *    This program is distributed in the hope that it will be useful,
0016  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
0017  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0018  *    GNU Affero General Public License for more details.
0019  *
0020  *    You should have received a copy of the GNU Affero General Public License
0021  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0022  **/
0023 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
0024 {
0025 
0026     /**
0027      * @return Zend_Application_Module_Autoloader
0028      * @throws Zend_Loader_Exception
0029      */
0030     protected function _initAutoload()
0031     {
0032         $autoloader = new Zend_Application_Module_Autoloader(array(
0033             'namespace' => 'Default',
0034             'basePath'  => realpath(dirname(__FILE__)),
0035         ));
0036         $autoloader->addResourceType('formelements', 'forms/elements', 'Form_Element');
0037         $autoloader->addResourceType('formvalidators', 'forms/validators', 'Form_Validator');
0038 
0039         return $autoloader;
0040     }
0041 
0042     /**
0043      * @throws Zend_Exception
0044      * @throws Zend_Session_Exception
0045      */
0046     protected function _initSessionManagement()
0047     {
0048         $session = $this->bootstrap('session');
0049         $domain = Local_Tools_ParseDomain::get_domain($_SERVER['HTTP_HOST']);
0050         Zend_Session::setOptions(array('cookie_domain'   => $domain));
0051         Zend_Session::start();
0052         $config = $this->getOption('settings')['session'];
0053         $session_namespace = new Zend_Session_Namespace($config['auth']['name']);
0054         Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_Session($session_namespace->getNamespace()));
0055     }
0056 
0057     protected function _initConfig()
0058     {
0059         /** $config Zend_Config */
0060         $config = $this->getApplication()->getApplicationConfig();
0061         Zend_Registry::set('config', $config);
0062 
0063         return $config;
0064     }
0065 
0066     /**
0067      * @return mixed|null|Zend_Cache_Core|Zend_Cache_Frontend
0068      * @throws Zend_Cache_Exception
0069      * @throws Zend_Exception
0070      */
0071     protected function _initCache()
0072     {
0073         if (Zend_Registry::isRegistered('cache')) {
0074             return Zend_Registry::get('cache');
0075         }
0076 
0077         $cache = null;
0078         $options = $this->getOption('settings');
0079 
0080         if (true == $options['cache']['enabled']) {
0081             $cache = Zend_Cache::factory($options['cache']['frontend']['type'], $options['cache']['backend']['type'],
0082                 $options['cache']['frontend']['options'], $options['cache']['backend']['options']);
0083         } else {
0084             // Fallback settings for some (maybe development) environments which have no cache management installed.
0085 
0086             if (false === is_writeable(APPLICATION_CACHE)) {
0087                 error_log('directory for cache files does not exists or not writable: ' . APPLICATION_CACHE);
0088                 throw new Zend_Application_Bootstrap_Exception('directory for cache files does not exists or not writable: ' . APPLICATION_CACHE);
0089             }
0090 
0091             $frontendOptions = array(
0092                 'lifetime'                => 600,
0093                 'automatic_serialization' => true,
0094                 'cache_id_prefix'         => $options['cache']['frontend']['options']['cache_id_prefix'],
0095                 'cache'                   => true
0096             );
0097 
0098             $backendOptions = array(
0099                 'cache_dir'              => APPLICATION_CACHE,
0100                 'file_locking'           => true,
0101                 'read_control'           => true,
0102                 'read_control_type'      => 'crc32',
0103                 'hashed_directory_level' => 1,
0104                 'hashed_directory_perm'  => 0700,
0105                 'file_name_prefix'       => $options['cache']['frontend']['options']['cache_id_prefix'],
0106                 'cache_file_perm'        => 0700
0107             );
0108 
0109             $cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
0110         }
0111 
0112         Zend_Registry::set('cache', $cache);
0113 
0114         Zend_Locale::setCache($cache);
0115         Zend_Locale_Data::setCache($cache);
0116         Zend_Currency::setCache($cache);
0117         Zend_Translate::setCache($cache);
0118         Zend_Translate_Adapter::setCache($cache);
0119         Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
0120         Zend_Paginator::setCache($cache);
0121 
0122         return $cache;
0123     }
0124 
0125     /**
0126      * @throws Zend_Application_Bootstrap_Exception
0127      */
0128     protected function _initViewConfig()
0129     {
0130         $view = $this->bootstrap('view')->getResource('view');
0131 
0132         $view->addHelperPath(APPLICATION_PATH . '/modules/default/views/helpers', 'Default_View_Helper_');
0133         $view->addHelperPath(APPLICATION_LIB . '/Zend/View/Helper', 'Zend_View_Helper_');
0134 
0135         $options = $this->getOptions();
0136 
0137         $docType = $options['resources']['view']['doctype'] ? $options['resources']['view']['doctype'] : 'XHTML1_TRANSITIONAL';
0138         $view->doctype($docType);
0139     }
0140 
0141     /**
0142      * @throws Zend_Locale_Exception
0143      */
0144     protected function _initLocale()
0145     {
0146         $configResources = $this->getOption('resources');
0147         Zend_Locale::setDefault($configResources['locale']['default']);
0148         Zend_Registry::set($configResources['locale']['registry_key'], $configResources['locale']['default']);
0149     }
0150 
0151     /**
0152      * @return Zend_Translate
0153      * @throws Zend_Application_Resource_Exception
0154      * @throws Zend_Form_Exception
0155      * @throws Zend_Session_Exception
0156      * @throws Zend_Translate_Exception
0157      * @throws Zend_Validate_Exception
0158      */
0159     protected function _initTranslate()
0160     {
0161         $options = $this->getOption('resources');
0162         $options = $options['translate'];
0163         if (!isset($options['data'])) {
0164             throw new Zend_Application_Resource_Exception('not found the file');
0165         }
0166         $adapter = isset($options['adapter']) ? $options['adapter'] : Zend_Translate::AN_ARRAY;
0167         $session = new Zend_Session_Namespace('aa');
0168         if ($session->locale) {
0169             $locale = $session->locale;
0170         } else {
0171             $locale = isset($options['locale']) ? $options['locale'] : null;
0172         }
0173         $data = '';
0174         if (isset($options['data'][$locale])) {
0175             $data = $options['data'][$locale];
0176         }
0177         $translateOptions = isset($options['options']) ? $options['options'] : array();
0178         $translate = new Zend_Translate($adapter, $data, $locale, $translateOptions);
0179         Zend_Form::setDefaultTranslator($translate);
0180         Zend_Validate_Abstract::setDefaultTranslator($translate);
0181         Zend_Registry::set('Zend_Translate', $translate);
0182 
0183         return $translate;
0184     }
0185 
0186     /**
0187      * @throws Zend_Application_Bootstrap_Exception
0188      */
0189     protected function _initDbAdapter()
0190     {
0191         $db = $this->bootstrap('db')->getResource('db');
0192 
0193         Zend_Registry::set('db', $db);
0194         Zend_Db_Table::setDefaultAdapter($db);
0195         Zend_Db_Table_Abstract::setDefaultAdapter($db);
0196     }
0197 
0198     /**
0199      * @throws Zend_Application_Bootstrap_Exception
0200      */
0201     protected function _initLogger()
0202     {
0203         /** @var Zend_Log $logger */
0204         $logger = $this->getPluginResource('log')->getLog();
0205         $logger->registerErrorHandler();
0206         Zend_Registry::set('logger', $logger);
0207     }
0208 
0209     protected function _initGlobals()
0210     {
0211         Zend_Paginator::setDefaultScrollingStyle('Elastic');
0212         Zend_View_Helper_PaginationControl::setDefaultViewPartial('paginationControl.phtml');
0213 
0214         Zend_Filter::addDefaultNamespaces('Local_Filter');
0215 
0216         $version = $this->getOption('version');
0217         defined('APPLICATION_VERSION') || define('APPLICATION_VERSION', $version);
0218     }
0219 
0220     /**
0221      * @return Default_Plugin_AclRules|false|mixed
0222      * @throws Zend_Cache_Exception
0223      */
0224     protected function _initAclRules()
0225     {
0226         /** @var Zend_Cache_Core $appCache */
0227         $appCache = $this->getResource('cache');
0228 
0229         if (false == ($aclRules = $appCache->load('AclRules'))) {
0230             $aclRules = new Default_Plugin_AclRules();
0231             Zend_Registry::set('acl', $aclRules);
0232             $appCache->save($aclRules, 'AclRules', array('AclRules'), 14400);
0233         }
0234 
0235         return $aclRules;
0236     }
0237 
0238     /**
0239      * @throws Zend_Application_Bootstrap_Exception
0240      * @throws Zend_Loader_PluginLoader_Exception
0241      */
0242     protected function _initPlugins()
0243     {
0244         /** @var $front Zend_Controller_Front */
0245         $front = $this->bootstrap('frontController')->getResource('frontController');
0246         $aclRules = $this->bootstrap('aclRules')->getResource('aclRules');
0247 
0248         $front->unregisterPlugin('Zend_Controller_Plugin_ErrorHandler');
0249         $front->registerPlugin(new Default_Plugin_ErrorHandler());
0250         $front->registerPlugin(new Default_Plugin_Stats());
0251         $front->registerPlugin(new Default_Plugin_RememberMe(Zend_Auth::getInstance()));
0252         $front->registerPlugin(new Default_Plugin_SignOn(Zend_Auth::getInstance()));
0253         $front->registerPlugin(new Default_Plugin_Acl(Zend_Auth::getInstance(), $aclRules));
0254 
0255         $loader = new Zend_Loader_PluginLoader();
0256         $loader->addPrefixPath('Zend_View_Helper', APPLICATION_LIB . '/Zend/View/Helper/')
0257                ->addPrefixPath('Zend_Form_Element', APPLICATION_LIB . '/Zend/Form/Element')
0258                ->addPrefixPath('Default_View_Helper', APPLICATION_PATH . '/modules/default/views/helpers')
0259                ->addPrefixPath('Default_Form_Helper', APPLICATION_PATH . '/modules/default/forms/helpers')
0260                ->addPrefixPath('Default_Form_Element', APPLICATION_PATH . '/modules/default/forms/elements')
0261                ->addPrefixPath('Default_Form_Decorator', APPLICATION_PATH . '/modules/default/forms/decorators')
0262                ->addPrefixPath('Default_Form_Validator', APPLICATION_PATH . '/modules/default/forms/validators');
0263     }
0264 
0265     protected function _initThirdParty()
0266     {
0267         $appConfig = $this->getResource('config');
0268 
0269         $imageConfig = $appConfig->images;
0270         defined('IMAGES_UPLOAD_PATH') || define('IMAGES_UPLOAD_PATH', $imageConfig->upload->path);
0271         defined('IMAGES_MEDIA_SERVER') || define('IMAGES_MEDIA_SERVER', $imageConfig->media->server);
0272         $videoConfig = $appConfig->videos;
0273         defined('VIDEOS_UPLOAD_PATH') || define('VIDEOS_UPLOAD_PATH', $videoConfig->upload->path);
0274         defined('VIDEOS_MEDIA_SERVER') || define('VIDEOS_MEDIA_SERVER', $videoConfig->media->server);
0275         $comicConfig = $appConfig->comics;
0276         defined('COMICS_MEDIA_SERVER') || define('COMICS_MEDIA_SERVER', $comicConfig->media->server);
0277 
0278         // fileserver
0279         $configFileserver = $appConfig->settings->server->files;
0280         defined('PPLOAD_API_URI') || define('PPLOAD_API_URI', $configFileserver->api->uri);
0281         defined('PPLOAD_CLIENT_ID') || define('PPLOAD_CLIENT_ID', $configFileserver->api->client_id);
0282         defined('PPLOAD_SECRET') || define('PPLOAD_SECRET', $configFileserver->api->client_secret);
0283         defined('PPLOAD_HOST') || define('PPLOAD_HOST', $configFileserver->host);
0284         defined('PPLOAD_DOWNLOAD_SECRET') || define('PPLOAD_DOWNLOAD_SECRET', $configFileserver->download_secret);
0285     }
0286 
0287     /**
0288      * @return false|mixed|Zend_Controller_Router_Rewrite
0289      * @throws Zend_Application_Bootstrap_Exception
0290      * @throws Zend_Cache_Exception
0291      * @throws Zend_Controller_Exception
0292      * @throws Zend_Exception
0293      */
0294     protected function _initRouter()
0295     {
0296         $this->bootstrap('frontController');
0297         /** @var $front Zend_Controller_Front */
0298         $front = $this->getResource('frontController');
0299 
0300         /** @var Zend_Cache_Core $cache */
0301         $cache = Zend_Registry::get('cache');
0302 
0303         if (($router = $cache->load('ProjectRouter'))) {
0304             $front->setRouter($router);
0305 
0306             return $router;
0307         }
0308 
0309         /** @var $router Zend_Controller_Router_Rewrite */
0310         $router = $front->getRouter();
0311 
0312         /** RSS Feed */
0313         $router->addRoute('rdf_store', new Zend_Controller_Router_Route('/content.rdf', array(
0314             'module'     => 'default',
0315             'controller' => 'rss',
0316             'action'     => 'rdf'
0317         )));
0318 
0319         $router->addRoute('rdf_events_hive', new Zend_Controller_Router_Route_Regex('.*-events.rss', array(
0320             'module'     => 'default',
0321             'controller' => 'rss',
0322             'action'     => 'rss'
0323         )));
0324 
0325         $router->addRoute('rdf_store_hive', new Zend_Controller_Router_Route_Regex('.*-content.rdf', array(
0326             'module'     => 'default',
0327             'controller' => 'rss',
0328             'action'     => 'rdf'
0329         )));
0330 
0331         $router->addRoute('rdf_store_hive_rss', new Zend_Controller_Router_Route_Regex('rss/.*-content.rdf', array(
0332             'module'     => 'default',
0333             'controller' => 'rss',
0334             'action'     => 'rdf'
0335         )));
0336 
0337         /** new store dependent routing rules */
0338         //$router->addRoute('store_general', new Zend_Controller_Router_Route('/s/:domain_store_id/:controller/:action/*', array(
0339         //    'module'     => 'default',
0340         //    'controller' => 'explore',
0341         //    'action'     => 'index'
0342         //)));
0343 
0344         $router->addRoute('store_home', new Zend_Controller_Router_Route('/s/:domain_store_id/', array(
0345             'module'     => 'default',
0346             'controller' => 'home',
0347             'action'     => 'index'
0348         )));
0349 
0350         $router->addRoute('store_browse', new Zend_Controller_Router_Route('/s/:domain_store_id/browse/*', array(
0351             'module'     => 'default',
0352             'controller' => 'explore',
0353             'action'     => 'index'
0354         )));
0355 
0356         $router->addRoute('store_product_add',
0357             new Zend_Controller_Router_Route('/s/:domain_store_id/product/add', array(
0358                 'module'     => 'default',
0359                 'controller' => 'product',
0360                 'action'     => 'add'
0361             )));
0362 
0363         $router->addRoute('store_settings', new Zend_Controller_Router_Route('/s/:domain_store_id/settings', array(
0364             'module'     => 'default',
0365             'controller' => 'settings',
0366             'action'     => 'index'
0367         )));
0368 
0369         $router->addRoute('store_pling_box_show',
0370             new Zend_Controller_Router_Route('/s/:domain_store_id/supporterbox/:memberid', array(
0371                 'module'     => 'default',
0372                 'controller' => 'plingbox',
0373                 'action'     => 'index'
0374             )));
0375 
0376         $router->addRoute('store_pling_box_show',
0377             new Zend_Controller_Router_Route('/s/:domain_store_id/productcomment/addreply/*', array(
0378                 'module'     => 'default',
0379                 'controller' => 'productcomment',
0380                 'action'     => 'addreply'
0381             )));
0382 
0383         $router->addRoute('store_product',
0384             new Zend_Controller_Router_Route('/s/:domain_store_id/p/:project_id/:action/*', array(
0385                 'module'     => 'default',
0386                 'controller' => 'product',
0387                 'action'     => 'show'
0388             )));
0389 
0390         $router->addRoute('store_collection',
0391             new Zend_Controller_Router_Route('/s/:domain_store_id/c/:project_id/:action/*', array(
0392                 'module'     => 'default',
0393                 'controller' => 'collection',
0394                 'action'     => 'show'
0395             )));
0396 
0397         /*
0398         $router->addRoute('store_product', new Zend_Controller_Router_Route('/s/:domain_store_id/c/:project_id/:action/*', array(
0399                     'module'     => 'default',
0400                     'controller' => 'collection',
0401                     'action'     => 'show'
0402                 )));
0403         */
0404         $router->addRoute('store_user',
0405             new Zend_Controller_Router_Route('/s/:domain_store_id/member/:member_id/:action/*', array(
0406                 'module'     => 'default',
0407                 'controller' => 'user',
0408                 'action'     => 'index'
0409             )));
0410 
0411         $router->addRoute('store_user_name',
0412             new Zend_Controller_Router_Route('/s/:domain_store_id/u/:user_name/:action/*', array(
0413                 'module'     => 'default',
0414                 'controller' => 'user',
0415                 'action'     => 'index'
0416             )));
0417 
0418         $router->addRoute('store_login', new Zend_Controller_Router_Route('/s/:domain_store_id/login/*', array(
0419             'module'     => 'default',
0420             'controller' => 'authorization',
0421             'action'     => 'login'
0422         )));
0423 
0424         $router->addRoute('store_register', new Zend_Controller_Router_Route('/s/:domain_store_id/register', array(
0425             'module'     => 'default',
0426             'controller' => 'authorization',
0427             'action'     => 'register'
0428         )));
0429 
0430 
0431         /** general routing rules */
0432         $router->addRoute('home', new Zend_Controller_Router_Route('/', array(
0433             'module'     => 'default',
0434             'controller' => 'home',
0435             'action'     => 'index'
0436         )));
0437 
0438 
0439         $router->addRoute('home_home', new Zend_Controller_Router_Route('/home', array(
0440             'module'     => 'default',
0441             'controller' => 'home',
0442             'action'     => 'index'
0443         )));
0444 
0445         $router->addRoute('home_start', new Zend_Controller_Router_Route('/start', array(
0446             'module'     => 'default',
0447             'controller' => 'home',
0448             'action'     => 'start'
0449         )));
0450 
0451         $router->addRoute('home_ajax', new Zend_Controller_Router_Route('/showfeatureajax/*', array(
0452             'module'     => 'default',
0453             'controller' => 'home',
0454             'action'     => 'showfeatureajax'
0455         )));
0456 
0457         $router->addRoute('backend', new Zend_Controller_Router_Route('/backend/:controller/:action/*', array(
0458             'module'     => 'backend',
0459             'controller' => 'index',
0460             'action'     => 'index'
0461         )));
0462 
0463         $router->addRoute('backend_statistics', new Zend_Controller_Router_Route('/statistics/:action/*', array(
0464             'module'     => 'backend',
0465             'controller' => 'statistics',
0466             'action'     => 'index'
0467         )));
0468 
0469         $router->addRoute('browse', new Zend_Controller_Router_Route('/browse/*', array(
0470             'module'     => 'default',
0471             'controller' => 'explore',
0472             'action'     => 'index'
0473         )));
0474 
0475         $router->addRoute('browse_favourites', new Zend_Controller_Router_Route('/my-favourites/*', array(
0476             'module'     => 'default',
0477             'controller' => 'explore',
0478             'action'     => 'index',
0479             'fav'        => '1'
0480         )));
0481 
0482         $router->addRoute('button_render', new Zend_Controller_Router_Route('/button/:project_id/:size/', array(
0483             'module'     => 'default',
0484             'controller' => 'button',
0485             'action'     => 'render',
0486             'size'       => 'large'
0487         )));
0488 
0489         $router->addRoute('button_action', new Zend_Controller_Router_Route('/button/a/:action/', array(
0490             'module'     => 'default',
0491             'controller' => 'button',
0492             'action'     => 'index'
0493         )));
0494 
0495         $router->addRoute('pling_box_show', new Zend_Controller_Router_Route('/supporterbox/:memberid/', array(
0496             'module'     => 'default',
0497             'controller' => 'plingbox',
0498             'action'     => 'index'
0499         )));
0500 
0501         $router->addRoute('external_donation_list',
0502             new Zend_Controller_Router_Route('/donationlist/:project_id/', array(
0503                 'module'     => 'default',
0504                 'controller' => 'donationlist',
0505                 'action'     => 'render'
0506             )));
0507 
0508         $router->addRoute('external_widget', new Zend_Controller_Router_Route('/widget/:project_id/', array(
0509             'module'     => 'default',
0510             'controller' => 'widget',
0511             'action'     => 'render'
0512         )));
0513 
0514         $router->addRoute('external_widget_save', new Zend_Controller_Router_Route('/widget/save/*', array(
0515             'module'     => 'default',
0516             'controller' => 'widget',
0517             'action'     => 'save'
0518         )));
0519 
0520         $router->addRoute('external_widget_save', new Zend_Controller_Router_Route('/widget/config/:project_id/', array(
0521             'module'     => 'default',
0522             'controller' => 'widget',
0523             'action'     => 'config'
0524         )));
0525 
0526         $router->addRoute('external_widget_save_default',
0527             new Zend_Controller_Router_Route('/widget/savedefault/*', array(
0528                 'module'     => 'default',
0529                 'controller' => 'widget',
0530                 'action'     => 'savedefault'
0531             )));
0532 
0533         $router->addRoute('support_old', new Zend_Controller_Router_Route('/support-old', array(
0534             'module'     => 'default',
0535             'controller' => 'support',
0536             'action'     => 'index'
0537         )));
0538 
0539         $router->addRoute('support_old_pay', new Zend_Controller_Router_Route('/support-old/pay', array(
0540             'module'     => 'default',
0541             'controller' => 'support',
0542             'action'     => 'pay'
0543         )));
0544 
0545         $router->addRoute('support_old_paymentok', new Zend_Controller_Router_Route('/support-old/paymentok', array(
0546             'module'     => 'default',
0547             'controller' => 'support',
0548             'action'     => 'paymentok'
0549         )));
0550 
0551 
0552         $router->addRoute('support_old_paymentcancel',
0553             new Zend_Controller_Router_Route('/support-old/paymentcancel', array(
0554                 'module'     => 'default',
0555                 'controller' => 'support',
0556                 'action'     => 'paymentcancel'
0557             )));
0558         
0559 
0560         $router->addRoute('watchlist_productmoderation', new Zend_Controller_Router_Route('/watchlist-productmoderation', array(
0561             'module'     => 'default',
0562             'controller' => 'moderation',
0563             'action'     => 'productmoderation'
0564         )));
0565         
0566         $router->addRoute('watchlist_samepaypal', new Zend_Controller_Router_Route('/watchlist-samepaypal', array(
0567             'module'     => 'default',
0568             'controller' => 'spam',
0569             'action'     => 'paypal'
0570         )));
0571 
0572         $router->addRoute('watchlist_products_files', new Zend_Controller_Router_Route('/watchlist-products-10-files', array(
0573             'module'     => 'default',
0574             'controller' => 'spam',
0575             'action'     => 'product'
0576         )));   
0577         $router->addRoute('watchlist_products_deprecated', new Zend_Controller_Router_Route('/watchlist-products-deprecated', array(
0578             'module'     => 'default',
0579             'controller' => 'spam',
0580             'action'     => 'deprecated'
0581         )));
0582         
0583         $router->addRoute('watchlist_md5sum', new Zend_Controller_Router_Route('/watchlist-md5sum-duplicated', array(
0584             'module'     => 'default',
0585             'controller' => 'spam',
0586             'action'     => 'mdsum'
0587         ))); 
0588 
0589         $router->addRoute('watchlist_unpublishedproduct', new Zend_Controller_Router_Route('/watchlist-unpublishedproduct', array(
0590             'module'     => 'default',
0591             'controller' => 'spam',
0592             'action'     => 'unpublishedproduct'
0593         ))); 
0594 
0595         $router->addRoute('watchlist_newproduct_2_month', new Zend_Controller_Router_Route('/watchlist-newproduct-2-month', array(
0596             'module'     => 'default',
0597             'controller' => 'spam',
0598             'action'     => 'newproduct'
0599         ))); 
0600 
0601         $router->addRoute('watchlist_newproducts', new Zend_Controller_Router_Route('/watchlist-newproducts', array(
0602             'module'     => 'default',
0603             'controller' => 'newproducts',
0604             'action'     => 'index'
0605         ))); 
0606 
0607         $router->addRoute('support_new', new Zend_Controller_Router_Route('/supportold2', array(
0608             'module'     => 'default',
0609             'controller' => 'subscription',
0610             'action'     => 'index'
0611         )));
0612         
0613         $router->addRoute('support_predefined', new Zend_Controller_Router_Route('/support-predefined', array(
0614             'module'     => 'default',
0615             'controller' => 'subscription',
0616             'action'     => 'supportpredefinded'
0617         )));
0618         
0619         $router->addRoute('support_pay_predefined', new Zend_Controller_Router_Route('/support/paypredefined', array(
0620             'module'     => 'default',
0621             'controller' => 'subscription',
0622             'action'     => 'paypredefined'
0623         )));
0624         
0625         $router->addRoute('support_new2', new Zend_Controller_Router_Route('/support', array(
0626             'module'     => 'default',
0627             'controller' => 'subscription',
0628             'action'     => 'support2'
0629         )));
0630         
0631         $router->addRoute('support_new_pay2', new Zend_Controller_Router_Route('/support/pay', array(
0632             'module'     => 'default',
0633             'controller' => 'subscription',
0634             'action'     => 'pay2'
0635         )));
0636 
0637 
0638         $router->addRoute('support_new_pay', new Zend_Controller_Router_Route('/support/payold2', array(
0639             'module'     => 'default',
0640             'controller' => 'subscription',
0641             'action'     => 'pay'
0642         )));
0643 
0644         $router->addRoute('support_new_paymentok', new Zend_Controller_Router_Route('/support/paymentok', array(
0645             'module'     => 'default',
0646             'controller' => 'subscription',
0647             'action'     => 'paymentok'
0648         )));
0649 
0650 
0651         $router->addRoute('support_new_paymentcancel', new Zend_Controller_Router_Route('/support/paymentcancel', array(
0652             'module'     => 'default',
0653             'controller' => 'subscription',
0654             'action'     => 'paymentcancel'
0655         )));
0656 
0657         /**
0658          * Project/Product
0659          */
0660         $router->addRoute('product_short_url', new Zend_Controller_Router_Route('/p/:project_id/:action/*', array(
0661             'module'     => 'default',
0662             'controller' => 'product',
0663             'action'     => 'show'
0664         )));
0665 
0666         $router->addRoute('product_referrer_url', new Zend_Controller_Router_Route('/p/:project_id/er/:er/*', array(
0667             'module'     => 'default',
0668             'controller' => 'product',
0669             'action'     => 'show'
0670         )));
0671 
0672         $router->addRoute('product_collectionid_url', new Zend_Controller_Router_Route('/co/:collection_id', array(
0673             'module'     => 'default',
0674             'controller' => 'product',
0675             'action'     => 'show'
0676         )));
0677 
0678         $router->addRoute('product_add', new Zend_Controller_Router_Route('/product/add', array(
0679             'module'     => 'default',
0680             'controller' => 'product',
0681             'action'     => 'add'
0682         )));
0683 
0684         $router->addRoute('product_add_extend', new Zend_Controller_Router_Route('/product/add/:catId', array(
0685             'module'     => 'default',
0686             'controller' => 'product',
0687             'action'     => 'add'
0688         )));
0689 
0690         $router->addRoute('search', new Zend_Controller_Router_Route('/search/*', array(
0691             'module'     => 'default',
0692             'controller' => 'product',
0693             'action'     => 'search'
0694         )));
0695 
0696         $router->addRoute('search_domain', new Zend_Controller_Router_Route('/s/:domain_store_id/search/*',
0697             array(
0698                 'module'     => 'default',
0699                 'controller' => 'product',
0700                 'action'     => 'search'
0701             )));
0702 
0703         $router->addRoute('product_save', new Zend_Controller_Router_Route('/p/save/*', array(
0704             'module'     => 'default',
0705             'controller' => 'product',
0706             'action'     => 'saveproduct'
0707         )));
0708 
0709         
0710 
0711 
0712 
0713         /**
0714          * Collection
0715          */
0716         $router->addRoute('collection_short_url', new Zend_Controller_Router_Route('/c/:project_id/', array(
0717             'module'     => 'default',
0718             'controller' => 'collection',
0719             'action'     => 'index'
0720         )));
0721 
0722         $router->addRoute('collection_short_url', new Zend_Controller_Router_Route('/c/:project_id/:action/*', array(
0723             'module'     => 'default',
0724             'controller' => 'collection',
0725             'action'     => 'index'
0726         )));
0727 
0728         $router->addRoute('collection_referrer_url', new Zend_Controller_Router_Route('/c/:project_id/er/:er/*', array(
0729             'module'     => 'default',
0730             'controller' => 'collection',
0731             'action'     => 'index'
0732         )));
0733 
0734         $router->addRoute('collection_add', new Zend_Controller_Router_Route('/collection/add', array(
0735             'module'     => 'default',
0736             'controller' => 'collection',
0737             'action'     => 'add'
0738         )));
0739 
0740         /**
0741          * $router->addRoute('search', new Zend_Controller_Router_Route('/search/*', array(
0742          * 'module'     => 'default',
0743          * 'controller' => 'collection',
0744          * 'action'     => 'search'
0745          * )));
0746          *
0747          * $router->addRoute('search_domain',new Zend_Controller_Router_Route('/s/:domain_store_id/search/*',
0748          * array(
0749          * 'module'     => 'default',
0750          * 'controller' => 'product',
0751          * 'action'     => 'search'
0752          * )));
0753          */
0754         $router->addRoute('collection_save', new Zend_Controller_Router_Route('/c/save/*', array(
0755             'module'     => 'default',
0756             'controller' => 'collection',
0757             'action'     => 'saveproduct'
0758         )));
0759 
0760 
0761         /**
0762          * Member
0763          */
0764         $router->addRoute('member_settings_old', new Zend_Controller_Router_Route('/settings/:action/*', array(
0765             'module'     => 'default',
0766             'controller' => 'settings',
0767             'action'     => 'index'
0768         )));
0769 
0770         $router->addRoute('user_show', new Zend_Controller_Router_Route('/member/:member_id/:action/*', array(
0771             'module'     => 'default',
0772             'controller' => 'user',
0773             'action'     => 'index'
0774         )));
0775         
0776         
0777         
0778         $router->addRoute('user_avatar', new Zend_Controller_Router_Route('/member/avatar/:emailhash/:size', array(
0779             'module'     => 'default',
0780             'controller' => 'user',
0781             'action'     => 'avatar'
0782         )));
0783 
0784         $router->addRoute('user_show_with_name', new Zend_Controller_Router_Route('/u/:user_name/:action/*', array(
0785             'module'     => 'default',
0786             'controller' => 'user',
0787             'action'     => 'index'
0788         )));
0789         
0790         $router->addRoute('user_recification', new Zend_Controller_Router_Route('/r/:action/*', array(
0791             'module'     => 'default',
0792             'controller' => 'rectification',
0793             'action'     => 'index'
0794         )));
0795 
0796         $router->addRoute('user_show_short', new Zend_Controller_Router_Route('/me/:member_id/:action/*', array(
0797             'module'     => 'default',
0798             'controller' => 'user',
0799             'action'     => 'index'
0800         )));
0801 
0802         $router->addRoute('register', new Zend_Controller_Router_Route_Static('/register', array(
0803             'module'     => 'default',
0804             'controller' => 'authorization',
0805             'action'     => 'register'
0806         )));
0807 
0808         $router->addRoute('register_validate', new Zend_Controller_Router_Route_Static('/register/validate', array(
0809             'module'     => 'default',
0810             'controller' => 'authorization',
0811             'action'     => 'validate'
0812         )));
0813 
0814         $router->addRoute('verification', new Zend_Controller_Router_Route('/verification/:vid', array(
0815             'module'     => 'default',
0816             'controller' => 'authorization',
0817             'action'     => 'verification'
0818         )));
0819 
0820         $router->addRoute('logout', new Zend_Controller_Router_Route_Static('/logout', array(
0821             'module'     => 'default',
0822             'controller' => 'logout',
0823             'action'     => 'logout'
0824         )));
0825 
0826         $router->addRoute('propagatelogout', new Zend_Controller_Router_Route_Static('/logout/propagate', array(
0827             'module'     => 'default',
0828             'controller' => 'authorization',
0829             'action'     => 'propagatelogout'
0830         )));
0831 
0832         $router->addRoute('checkuser', new Zend_Controller_Router_Route_Static('/checkuser', array(
0833             'module'     => 'default',
0834             'controller' => 'authorization',
0835             'action'     => 'checkuser'
0836         )));
0837 
0838         $router->addRoute('login', new Zend_Controller_Router_Route('/login', array(
0839             'module'     => 'default',
0840             'controller' => 'authorization',
0841             'action'     => 'login'
0842         )));
0843 
0844         $router->addRoute('login', new Zend_Controller_Router_Route('/login/:action/*', array(
0845             'module'     => 'default',
0846             'controller' => 'authorization',
0847             'action'     => 'login'
0848         )));
0849 
0850         $router->addRoute('LoginController', new Zend_Controller_Router_Route('/l/:action/*', array(
0851             'module'     => 'default',
0852             'controller' => 'login',
0853             'action'     => 'login'
0854         )));
0855 
0856         $router->addRoute('content', new Zend_Controller_Router_Route('/content/:page', array(
0857             'module'     => 'default',
0858             'controller' => 'content',
0859             'action'     => 'index'
0860         )));
0861 
0862         $router->addRoute('categories_about', new Zend_Controller_Router_Route('/cat/:page/about', array(
0863             'module'     => 'default',
0864             'controller' => 'categories',
0865             'action'     => 'about'
0866         )));
0867 
0868         // **** static routes
0869         $router->addRoute('static_faq_old', new Zend_Controller_Router_Route_Static('/faq-old', array(
0870             'module'     => 'default',
0871             'controller' => 'content',
0872             'action'     => 'index',
0873             'page'       => 'faqold'
0874         )));
0875 
0876         $router->addRoute('static_faq', new Zend_Controller_Router_Route_Static('/faq-pling', array(
0877             'module'     => 'default',
0878             'controller' => 'content',
0879             'action'     => 'index',
0880             'page'       => 'faq'
0881         )));
0882 
0883         $router->addRoute('static_gitfaq', new Zend_Controller_Router_Route_Static('/faq-opencode', array(
0884             'module'     => 'default',
0885             'controller' => 'content',
0886             'action'     => 'index',
0887             'page'       => 'gitfaq'
0888         )));
0889         $router->addRoute('static_ocsapi', new Zend_Controller_Router_Route_Static('/ocs-api', array(
0890             'module'     => 'default',
0891             'controller' => 'content',
0892             'action'     => 'index',
0893             'page'       => 'ocsapi'
0894         )));
0895         $router->addRoute('static_plings', new Zend_Controller_Router_Route_Static('/about', array(
0896             'module'     => 'default',
0897             'controller' => 'content',
0898             'action'     => 'index',
0899             'page'       => 'about'
0900         )));
0901 
0902         $router->addRoute('static_terms', new Zend_Controller_Router_Route_Static('/terms', array(
0903             'module'     => 'default',
0904             'controller' => 'content',
0905             'action'     => 'index',
0906             'page'       => 'terms'
0907         )));
0908 
0909         $router->addRoute('static_terms_general', new Zend_Controller_Router_Route_Static('/terms/general', array(
0910             'module'     => 'default',
0911             'controller' => 'content',
0912             'action'     => 'index',
0913             'page'       => 'terms-general'
0914         )));
0915 
0916         $router->addRoute('static_terms_publish', new Zend_Controller_Router_Route_Static('/terms/publishing', array(
0917             'module'     => 'default',
0918             'controller' => 'content',
0919             'action'     => 'index',
0920             'page'       => 'terms-publishing'
0921         )));
0922 
0923         $router->addRoute('static_terms_dmca', new Zend_Controller_Router_Route_Static('/terms/dmca', array(
0924             'module'     => 'default',
0925             'controller' => 'content',
0926             'action'     => 'index',
0927             'page'       => 'terms-dmca'
0928         )));
0929 
0930         $router->addRoute('static_terms_payout', new Zend_Controller_Router_Route_Static('/terms/payout', array(
0931             'module'     => 'default',
0932             'controller' => 'content',
0933             'action'     => 'index',
0934             'page'       => 'terms-payout'
0935         )));
0936 
0937         $router->addRoute('static_terms_cookies', new Zend_Controller_Router_Route_Static('/terms/cookies', array(
0938             'module'     => 'default',
0939             'controller' => 'content',
0940             'action'     => 'index',
0941             'page'       => 'terms-cookies'
0942         )));
0943 
0944         $router->addRoute('static_privacy', new Zend_Controller_Router_Route_Static('/privacy', array(
0945             'module'     => 'default',
0946             'controller' => 'content',
0947             'action'     => 'index',
0948             'page'       => 'privacy'
0949         )));
0950 
0951         $router->addRoute('static_imprint', new Zend_Controller_Router_Route_Static('/imprint', array(
0952             'module'     => 'default',
0953             'controller' => 'content',
0954             'action'     => 'index',
0955             'page'       => 'imprint'
0956         )));
0957 
0958         $router->addRoute('static_contact', new Zend_Controller_Router_Route_Static('/contact', array(
0959             'module'     => 'default',
0960             'controller' => 'content',
0961             'action'     => 'index',
0962             'page'       => 'contact'
0963         )));
0964 
0965         // **** ppload
0966         $router->addRoute('pploadlogin', new Zend_Controller_Router_Route('/pploadlogin/*', array(
0967             'module'     => 'default',
0968             'controller' => 'authorization',
0969             'action'     => 'pploadlogin'
0970         )));
0971 
0972         // OCS API
0973         //20191120 OCS-API is disabled for webservers, only api.pling.com or api.kde-look.org allowed, see ticket #1494
0974         //20191125 erst mal wieder drin
0975         
0976         $router->addRoute('ocs_providers_xml', new Zend_Controller_Router_Route('/ocs/providers.xml', array(
0977             'module'     => 'default',
0978             'controller' => 'ocsv1',
0979             'action'     => 'providers'
0980         )));
0981         $router->addRoute('ocs_v1_config', new Zend_Controller_Router_Route('/ocs/v1/config', array(
0982             'module'     => 'default',
0983             'controller' => 'ocsv1',
0984             'action'     => 'config'
0985         )));
0986         $router->addRoute('ocs_v1_person_check', new Zend_Controller_Router_Route('/ocs/v1/person/check', array(
0987             'module'     => 'default',
0988             'controller' => 'ocsv1',
0989             'action'     => 'personcheck'
0990         )));
0991         $router->addRoute('ocs_v1_person_data', new Zend_Controller_Router_Route('/ocs/v1/person/data', array(
0992             'module'     => 'default',
0993             'controller' => 'ocsv1',
0994             'action'     => 'persondata'
0995         )));
0996         $router->addRoute('ocs_v1_person_data_personid',
0997             new Zend_Controller_Router_Route('/ocs/v1/person/data/:personid', array(
0998                 'module'     => 'default',
0999                 'controller' => 'ocsv1',
1000                 'action'     => 'persondata'
1001             )));
1002         $router->addRoute('ocs_v1_person_self', new Zend_Controller_Router_Route('/ocs/v1/person/self', array(
1003             'module'     => 'default',
1004             'controller' => 'ocsv1',
1005             'action'     => 'personself'
1006         )));
1007         $router->addRoute('ocs_v1_content_categories',
1008             new Zend_Controller_Router_Route('/ocs/v1/content/categories', array(
1009                 'module'     => 'default',
1010                 'controller' => 'ocsv1',
1011                 'action'     => 'contentcategories'
1012             )));
1013         $router->addRoute('ocs_v1_content_data_contentid',
1014             new Zend_Controller_Router_Route('/ocs/v1/content/data/:contentid', array(
1015                 'module'     => 'default',
1016                 'controller' => 'ocsv1',
1017                 'action'     => 'contentdata',
1018                 'contentid'  => null
1019             )));
1020         $router->addRoute('ocs_v1_content_download_contentid_itemid',
1021             new Zend_Controller_Router_Route('/ocs/v1/content/download/:contentid/:itemid', array(
1022                 'module'     => 'default',
1023                 'controller' => 'ocsv1',
1024                 'action'     => 'contentdownload'
1025             )));
1026         $router->addRoute('ocs_v1_content_previewpic_contentid',
1027             new Zend_Controller_Router_Route('/ocs/v1/content/previewpic/:contentid', array(
1028                 'module'     => 'default',
1029                 'controller' => 'ocsv1',
1030                 'action'     => 'contentpreviewpic'
1031             )));
1032         $router->addRoute('ocs_v1_comments',
1033             new Zend_Controller_Router_Route('/ocs/v1/comments/data/:comment_type/:content_id/:second_id', array(
1034                 'module'       => 'default',
1035                 'controller'   => 'ocsv1',
1036                 'action'       => 'comments',
1037                 'comment_type' => -1,
1038                 'content_id'   => null,
1039                 'second_id'    => null
1040             )));
1041         $router->addRoute('ocs_v1_voting',
1042             new Zend_Controller_Router_Route('/ocs/v1/content/vote/:contentid', array(
1043                 'module'     => 'default',
1044                 'controller' => 'ocsv1',
1045                 'action'     => 'vote'
1046             )));
1047         
1048 
1049         
1050         // embed
1051         $router->addRoute('embed_v1_member_projects',
1052             new Zend_Controller_Router_Route('/embed/v1/member/:memberid', array(
1053                 'module'     => 'default',
1054                 'controller' => 'embedv1',
1055                 'action'     => 'memberprojects'
1056             )));
1057 
1058         $router->addRoute('embed_v1_member_projects_files',
1059             new Zend_Controller_Router_Route('/embed/v1/ppload/:ppload_collection_id', array(
1060                 'module'     => 'default',
1061                 'controller' => 'embedv1',
1062                 'action'     => 'ppload'
1063             )));
1064 
1065         $router->addRoute('embed_v1_member_projectscomments',
1066             new Zend_Controller_Router_Route('/embed/v1/comments/:id', array(
1067                 'module'     => 'default',
1068                 'controller' => 'embedv1',
1069                 'action'     => 'comments'
1070             )));
1071 
1072         $router->addRoute('embed_v1_member_projectdetail',
1073             new Zend_Controller_Router_Route('/embed/v1/project/:projectid', array(
1074                 'module'     => 'default',
1075                 'controller' => 'embedv1',
1076                 'action'     => 'projectdetail'
1077             )));
1078 
1079         $router->addRoute('clones', new Zend_Controller_Router_Route('/clones/*', array(
1080             'module'     => 'default',
1081             'controller' => 'credits',
1082             'action'     => 'index'
1083         )));
1084         $router->addRoute('mods', new Zend_Controller_Router_Route('/mods/*', array(
1085             'module'     => 'default',
1086             'controller' => 'credits',
1087             'action'     => 'mods'
1088         )));
1089 
1090 
1091 
1092         $cache->save($router, 'ProjectRouter', array('router'), 14400);
1093 
1094         return $router;
1095     }
1096 
1097     /**
1098      * @throws Zend_Cache_Exception
1099      * @throws Zend_Exception
1100      * @throws exception
1101      */
1102     protected function _initCss()
1103     {
1104         if (APPLICATION_ENV != "development" && APPLICATION_ENV != "staging") {
1105             return;
1106         }
1107 
1108         $appConfig = $this->getResource('config');
1109         if ((boolean)$appConfig->settings->noLESScompile === true) {
1110             return;
1111         }
1112 
1113         $sLess = realpath(APPLICATION_PATH . '/../httpdocs/theme/flatui/less/stylesheet.less');
1114         $sCss = realpath(APPLICATION_PATH . '/../httpdocs/theme/flatui/css/stylesheet.css');
1115 
1116         /**
1117          * @var Zend_Cache_Core $cache
1118          */
1119         $cache = Zend_Registry::get('cache');
1120         if (md5_file($sLess) !== $cache->load('md5Less')) {
1121             require_once APPLICATION_PATH . "/../library/lessphp/lessc.inc.php";
1122             $oLessc = new lessc($sLess);
1123             $oLessc->setFormatter('compressed');
1124             file_put_contents($sCss, $oLessc->parse());
1125             $cache->save(md5_file($sLess), 'md5Less');
1126         }
1127     }
1128 
1129     protected function _initGlobalApplicationVars()
1130     {
1131         $modelDomainConfig = new Default_Model_DbTable_ConfigStore();
1132         Zend_Registry::set('application_store_category_list', $modelDomainConfig->fetchAllStoresAndCategories());
1133         Zend_Registry::set('application_store_config_list', $modelDomainConfig->fetchAllStoresConfigArray());
1134         Zend_Registry::set('application_store_config_id_list', $modelDomainConfig->fetchAllStoresConfigByIdArray());
1135     }
1136 
1137     /**
1138      * @throws Zend_Application_Bootstrap_Exception
1139      */
1140     protected function _initStoreDependentVars()
1141     {
1142         /** @var $front Zend_Controller_Front */
1143         $front = $this->bootstrap('frontController')->getResource('frontController');
1144         $front->registerPlugin(new Default_Plugin_InitGlobalStoreVars());
1145     }
1146 
1147 }