| #0 | CLSystems\PhalCMS\Lib\Helper\Language::getActiveLanguage
/var/www/html/tuinkasmontage.nl/src/app/Lib/Helper/Language.php (227) <?php
namespace CLSystems\PhalCMS\Lib\Helper;
use Phalcon\Http\Response\Cookies;
use CLSystems\Php\Registry;
use CLSystems\PhalCMS\Lib\Factory;
class Language
{
protected static $languages = null;
protected static $activeLanguage = null;
protected static $languagesSef = [];
/**
* @return Registry
*/
public static function getActiveLanguage()
{
if (null === self::$activeLanguage)
{
/** @var Cookies $cookies */
$cookies = Factory::getService('cookies');
$vars = Uri::extract();
$key = 'cms.' . $vars['client'] . '.language';
$defaultLanguage = Config::get($vars['client'] . 'Language', 'nl-NL');
$expire = time() + 15 * 86400;
if (!$cookies->has($key)
|| !self::has($cookies->get($key)->getValue())
)
{
// Reset cookie language
$cookies->set($key, $defaultLanguage, $expire);
}
$activeLanguage = self::get($cookies->get($key)->getValue());
if (isset($vars['language'])
&& $vars['language'] !== $activeLanguage->get('locale.sef')
&& self::hasSef($vars['language']))
{
$activeLanguage = self::getBySef($vars['language']);
// Update cookie language
$cookies->set($key, $activeLanguage->get('locale.code'), $expire);
}
self::$activeLanguage = $activeLanguage?:(object)['locale.code' => $defaultLanguage];
}
// var_dump(str_replace('-', '_', self::$activeLanguage->get('locale.code')));
setlocale (LC_ALL, str_replace('-', '_', self::$activeLanguage->get('locale.code')));
return self::$activeLanguage;
}
public static function getExistsLanguages()
{
if (null === self::$languages)
{
self::$languages = [];
foreach (FileSystem::scanDirs(APP_PATH . '/Language') as $langPath)
{
$localeFile = $langPath . '/Locale.php';
if (is_file($localeFile))
{
$langCode = basename($langPath);
$content = include $localeFile;
$language = new Registry;
$language->set('locale', $content);
self::$languagesSef[$content['sef']] = $langCode;
self::$languages[$langCode] = $language;
}
ksort(self::$languages);
}
}
return self::$languages;
}
public static function initialise()
{
static $initialise = false;
if (!$initialise)
{
$initialise = true;
self::getExistsLanguages();
$activeLanguage = self::getActiveCode();
$contentFile = APP_PATH . '/Language/' . $activeLanguage . '/' . $activeLanguage . '.php';
if (is_file($contentFile)
&& ($content = include $contentFile)
)
{
self::load($content, $activeLanguage);
}
}
}
/**
* @param null $client
*
* @return boolean|Registry
*/
public static function getDefault($client = null)
{
if (!in_array($client, ['site', 'administrator']))
{
$client = Uri::isClient('site') ? 'site' : 'administrator';
}
$defaultLangCode = Config::get($client . 'Language');
return self::get($defaultLangCode);
}
public static function get($langCode)
{
return self::has($langCode) ? self::$languages[$langCode] : false;
}
public static function has($langCode)
{
return array_key_exists($langCode, self::$languages);
}
public static function hasSef($sef)
{
return array_key_exists($sef, self::$languagesSef);
}
public static function getBySef($sef)
{
return self::hasSef($sef) ? self::get(self::$languagesSef[$sef]) : false;
}
/**
* @var mixed $data
* @var string $langCode
*/
public static function load($data, $langCode = null)
{
if (null === $langCode)
{
$langCode = self::getActiveCode();
}
if (isset(self::$languages[$langCode]))
{
$content = array_merge(self::$languages[$langCode]->get('content', []), Registry::parseData($data));
self::$languages[$langCode]->set('content', $content);
}
}
public static function _($string, $placeholders = null)
{
if (strpos($string, 'locale.') === 0)
{
$key = $string;
$string = str_replace('locale.', '', $string);
}
else
{
$key = 'content.' . $string;
}
$translatedText = self::getActiveLanguage()->get($key, $string);
if (is_array($placeholders) && $translatedText !== $string)
{
foreach ($placeholders as $key => $value)
{
$translatedText = str_replace('%' . $key . '%', $value, $translatedText);
}
}
return $translatedText;
}
public static function isMultilingual()
{
return Config::get('multilingual', 'N') === 'Y';
}
public static function getLanguageQuery()
{
static $languageQuery = null;
if (null === $languageQuery)
{
$languageQuery = '*';
if (Uri::isClient('site') && self::isMultilingual())
{
$defaultLanguage = self::getDefault('site')->get('locale.code');
$currentLanguage = self::getActiveLanguage()->get('locale.code');
if ($defaultLanguage !== $currentLanguage)
{
$languageQuery = $currentLanguage;
}
}
}
return $languageQuery;
}
public static function getTranslations($langCode = null)
{
if (!$langCode)
{
$langCode = self::getActiveCode();
}
return isset(self::$languages[$langCode]) ? self::$languages[$langCode]->get('content', []) : [];
}
public static function getActiveCode()
{
return self::getActiveLanguage()->get('locale.code');
}
}
|
| #1 | CLSystems\PhalCMS\Lib\Helper\Language::getActiveCode
/var/www/html/tuinkasmontage.nl/src/app/Lib/Helper/Language.php (93) <?php
namespace CLSystems\PhalCMS\Lib\Helper;
use Phalcon\Http\Response\Cookies;
use CLSystems\Php\Registry;
use CLSystems\PhalCMS\Lib\Factory;
class Language
{
protected static $languages = null;
protected static $activeLanguage = null;
protected static $languagesSef = [];
/**
* @return Registry
*/
public static function getActiveLanguage()
{
if (null === self::$activeLanguage)
{
/** @var Cookies $cookies */
$cookies = Factory::getService('cookies');
$vars = Uri::extract();
$key = 'cms.' . $vars['client'] . '.language';
$defaultLanguage = Config::get($vars['client'] . 'Language', 'nl-NL');
$expire = time() + 15 * 86400;
if (!$cookies->has($key)
|| !self::has($cookies->get($key)->getValue())
)
{
// Reset cookie language
$cookies->set($key, $defaultLanguage, $expire);
}
$activeLanguage = self::get($cookies->get($key)->getValue());
if (isset($vars['language'])
&& $vars['language'] !== $activeLanguage->get('locale.sef')
&& self::hasSef($vars['language']))
{
$activeLanguage = self::getBySef($vars['language']);
// Update cookie language
$cookies->set($key, $activeLanguage->get('locale.code'), $expire);
}
self::$activeLanguage = $activeLanguage?:(object)['locale.code' => $defaultLanguage];
}
// var_dump(str_replace('-', '_', self::$activeLanguage->get('locale.code')));
setlocale (LC_ALL, str_replace('-', '_', self::$activeLanguage->get('locale.code')));
return self::$activeLanguage;
}
public static function getExistsLanguages()
{
if (null === self::$languages)
{
self::$languages = [];
foreach (FileSystem::scanDirs(APP_PATH . '/Language') as $langPath)
{
$localeFile = $langPath . '/Locale.php';
if (is_file($localeFile))
{
$langCode = basename($langPath);
$content = include $localeFile;
$language = new Registry;
$language->set('locale', $content);
self::$languagesSef[$content['sef']] = $langCode;
self::$languages[$langCode] = $language;
}
ksort(self::$languages);
}
}
return self::$languages;
}
public static function initialise()
{
static $initialise = false;
if (!$initialise)
{
$initialise = true;
self::getExistsLanguages();
$activeLanguage = self::getActiveCode();
$contentFile = APP_PATH . '/Language/' . $activeLanguage . '/' . $activeLanguage . '.php';
if (is_file($contentFile)
&& ($content = include $contentFile)
)
{
self::load($content, $activeLanguage);
}
}
}
/**
* @param null $client
*
* @return boolean|Registry
*/
public static function getDefault($client = null)
{
if (!in_array($client, ['site', 'administrator']))
{
$client = Uri::isClient('site') ? 'site' : 'administrator';
}
$defaultLangCode = Config::get($client . 'Language');
return self::get($defaultLangCode);
}
public static function get($langCode)
{
return self::has($langCode) ? self::$languages[$langCode] : false;
}
public static function has($langCode)
{
return array_key_exists($langCode, self::$languages);
}
public static function hasSef($sef)
{
return array_key_exists($sef, self::$languagesSef);
}
public static function getBySef($sef)
{
return self::hasSef($sef) ? self::get(self::$languagesSef[$sef]) : false;
}
/**
* @var mixed $data
* @var string $langCode
*/
public static function load($data, $langCode = null)
{
if (null === $langCode)
{
$langCode = self::getActiveCode();
}
if (isset(self::$languages[$langCode]))
{
$content = array_merge(self::$languages[$langCode]->get('content', []), Registry::parseData($data));
self::$languages[$langCode]->set('content', $content);
}
}
public static function _($string, $placeholders = null)
{
if (strpos($string, 'locale.') === 0)
{
$key = $string;
$string = str_replace('locale.', '', $string);
}
else
{
$key = 'content.' . $string;
}
$translatedText = self::getActiveLanguage()->get($key, $string);
if (is_array($placeholders) && $translatedText !== $string)
{
foreach ($placeholders as $key => $value)
{
$translatedText = str_replace('%' . $key . '%', $value, $translatedText);
}
}
return $translatedText;
}
public static function isMultilingual()
{
return Config::get('multilingual', 'N') === 'Y';
}
public static function getLanguageQuery()
{
static $languageQuery = null;
if (null === $languageQuery)
{
$languageQuery = '*';
if (Uri::isClient('site') && self::isMultilingual())
{
$defaultLanguage = self::getDefault('site')->get('locale.code');
$currentLanguage = self::getActiveLanguage()->get('locale.code');
if ($defaultLanguage !== $currentLanguage)
{
$languageQuery = $currentLanguage;
}
}
}
return $languageQuery;
}
public static function getTranslations($langCode = null)
{
if (!$langCode)
{
$langCode = self::getActiveCode();
}
return isset(self::$languages[$langCode]) ? self::$languages[$langCode]->get('content', []) : [];
}
public static function getActiveCode()
{
return self::getActiveLanguage()->get('locale.code');
}
}
|
| #2 | CLSystems\PhalCMS\Lib\Helper\Language::initialise
/var/www/html/tuinkasmontage.nl/src/app/Lib/Factory.php (213) <?php
namespace CLSystems\PhalCMS\Lib;
error_reporting(E_ALL & ~E_DEPRECATED);
ini_set('display_errors', 1);
use CLSystems\PhalCMS\Lib\Html\TagFactory;
use Phalcon\Support\Debug;
use Phalcon\Mvc\Url;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Config\Adapter\Ini;
use Phalcon\Di\FactoryDefault;
use Phalcon\Db\Adapter\Pdo\Mysql;
use Phalcon\Events\Manager as EventsManager;
use Phalcon\Session\Manager;
use Phalcon\Session\Adapter\Stream;
use Phalcon\Session\Bag;
use Phalcon\Html\Escaper;
use Phalcon\Flash\Session as FlashSession;
use CLSystems\PhalCMS\Lib\Helper\Asset;
use CLSystems\PhalCMS\Lib\Helper\Config;
use CLSystems\PhalCMS\Lib\Helper\Event;
use CLSystems\PhalCMS\Lib\Helper\Language;
use CLSystems\PhalCMS\Lib\Mvc\View\ViewBase;
use CLSystems\Php\Registry;
use Exception;
if (!function_exists('debugVar'))
{
function debugVar($var)
{
(new Debug)
->debugVar($var)
->listen(true, true)
->halt();
}
}
class Factory
{
/** @var Registry $config */
protected static $config;
/** @var CmsApplication $application */
protected static $application;
protected static function loadConfig()
{
if (!is_file(BASE_PATH . '/config.ini')) {
if (is_file(BASE_PATH . '/public/install.php')) {
$protocol = 'http';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
$protocol .= 's';
}
header('location: ' . $protocol . '://' . $_SERVER['HTTP_HOST'] . '/install.php');
} else {
die('The config INI file not found at ' . BASE_PATH . '/config.ini');
}
}
require_once BASE_PATH . '/app/Config/Define.php';
require_once BASE_PATH . '/app/Config/Loader.php';
require_once BASE_PATH . '/../vendor/autoload.php';
return new Ini(BASE_PATH . '/config.ini', INI_SCANNER_NORMAL);
}
public static function getApplication()
{
if (!isset(self::$application)) {
$config = self::loadConfig();
$dbPrefix = $config->path('DB.PREFIX');
try {
$db = new Mysql(
[
'host' => $config->path('DB.HOST'),
'username' => $config->path('DB.USER'),
'password' => $config->path('DB.PASS'),
'dbname' => $config->path('DB.NAME'),
'charset' => 'utf8mb4',
]
);
} catch (Exception $e) {
die($e->getMessage());
}
$registry = new Registry(
[
'siteTemplate' => $config->path('APP.TEMPLATE') ?? 'PhalCMS',
'core' => [
'plugins' => [
'CLSystems\\PhalCMS\\Plugin\\System\\Backup\\Backup',
'CLSystems\\PhalCMS\\Plugin\\System\\Cms\\Cms',
'CLSystems\\PhalCMS\\Plugin\\Cms\\Outlink\\Outlink',
'CLSystems\\PhalCMS\\Plugin\\Cms\\SiteMap\\SiteMap',
'CLSystems\\PhalCMS\\Plugin\\Cms\\SocialLogin\\SocialLogin',
],
'widgets' => [
'CLSystems\\PhalCMS\\Widget\\Code\\Code',
'CLSystems\\PhalCMS\\Widget\\Content\\Content',
'CLSystems\\PhalCMS\\Widget\\FlashNews\\FlashNews',
'CLSystems\\PhalCMS\\Widget\\LanguageSwitcher\\LanguageSwitcher',
'CLSystems\\PhalCMS\\Widget\\Login\\Login',
'CLSystems\\PhalCMS\\Widget\\Menu\\Menu',
'CLSystems\\PhalCMS\\Widget\\SocialShare\\SocialShare',
'CLSystems\\PhalCMS\\Widget\\TagCloud\\TagCloud',
],
],
]
);
if ($extraConfig = $db->fetchColumn('SELECT data FROM ' . $dbPrefix . 'config_data WHERE context = \'cms.config\'')) {
$registry->merge($extraConfig);
}
define('ADMIN_URI_PREFIX', $registry->get('adminPrefix', 'admin'));
define('API_URI_PREFIX', $registry->get('apiPrefix', 'api'));
define('DEVELOPMENT_MODE', $registry->get('development', 'Y') === 'Y');
Config::setDataContext('cms.config', $registry);
if (true === DEVELOPMENT_MODE) {
ini_set('display_errors', true);
error_reporting(E_ALL);
if (!defined('TEST_PHPUNIT_MODE')) {
(new Debug())->listen(true, false);
}
}
// Create DI Factory Default
$di = new FactoryDefault;
// Set URL service first to use debug
$di->setShared('url', function () {
$url = new Url();
$url->setBaseUri('/'); // or read from config
return $url;
});
$di->setShared('config', $config);
$di->setShared('eventsManager', function () { return new EventsManager(); });
$esc = new Escaper();
$tf = new TagFactory($esc);
$di->setShared('tag', $tf);
$di->setShared('assets', new Asset($tf));
$di->getShared('modelsManager')->setModelPrefix($dbPrefix);
$di->setShared('db', $db);
$esc = new Escaper();
$di->setShared('flashSession', new FlashSession($esc));
$di->getShared('flashSession')
->setAutoescape(false)
->setCssClasses(
[
'error' => 'uk-alert uk-alert-danger',
'success' => 'uk-alert uk-alert-success',
'notice' => 'uk-alert uk-alert-warning',
'warning' => 'uk-alert uk-alert-warning',
]
);
$di->setShared('session', function () {
$session = new Manager();
$adapter = new Stream([
'savePath' => CACHE_PATH . '/session',
]);
$session->setAdapter($adapter);
$session->start();
return $session;
});
$di->setShared('sessionBag', function () use ($di) {
return new Bag($di->getShared('session'), 'controller.persistent');
});
$di->setShared('router', function () {
$router = include CONFIG_PATH . '/Router.php';
Event::trigger('onBeforeServiceSetRouter', [$router], ['System', 'Cms']);
return $router;
});
$di->getShared('crypt')
->setCipher('aes-256-ctr')
->setKey($config->path('SECRET.CRYPT_KEY'));
$di->setShared('dispatcher', function () use ($di) {
$dispatcher = new Dispatcher();
// Optionally set default namespace for controllers
$dispatcher->setDefaultNamespace('CLSystems\\PhalCMS\\Lib\\Mvc\\Controller');
// Ensure events manager is set
$dispatcher->setEventsManager($di->getShared('eventsManager'));
return $dispatcher;
});
$di->setShared('view', ViewBase::getInstance($di));
// Initialise config data
self::$config = new Registry($config->toArray());
// Initialise application
self::$application = new CmsApplication($di);
// Initialise languages
Language::initialise();
}
return self::$application;
}
public static function getConfig()
{
return self::$config;
}
public static function getService($name, $parameters = null)
{
$di = self::getApplication()->getDI();
switch ($name) {
case 'url':
case 'view':
case 'db':
case 'modelsMetadata':
case 'modelsManager':
case 'session':
case 'flashSession':
case 'cookies':
case 'security':
case 'dispatcher':
case 'router':
case 'filter':
case 'crypt':
case 'request':
case 'response':
return $di->getShared($name, $parameters);
}
return $di->get($name, $parameters);
}
}
|