Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/phpstan.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@ jobs:
php-version: 7.4

- name: Install Dependencies
run: composer update --ignore-platform-reqs
run: |
# copy common.config.php for composer autoloader
cp core/config/common.config.sample.php core/config/common.config.php
# install composer dependencies
composer update --ignore-platform-reqs

- name: Setup PHP 8.2 for PHPStan
uses: shivammathur/setup-php@v2
Expand Down
16 changes: 16 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,21 @@
"platform": {
"php": "7.4"
}
},
"autoload": {
"psr-4": {
"Jeedom\\Core\\": "src/",
"Jeedom\\Plugins\\": "plugins/"
},
"files": [
"core/config/common.config.php",
"core/php/utils.inc.php",
"core/config/compatibility.config.php"
],
"classmap": [
"core/class/",
"core/com/",
"core/repo/"
]
}
}
6 changes: 5 additions & 1 deletion core/class/log.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ public function log($level, $message, array $context = array()) {

public static function getConfig($_key, $_default = '') {
if (self::$config === null) {
self::$config = array_merge(config::getLogLevelPlugin(), config::byKeys(array('log::engine', 'log::formatter', 'log::level', 'addMessageForErrorLog', 'maxLineLog')));
try {
self::$config = array_merge(config::getLogLevelPlugin(), config::byKeys(array('log::engine', 'log::formatter', 'log::level', 'addMessageForErrorLog', 'maxLineLog')));
} catch (Exception $e) {
self::$config = array();
}
}
if (isset(self::$config[$_key])) {
return self::$config[$_key];
Expand Down
4 changes: 0 additions & 4 deletions core/class/translate.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,3 @@ public static function setLanguage($_langage) {

/* * *********************Methode d'instance************************* */
}

function __($_content, $_name, $_backslash = false) {
return translate::sentence(str_replace("\'", "'", $_content), $_name, $_backslash);
}
3 changes: 3 additions & 0 deletions core/class/update.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,9 @@ public function doUpdate() {
if (file_exists($cibDir)) {
rrmdir($cibDir);
}
// re generate composer autoloader
$result = shell_exec(system::getCmdSudo() . ' composer dump-autoload --optimize --working-dir $WEBSERVER_HOME');
log::add(__CLASS__, 'debug', "Composer autoloader dump result:\n$result");
} else {
throw new Exception(__("Impossible de décompresser l'archive zip", __FILE__) . ' : ' . $tmp . ' => ' . ZipErrorMessage($res));
}
Expand Down
65 changes: 25 additions & 40 deletions core/php/core.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,64 +17,49 @@
*/
date_default_timezone_set('Europe/Brussels');
require_once __DIR__ . '/../../vendor/autoload.php';
require_once __DIR__ . '/../config/common.config.php';
require_once __DIR__ . '/../class/DB.class.php';
require_once __DIR__ . '/../class/config.class.php';
require_once __DIR__ . '/../class/jeedom.class.php';
require_once __DIR__ . '/../class/plugin.class.php';
require_once __DIR__ . '/../class/translate.class.php';
require_once __DIR__ . '/utils.inc.php';
include_file('core', 'jeedom', 'config');
include_file('core', 'compatibility', 'config');
include_file('core', 'utils', 'class');
include_file('core', 'log', 'class');

try {
$configs = config::byKeys(array('timezone', 'log::level'));
if (isset($configs['timezone'])) {
date_default_timezone_set($configs['timezone']);
}
} catch (Exception $e) {
} catch (Error $e) {
} catch (Throwable $e) {
log::add('jeedom', 'error', 'Log (level|timezone) configuration failed: ' . $e->getMessage());
}

try {
if (isset($configs['log::level'])) {
log::define_error_reporting($configs['log::level']);
}
} catch (Exception $e) {
} catch (Error $e) {
} catch (Throwable $e) {
log::add('jeedom', 'error', 'Log (level|timezone) configuration failed: ' . $e->getMessage());
}

/**
* Autoload function for specific Jeedom classes
* this function is called after the default Composer autoloader
* it will load specific classes such as Cmd, Real, etc.
* for plugins that do not use namespaces or Composer autoloading
*/
function jeedomAutoload($_classname) {
/* core class always in /core/class : */
$path = __DIR__ . "/../../core/class/$_classname.class.php";
if (file_exists($path)) {
include_file('core', $_classname, 'class');
} else if (substr($_classname, 0, 4) === 'com_') {
/* class com_$1 in /core/com/$1.com.php */
include_file('core', substr($_classname, 4), 'com');
} else if (substr($_classname, 0, 5) === 'repo_') {
/* class repo_$1 in /core/repo/$1.repo.php */
include_file('core', substr($_classname, 5), 'repo');
} else if (strpos($_classname, '\\') === false && strpos($_classname, '/') === false) {
/* autoload for plugins : no namespace */
$classname = str_replace(array('Real', 'Cmd'), '', $_classname);
if (strpos($_classname, '\\') !== false || strpos($_classname, '/') !== false) {
return;
}
/* autoload for plugins : no namespace */
$classname = str_replace(array('Real', 'Cmd'), '', $_classname);
$plugin_active = config::byKey('active', $classname, null);
if (($plugin_active === null || $plugin_active == '' || $plugin_active == 0) && strpos($classname, '_') !== false) {
$classname = explode('_', $classname)[0];
$plugin_active = config::byKey('active', $classname, null);
if (($plugin_active === null || $plugin_active == '' || $plugin_active == 0) && strpos($classname, '_') !== false) {
$classname = explode('_', $classname)[0];
$plugin_active = config::byKey('active', $classname, null);
}
if ($plugin_active == 1) {
try {
include_file('core', $classname, 'class', $classname);
} catch (Exception $e) {

} catch (Error $e) {

}
}
if ($plugin_active == 1) {
try {
include_file('core', $classname, 'class', $classname);
} catch (Throwable $e) {
log::add('jeedom', 'error', 'Log (level|timezone) configuration failed: ' . $e->getMessage());
}
}
}

spl_autoload_register('jeedomAutoload', true, true);
spl_autoload_register('jeedomAutoload');
7 changes: 7 additions & 0 deletions core/php/utils.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -1839,3 +1839,10 @@ function implode_recursive($_array, $_separator, $_key = '') {
}
return $result;
}

/**
* alias for translate::sentence
*/
function __($_content, $_name, $_backslash = false) {
return translate::sentence(str_replace("\'", "'", $_content), $_name, $_backslash);
}