blog->settings->construction->construction_flag) { dcCore::app()->addBehavior('publicBeforeDocument',array('publicBehaviorsConstruction','checkVisitor')); } dcCore::app()->tpl->addValue('ConstructionMessage',array('tplConstruction','ConstructionMessage')); dcCore::app()->tpl->addValue('ConstructionTitle',array('tplConstruction','ConstructionTitle')); class publicBehaviorsConstruction { public static function checkVisitor($core) { $tplset = dcCore::app()->themes->moduleInfo(dcCore::app()->blog->settings->system->theme,'tplset'); if (!empty($tplset) && is_dir(dirname(__FILE__).'/default-templates/'.$tplset)) { dcCore::app()->tpl->setPath(dcCore::app()->tpl->getPath(), dirname(__FILE__).'/default-templates/'.$tplset); } else { dcCore::app()->tpl->setPath(dcCore::app()->tpl->getPath(), dirname(__FILE__).'/default-templates/'.DC_DEFAULT_TPLSET); } $all_allowed_ip = unserialize(dcCore::app()->blog->settings->construction->construction_allowed_ip); $extra_urls = unserialize(dcCore::app()->blog->settings->construction->construction_extra_urls); if (!in_array(http::realIP(),$all_allowed_ip)) { dcCore::app()->url->registerDefault(array('urlConstruction','constructionHandler')); dcCore::app()->url->registerError(array('urlConstruction','default503')); foreach (dcCore::app()->url->getTypes() as $k=>$v) { if (($k != 'contactme') && !in_array($k,$extra_urls)) { dcCore::app()->url->register($k,$v['url'],$v['representation'],array('urlConstruction','p503')); } } } } } class urlConstruction extends dcUrlHandlers { public static function p503() { throw new Exception ("Blog under construction",503); } public static function default503($args,$type,$e) { //if ($e->getCode() == 503) { $_ctx =& $GLOBALS['_ctx']; $core =& $GLOBALS['core']; header('Content-Type: text/html; charset=UTF-8'); http::head(503,'Service Unavailable'); dcCore::app()->url->type = '503'; $_ctx->current_tpl = '503.html'; $_ctx->content_type = 'text/html'; echo dcCore::app()->tpl->getData($_ctx->current_tpl); # --BEHAVIOR-- publicAfterDocument dcCore::app()->callBehavior('publicAfterDocument',$core); exit; //} } public static function constructionHandler($args) { $core =& $GLOBALS['core']; dcCore::app()->url->type = 'default'; self::p503(); return; } } class tplConstruction { public static function ConstructionMessage($attr) { $core =& $GLOBALS['core']; $f = dcCore::app()->tpl->getFilters($attr); return 'blog->settings->construction->construction_message').'; ?>'; } public static function ConstructionTitle($attr) { $core =& $GLOBALS['core']; $f = dcCore::app()->tpl->getFilters($attr); return 'blog->settings->construction->construction_title').'; ?>'; } }