add module system
[GitHub/Stricted/Domain-Control-Panel.git] / lib / system / DNS.class.php
index 976b9fb7a4409b967cda0bebf03198d74779157d..cd7c8a4bd0dfb915cc41a61c1498788d3b9895c3 100644 (file)
@@ -9,6 +9,13 @@ if (!defined('DNS_VERSION')) define('DNS_VERSION', '3.0.0 Beta');
  * @copyright   2014-2015 Jan Altensen (Stricted)
  */
 class DNS {
+       /**
+        * module name
+        *
+        * @var string
+        */
+       protected static $module = '';
+       
        /**
         * database object
         *
@@ -40,7 +47,8 @@ class DNS {
        /**
         * init main system
         */
-       public function __construct() {
+       public function __construct($module = '') {
+               self::$module = $module;
                spl_autoload_register(array('dns\system\DNS', 'autoload'));
                set_exception_handler(array('dns\system\DNS', 'handleException'));
                set_error_handler(array('dns\system\DNS', 'handleError'), E_ALL);
@@ -51,7 +59,7 @@ class DNS {
                $this->initSession();
                $this->initLanguage();
                $this->initTPL();
-               new RequestHandler();
+               new RequestHandler(self::$module);
        }
        
        /*
@@ -173,9 +181,13 @@ class DNS {
         * init language system
         */
        protected function initLanguage () {
+               /*
+                * @TODO: activate this later
+                * self::buildlanguage();
+                */
                $availableLanguages = array("de", "en");
                $languageCode = 'de';
-               $basedir = DNS_DIR.'/lang/';
+               
                if (isset($_GET['l'])) {
                        $code = strtolower($_GET['l']);
                        if (in_array($code, $availableLanguages)) {
@@ -205,6 +217,23 @@ class DNS {
                        }
                }
                
+               // @TODO: remove this later
+               /* try to load module language files */
+               if (!empty(self::$module)) {
+                       $basedir = DNS_DIR.'/'.self::$module.'/lang/';
+                       $file = $basedir.$languageCode.'.lang.php';
+                       self::getSession()->register('language', $languageCode);
+                       
+                       if (file_exists($file)) {
+                               require_once($file);
+                               if (isset($lang) && !empty($lang) && is_array($lang)) {
+                                       $this->language = array_merge($this->language, $lang);
+                               }
+                       }
+               }
+               
+               /* load default language files */
+               $basedir = DNS_DIR.'/lang/';
                $file = $basedir.$languageCode.'.lang.php';
                self::getSession()->register('language', $languageCode);
                
@@ -260,12 +289,15 @@ class DNS {
                        $tpl = self::getSession()->tpl;
                }
                
-               require_once(DNS_DIR.'/lib/api/smarty/Smarty.class.php');
+               require_once(DNS_DIR.'/lib/system/api/smarty/libs/Smarty.class.php');
                self::$tplObj = new \Smarty;
                
-               self::getTPL()->setTemplateDir(DNS_DIR."/templates/".$tpl);
-               self::getTPL()->setCompileDir(DNS_DIR."/templates/compiled/".$tpl);
-               self::getTPL()->setPluginsDir(DNS_DIR."/lib/api/smarty/plugins");
+               self::getTPL()->setTemplateDir(DNS_DIR.(empty(self::$module) ? '' : '/'.self::$module)."/templates/".$tpl);
+               self::getTPL()->setCompileDir(DNS_DIR.(empty(self::$module) ? '' : '/'.self::$module)."/templates/compiled/".$tpl);
+               self::getTPL()->setPluginsDir(array(
+                       DNS_DIR."/lib/system/api/smarty/libs/plugins",
+                       DNS_DIR."/lib/template/plugins"
+               ));
                self::getTPL()->loadFilter('pre', 'hascontent');
                
                if (!ENABLE_DEBUG) {
@@ -335,4 +367,36 @@ class DNS {
                
                require_once($file);
        }
+       
+       /**
+        * build language files from database
+        *
+        * @param       boolean $force
+        */
+       public static function buildlanguage ($force = false) {
+               $availableLanguages = array("de", "en");
+               foreach ($availableLanguages as $languageID => $languageCode) {
+                       
+                       $file = DNS_DIR."/lang/".$languageCode.".lang.php";
+                       if (!file_exists($file) || (filemtime($file) + 86400) < time() || $force === true) {
+                               if (file_exists($file)) {
+                                       @unlink($file);
+                               }
+                               
+                               @touch($file);
+                               
+                               $items = self::getDB()->query("select * from dns_language where languageID = ?", array($languageID));
+                               $content = "<?php\n/**\n* language: ".$languageCode."\n* encoding: UTF-8\n* generated at ".gmdate("r")."\n* \n* DO NOT EDIT THIS FILE\n*/\n";
+                               $content .= "\$lang = array();\n";
+                               while ($row = self::getDB()->fetch_array($items)) {
+                                       print_r($row);
+                                       $content .= "\$lang['".$row['languageItem']."'] = '".str_replace("\$", '$', $row['languageValue'])."';\n";
+                               }
+                               
+                               $handler = fOpen($file, "a+");
+                               fWrite($handler, $content);
+                               fClose($handler);
+                       }
+               }
+       }
 }