From 40f283071467a502e8d37a1261f93753c99456d9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 4 Oct 2024 12:10:25 +0200 Subject: [PATCH] Start to move function for CLI mode into a dedicated file --- htdocs/core/lib/functionscli.lib.php | 50 +++++++++++++++++++ htdocs/master.inc.php | 11 ---- scripts/bank/export-bank-receipts.php | 1 + .../company/sync_contacts_dolibarr2ldap.php | 1 + .../email_expire_services_to_customers.php | 1 + ...ail_expire_services_to_representatives.php | 1 + scripts/cron/cron_run_jobs.php | 1 + scripts/doc/regenerate_docs.php | 1 + scripts/emailings/mailing-send.php | 1 + scripts/emailings/reset-invalid-emails.php | 1 + .../email_unpaid_invoices_to_customers.php | 1 + ...ail_unpaid_invoices_to_representatives.php | 1 + scripts/invoices/rebuild_merge_pdf.php | 1 + .../members/sync_members_dolibarr2ldap.php | 1 + .../members/sync_members_ldap2dolibarr.php | 1 + .../sync_members_types_dolibarr2ldap.php | 1 + .../sync_members_types_ldap2dolibarr.php | 1 + scripts/product/migrate_picture_path.php | 1 + scripts/product/regenerate_thumbs.php | 1 + scripts/user/migrate_picture_path.php | 1 + scripts/user/sync_groups_dolibarr2ldap.php | 1 + scripts/user/sync_groups_ldap2dolibarr.php | 1 + scripts/user/sync_users_dolibarr2ldap.php | 1 + scripts/user/sync_users_ldap2dolibarr.php | 1 + scripts/website/regenerate-pages.php | 1 + scripts/withdrawals/build_withdrawal_file.php | 1 + 26 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 htdocs/core/lib/functionscli.lib.php diff --git a/htdocs/core/lib/functionscli.lib.php b/htdocs/core/lib/functionscli.lib.php new file mode 100644 index 00000000000..f6a603f17ce --- /dev/null +++ b/htdocs/core/lib/functionscli.lib.php @@ -0,0 +1,50 @@ + + * + * 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 . + * or see https://www.gnu.org/ + */ + +/** + * \file htdocs/core/lib/functionscli.lib.php + * \brief A set of functions for CLI scripts of Dolibarr + * This file contains only functions used by script run on command line. + */ + + +// Define ANSI color constant to use colors and bold in CLI script +define('DOL_COLOR_RESET', "\033[0m"); // Restore color +define('DOL_COLOR_BOLD', "\033[1m"); // Bold +define('DOL_COLOR_RED', "\033[31m"); +define('DOL_COLOR_GREEN', "\033[32m"); +define('DOL_COLOR_YELLOW', "\033[33m"); +define('DOL_COLOR_BLUE', "\033[34m"); +define('DOL_COLOR_MAGENTA', "\033[35m"); +define('DOL_COLOR_CYAN', "\033[36m"); +define('DOL_COLOR_WHITE', "\033[37m"); + + +/** + * Output text in color or bold + * + * @param string $text Text to show + * @param string $color Color code + * @param boolean $bold Bold or not + * @return string Text enhanced with colors + */ +function coloredText($text, $color, $bold = false) +{ + $boldCode = $bold ? DOL_COLOR_BOLD : ''; + return $boldCode . $color . $text . DOL_COLOR_RESET; +} diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index a7d59529b00..68dac40053c 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -265,14 +265,3 @@ if (!defined('NOREQUIRETRAN')) { } $langs->setDefaultLang($langcode); } - -// Define ANSI color constant to use colors and bold in CLI script -define('DOL_COLOR_RESET', "\033[0m"); // Restore color -define('DOL_COLOR_BOLD', "\033[1m"); // Bold -define('DOL_COLOR_RED', "\033[31m"); -define('DOL_COLOR_GREEN', "\033[32m"); -define('DOL_COLOR_YELLOW', "\033[33m"); -define('DOL_COLOR_BLUE', "\033[34m"); -define('DOL_COLOR_MAGENTA', "\033[35m"); -define('DOL_COLOR_CYAN', "\033[36m"); -define('DOL_COLOR_WHITE', "\033[37m"); diff --git a/scripts/bank/export-bank-receipts.php b/scripts/bank/export-bank-receipts.php index 0107557f00c..5bea3fe5f34 100755 --- a/scripts/bank/export-bank-receipts.php +++ b/scripts/bank/export-bank-receipts.php @@ -39,6 +39,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') { } require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; diff --git a/scripts/company/sync_contacts_dolibarr2ldap.php b/scripts/company/sync_contacts_dolibarr2ldap.php index 350f851a54d..454814f43be 100755 --- a/scripts/company/sync_contacts_dolibarr2ldap.php +++ b/scripts/company/sync_contacts_dolibarr2ldap.php @@ -39,6 +39,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') { } require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/contact/class/contact.class.php"; require_once DOL_DOCUMENT_ROOT."/user/class/user.class.php"; require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; diff --git a/scripts/contracts/email_expire_services_to_customers.php b/scripts/contracts/email_expire_services_to_customers.php index 94805f74ada..6b7e5e09421 100755 --- a/scripts/contracts/email_expire_services_to_customers.php +++ b/scripts/contracts/email_expire_services_to_customers.php @@ -55,6 +55,7 @@ $mode = $argv[1]; $targettype = $argv[2]; require $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; $langs->loadLangs(array('main', 'contracts')); diff --git a/scripts/contracts/email_expire_services_to_representatives.php b/scripts/contracts/email_expire_services_to_representatives.php index 33ac9fcbb35..6e4696cf258 100755 --- a/scripts/contracts/email_expire_services_to_representatives.php +++ b/scripts/contracts/email_expire_services_to_representatives.php @@ -53,6 +53,7 @@ if (!isset($argv[1]) || !$argv[1] || !in_array($argv[1], array('test', 'confirm' $mode = $argv[1]; require $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; $langs->loadLangs(array('main', 'contracts')); diff --git a/scripts/cron/cron_run_jobs.php b/scripts/cron/cron_run_jobs.php index db2848331a9..822bcf5ed84 100755 --- a/scripts/cron/cron_run_jobs.php +++ b/scripts/cron/cron_run_jobs.php @@ -60,6 +60,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') { } require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/cron/class/cronjob.class.php"; require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; diff --git a/scripts/doc/regenerate_docs.php b/scripts/doc/regenerate_docs.php index 0716b01233a..6dfe093a481 100755 --- a/scripts/doc/regenerate_docs.php +++ b/scripts/doc/regenerate_docs.php @@ -42,6 +42,7 @@ define('EVEN_IF_ONLY_LOGIN_ALLOWED', 1); // Set this define to 0 if you want to // Include and load Dolibarr environment variables require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php"; require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; require_once DOL_DOCUMENT_ROOT."/core/lib/images.lib.php"; diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index 3bbcbeb1470..6e32dd68085 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -62,6 +62,7 @@ if (isset($argv[3]) || !empty($argv[3])) { require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; require_once DOL_DOCUMENT_ROOT."/comm/mailing/class/mailing.class.php"; diff --git a/scripts/emailings/reset-invalid-emails.php b/scripts/emailings/reset-invalid-emails.php index 653fc0b1e7e..cb78837d1bd 100755 --- a/scripts/emailings/reset-invalid-emails.php +++ b/scripts/emailings/reset-invalid-emails.php @@ -50,6 +50,7 @@ $type = $argv[2]; $mode = $argv[3]; require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; require_once DOL_DOCUMENT_ROOT."/comm/mailing/class/mailing.class.php"; diff --git a/scripts/invoices/email_unpaid_invoices_to_customers.php b/scripts/invoices/email_unpaid_invoices_to_customers.php index ba4d79dde7c..0a1bfa90d60 100755 --- a/scripts/invoices/email_unpaid_invoices_to_customers.php +++ b/scripts/invoices/email_unpaid_invoices_to_customers.php @@ -55,6 +55,7 @@ $mode = $argv[1]; $targettype = $argv[2]; require $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; $langs->load('main'); diff --git a/scripts/invoices/email_unpaid_invoices_to_representatives.php b/scripts/invoices/email_unpaid_invoices_to_representatives.php index 5b0ed90e66b..a5b176c4f72 100755 --- a/scripts/invoices/email_unpaid_invoices_to_representatives.php +++ b/scripts/invoices/email_unpaid_invoices_to_representatives.php @@ -53,6 +53,7 @@ if (!isset($argv[1]) || !$argv[1] || !in_array($argv[1], array('test', 'confirm' $mode = $argv[1]; require $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; $langs->load('main'); diff --git a/scripts/invoices/rebuild_merge_pdf.php b/scripts/invoices/rebuild_merge_pdf.php index bfcbe0ad514..3b1af79a369 100755 --- a/scripts/invoices/rebuild_merge_pdf.php +++ b/scripts/invoices/rebuild_merge_pdf.php @@ -40,6 +40,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') { // Include Dolibarr environment require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; // After this $db is an opened handler to database. We close it at end of file. require_once DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php"; require_once DOL_DOCUMENT_ROOT."/core/modules/facture/modules_facture.php"; diff --git a/scripts/members/sync_members_dolibarr2ldap.php b/scripts/members/sync_members_dolibarr2ldap.php index 367d8cb301d..4cbfacada8d 100755 --- a/scripts/members/sync_members_dolibarr2ldap.php +++ b/scripts/members/sync_members_dolibarr2ldap.php @@ -39,6 +39,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') { } require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php"; diff --git a/scripts/members/sync_members_ldap2dolibarr.php b/scripts/members/sync_members_ldap2dolibarr.php index 785dd35c3ac..0322ca0d390 100755 --- a/scripts/members/sync_members_ldap2dolibarr.php +++ b/scripts/members/sync_members_ldap2dolibarr.php @@ -40,6 +40,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') { } require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/lib/date.lib.php"; require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php"; diff --git a/scripts/members/sync_members_types_dolibarr2ldap.php b/scripts/members/sync_members_types_dolibarr2ldap.php index 47fb87bd576..c94801ef356 100755 --- a/scripts/members/sync_members_types_dolibarr2ldap.php +++ b/scripts/members/sync_members_types_dolibarr2ldap.php @@ -47,6 +47,7 @@ if (!isset($argv[1]) || !$argv[1]) { $now = $argv[1]; require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"; diff --git a/scripts/members/sync_members_types_ldap2dolibarr.php b/scripts/members/sync_members_types_ldap2dolibarr.php index 494771f7236..55f758be8b5 100755 --- a/scripts/members/sync_members_types_ldap2dolibarr.php +++ b/scripts/members/sync_members_types_ldap2dolibarr.php @@ -41,6 +41,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') { } require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/lib/date.lib.php"; require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"; diff --git a/scripts/product/migrate_picture_path.php b/scripts/product/migrate_picture_path.php index 51dedcc4b72..098024e4847 100755 --- a/scripts/product/migrate_picture_path.php +++ b/scripts/product/migrate_picture_path.php @@ -43,6 +43,7 @@ define('EVEN_IF_ONLY_LOGIN_ALLOWED', 1); // Set this define to 0 if you want to // Include and load Dolibarr environment variables require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php"; require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; // After this $db, $mysoc, $langs, $conf and $hookmanager are defined (Opened $db handler to database will be closed at end of file). diff --git a/scripts/product/regenerate_thumbs.php b/scripts/product/regenerate_thumbs.php index 220f81c0117..6504fb14069 100755 --- a/scripts/product/regenerate_thumbs.php +++ b/scripts/product/regenerate_thumbs.php @@ -42,6 +42,7 @@ define('EVEN_IF_ONLY_LOGIN_ALLOWED', 1); // Set this define to 0 if you want to // Include and load Dolibarr environment variables require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php"; require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; require_once DOL_DOCUMENT_ROOT."/core/lib/images.lib.php"; diff --git a/scripts/user/migrate_picture_path.php b/scripts/user/migrate_picture_path.php index 8690c5a0b29..9ef9d886aba 100755 --- a/scripts/user/migrate_picture_path.php +++ b/scripts/user/migrate_picture_path.php @@ -43,6 +43,7 @@ define('EVEN_IF_ONLY_LOGIN_ALLOWED', 1); // Set this define to 0 if you want to // Include and load Dolibarr environment variables require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/user/class/user.class.php"; require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; // After this $db, $mysoc, $langs, $conf and $hookmanager are defined (Opened $db handler to database will be closed at end of file). diff --git a/scripts/user/sync_groups_dolibarr2ldap.php b/scripts/user/sync_groups_dolibarr2ldap.php index 80023f433e0..e5a27fd2e9e 100755 --- a/scripts/user/sync_groups_dolibarr2ldap.php +++ b/scripts/user/sync_groups_dolibarr2ldap.php @@ -45,6 +45,7 @@ if (!isset($argv[1]) || !$argv[1]) { $now = $argv[1]; require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; require_once DOL_DOCUMENT_ROOT."/user/class/usergroup.class.php"; diff --git a/scripts/user/sync_groups_ldap2dolibarr.php b/scripts/user/sync_groups_ldap2dolibarr.php index 9a91d90ede5..959facd625a 100755 --- a/scripts/user/sync_groups_ldap2dolibarr.php +++ b/scripts/user/sync_groups_ldap2dolibarr.php @@ -40,6 +40,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') { } require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/lib/date.lib.php"; require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; require_once DOL_DOCUMENT_ROOT."/user/class/user.class.php"; diff --git a/scripts/user/sync_users_dolibarr2ldap.php b/scripts/user/sync_users_dolibarr2ldap.php index 93c7c61440a..c970cc50c10 100755 --- a/scripts/user/sync_users_dolibarr2ldap.php +++ b/scripts/user/sync_users_dolibarr2ldap.php @@ -45,6 +45,7 @@ if (!isset($argv[1]) || !$argv[1]) { $now = $argv[1]; require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; require_once DOL_DOCUMENT_ROOT."/user/class/user.class.php"; diff --git a/scripts/user/sync_users_ldap2dolibarr.php b/scripts/user/sync_users_ldap2dolibarr.php index 40a88d6bad0..31126690879 100755 --- a/scripts/user/sync_users_ldap2dolibarr.php +++ b/scripts/user/sync_users_ldap2dolibarr.php @@ -39,6 +39,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') { } require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/core/lib/date.lib.php"; require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; require_once DOL_DOCUMENT_ROOT."/user/class/user.class.php"; diff --git a/scripts/website/regenerate-pages.php b/scripts/website/regenerate-pages.php index 7fcb9446f57..29d58d5db71 100755 --- a/scripts/website/regenerate-pages.php +++ b/scripts/website/regenerate-pages.php @@ -54,6 +54,7 @@ if (empty($argv[2]) || !in_array($argv[1], array('test', 'confirm')) || empty($w } require $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; include_once DOL_DOCUMENT_ROOT.'/website/class/website.class.php'; include_once DOL_DOCUMENT_ROOT.'/website/class/websitepage.class.php'; include_once DOL_DOCUMENT_ROOT.'/core/lib/website2.lib.php'; diff --git a/scripts/withdrawals/build_withdrawal_file.php b/scripts/withdrawals/build_withdrawal_file.php index 22ff81f2824..41cbada0bc7 100755 --- a/scripts/withdrawals/build_withdrawal_file.php +++ b/scripts/withdrawals/build_withdrawal_file.php @@ -38,6 +38,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') { } require_once $path."../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functionscli.lib.php'; require_once DOL_DOCUMENT_ROOT."/compta/prelevement/class/bonprelevement.class.php"; require_once DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php"; require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";