| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- <?php
- namespace MGModule\DNSManager2\mgLibs;
- use MGModule\DNSManager2\mgLibs\custom\helpers as helpers;
- use MGModule\DNSManager2 as main;
- /**
- * Simple class to translating languages
- *
- * @author Michal Czech <michael@modulesgarden.com>
- */
- class lang
- {
- private static $instance;
- private $dir;
- private $langs = array();
- private $currentLang;
-
- private $fillLangFile = true;
- public $context = array();
- private $staggedContext = array();
- private $missingLangs = array();
-
- private function __construct() {}
- private function __clone(){}
-
- /**
- * Get Single-ton Instance
- *
- * @author Michal Czech <michael@modulesgarden.com>
- * @param type $dir
- * @param type $lang
- * @return lang
- */
- public static function getInstance ($dir = null, $lang = null)
- {
- if (self::$instance === null)
- {
- self::$instance = new self();
- self::$instance->dir = $dir;
- self::$instance->loadLang('english');
-
- self::$instance->fillLangFile = process\mainInstance::I()->isDebug();
-
- if(!$lang)
- {
- $lang = self::getLang();
- }
-
- if($lang && $lang != 'english')
- {
- self::$instance->loadLang($lang);
- }
- }
- return self::$instance;
- }
-
- public static function getMissingLangs(){
- return self::$instance->missingLangs;
- }
- /**
- * Get Current Lang Name
- *
- * @author Michal Czech <michael@modulesgarden.com>
- * @return string
- */
- public static function getLang()
- {
- //TODO
- $language = '';
- if(main\addon::isAdminArea() && $_SESSION['adminid'])
- {
- $row = main\mgLibs\MySQL\query::query("SELECT language FROM tbladmins WHERE id = ".$_SESSION['adminid'])->fetch();
- if($row['language'])
- {
- $language = $row['language'];
- }
- }
- elseif(isset($_SESSION['Language'])) // GET LANG FROM SESSION
- {
- $language = strtolower($_SESSION['Language']);
- }
- elseif(isset($_SESSION['uid']))
- {
- $row = main\mgLibs\MySQL\query::query("SELECT language FROM tblclients WHERE id = ".$_SESSION['uid'])->fetch();
- if($row['language'])
- {
- $language = $row['language'];
- }
- }
- if(!$language)
- {
- $row = main\mgLibs\MySQL\query::query("SELECT value FROM tblconfiguration WHERE setting = 'Language' LIMIT 1")->fetch();
- $language = $row['value'];
- }
- if(!$language)
- {
- $language = 'english';
- }
- return strtolower($language);
- }
-
- /**
- * Get Avaiable Translations
- *
- * @author Michal Czech <michael@modulesgarden.com>
- * @return type
- */
- public static function getAvaiable()
- {
- $langArray = array();
- $handle = opendir(self::$instance->dir);
- while (false !== ($entry = readdir($handle))) {
- list($lang,$ext) = explode('.',$entry);
- if($lang && isset($ext) && strtolower($ext) == 'php')
- {
- $langArray[] = $lang;
- }
- }
-
- return $langArray;
- }
- /**
- * Load Lang File
- *
- * @author Michal Czech <michael@modulesgarden.com>
- * @param string $lang Lang Name
- */
- public static function loadLang($lang)
- {
- $file = self::getInstance()->dir.DS.$lang.'.php';
- if(file_exists($file))
- {
- include $file;
- self::getInstance()->langs = array_merge(self::getInstance()->langs,$_LANG);
- self::getInstance()->currentLang = $lang;
- }
- }
-
- /**
- * Set Lang Context
- *
- * Given parameters are lang levels
- *
- * @author Michal Czech <michael@modulesgarden.com>
- */
- public static function setContext(){
- self::getInstance()->context = array();
- foreach(func_get_args() as $name)
- {
- self::getInstance()->context[] = $name;
- }
- }
-
- /**
- * Add levels at stack upwards
- *
- * Given parameters are lang levels
- *
- * @author Michal Czech <michael@modulesgarden.com>
- */
- public static function addToContext(){
- foreach(func_get_args() as $name)
- {
- self::getInstance()->context[] = $name;
- }
- }
-
- /**
- * Stag Current levels stack
- *
- * @author Michal Czech <michael@modulesgarden.com>
- * @param string $stagName
- */
- public static function stagCurrentContext($stagName){
- self::getInstance()->staggedContext[$stagName] = self::getInstance()->context;
- }
-
- /**
- * Restore Lang levels from stag
- *
- * @author Michal Czech <michael@modulesgarden.com>
- * @param string $stagName
- */
- public static function unstagContext($stagName){
- if(isset(self::getInstance()->staggedContext[$stagName]))
- {
- self::getInstance()->context = self::getInstance()->staggedContext[$stagName];
- unset(self::getInstance()->staggedContext[$stagName]);
- }
- }
- /**
- * Get Translated Lang
- *
- * @author Michal Czech <michael@modulesgarden.com>
- * @return string
- */
- public static function T()
- {
- $lang = self::getInstance()->langs;
- $history = array();
- foreach(self::getInstance()->context as $name)
- {
- if(isset($lang[$name]))
- {
- $lang = $lang[$name];
- }
- $history[] = $name;
- }
-
- $returnLangArray = false;
-
- foreach(func_get_args() as $find)
- {
- if($find == 'you_cannot_edit_this_zone_because_it_is_terminated_on_server')
- {
- $t = true;
- }
-
-
- $history[] = $find;
- if(isset($lang[$find]))
- {
- if(is_array($lang[$find]))
- {
- $lang = $lang[$find];
- }
- else
- {
- return htmlentities($lang[$find]);
- }
- }
- else
- {
-
- if(self::getInstance()->fillLangFile)
- {
- $returnLangArray = true;
- }
- else
- {
- return htmlentities($find);
- }
- }
- }
- if($returnLangArray)
- {
- $last = end($history); //reset($history)
- $exp = explode("_", $last);
- array_walk($exp, function(&$item){$item = ucfirst($item);});
- self::getInstance()->missingLangs['$'."_LANG['".implode("']['", $history)."']"] = "\"" . implode(" ", $exp) . '";';
- return '$'."_LANG['".implode("']['", $history)."']";
- //self::getInstance()->missingLangs['$'."_LANG['".implode("']['", $history)."']"] = implode(" ", array_slice($history, -3, 3, true));
- //return '$'."_LANG['".implode("']['", $history)."']";
- }
- if(is_array($lang) && self::getInstance()->fillLangFile)
- {
- self::getInstance()->missingLangs['$'."_LANG['".implode("']['", $history)."']"] = implode(" ", array_slice($history, -3, 3, true));
- return '$'."_LANG['".implode("']['", $history)."']";
- }
-
- return htmlentities($find);
- }
-
- /**
- * Get Translated Absolute Lang
- *
- * @author Michal Czech <michael@modulesgarden.com>
- * @return string
- */
- public static function absoluteT(){
- $lang = self::getInstance()->langs;
-
- $returnLangArray = false;
-
- foreach(func_get_args() as $find)
- {
- $history[] = $find;
- if(isset($lang[$find]))
- {
- if(is_array($lang[$find]))
- {
- $lang = $lang[$find];
- }
- else
- {
- return htmlentities($lang[$find]);
- }
- }
- else
- {
-
- if(self::getInstance()->fillLangFile)
- {
- $returnLangArray = true;
- }
- else
- {
- return htmlentities($find);
- }
- }
- }
-
- if($returnLangArray)
- {
- $last = end($history); //reset($history)
- $exp = explode("_", $last);
- array_walk($exp, function(&$item){$item = ucfirst($item);});
- self::getInstance()->missingLangs['$'."_LANG['".implode("']['", $history)."']"] = "\"" . implode(" ", $exp) . '";';
- return '$'."_LANG['".implode("']['", $history)."']";
- //self::getInstance()->missingLangs['$'."_LANG['".implode("']['", $history)."']"] = implode(" ", array_slice($history, -3, 3, true));
- //return '$'."_LANG['".implode("']['", $history)."']";
- }
-
- // if($returnLangArray)
- // {
- // self::getInstance()->missingLangs['$'."_LANG['".implode("']['", $history)."']"] = implode(" ", array_slice($history, -3, 3, true));
- // return '$'."_LANG['".implode("']['", $history)."']";
- // }
-
- return htmlentities($lang);
- }
- }
|