Skip to content

Instantly share code, notes, and snippets.

@d3v2a
Last active May 30, 2024 18:11
Show Gist options
  • Save d3v2a/4797abc9aa633634c5be9448dbf05693 to your computer and use it in GitHub Desktop.
Save d3v2a/4797abc9aa633634c5be9448dbf05693 to your computer and use it in GitHub Desktop.
Reload dolibarr module from cli

Files should be in custom folder

reload.sh search for class name given in the module path

./reload.sh modulepah [0|1]

reload module with module class name (eg: modFacture)

php reload.php modModuleName [0|1]
<?php
/* Copyright (C) 2012 Nicolas Villa aka Boyquotes http://informetic.fr
* Copyright (C) 2013 Florian Henry <forian.henry@open-concept.pro
* Copyright (C) 2013-2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2020-2024 Jacquel jérome <contact@dev2a.pro>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Disables token renewal
if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1');
if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1');
if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1');
if (!defined('NOLOGIN')) define('NOLOGIN', '1');
$sapi_type = php_sapi_name();
$script_file = basename(__FILE__);
$path = dirname(__FILE__) . '/';
// Test if batch mode
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n";
exit(-1);
}
const MAIN_LANG_DEFAULT = 'FR_fr';
require_once $path . "../master.inc.php";
require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php';
$user = new User($db);
$user->fetch(1);
$user->getrights();
// Global variables
$version = DOL_VERSION;
$error = 0;
$class = $argv[1];
$activate = isset($argv[2]) && $argv[2] != '' ? $argv[2] : -1;
$modName = $class;
$modFile = $modName . ".class.php";
$modFileLower = strtolower($modName) . ".class.php";
// Loop on each directory to fill $modulesdir
$modulesdir = dolGetModulesDirs();
// Loop on each modulesdir directories
$found = false;
foreach ($modulesdir as $dir) {
if (file_exists($dir . $modFile)) {
$found = @include_once $dir . $modFile;
if ($found) {
break;
}
}
if (file_exists($dir . $modFileLower)) {
$found = @include_once $dir . $modFileLower;
if ($found) {
break;
}
}
}
$objMod = new $modName($db);
$const_name = $objMod->const_name;
if (isset($conf->global->$const_name) && (!$activate || $activate < 0)) {
print 'unactivate'.PHP_EOL;
unActivateModule($class);
unset($conf->global->$const_name);
}
if ($activate || $activate < 0) {
print 'activate'.PHP_EOL;
$ret = activateModule($class);
}
#!/bin/bash
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
MODULEPATH=$1
ACTIVE=$2
mod=$(find "${DIR}/${MODULEPATH}/core/modules/" -type f -regex "${DIR}/${MODULEPATH}/core/modules/mod.*\\.class\\.php")
CLASSNAME=$(grep 'extends DolibarrModules' "${mod}" | cut -d ' ' -f2)
php ./reload.php "${CLASSNAME}" "${ACTIVE}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment