From aba9afe9f1450ed9f932d50df6777f9183f55310 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 12 Jan 2024 13:05:14 +0100 Subject: [PATCH 01/46] NEW Add method getPublicImageOfObject() for website module --- htdocs/core/class/html.formsetup.class.php | 1 + htdocs/core/db/DoliDB.class.php | 8 +- htdocs/core/db/pgsql.class.php | 8 +- htdocs/core/lib/files.lib.php | 8 +- htdocs/core/lib/functions.lib.php | 2 - htdocs/core/lib/images.lib.php | 2 - htdocs/core/lib/website.lib.php | 81 ++++++++++++++++++ htdocs/core/modules/modTakePos.class.php | 8 +- .../install/mysql/migration/19.0.0-20.0.0.sql | 2 + htdocs/install/mysql/tables/llx_product.sql | 1 - htdocs/langs/en_US/accountancy.lang | 4 +- htdocs/langs/en_US/main.lang | 2 +- htdocs/modulebuilder/index.php | 3 +- htdocs/modulebuilder/template/admin/setup.php | 3 +- .../template/langs/en_US/mymodule.lang | 1 + htdocs/public/theme/common/nophotopublic.png | Bin 0 -> 35621 bytes htdocs/viewimage.php | 17 ++-- 17 files changed, 122 insertions(+), 29 deletions(-) create mode 100644 htdocs/public/theme/common/nophotopublic.png diff --git a/htdocs/core/class/html.formsetup.class.php b/htdocs/core/class/html.formsetup.class.php index 8f4c23ea5d779..9e7ed642c1dc9 100644 --- a/htdocs/core/class/html.formsetup.class.php +++ b/htdocs/core/class/html.formsetup.class.php @@ -82,6 +82,7 @@ class FormSetup */ public $errors = array(); + /** * Constructor * diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index a6469cf693929..a9769ef9a8a63 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -114,18 +114,18 @@ public function hintindex($nameofindex) /** * Format a SQL REGEXP * - * @param string $subject string tested + * @param string $subject Field name to test * @param string $pattern SQL pattern to match - * @param int $sqlstring whether or not the string being tested is an SQL expression + * @param int $sqlstring 0=the string being tested is a hard coded string, 1=the string is a field * @return string SQL string */ public function regexpsql($subject, $pattern, $sqlstring = 0) { if ($sqlstring) { - return "(". $subject ." REGEXP '" . $pattern . "')"; + return "(". $subject ." REGEXP '" . $this->escape($pattern) . "')"; } - return "('". $subject ."' REGEXP '" . $pattern . "')"; + return "('". $this->escape($subject) ."' REGEXP '" . $this->escape($pattern) . "')"; } diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php index 566cccf332adb..cfd258fca9b84 100644 --- a/htdocs/core/db/pgsql.class.php +++ b/htdocs/core/db/pgsql.class.php @@ -754,18 +754,18 @@ public function ifsql($test, $resok, $resko) /** * Format a SQL REGEXP * - * @param string $subject string tested + * @param string $subject Field name to test * @param string $pattern SQL pattern to match - * @param int $sqlstring whether or not the string being tested is an SQL expression + * @param int $sqlstring 0=the string being tested is a hard coded string, 1=the string is a field * @return string SQL string */ public function regexpsql($subject, $pattern, $sqlstring = 0) { if ($sqlstring) { - return "(". $subject ." ~ '" . $pattern . "')"; + return "(". $subject ." ~ '" . $this->escape($pattern) . "')"; } - return "('". $subject ."' ~ '" . $pattern . "')"; + return "('". $this->escape($subject) ."' ~ '" . $this->escape($pattern) . "')"; } diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 29b956c9d7acb..b568a87a64ed3 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -2644,7 +2644,11 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } // Wrapping for miscellaneous medias files - if ($modulepart == 'medias' && !empty($dolibarr_main_data_root)) { + if ($modulepart == 'common') { + // Wrapping for some images + $accessallowed = 1; + $original_file = DOL_DOCUMENT_ROOT.'/public/theme/common/'.$original_file; + } elseif ($modulepart == 'medias' && !empty($dolibarr_main_data_root)) { if (empty($entity) || empty($conf->medias->multidir_output[$entity])) { return array('accessallowed'=>0, 'error'=>'Value entity must be provided'); } @@ -2662,7 +2666,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, // Wrapping for doctemplates of websites $accessallowed = ($fuser->rights->website->write && preg_match('/\.jpg$/i', basename($original_file))); $original_file = $dolibarr_main_data_root.'/doctemplates/websites/'.$original_file; - } elseif ($modulepart == 'packages' && !empty($dolibarr_main_data_root)) { + } elseif ($modulepart == 'packages' && !empty($dolibarr_main_data_root)) { // To download zip of modules // Wrapping for *.zip package files, like when used with url http://.../document.php?modulepart=packages&file=module_myfile.zip // Dir for custom dirs $tmp = explode(',', $dolibarr_main_document_root_alt); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index d686883cd7f3b..1df5f6a4a4cf6 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -10847,8 +10847,6 @@ function ajax_autoselect($htmlname, $addlink = '', $textonlink = 'Link') */ function dolIsAllowedForPreview($file) { - global $conf; - // Check .noexe extension in filename if (preg_match('/\.noexe$/i', $file)) { return 0; diff --git a/htdocs/core/lib/images.lib.php b/htdocs/core/lib/images.lib.php index b195990079480..dfafcdf853707 100644 --- a/htdocs/core/lib/images.lib.php +++ b/htdocs/core/lib/images.lib.php @@ -65,8 +65,6 @@ function getDefaultImageSizes() */ function getListOfPossibleImageExt($acceptsvg = 0) { - global $conf; - $regeximgext = '\.gif|\.jpg|\.jpeg|\.png|\.bmp|\.webp|\.xpm|\.xbm'; // See also into product.class.php if ($acceptsvg || getDolGlobalString('MAIN_ALLOW_SVG_FILES_AS_IMAGES')) { $regeximgext .= '|\.svg'; // Not allowed by default. SVG can contains javascript diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 5f0bfd8915d10..3f2f01c47c7ab 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -1,4 +1,6 @@ * * This program is free software; you can redistribute it and/or modify @@ -968,6 +970,85 @@ function getSocialNetworkSharingLinks() return $out; } + +/** + * Return HTML content to add structured data for an article, news or Blog Post. + * + * @param Object $object Object + * @param int $no Numero of image (if there is several images. 1st one by default) + * @param string $extName Extension to differentiate thumb file name ('', '_small', '_mini') + * @param string $morecss More CSS + * @return string HTML img content or '' if no image found + */ +function getPublicImageOfObject($object, $no = 1, $extName = '', $morecss = '') +{ + global $db; + + $result = ''; + $image_path = ''; + $filename = ''; + + include_once DOL_DOCOUMENT_ROOT.'/core/lib/images.lib.php'; + $regexforimg = getListOfPossibleImageExt(0); + $regexforimg = '('.$regexforimg.')$'; + + $sql = "SELECT rowid, ref, share, filename, cover, position"; + $sql .= " FROM ".MAIN_DB_PREFIX."ecm_files"; + $sql .= " WHERE entity IN (".getEntity($object->element).")"; + $sql .= " AND src_object_type = '".$db->escape($object->element)."' AND src_object_id = ".((int) $object->id); // Filter on object + $sql .= " AND ".$db->regexpsql('filename', $regexforimg, 1); + $sql .= $db->order("cover,position,rowid", "ASC,ASC,ASC"); + + $resql = $db->query($sql); + if ($resql) { + $num = $db->num_rows($resql); + $i = 0; + $found = 0; + $foundnotshared = 0; + while ($i < $num) { + $obj = $db->fetch_object($resql); + if ($obj) { + if (empty($obj->share)) { + $foundnotshared++; + } else { + $found++; + + $filename = $obj->filename; + $image_path = DOL_URL_ROOT.'/viewimage.php?hashp='.urlencode($obj->share); + if ($extName) { + $image_path .= '&extname='.urlencode($extName); + } + } + } + if ($found >= $no) { + break; + } + $i++; + } + if (!$found && $foundnotshared) { + $image_path = DOL_URL_ROOT.'/viewimage.php?modulepart=common&file=nophotopublic.png'; + } + } + + //getImageFileNameForSize($dir.$file, '_small') + + if (empty($image_path)) { + $image_path = DOL_URL_ROOT.'/viewimage.php?modulepart=common&file=nophoto.png'; + } + + $result .= ''; + if ($image_path) { + $result .= ''; + } + + return $result; +} + + /** * Return list of containers object that match a criteria. * WARNING: This function can be used by websites. diff --git a/htdocs/core/modules/modTakePos.class.php b/htdocs/core/modules/modTakePos.class.php index 06b5b79dbf300..366f8a98549e2 100644 --- a/htdocs/core/modules/modTakePos.class.php +++ b/htdocs/core/modules/modTakePos.class.php @@ -295,11 +295,11 @@ public function init($options = '') } } - //Create category if not exists + // Create product category DefaultPOSCatLabel if not exists $categories = new Categorie($this->db); $cate_arbo = $categories->get_full_arbo('product', 0, 1); if (is_array($cate_arbo)) { - if (!count($cate_arbo)) { + if (!count($cate_arbo) || !getDolGlobalString('TAKEPOS_ROOT_CATEGORY_ID')) { $category = new Categorie($this->db); $category->label = $langs->trans("DefaultPOSCatLabel"); @@ -308,6 +308,8 @@ public function init($options = '') $result = $category->create($user); if ($result > 0) { + dolibarr_set_const($this->db, 'TAKEPOS_ROOT_CATEGORY_ID', $result, 'chaine', 0, 'Id of category for products visible in TakePOS', $conf->entity); + /* TODO Create a generic product only if there is no product yet. If 0 product, we create 1. If there is already product, it is better to show a message to ask to add product in the category */ /* $product = new Product($this->db); @@ -323,7 +325,7 @@ public function init($options = '') } } - //Create cash account if not exists + // Create cash account CASH-POS / DefaultCashPOSLabel if not exists if (!getDolGlobalInt('CASHDESK_ID_BANKACCOUNT_CASH1')) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $cashaccount = new Account($this->db); diff --git a/htdocs/install/mysql/migration/19.0.0-20.0.0.sql b/htdocs/install/mysql/migration/19.0.0-20.0.0.sql index e6363ba41ebfc..33490b212d0b7 100644 --- a/htdocs/install/mysql/migration/19.0.0-20.0.0.sql +++ b/htdocs/install/mysql/migration/19.0.0-20.0.0.sql @@ -201,3 +201,5 @@ CREATE TABLE llx_c_product_thirdparty_relation_type ALTER TABLE llx_c_tva ADD COLUMN type_vat smallint NOT NULL DEFAULT 0 AFTER fk_pays; +ALTER TABLE llx_product DROP COLUMN onportal; + diff --git a/htdocs/install/mysql/tables/llx_product.sql b/htdocs/install/mysql/tables/llx_product.sql index f63a414556936..0dd84d550f5e0 100644 --- a/htdocs/install/mysql/tables/llx_product.sql +++ b/htdocs/install/mysql/tables/llx_product.sql @@ -59,7 +59,6 @@ create table llx_product fk_user_modif integer, -- user making last change tosell tinyint DEFAULT 1, -- Product you sell tobuy tinyint DEFAULT 1, -- Product you buy - onportal tinyint DEFAULT 0, -- If it is a product you sell and you want to sell it from internal portal (module 'portal') tobatch tinyint DEFAULT 0 NOT NULL, -- Is it a product that need a batch management (eat-by or lot management) sell_or_eat_by_mandatory tinyint DEFAULT 0 NOT NULL, -- Make sell-by or eat-by date mandatory batch_mask varchar(32) DEFAULT NULL, -- If the product has batch feature, you may want to use a batch mask per product diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 7939e82498d4d..1d9215fdedd75 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -446,8 +446,8 @@ AccountancyOneUnletteringModifiedSuccessfully=One unreconcile successfully modif AccountancyUnletteringModifiedSuccessfully=%s unreconcile successfully modified ## Closure -AccountancyClosureStep1=Step 1 : Validate and lock movements -AccountancyClosureStep2=Step 2 : Close fiscal period +AccountancyClosureStep1=Step 1 : Validate and lock the movements +AccountancyClosureStep2=Step 2 : Close the fiscal period AccountancyClosureStep3=Step 3 : Extract entries (Optional) AccountancyClosureClose=Close fiscal period AccountancyClosureAccountingReversal=Extract and record "Retained earnings" entries diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 8c40379b67b7b..227b546ba7440 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -1095,7 +1095,7 @@ KeyboardShortcut=Keyboard shortcut AssignedTo=Assigned to Deletedraft=Delete draft ConfirmMassDraftDeletion=Draft mass delete confirmation -FileSharedViaALink=File shared with a public link +FileSharedViaALink=Public file shared via link SelectAThirdPartyFirst=Select a third party first... YouAreCurrentlyInSandboxMode=You are currently in the %s "sandbox" mode Inventory=Inventory diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 2fbddca890031..5930dce722575 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -3470,7 +3470,8 @@ foreach ($listofsetuppages as $setuppage) { //var_dump($setuppage); print ''; - print ' '.$langs->trans("SetupFile").' : '.$modulelowercase.'/admin/'.$setuppage['relativename'].''; + print ' '.$langs->trans("SetupFile").' : '; + print ''.$modulelowercase.'/admin/'.$setuppage['relativename'].''; print ''.img_picto($langs->trans("Edit"), 'edit').''; print ''; } diff --git a/htdocs/modulebuilder/template/admin/setup.php b/htdocs/modulebuilder/template/admin/setup.php index 875e9e03c38f1..34a94fbc01661 100644 --- a/htdocs/modulebuilder/template/admin/setup.php +++ b/htdocs/modulebuilder/template/admin/setup.php @@ -143,7 +143,8 @@ $item->setAsMultiSelect($TField); $item->helpText = $langs->transnoentities('MYMODULE_MYPARAM10'); - +// Setup conf for a category selection +$formSetup->newItem('MYMODULE_CATEGORY_ID_XXX')->setAsCategory('product'); // Setup conf MYMODULE_MYPARAM10 $item = $formSetup->newItem('MYMODULE_MYPARAM10'); diff --git a/htdocs/modulebuilder/template/langs/en_US/mymodule.lang b/htdocs/modulebuilder/template/langs/en_US/mymodule.lang index cc518391c339e..8677fa5806964 100644 --- a/htdocs/modulebuilder/template/langs/en_US/mymodule.lang +++ b/htdocs/modulebuilder/template/langs/en_US/mymodule.lang @@ -28,6 +28,7 @@ ModuleMyModuleDesc = MyModule description MyModuleSetup = MyModule setup Settings = Settings MyModuleSetupPage = MyModule setup page +NewSection=New section MYMODULE_MYPARAM1 = My param 1 MYMODULE_MYPARAM1Tooltip = My param 1 tooltip MYMODULE_MYPARAM2=My param 2 diff --git a/htdocs/public/theme/common/nophotopublic.png b/htdocs/public/theme/common/nophotopublic.png new file mode 100644 index 0000000000000000000000000000000000000000..8b052fe17ac6dfb135477008cfbb10c9e503b2c3 GIT binary patch literal 35621 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 ZX=Nf1SHp_<4DXACP>@lPE|)S6`X4RZ&_w_M literal 0 HcmV?d00001 diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index e2429115974ba..9492deb8fa5b0 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -70,6 +70,10 @@ if ($_GET["modulepart"] == 'medias') { $needlogin = 0; } + // Common files (files into /public/theme/common) + if ($_GET["modulepart"] == 'common') { + $needlogin = 0; + } // User photo when user has made its profile public (for virtual credi card) if ($_GET["modulepart"] == 'userphotopublic') { $needlogin = 0; @@ -195,8 +199,7 @@ function llxFooter() $original_file = (($tmp[1] ? $tmp[1].'/' : '').$ecmfile->filename); // this is relative to module dir } } else { - $langs->load("errors"); - httponly_accessforbidden($langs->trans("ErrorFileNotFoundWithSharedLink"), 403, 1); + httponly_accessforbidden("ErrorFileNotFoundWithSharedLink", 403, 1); } } @@ -231,7 +234,7 @@ function llxFooter() // Check that file is allowed for view with viewimage.php if (!empty($original_file) && !dolIsAllowedForPreview($original_file)) { - httponly_accessforbidden('This file is not qualified for preview', 403); + httponly_accessforbidden('This file extension is not qualified for preview', 403); } // Security check @@ -256,7 +259,9 @@ function llxFooter() $sqlprotectagainstexternals = ''; } elseif (GETPOSTINT("publictakepos")) { if (getDolGlobalString('TAKEPOS_AUTO_ORDER') && in_array($modulepart, array('product', 'category'))) { - $accessallowed = 1; // When TakePOS Public Auto Order is enabled, we accept to see all images of product and categories + $accessallowed = 1; // When TakePOS Public Auto Order is enabled, we accept to see all images of product and categories with no login + // TODO Replace this with a call of getPublicImageOfObject like used by website so + // only share images are visibles } } else { // Basic protection (against external users only) @@ -344,8 +349,8 @@ function llxFooter() // Output files on browser dol_syslog("viewimage.php return file $fullpath_original_file filename=$filename content-type=$type"); - // This test is to avoid error images when image is not available (for example thumbs). - if (!dol_is_file($fullpath_original_file) && empty($_GET["noalt"])) { + if (!dol_is_file($fullpath_original_file) && !GETPOSTINT("noalt", 1)) { + // This test is to replace error images with a nice "notfound image" when image is not available (for example when thumbs not yet generated). $fullpath_original_file = DOL_DOCUMENT_ROOT.'/public/theme/common/nophoto.png'; /*$error='Error: File '.$_GET["file"].' does not exists or filesystems permissions are not allowed'; print $error; From 32f0443289f8382ae279778860ece29dbc7cd46e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 12 Jan 2024 13:45:10 +0100 Subject: [PATCH 02/46] Rename into getImagePublicURLOfObject --- htdocs/core/lib/website.lib.php | 20 +++----------------- htdocs/langs/en_US/website.lang | 7 ++++--- htdocs/langs/fr_FR/website.lang | 7 ++++--- htdocs/website/index.php | 6 +++++- 4 files changed, 16 insertions(+), 24 deletions(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 3f2f01c47c7ab..95566a0784f1b 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -977,16 +977,13 @@ function getSocialNetworkSharingLinks() * @param Object $object Object * @param int $no Numero of image (if there is several images. 1st one by default) * @param string $extName Extension to differentiate thumb file name ('', '_small', '_mini') - * @param string $morecss More CSS * @return string HTML img content or '' if no image found */ -function getPublicImageOfObject($object, $no = 1, $extName = '', $morecss = '') +function getImagePublicURLOfObject($object, $no = 1, $extName = '') { global $db; - $result = ''; $image_path = ''; - $filename = ''; include_once DOL_DOCOUMENT_ROOT.'/core/lib/images.lib.php'; $regexforimg = getListOfPossibleImageExt(0); @@ -1013,9 +1010,9 @@ function getPublicImageOfObject($object, $no = 1, $extName = '', $morecss = '') } else { $found++; - $filename = $obj->filename; $image_path = DOL_URL_ROOT.'/viewimage.php?hashp='.urlencode($obj->share); if ($extName) { + //getImageFileNameForSize($dir.$file, '_small') $image_path .= '&extname='.urlencode($extName); } } @@ -1030,22 +1027,11 @@ function getPublicImageOfObject($object, $no = 1, $extName = '', $morecss = '') } } - //getImageFileNameForSize($dir.$file, '_small') - if (empty($image_path)) { $image_path = DOL_URL_ROOT.'/viewimage.php?modulepart=common&file=nophoto.png'; } - $result .= ''; - if ($image_path) { - $result .= ''; - } - - return $result; + return $image_path; } diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index 7127e4b9a1c26..3af40c0638425 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -60,10 +60,11 @@ NoPageYet=No pages yet YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template SyntaxHelp=Help on specific syntax tips YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor. -YouCanEditHtmlSource=
You can include PHP code into this source using tags <?php ?>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

You can also include content of another Page/Container with the following syntax:
<?php includeContainer('alias_of_container_to_include'); ?>

You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>

To add a link to another page, use the syntax:
<a href="alias_of_page_to_link_to.php">mylink<a>

To include a link to download a file stored into the documents directory, use the document.php wrapper:
Example, for a file into documents/ecm (need to be logged), syntax is:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
For a file into documents/medias (open directory for public access), syntax is:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
For a file shared with a share link (open access using the sharing hash key of file), syntax is:
<a href="/document.php?hashp=publicsharekeyoffile">

To include an image stored into the documents directory, use the viewimage.php wrapper:
Example, for an image into documents/medias (open directory for public access), syntax is:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
-#YouCanEditHtmlSource2=
To include a image shared publicly, use the viewimage.php wrapper:
Example with a shared key 123456789, syntax is:
<img src="/viewimage.php?hashp=12345679012...">
+YouCanEditHtmlSource=
You can include PHP code into this source using tags <?php ?>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

You can also include content of another Page/Container with the following syntax:
<?php includeContainer('alias_of_container_to_include'); ?>

You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>

To add a link to another page, use the syntax:
<a href="alias_of_page_to_link_to.php">mylink<a>

To include a link to download a file stored into the documents directory, use the document.php wrapper:
Example, for a file into documents/ecm (need to be logged), syntax is:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
For a file into documents/medias (open directory for public access), syntax is:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
For a file shared with a share link (open access using the sharing hash key of file), syntax is:
<a href="/document.php?hashp=publicsharekeyoffile">
+YouCanEditHtmlSource1=
To include an image stored into the documents directory, use the viewimage.php wrapper.
Example, for an image into documents/medias (open directory for public access), syntax is:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
YouCanEditHtmlSource2=For an image shared with a share link (open access using the sharing hash key of file), syntax is:
<img src="/viewimage.php?hashp=12345679012...">
-YouCanEditHtmlSourceMore=
More examples of HTML or dynamic code available on the wiki documentation
. +YouCanEditHtmlSource3=To get the URL of the image of a PHP object, use
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
+YouCanEditHtmlSourceMore=
More examples of HTML or dynamic code available on the wiki documentation.
ClonePage=Clone page/container CloneSite=Clone site SiteAdded=Website added diff --git a/htdocs/langs/fr_FR/website.lang b/htdocs/langs/fr_FR/website.lang index 61627ee39c891..23b7a9753129a 100644 --- a/htdocs/langs/fr_FR/website.lang +++ b/htdocs/langs/fr_FR/website.lang @@ -60,10 +60,11 @@ NoPageYet=Pas de page pour l'instant YouCanCreatePageOrImportTemplate=Vous pouvez créer une nouvelle page ou importer un modèle de site Web complet. SyntaxHelp=Aide sur quelques astuces spécifiques de syntaxe YouCanEditHtmlSourceckeditor=Vous pouvez éditer le code source en activant l'éditeur HTML avec le bouton "Source". -YouCanEditHtmlSource=
Vous pouvez inclure du code PHP dans cette source en utilisant les balises <?php ?>. Les variables globales suivantes sont disponibles: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

Vous pouvez également inclure le contenu d'une autre page / conteneur avec la syntaxe suivante:
<?php includeContainer ('alias_of_container_to_include'); ?>

Vous pouvez créer une redirection vers une autre page / conteneur avec la syntaxe suivante (Remarque: ne pas afficher de contenu avant une redirection):
<?php redirectToContainer ('alias_of_container_to_redirect_to'); ?>

Pour ajouter un lien vers une autre page, utilisez la syntaxe:
<a href="alias_of_page_to_link_to.php">mylink<a>

Pour inclure un lien pour télécharger un fichier stocké dans le répertoire des documents , utilisez l'encapsuleur document.php :
Exemple, pour un fichier dans documents/ecm (besoin d'être loggué), la syntaxe est:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
Pour un fichier dans des documents/medias (répertoire ouvert pour accès public), la syntaxe est:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
Pour un fichier partagé avec un lien de partage (accès ouvert en utilisant la clé de partage du fichier), la syntaxe est la suivante:
<a href="/document.php?hashp=publicsharekeyoffile">

Pour inclure une image stockée dans le répertoire documents, utilisez le wrapper viewimage.php :
Exemple, pour une image dans des documents/medias (répertoire ouvert), la syntaxe est:
<img src = "/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
-#YouCanEditHtmlSource2=
To include a image shared publicly, use the viewimage.php wrapper:
Example with a shared key 123456789, syntax is:
<img src="/viewimage.php?hashp=12345679012...">
+YouCanEditHtmlSource=
Vous pouvez inclure du code PHP dans cette source en utilisant les balises <?php ?>. Les variables globales suivantes sont disponibles: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

Vous pouvez également inclure le contenu d'une autre page / conteneur avec la syntaxe suivante:
<?php includeContainer ('alias_of_container_to_include'); ?>

Vous pouvez créer une redirection vers une autre page / conteneur avec la syntaxe suivante (Remarque: ne pas afficher de contenu avant une redirection):
<?php redirectToContainer ('alias_of_container_to_redirect_to'); ?>

Pour ajouter un lien vers une autre page, utilisez la syntaxe:
<a href="alias_of_page_to_link_to.php">mylink<a>

Pour inclure un lien pour télécharger un fichier stocké dans le répertoire des documents , utilisez l'encapsuleur document.php :
Exemple, pour un fichier dans documents/ecm (besoin d'être loggué), la syntaxe est:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
Pour un fichier dans des documents/medias (répertoire ouvert pour accès public), la syntaxe est:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
Pour un fichier partagé avec un lien de partage (accès ouvert en utilisant la clé de partage du fichier), la syntaxe est la suivante:
<a href="/document.php?hashp=publicsharekeyoffile">
+YouCanEditHtmlSource1=
Pour inclure une image stockée dans le répertoire documents, utilisez le wrapper viewimage.php.
Exemple, pour une image dans des documents/medias (répertoire ouvert), la syntaxe est:
<img src = "/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
YouCanEditHtmlSource2=Pour une image partagée avec un lien de partage (accès ouvert à l'aide de la clé de partage du fichier), la syntaxe est la suivante:
<img src = "/viewimage.php?hashp=12345679012...">
-YouCanEditHtmlSourceMore=
Plus d'exemples de code HTML ou dynamique disponible sur la documentation wiki
. +YouCanEditHtmlSource3=Pour afficher l'image d'un object dans du code PHP, utilisez
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
+YouCanEditHtmlSourceMore=
Plus d'exemples de code HTML ou dynamique disponible sur la documentation wiki .
ClonePage=Cloner la page/container CloneSite=Cloner le site SiteAdded=Site web ajouté diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 19818831462dd..5a45b3179dee2 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -3537,10 +3537,14 @@ function switchEditorOnline(forceenable) if ($action == 'editsource' || $action == 'editcontent' || GETPOST('editsource', 'alpha') || GETPOST('editcontent', 'alpha')) { $url = 'https://wiki.dolibarr.org/index.php/Module_Website'; - $htmltext = $langs->transnoentitiesnoconv("YouCanEditHtmlSource", $url); + $htmltext = ''; + $htmltext .= $langs->transnoentitiesnoconv("YouCanEditHtmlSource", $url); + $htmltext .= $langs->transnoentitiesnoconv("YouCanEditHtmlSource1", $url); $htmltext .= $langs->transnoentitiesnoconv("YouCanEditHtmlSource2", $url); + $htmltext .= $langs->transnoentitiesnoconv("YouCanEditHtmlSource3", $url); $htmltext .= $langs->transnoentitiesnoconv("YouCanEditHtmlSourceMore", $url); $htmltext .= '
'; + $htmltext .= '
'; if ($conf->browser->layout == 'phone') { print $form->textwithpicto('', $htmltext, 1, 'help', 'inline-block', 1, 2, 'tooltipsubstitution'); } else { From cc5838c0d0f122115354735998b258449f634602 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 12 Jan 2024 16:12:23 +0100 Subject: [PATCH 03/46] Add method getNbOfImagePublicURLOfObject() --- htdocs/core/lib/website.lib.php | 38 ++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 95566a0784f1b..38c597425109d 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -971,6 +971,41 @@ function getSocialNetworkSharingLinks() } +/** + * Return HTML content to add structured data for an article, news or Blog Post. + * + * @param Object $object Object + * @return string HTML img content or '' if no image found + * @see getImagePublicURLOfObject() + */ +function getNbOfImagePublicURLOfObject($object) +{ + global $db; + + $nb = 0; + + include_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; + $regexforimg = getListOfPossibleImageExt(0); + $regexforimg = '('.$regexforimg.')$'; + + $sql = "SELECT COUNT(rowid) as nb"; + $sql .= " FROM ".MAIN_DB_PREFIX."ecm_files"; + $sql .= " WHERE entity IN (".getEntity($object->element).")"; + $sql .= " AND src_object_type = '".$db->escape($object->element)."' AND src_object_id = ".((int) $object->id); // Filter on object + $sql .= " AND ".$db->regexpsql('filename', $regexforimg, 1); + $sql .= " AND share IS NOT NULL"; // Only image that are public + + $resql = $db->query($sql); + if ($resql) { + $obj = $db->fetch_object($resql); + if ($obj) { + $nb = $obj->nb; + } + } + + return $nb; +} + /** * Return HTML content to add structured data for an article, news or Blog Post. * @@ -978,6 +1013,7 @@ function getSocialNetworkSharingLinks() * @param int $no Numero of image (if there is several images. 1st one by default) * @param string $extName Extension to differentiate thumb file name ('', '_small', '_mini') * @return string HTML img content or '' if no image found + * @see getNbOfImagePublicURLOfObject() */ function getImagePublicURLOfObject($object, $no = 1, $extName = '') { @@ -985,7 +1021,7 @@ function getImagePublicURLOfObject($object, $no = 1, $extName = '') $image_path = ''; - include_once DOL_DOCOUMENT_ROOT.'/core/lib/images.lib.php'; + include_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; $regexforimg = getListOfPossibleImageExt(0); $regexforimg = '('.$regexforimg.')$'; From 09daa41a1eda1ff2fc62a84c3f42692da5a453b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 12 Jan 2024 16:48:29 +0100 Subject: [PATCH 04/46] remove use not used (#27463) * remove use not used * Update website.lib.php --- htdocs/core/lib/website.lib.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 38c597425109d..79b1b9c229082 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -1,6 +1,4 @@ * * This program is free software; you can redistribute it and/or modify From c9a0957920c5c73d917de780102bfceb8c2d42f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 12 Jan 2024 17:07:22 +0100 Subject: [PATCH 05/46] fix phpstan (#27440) --- htdocs/ticket/class/ticket.class.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 75e106f045412..ff8a39efb4a07 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -627,7 +627,7 @@ public function create($user, $notrigger = 0) * @param string $email_msgid Email msgid * @return int Return integer <0 if KO, >0 if OK */ - public function fetch($id = '', $ref = '', $track_id = '', $email_msgid = '') + public function fetch($id = 0, $ref = '', $track_id = '', $email_msgid = '') { global $langs; @@ -762,7 +762,7 @@ public function fetch($id = '', $ref = '', $track_id = '', $email_msgid = '') * @param array $filter Filter for query * @return int Return integer <0 if KO, >0 if OK */ - public function fetchAll($user, $sortorder = 'ASC', $sortfield = 't.datec', $limit = '', $offset = 0, $arch = '', $filter = '') + public function fetchAll($user, $sortorder = 'ASC', $sortfield = 't.datec', $limit = 0, $offset = 0, $arch = 0, $filter = []) { global $langs, $extrafields; @@ -1944,7 +1944,7 @@ public function close(User $user, $mode = 0) * @param string $clause Clause for filters * @return array|int Array of thirdparties object */ - public function searchSocidByEmail($email, $type = '0', $filters = array(), $clause = 'AND') + public function searchSocidByEmail($email, $type = 0, $filters = array(), $clause = 'AND') { $thirdparties = array(); $exact = 0; @@ -2004,11 +2004,11 @@ public function searchSocidByEmail($email, $type = '0', $filters = array(), $cla * Search and fetch contacts by email * * @param string $email Email - * @param array $socid Limit to a thirdparty + * @param int $socid Limit to a thirdparty * @param string $case Respect case * @return array|int Array of contacts object */ - public function searchContactByEmail($email, $socid = '', $case = '') + public function searchContactByEmail($email, $socid = 0, $case = '') { $contacts = array(); @@ -2339,7 +2339,7 @@ public function listeContact($statusoflink = -1, $source = 'external', $list = 0 * @param Societe $thirdparty Thirdparty * @return string Reference */ - public function getDefaultRef($thirdparty = '') + public function getDefaultRef($thirdparty = null) { global $conf; From 8608a075fb423f7a82a8764da703fae745c8b1df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 12 Jan 2024 17:07:43 +0100 Subject: [PATCH 06/46] fix Undefined variable $mode (#27451) --- htdocs/compta/paiement/list.php | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index a73c6e140c750..98d4adb5c6025 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -41,14 +41,14 @@ // Load translation files required by the page $langs->loadLangs(array('bills', 'banks', 'compta', 'companies')); -$action = GETPOST('action', 'alpha'); -$massaction = GETPOST('massaction', 'alpha'); -$confirm = GETPOST('confirm', 'alpha'); +$action = GETPOST('action', 'alpha'); +$massaction = GETPOST('massaction', 'alpha'); +$confirm = GETPOST('confirm', 'alpha'); $optioncss = GETPOST('optioncss', 'alpha'); -$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'paymentlist'; +$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'paymentlist'; -$facid = GETPOST('facid', 'int'); -$socid = GETPOST('socid', 'int'); +$facid = GETPOST('facid', 'int'); +$socid = GETPOST('socid', 'int'); $userid = GETPOST('userid', 'int'); $search_ref = GETPOST("search_ref", "alpha"); @@ -68,9 +68,10 @@ $search_status = GETPOST('search_status', 'intcomma'); $search_sale = GETPOST('search_sale', 'int'); +$mode = GETPOST('mode', 'alpha'); $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST('sortfield', 'aZ09comma'); -$sortorder = GETPOST('sortorder', 'aZ09comma'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { From 417726f7b1fe0229f0584700f3657d209d7d82c6 Mon Sep 17 00:00:00 2001 From: MDW Date: Fri, 12 Jan 2024 17:10:16 +0100 Subject: [PATCH 07/46] Fix: Disable execute bit in git + correct shebangs (#27450) # Fix: Execute bits in git and shebangs Some files had the execute bit improperly set to enabled. Some scripts did not have a correct shebang. --- build/debian/control | 0 build/rpm/dolibarr_fedora.spec | 0 build/rpm/dolibarr_generic.spec | 0 build/rpm/dolibarr_mandriva.spec | 0 build/rpm/dolibarr_opensuse.spec | 0 dev/tools/fixhasRights.sh | 2 +- dev/tools/github_commits_perversion.sh | 2 +- dev/tools/github_lines_perusers.sh | 2 +- dev/tools/test/namespacemig/bbb.php | 0 dev/tools/test/testperf.php | 0 dev/tools/test/testtcpdf.php | 0 htdocs/includes/webklex/php-imap/CHANGELOG.md | 0 htdocs/includes/webklex/php-imap/README.md | 0 htdocs/includes/webklex/php-imap/src/Attachment.php | 0 htdocs/includes/webklex/php-imap/src/Client.php | 0 htdocs/includes/webklex/php-imap/src/Folder.php | 0 htdocs/includes/webklex/php-imap/src/Message.php | 0 htdocs/includes/webklex/php-imap/src/Query/WhereQuery.php | 0 htdocs/includes/webklex/php-imap/src/Support/Masks/Mask.php | 0 .../php-imap/vendor/illuminate/contracts/Support/Arrayable.php | 0 .../php-imap/vendor/illuminate/contracts/Support/Jsonable.php | 0 .../vendor/illuminate/contracts/Support/MessageProvider.php | 0 .../php-imap/vendor/illuminate/contracts/Support/Renderable.php | 0 .../php-imap/vendor/illuminate/contracts/Translation/Loader.php | 0 .../php-imap/vendor/illuminate/contracts/View/Engine.php | 0 .../vendor/illuminate/pagination/PaginationServiceProvider.php | 0 .../webklex/php-imap/vendor/illuminate/pagination/composer.json | 0 .../webklex/php-imap/vendor/illuminate/support/Facades/App.php | 0 .../php-imap/vendor/illuminate/support/Facades/Artisan.php | 0 .../webklex/php-imap/vendor/illuminate/support/Facades/Auth.php | 0 .../php-imap/vendor/illuminate/support/Facades/Blade.php | 0 .../php-imap/vendor/illuminate/support/Facades/Cache.php | 0 .../php-imap/vendor/illuminate/support/Facades/Config.php | 0 .../php-imap/vendor/illuminate/support/Facades/Cookie.php | 0 .../php-imap/vendor/illuminate/support/Facades/Crypt.php | 0 .../webklex/php-imap/vendor/illuminate/support/Facades/DB.php | 0 .../php-imap/vendor/illuminate/support/Facades/Event.php | 0 .../php-imap/vendor/illuminate/support/Facades/Facade.php | 0 .../webklex/php-imap/vendor/illuminate/support/Facades/File.php | 0 .../webklex/php-imap/vendor/illuminate/support/Facades/Hash.php | 0 .../webklex/php-imap/vendor/illuminate/support/Facades/Lang.php | 0 .../webklex/php-imap/vendor/illuminate/support/Facades/Log.php | 0 .../webklex/php-imap/vendor/illuminate/support/Facades/Mail.php | 0 .../php-imap/vendor/illuminate/support/Facades/Password.php | 0 .../php-imap/vendor/illuminate/support/Facades/Queue.php | 0 .../php-imap/vendor/illuminate/support/Facades/Redirect.php | 0 .../php-imap/vendor/illuminate/support/Facades/Redis.php | 0 .../php-imap/vendor/illuminate/support/Facades/Request.php | 0 .../php-imap/vendor/illuminate/support/Facades/Response.php | 0 .../php-imap/vendor/illuminate/support/Facades/Route.php | 0 .../php-imap/vendor/illuminate/support/Facades/Schema.php | 0 .../php-imap/vendor/illuminate/support/Facades/Session.php | 0 .../webklex/php-imap/vendor/illuminate/support/Facades/URL.php | 0 .../php-imap/vendor/illuminate/support/Facades/Validator.php | 0 .../webklex/php-imap/vendor/illuminate/support/Facades/View.php | 0 .../webklex/php-imap/vendor/illuminate/support/Fluent.php | 0 .../webklex/php-imap/vendor/illuminate/support/Manager.php | 0 .../webklex/php-imap/vendor/illuminate/support/MessageBag.php | 0 .../vendor/illuminate/support/NamespacedItemResolver.php | 0 .../webklex/php-imap/vendor/illuminate/support/Pluralizer.php | 0 .../php-imap/vendor/illuminate/support/ServiceProvider.php | 0 .../webklex/php-imap/vendor/illuminate/support/helpers.php | 0 .../tables/llx_workstation_workstation-workstation.key.sql | 0 .../mysql/tables/llx_workstation_workstation-workstation.sql | 0 .../tables/llx_workstation_workstation_resource-workstation.sql | 0 .../llx_workstation_workstation_usergroup-workstation.sql | 0 htdocs/theme/dolistore_logo.svg | 0 htdocs/ticket/card.php | 0 htdocs/webservices/demo_wsclient_actioncomm.php-NORUN | 0 htdocs/webservices/demo_wsclient_category.php-NORUN | 0 htdocs/webservices/demo_wsclient_invoice.php-NORUN | 0 htdocs/webservices/demo_wsclient_other.php-NORUN | 0 htdocs/webservices/demo_wsclient_productorservice.php-NORUN | 0 htdocs/webservices/demo_wsclient_thirdparty.php-NORUN | 0 test/soapui/Dolibarr-soapui-project.xml | 0 75 files changed, 3 insertions(+), 3 deletions(-) mode change 100755 => 100644 build/debian/control mode change 100755 => 100644 build/rpm/dolibarr_fedora.spec mode change 100755 => 100644 build/rpm/dolibarr_generic.spec mode change 100755 => 100644 build/rpm/dolibarr_mandriva.spec mode change 100755 => 100644 build/rpm/dolibarr_opensuse.spec mode change 100755 => 100644 dev/tools/test/namespacemig/bbb.php mode change 100755 => 100644 dev/tools/test/testperf.php mode change 100755 => 100644 dev/tools/test/testtcpdf.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/CHANGELOG.md mode change 100755 => 100644 htdocs/includes/webklex/php-imap/README.md mode change 100755 => 100644 htdocs/includes/webklex/php-imap/src/Attachment.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/src/Client.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/src/Folder.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/src/Message.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/src/Query/WhereQuery.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/src/Support/Masks/Mask.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/Arrayable.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/Jsonable.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/MessageProvider.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/Renderable.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Translation/Loader.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/View/Engine.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/PaginationServiceProvider.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/composer.json mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/App.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Artisan.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Auth.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Blade.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Cache.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Config.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Cookie.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Crypt.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/DB.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Event.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Facade.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/File.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Hash.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Lang.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Log.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Mail.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Password.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Queue.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Redirect.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Redis.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Request.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Response.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Route.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Schema.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Session.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/URL.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Validator.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/View.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Fluent.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Manager.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/MessageBag.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/NamespacedItemResolver.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/Pluralizer.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/ServiceProvider.php mode change 100755 => 100644 htdocs/includes/webklex/php-imap/vendor/illuminate/support/helpers.php mode change 100755 => 100644 htdocs/install/mysql/tables/llx_workstation_workstation-workstation.key.sql mode change 100755 => 100644 htdocs/install/mysql/tables/llx_workstation_workstation-workstation.sql mode change 100755 => 100644 htdocs/install/mysql/tables/llx_workstation_workstation_resource-workstation.sql mode change 100755 => 100644 htdocs/install/mysql/tables/llx_workstation_workstation_usergroup-workstation.sql mode change 100755 => 100644 htdocs/theme/dolistore_logo.svg mode change 100755 => 100644 htdocs/ticket/card.php mode change 100755 => 100644 htdocs/webservices/demo_wsclient_actioncomm.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_category.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_invoice.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_other.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_productorservice.php-NORUN mode change 100755 => 100644 htdocs/webservices/demo_wsclient_thirdparty.php-NORUN mode change 100755 => 100644 test/soapui/Dolibarr-soapui-project.xml diff --git a/build/debian/control b/build/debian/control old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr_fedora.spec b/build/rpm/dolibarr_fedora.spec old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr_generic.spec b/build/rpm/dolibarr_generic.spec old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr_mandriva.spec b/build/rpm/dolibarr_mandriva.spec old mode 100755 new mode 100644 diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec old mode 100755 new mode 100644 diff --git a/dev/tools/fixhasRights.sh b/dev/tools/fixhasRights.sh index d25e6abd0b033..c33379cefe863 100755 --- a/dev/tools/fixhasRights.sh +++ b/dev/tools/fixhasRights.sh @@ -1,4 +1,4 @@ -#/bin/bash +#!/bin/bash # # Example of script to fix code writing of permissions # diff --git a/dev/tools/github_commits_perversion.sh b/dev/tools/github_commits_perversion.sh index 13fcc43936b65..e9355c833998b 100755 --- a/dev/tools/github_commits_perversion.sh +++ b/dev/tools/github_commits_perversion.sh @@ -1,4 +1,4 @@ -#/bin/bash +#!/bin/bash # # Count number of commits per user and per versions (using date for version detection) # diff --git a/dev/tools/github_lines_perusers.sh b/dev/tools/github_lines_perusers.sh index e67ee61f00ca1..5774b504a9411 100755 --- a/dev/tools/github_lines_perusers.sh +++ b/dev/tools/github_lines_perusers.sh @@ -1,4 +1,4 @@ -#/bin/bash +#!/bin/bash # # Count number of lines modified per user for a given branch # diff --git a/dev/tools/test/namespacemig/bbb.php b/dev/tools/test/namespacemig/bbb.php old mode 100755 new mode 100644 diff --git a/dev/tools/test/testperf.php b/dev/tools/test/testperf.php old mode 100755 new mode 100644 diff --git a/dev/tools/test/testtcpdf.php b/dev/tools/test/testtcpdf.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/CHANGELOG.md b/htdocs/includes/webklex/php-imap/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/README.md b/htdocs/includes/webklex/php-imap/README.md old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/src/Attachment.php b/htdocs/includes/webklex/php-imap/src/Attachment.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/src/Client.php b/htdocs/includes/webklex/php-imap/src/Client.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/src/Folder.php b/htdocs/includes/webklex/php-imap/src/Folder.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/src/Message.php b/htdocs/includes/webklex/php-imap/src/Message.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/src/Query/WhereQuery.php b/htdocs/includes/webklex/php-imap/src/Query/WhereQuery.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/src/Support/Masks/Mask.php b/htdocs/includes/webklex/php-imap/src/Support/Masks/Mask.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/Arrayable.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/Arrayable.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/Jsonable.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/Jsonable.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/MessageProvider.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/MessageProvider.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/Renderable.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Support/Renderable.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Translation/Loader.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Translation/Loader.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/View/Engine.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/View/Engine.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/PaginationServiceProvider.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/PaginationServiceProvider.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/composer.json b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/composer.json old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/App.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/App.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Artisan.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Artisan.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Auth.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Auth.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Blade.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Blade.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Cache.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Cache.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Config.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Config.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Cookie.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Cookie.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Crypt.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Crypt.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/DB.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/DB.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Event.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Event.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Facade.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Facade.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/File.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/File.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Hash.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Hash.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Lang.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Lang.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Log.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Log.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Mail.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Mail.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Password.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Password.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Queue.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Queue.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Redirect.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Redirect.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Redis.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Redis.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Request.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Request.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Response.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Response.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Route.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Route.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Schema.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Schema.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Session.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Session.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/URL.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/URL.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Validator.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Validator.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/View.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/View.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Fluent.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Fluent.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Manager.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Manager.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/MessageBag.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/MessageBag.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/NamespacedItemResolver.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/NamespacedItemResolver.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Pluralizer.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Pluralizer.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ServiceProvider.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ServiceProvider.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/helpers.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/helpers.php old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/tables/llx_workstation_workstation-workstation.key.sql b/htdocs/install/mysql/tables/llx_workstation_workstation-workstation.key.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/tables/llx_workstation_workstation-workstation.sql b/htdocs/install/mysql/tables/llx_workstation_workstation-workstation.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/tables/llx_workstation_workstation_resource-workstation.sql b/htdocs/install/mysql/tables/llx_workstation_workstation_resource-workstation.sql old mode 100755 new mode 100644 diff --git a/htdocs/install/mysql/tables/llx_workstation_workstation_usergroup-workstation.sql b/htdocs/install/mysql/tables/llx_workstation_workstation_usergroup-workstation.sql old mode 100755 new mode 100644 diff --git a/htdocs/theme/dolistore_logo.svg b/htdocs/theme/dolistore_logo.svg old mode 100755 new mode 100644 diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_actioncomm.php-NORUN b/htdocs/webservices/demo_wsclient_actioncomm.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_category.php-NORUN b/htdocs/webservices/demo_wsclient_category.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_invoice.php-NORUN b/htdocs/webservices/demo_wsclient_invoice.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_other.php-NORUN b/htdocs/webservices/demo_wsclient_other.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_productorservice.php-NORUN b/htdocs/webservices/demo_wsclient_productorservice.php-NORUN old mode 100755 new mode 100644 diff --git a/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN b/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN old mode 100755 new mode 100644 diff --git a/test/soapui/Dolibarr-soapui-project.xml b/test/soapui/Dolibarr-soapui-project.xml old mode 100755 new mode 100644 From 4cf62b9711ab7c774af96bc4e355d862b2596e55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 12 Jan 2024 17:11:08 +0100 Subject: [PATCH 08/46] clean code and fix (#27446) * clean code and fix * clean code and fix --- htdocs/categories/class/categorie.class.php | 2 +- htdocs/categories/viewcat.php | 32 ++++++++++++++------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index f7008dad5eb68..3d060a80eaa84 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -859,7 +859,7 @@ public function del_type($obj, $type) * @param string $sortorder Sort order ('ASC' or 'DESC'); * @param array $filter Filter array. Example array('field'=>'valueforlike', 'customsql'=>...) * @param string $filtermode Filter mode (AND or OR) - * @return array|int -1 if KO, array of instance of object if OK + * @return CommonObject[]|int[]|int Return -1 if KO, array of instance of object if OK * @see containsObject() */ public function getObjectsInCateg($type, $onlyids = 0, $limit = 0, $offset = 0, $sortfield = '', $sortorder = 'ASC', $filter = array(), $filtermode = 'AND') diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index 13864aa45db02..5d1d44738fedb 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -499,6 +499,7 @@ if ($prods < 0) { dol_print_error($db, $object->error, $object->errors); } else { + /** @var Product[] $prods */ // Form to add record into the category $showclassifyform = 1; if ($showclassifyform) { @@ -584,6 +585,7 @@ if ($socs < 0) { dol_print_error($db, $object->error, $object->errors); } else { + /** @var Societe[] $socs */ // Form to add record into a category $showclassifyform = 1; if ($showclassifyform) { @@ -668,6 +670,7 @@ if ($socs < 0) { dol_print_error($db, $object->error, $object->errors); } else { + /** @var Fournisseur[] $socs */ // Form to add record into a category $showclassifyform = 1; if ($showclassifyform) { @@ -751,10 +754,11 @@ $permission = $user->hasRight('adherent', 'creer'); - $prods = $object->getObjectsInCateg($type, 0, $limit, $offset); - if ($prods < 0) { + $members = $object->getObjectsInCateg($type, 0, $limit, $offset); + if ($members < 0) { dol_print_error($db, $object->error, $object->errors); } else { + /** @var Adherent[] $members */ // Form to add record into a category $showclassifyform = 1; if ($showclassifyform) { @@ -784,7 +788,7 @@ print '
'; $param = '&limit='.$limit.'&id='.$id.'&type='.$type; - $num = count($prods); + $num = count($members); $nbtotalofrecords = ''; $newcardbutton = dolGetButtonTitle($langs->trans("AddMember"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/adherents/card.php?action=create&memcats[]='.$object->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id), '', $user->hasRight('adherent', 'creer')); @@ -793,9 +797,9 @@ print ''."\n"; print ''."\n"; - if (count($prods) > 0) { + if (count($members) > 0) { $i = 0; - foreach ($prods as $key => $member) { + foreach ($members as $key => $member) { $i++; if ($i > $limit) { break; @@ -841,6 +845,7 @@ if (is_numeric($contacts) && $contacts < 0) { dol_print_error($db, $object->error, $object->errors); } else { + /** @var Contact[] $contacts */ // Form to add record into a category $showclassifyform = 1; if ($showclassifyform) { @@ -932,6 +937,7 @@ if ($accounts < 0) { dol_print_error($db, $object->error, $object->errors); } else { + /** @var Account[] $accounts */ // Form to add record into a category $showclassifyform = 1; if ($showclassifyform) { @@ -1019,6 +1025,7 @@ if ($objects < 0) { dol_print_error($db, $object->error, $object->errors); } else { + /** @var Project $object */ // Form to add record into a category $showclassifyform = 1; if ($showclassifyform) { @@ -1104,6 +1111,7 @@ if ($users < 0) { dol_print_error($db, $object->error, $object->errors); } else { + /** @var User[] $users */ // Form to add record into a category $showclassifyform = 1; if ($showclassifyform) { @@ -1180,7 +1188,7 @@ // List of warehouses if ($type == Categorie::TYPE_WAREHOUSE) { if ($user->hasRight("stock", "read")) { - $permission = $user->rights->stock->creer; + $permission = $user->hasRight('stock', 'creer'); require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php'; @@ -1188,6 +1196,7 @@ if ($objects < 0) { dol_print_error($db, $object->error, $object->errors); } else { + /** @var Entrepot[] $objects */ print ''; print ''; print ''; @@ -1208,7 +1217,7 @@ if (count($objects) > 0) { $i = 0; - foreach ($objects as $key => $project) { + foreach ($objects as $key => $warehouse) { $i++; if ($i > $limit) { break; @@ -1216,14 +1225,14 @@ print "\t".''."\n"; print '\n"; - print '\n"; - print '\n"; + print '\n"; + print '\n"; // Link to delete from category print ''; // Warehouse source print ''; - // Batch number managment + // Batch number management if ($conf->productbatch->enabled && !empty($lines[$i]->product->status_batch)) { print ''; // Warehouse source print ''; - // Batch number managment + // Batch number management print ''; print ''; } @@ -2015,7 +2015,7 @@ } } - // Batch number managment + // Batch number management if (isModEnabled('productbatch')) { if (isset($lines[$i]->batch)) { print ''; diff --git a/htdocs/reception/class/api_receptions.class.php b/htdocs/reception/class/api_receptions.class.php index 976f3f396ecb9..6255b18d72260 100644 --- a/htdocs/reception/class/api_receptions.class.php +++ b/htdocs/reception/class/api_receptions.class.php @@ -55,7 +55,7 @@ public function __construct() /** * Get properties of a reception object * - * Return an array with reception informations + * Return an array with reception information * * @param int $id ID of reception * @return Object Object with cleaned properties @@ -93,7 +93,7 @@ public function get($id) * @param int $page Page number * @param string $thirdparty_ids Thirdparty ids to filter receptions of (example '1' or '1,2,3') {@pattern /^[0-9,]*$/i} * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" - * @param string $properties Restrict the data returned to theses properties. Ignored if empty. Comma separated list of properties names + * @param string $properties Restrict the data returned to these properties. Ignored if empty. Comma separated list of properties names * @return array Array of reception objects * * @throws RestException @@ -187,7 +187,7 @@ public function post($request_data = null) foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->reception->context['caller'] = $request_data['caller']; continue; } @@ -442,7 +442,7 @@ public function put($id, $request_data = null) continue; } if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->reception->context['caller'] = $request_data['caller']; continue; } diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index dab334d60420d..5feba5547db80 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -30,7 +30,7 @@ /** * \file htdocs/reception/class/reception.class.php * \ingroup reception - * \brief Fichier de la classe de gestion des receptions + * \brief File for class to manage receptions */ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; @@ -97,7 +97,7 @@ class Reception extends CommonObject public $size_units; public $user_author_id; - public $date_delivery; // Date delivery planed + public $date_delivery; // Date delivery planned /** * @var integer|string Effective delivery date @@ -207,7 +207,7 @@ public function getNextNumRef($soc) /** * Create reception en base * - * @param User $user Objet du user qui cree + * @param User $user Object du user qui cree * @param int $notrigger 1=Does not execute triggers, 0= execute triggers * @return int Return integer <0 si erreur, id reception creee si ok */ @@ -414,7 +414,7 @@ public function fetch($id, $ref = '', $ref_ext = '') $this->date_creation = $this->db->jdate($obj->date_creation); $this->date = $this->db->jdate($obj->date_reception); // TODO deprecated $this->date_reception = $this->db->jdate($obj->date_reception); // Date real - $this->date_delivery = $this->db->jdate($obj->date_delivery); // Date planed + $this->date_delivery = $this->db->jdate($obj->date_delivery); // Date planned $this->model_pdf = $obj->model_pdf; $this->shipping_method_id = $obj->fk_shipping_method; $this->tracking_number = $obj->tracking_number; @@ -546,7 +546,7 @@ public function valid($user, $notrigger = 0) $error++; } - // If stock increment is done on reception (recommanded choice) + // If stock increment is done on reception (recommended choice) if (!$error && isModEnabled('stock') && getDolGlobalInt('STOCK_CALCULATE_ON_RECEPTION')) { require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php'; @@ -1416,7 +1416,7 @@ public function initAsSpecimen() $order = new CommandeFournisseur($this->db); $order->initAsSpecimen(); - // Initialise parametres + // Initialise parameters $this->id = 0; $this->ref = 'SPECIMEN'; $this->specimen = 1; @@ -1457,7 +1457,7 @@ public function initAsSpecimen() /** * Set the planned delivery date * - * @param User $user Objet utilisateur qui modifie + * @param User $user Object utilisateur qui modifie * @param integer $delivery_date Delivery date * @return int Return integer <0 if KO, >0 if OK */ @@ -1718,7 +1718,7 @@ public function setClosed() } /** - * Classify the reception as invoiced (used for exemple by trigger when WORKFLOW_RECEPTION_CLASSIFY_BILLED_INVOICE is on) + * Classify the reception as invoiced (used for example by trigger when WORKFLOW_RECEPTION_CLASSIFY_BILLED_INVOICE is on) * * @return int Return integer <0 if ko, >0 if ok */ diff --git a/htdocs/reception/class/receptionstats.class.php b/htdocs/reception/class/receptionstats.class.php index b56211933dd67..bc1cc4fb1ab57 100644 --- a/htdocs/reception/class/receptionstats.class.php +++ b/htdocs/reception/class/receptionstats.class.php @@ -21,7 +21,7 @@ /** * \file htdocs/reception/class/receptionstats.class.php * \ingroup reception - * \brief File of class fo tmanage reception statistics + * \brief File of class to manage reception statistics */ include_once DOL_DOCUMENT_ROOT.'/core/class/stats.class.php'; diff --git a/htdocs/reception/list.php b/htdocs/reception/list.php index 06a0d69ff823f..ef28514f1fd80 100644 --- a/htdocs/reception/list.php +++ b/htdocs/reception/list.php @@ -243,7 +243,7 @@ $objecttmp = new FactureFournisseur($db); if (!empty($createbills_onebythird) && !empty($TFactThird[$rcp->socid])) { - // If option "one bill per third" is set, and an invoice for this thirdparty was already created, we re-use it. + // If option "one bill per third" is set, and an invoice for this thirdparty was already created, we reuse it. $objecttmp = $TFactThird[$rcp->socid]; // Add all links of this new reception to the existing invoice @@ -251,7 +251,7 @@ $rcp->fetchObjectLinked(); if (count($rcp->linkedObjectsIds['order_supplier']) > 0) { foreach ($rcp->linkedObjectsIds['order_supplier'] as $key => $value) { - if (empty($objecttmp->linkedObjectsIds['order_supplier']) || !in_array($value, $objecttmp->linkedObjectsIds['order_supplier'])) { //Dont try to link if already linked + if (empty($objecttmp->linkedObjectsIds['order_supplier']) || !in_array($value, $objecttmp->linkedObjectsIds['order_supplier'])) { //Don't try to link if already linked $objecttmp->add_object_linked('order_supplier', $value); // add supplier order linked object } } @@ -1311,7 +1311,7 @@ } } - // Date delivery planed + // Date delivery planned if (!empty($arrayfields['e.date_delivery']['checked'])) { print '
'.$langs->trans("Name").'
'; - print $project->getNomUrl(1); + print $warehouse->getNomUrl(1); print "'.$project->ref."'.$project->title."'.$warehouse->ref."'.$warehouse->lieu."'; if ($permission) { - print "id."'>"; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; @@ -1253,6 +1262,7 @@ if ($tickets < 0) { dol_print_error($db, $object->error, $object->errors); } else { + /** @var Ticket[] $tickets */ // Form to add record into a category $showclassifyform = 1; if ($showclassifyform) { From 42a0d05b63a34d653b02a619b191d4ce37b04556 Mon Sep 17 00:00:00 2001 From: MDW Date: Fri, 12 Jan 2024 17:14:13 +0100 Subject: [PATCH 09/46] Qual: Spelling outside htdocs (#27448) * Qual: Spelling outside htdocs # Qual: Fix spelling of files not in the htdocs subdirectory. Highlight: - Change in email test from unvalid to invalid that should give the same test result. * Update Dolibarr-soapui-project.xml --------- Co-authored-by: Laurent Destailleur --- build/README | 2 +- build/debian/README.howto | 10 +++--- build/debian/copyright | 2 +- build/debian/rules | 2 +- build/docker/mariadb/Dockerfile | 2 +- build/doxygen/dolibarr-doxygen-build.pl | 4 +-- build/doxygen/dolibarr-doxygen.doxyfile | 4 +-- build/doxygen/doxygen-awesome.css | 2 +- build/launchpad/README | 2 +- build/makepack-dolibarrtheme.pl | 2 +- build/makepack-howto.txt | 6 ++-- build/obs/README | 2 +- build/patch/README | 2 +- dev/dolibarr_changes.txt | 6 ++-- dev/examples/ical/event_recu.txt | 4 +-- dev/initdata/generate-order.php | 2 +- dev/initdata/generate-thirdparty.php | 2 +- dev/initdata/import-thirdparties.php | 2 +- dev/setup/apache/virtualhost | 4 +-- dev/setup/codesniffer/php.ini | 2 +- dev/setup/codesniffer/ruleset.xml | 2 +- dev/setup/fail2ban/jail.local | 2 +- dev/tools/apstats.php | 6 ++-- dev/tools/dolibarr-mysql2pgsql.pl | 2 +- dev/tools/dolibarr-postgres2mysql.php | 12 +++---- dev/translation/autotranslator.class.php | 4 +-- dev/translation/sanity_check_en_langfiles.php | 2 +- doc/index.html | 2 +- scripts/bank/export-bank-receipts.php | 4 +-- .../company/sync_contacts_dolibarr2ldap.php | 2 +- scripts/invoices/rebuild_merge_pdf.php | 2 +- .../members/sync_members_dolibarr2ldap.php | 2 +- .../members/sync_members_ldap2dolibarr.php | 2 +- .../sync_members_types_dolibarr2ldap.php | 2 +- scripts/user/sync_groups_dolibarr2ldap.php | 4 +-- scripts/user/sync_groups_ldap2dolibarr.php | 10 +++--- scripts/user/sync_users_dolibarr2ldap.php | 4 +-- scripts/user/sync_users_ldap2dolibarr.php | 6 ++-- .../website/migrate-news-joomla2dolibarr.php | 4 +-- test/awbot/awbot.test.conf | 2 +- test/phpunit/AccountingAccountTest.php | 2 +- test/phpunit/CodingPhpTest.php | 2 +- test/phpunit/ExportTest.php | 2 +- test/phpunit/FilesLibTest.php | 4 +-- test/phpunit/Functions2LibTest.php | 2 +- test/phpunit/NumberingModulesTest.php | 12 +++---- test/phpunit/RepositoryTest.php | 4 +-- test/phpunit/RestAPIUserTest.php | 2 +- test/phpunit/SecurityTest.php | 34 +++++++++---------- .../functional/TakePosFunctionalTest.php | 2 +- test/soapui/Dolibarr-soapui-project.xml | 2 +- 51 files changed, 104 insertions(+), 104 deletions(-) diff --git a/build/README b/build/README index 19cf4ad1ec2c4..dc9c743175fd0 100644 --- a/build/README +++ b/build/README @@ -34,7 +34,7 @@ See makepack-howto.txt for prerequisites. -------------------------------------------------------------------------------------------------- -- To build developper documentation, launch the script +- To build developer documentation, launch the script > perl dolibarr-doxygen-build.pl diff --git a/build/debian/README.howto b/build/debian/README.howto index 45df1e9df7057..f01add2f013ed 100644 --- a/build/debian/README.howto +++ b/build/debian/README.howto @@ -81,7 +81,7 @@ export QUILT_PATCHES=debian/patches # dpkg -l List all packages # dpkg -b To build binary only package # dpkg -c package.deb List content of package -# dpkg -I package.deb Give informations on package +# dpkg -I package.deb Give information on package # dpkg -i package.deb Install a package # dpkg-reconfigure -plow package Reconfigure package # dpkg -L packagename List content of installed package @@ -173,7 +173,7 @@ or > ls /srv/chroot Puis pour se connecter et préparer l'environnement -> schroot -c name_of_chroot (exemple schroot -c unstable-amd64-sbuild) +> schroot -c name_of_chroot (example schroot -c unstable-amd64-sbuild) > cat /etc/debian_chroot to check which debian branch we are into > apt-get install vim dialog > vi /usr/sbin/policy-rc.d and replace return code 101 (not allowed) into 0 (ok) @@ -249,7 +249,7 @@ ou > git-buildpackage -us -uc --git-ignore-branch --git-upstream-branch=[upstream|upstream-x.y.z] Note: To build an old version, do: git checkout oldtagname -b newbranchname; git-buildpackage -us -uc --git-debian-branch=newbranchname --git-upstream-branch=[upstream|upstream-3.5.x] -Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test build with uncommited file +Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test build with uncommitted file Note: You can use git-buildpackage -us -uc -d if you want to test build when dependencies does not match Note: Package is built into directory ../build-area Note: To compare 2 packages: debdiff package1.dsc package2.dsc @@ -345,7 +345,7 @@ To update dolibarr debian package when only files not into debian has changed: * Checkout the branch you want to work on: master of debian/... * Manually, add patches into debian/patches and update the file debian/series, or do the 2 steps with "quilt import filepatch.patch" -* You can test patching of serie with "quilt push" (autant de fois que de patch). Avec "quilt pop -a", on revient a l'état du upstream sans les patch. +* You can test patching of series with "quilt push" (autant de fois que de patch). Avec "quilt pop -a", on revient a l'état du upstream sans les patch. * Update the debian/changelog to add entry of change. Once files has been prepared, it's time to test: @@ -357,7 +357,7 @@ ou > git-buildpackage -us -uc --git-ignore-branch --git-upstream-branch=[upstream|upstream-jessie|upstream-3.5.x|3.5.5] Note: To build an old version, do: git checkout oldtagname -b newbranchname; git-buildpackage -us -uc --git-debian-branch=newbranchname --git-upstream-branch=[upstream|upstream-jessie|upstream-3.5.x|3.5.5] -Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test build with uncommited file +Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test build with uncommitted file Note: You can use git-buildpackage -us -uc -d if you want to test build when dependencies does not match Note: Package is built into directory ../build-area Note: To compare 2 packages: debdiff package1.dsc package2.dsc diff --git a/build/debian/copyright b/build/debian/copyright index b99b8a65b5dd2..5f1b73d9b646b 100644 --- a/build/debian/copyright +++ b/build/debian/copyright @@ -64,7 +64,7 @@ License: GPL-3+ Files: htdocs/includes/ckeditor/* Copyright: 2003-2012 CKSource - Frederico Knabben License: GPL-2+ - The ckeditor is tripple licensed under the GNU General Public License (GPL), + The ckeditor is triple licensed under the GNU General Public License (GPL), GNU Lesser General Public License (LGPL), and Mozilla Public License (MPL). In Debian, it is distributed under the GNU General Public License (GPL). . diff --git a/build/debian/rules b/build/debian/rules index df6abfd1b8962..5f8b14e49eaca 100755 --- a/build/debian/rules +++ b/build/debian/rules @@ -4,7 +4,7 @@ export DH_VERBOSE=1 export DH_OPTIONS=-v -#export DH_COMPAT=7 # This is the debhelper compatability version to use, now defined into compat file +#export DH_COMPAT=7 # This is the debhelper compatibility version to use, now defined into compat file %: diff --git a/build/docker/mariadb/Dockerfile b/build/docker/mariadb/Dockerfile index a4db0f4206529..792f0623bd4dc 100644 --- a/build/docker/mariadb/Dockerfile +++ b/build/docker/mariadb/Dockerfile @@ -1,3 +1,3 @@ FROM mariadb:latest -# Enable comented out UTF8 charset/collation options +# Enable commented out UTF8 charset/collation options RUN sed '/utf8/ s/^#//' /etc/mysql/mariadb.cnf >/tmp/t && mv /tmp/t /etc/mysql/mariadb.cnf diff --git a/build/doxygen/dolibarr-doxygen-build.pl b/build/doxygen/dolibarr-doxygen-build.pl index 5a4849a3a5bd7..32a852f22d8ce 100755 --- a/build/doxygen/dolibarr-doxygen-build.pl +++ b/build/doxygen/dolibarr-doxygen-build.pl @@ -1,9 +1,9 @@ #!/usr/bin/perl #-------------------------------------------------------------------- -# Lance la generation de la doc dev doxygen +# Start the generation of the development documentation with doxygen #-------------------------------------------------------------------- -# Detecte repertoire du script +# Determine the patho of this script ($DIR=$0) =~ s/([^\/\\]+)$//; $DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; diff --git a/build/doxygen/dolibarr-doxygen.doxyfile b/build/doxygen/dolibarr-doxygen.doxyfile index debb1ce63016b..d6fc7b1ef9e93 100644 --- a/build/doxygen/dolibarr-doxygen.doxyfile +++ b/build/doxygen/dolibarr-doxygen.doxyfile @@ -283,10 +283,10 @@ TYPEDEF_HIDES_STRUCT = NO # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penality. +# causing a significant performance penalty. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will rougly double the +# a logarithmic scale so increasing the size by one will roughly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols diff --git a/build/doxygen/doxygen-awesome.css b/build/doxygen/doxygen-awesome.css index 0b1c8c208924a..21150c99adc42 100644 --- a/build/doxygen/doxygen-awesome.css +++ b/build/doxygen/doxygen-awesome.css @@ -160,7 +160,7 @@ html { --toc-background: var(--side-nav-background); --toc-foreground: var(--side-nav-foreground); - /* height of an item in any tree / collapsable table */ + /* height of an item in any tree / collapsible table */ --tree-item-height: 30px; --memname-font-size: var(--code-font-size); diff --git a/build/launchpad/README b/build/launchpad/README index fc284e70b20f0..b1ebcd25678b6 100644 --- a/build/launchpad/README +++ b/build/launchpad/README @@ -49,7 +49,7 @@ If you want to build/test package locally: Use URL pattern (stable): For stable: http://www.dolibarr.org/files/lastbuild/package_debian-ubuntu/dolibarr_x.z.*.tar.gz -- For Dev, you can also add link serie to GIT HEAD. +- For Dev, you can also add link series to GIT HEAD. - For stable, you can init from command line cd bzr/dolibarr-stable bzr init diff --git a/build/makepack-dolibarrtheme.pl b/build/makepack-dolibarrtheme.pl index 954111a09cbcd..2171d87922ec6 100755 --- a/build/makepack-dolibarrtheme.pl +++ b/build/makepack-dolibarrtheme.pl @@ -258,7 +258,7 @@ if ($CHOOSEDTARGET{$target} < 0) { print "Package $target not built (bad requirement).\n"; } else { - print "Package $target built succeessfully in $DESTI\n"; + print "Package $target built successfully in $DESTI\n"; } } diff --git a/build/makepack-howto.txt b/build/makepack-howto.txt index ca228f804d026..654bca95256f5 100644 --- a/build/makepack-howto.txt +++ b/build/makepack-howto.txt @@ -18,7 +18,7 @@ Prerequisites to build autoexe DoliWamp package from Linux (solution seems broke See file build/exe/doliwamp.iss to know the doliwamp version currently setup. > Add path to ISCC into PATH windows var: Launch wine cmd, then regedit and add entry int HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PATH -> To build manually the .exe from Windows (running from makepack-dolibarr.pl script is however recommanded), +> To build manually the .exe from Windows (running from makepack-dolibarr.pl script is however recommended), open file build/exe/doliwamp.iss and click on button "Compile". The .exe file will be build into directory build. @@ -47,7 +47,7 @@ Prerequisites to build autoexe DoliWamp package from Windows: This files describe steps made by Dolibarr packaging team to make a beta version of Dolibarr, step by step. -- Check all files are commited. +- Check all files are committed. - Update version/info in ChangeLog, for this you can: To generate a changelog of a major new version x.y.0 (from a repo on branch develop), you can do "cd ~/git/dolibarr; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent develop) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" To generate a changelog of a major new version x.y.0 (from a repo on branch x.y repo), you can do "cd ~/git/dolibarr_x.y; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent x.y.0) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" @@ -72,7 +72,7 @@ Recopy the content of the output file into the file ChangeLog. This files describe steps made by Dolibarr packaging team to make a complete release of Dolibarr, step by step. -- Check all files are commited. +- Check all files are committed. - Update version/info in ChangeLog, for this you can: To generate a changelog of a major new version x.y.0 (from a repo on branch develop), you can do "cd ~/git/dolibarr; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent develop) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" To generate a changelog of a major new version x.y.0 (from a repo pn branch x.y), you can do "cd ~/git/dolibarr_x.y; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent x.y.0) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa" diff --git a/build/obs/README b/build/obs/README index 44427c01d497a..6b047b42fcf69 100644 --- a/build/obs/README +++ b/build/obs/README @@ -54,5 +54,5 @@ OBS:QualityCategory Stable|Testing|Development|Private For example: https://bugzilla.novell.com/show_bug.cgi?id=848083 to be a maintener of category https://build.opensuse.org/project/show/Application:ERP - Once done, go into project, category, subproject and enter a subproject for your application. -Fo example: Dolibarr +For example: Dolibarr - Then go onto project into your home and ask a publish to the category/you project your created. diff --git a/build/patch/README b/build/patch/README index ec769bd3d712a..6b63713122fc7 100644 --- a/build/patch/README +++ b/build/patch/README @@ -4,6 +4,6 @@ Building a Patch file ################################################## This directory contains tools to build a patch after a developer has made changes on files in its Dolibarr tree. -The output patch file can then be submited on Dolibarr dev mailing-list, with explanation on its goal, for inclusion in main branch. +The output patch file can then be submitted on Dolibarr dev mailing-list, with explanation on its goal, for inclusion in main branch. Using this tool is now deprecated. You must use git pull requests to submit contributions. diff --git a/dev/dolibarr_changes.txt b/dev/dolibarr_changes.txt index 6b00d5243b9b9..5872396015095 100644 --- a/dev/dolibarr_changes.txt +++ b/dev/dolibarr_changes.txt @@ -177,14 +177,14 @@ into * Removed useless directories ("examples", "tools") -* Optionnaly, removed all fonts except - dejavusans* (used by greek, arab, persan, romanian, turkish), +* Optionally, removed all fonts except + dejavusans* (used by greek, arab, person, romanian, turkish), freemono* (russian), cid*+msungstdlight+stsongstdlight+uni2cid* (chinese), helvetica* (all other languages), zapfdingbats.php (for special chars like form checkboxes) -* Optionnaly, made freemono the default monotype font if we removed courier +* Optionally, made freemono the default monotype font if we removed courier In htdocs/includes/tecnickcom/tcpdf/tcpdf.php - protected $default_monospaced_font = 'courier'; + protected $default_monospaced_font = 'freemono'; diff --git a/dev/examples/ical/event_recu.txt b/dev/examples/ical/event_recu.txt index 5bcc491a0b39e..2a6b0322595f4 100644 --- a/dev/examples/ical/event_recu.txt +++ b/dev/examples/ical/event_recu.txt @@ -1,4 +1,4 @@ -Example fo recurring event, 1 week, no end, exported by Google +Example for recurring event, 1 week, no end, exported by Google # The recurring event were recorded every monday the 20150518. This is the Recurrence-id, but then # first occurrence was moved on tuesday. So this record were added. @@ -38,7 +38,7 @@ END:VEVENT -Example fo recurring event, every 2 month, no end, exported by Google +Example for recurring event, every 2 month, no end, exported by Google BEGIN:VEVENT DTSTART;TZID=Europe/Paris:20150519T080000 diff --git a/dev/initdata/generate-order.php b/dev/initdata/generate-order.php index 554e8ad49d673..68aab032686a3 100755 --- a/dev/initdata/generate-order.php +++ b/dev/initdata/generate-order.php @@ -48,7 +48,7 @@ /* - * Parametre + * Parameter */ define('GEN_NUMBER_COMMANDE', $argv[1] ?? 10); diff --git a/dev/initdata/generate-thirdparty.php b/dev/initdata/generate-thirdparty.php index 287eaeb173f8c..4bdcad752ef3d 100755 --- a/dev/initdata/generate-thirdparty.php +++ b/dev/initdata/generate-thirdparty.php @@ -50,7 +50,7 @@ /* - * Parametre + * Parameter */ define('GEN_NUMBER_SOCIETE', $argv[1] ?? 10); diff --git a/dev/initdata/import-thirdparties.php b/dev/initdata/import-thirdparties.php index a0e40d7b88397..4157cee86869d 100755 --- a/dev/initdata/import-thirdparties.php +++ b/dev/initdata/import-thirdparties.php @@ -153,7 +153,7 @@ } $object->cond_reglement_id = dol_getIdFromCode($db, $condpayment, 'c_payment_term', 'libelle_facture', 'rowid', 1); if (empty($object->cond_reglement_id)) { - print " - Error cant find payment mode for ".$condpayment."\n"; + print " - Error can't find payment mode for ".$condpayment."\n"; $errorrecord++; } } diff --git a/dev/setup/apache/virtualhost b/dev/setup/apache/virtualhost index 7eff1859d4f63..798031fb4049c 100644 --- a/dev/setup/apache/virtualhost +++ b/dev/setup/apache/virtualhost @@ -71,7 +71,7 @@ - # Log directoves + # Log directives ErrorLog /var/log/apache2/myvirtualalias_error_log TransferLog /var/log/apache2/myvirtualalias_access_log @@ -82,7 +82,7 @@ AddEncoding gzip .jgz - # Add cach performance directives + # Add cache performance directives ExpiresActive On ExpiresByType image/x-icon A2592000 ExpiresByType image/gif A2592000 diff --git a/dev/setup/codesniffer/php.ini b/dev/setup/codesniffer/php.ini index 00f3b2d4efa8b..6a5fa9b6292da 100644 --- a/dev/setup/codesniffer/php.ini +++ b/dev/setup/codesniffer/php.ini @@ -1533,7 +1533,7 @@ session.cache_expire = 180 ; - User may send URL contains active session ID ; to other person via. email/irc/etc. ; - URL that contains active session ID may be stored -; in publically accessible computer. +; in publicly accessible computer. ; - User may access your site with the same session ID ; always using URL stored in browser's history or bookmarks. ; http://php.net/session.use-trans-sid diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index e286450f73bb8..a87d87fe2dbc4 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -110,7 +110,7 @@ --> - + '."\n"; + // print ''."\n"; // Define urllogo $urllogo = ''; $urllogofull = ''; From 342ab85195b4199dca571f83b81e2bdcd166a1e6 Mon Sep 17 00:00:00 2001 From: MDW Date: Fri, 12 Jan 2024 17:18:52 +0100 Subject: [PATCH 14/46] Qual: Spelling htdocs/[q-z]* (#27447) # Qual: Fix spelling htdocs/[q-z]* Probably fixes a bug: - htdocs/webservices/server_thirdparty.php No other occurence of adress found. -'adress'=>->adress,- +'address'=>->address,+ --- htdocs/reception/card.php | 18 ++++---- .../reception/class/api_receptions.class.php | 8 ++-- htdocs/reception/class/reception.class.php | 16 +++---- .../reception/class/receptionstats.class.php | 2 +- htdocs/reception/list.php | 6 +-- .../class/api_recruitments.class.php | 14 +++---- .../class/recruitmentcandidature.class.php | 8 ++-- .../class/recruitmentjobposition.class.php | 8 ++-- ...ric_recruitmentjobposition_odt.modules.php | 2 +- ...tandard_recruitmentjobposition.modules.php | 12 +++--- ...recruitment_recruitmentjobposition.lib.php | 2 +- .../recruitmentcandidature_card.php | 2 +- .../recruitmentcandidature_list.php | 4 +- .../recruitmentjobposition_applications.php | 2 +- .../recruitmentjobposition_card.php | 2 +- .../recruitmentjobposition_list.php | 4 +- htdocs/resource/class/dolresource.class.php | 8 ++-- .../class/html.formresource.class.php | 4 +- htdocs/resource/element_resource.php | 2 +- htdocs/salaries/card.php | 2 +- htdocs/salaries/class/paymentsalary.class.php | 6 +-- htdocs/salaries/class/salariesstats.class.php | 4 +- htdocs/salaries/class/salary.class.php | 10 ++--- htdocs/salaries/list.php | 4 +- htdocs/salaries/payment_salary/card.php | 6 +-- htdocs/salaries/payments.php | 2 +- htdocs/salaries/virement_request.php | 4 +- htdocs/societe/admin/societe.php | 2 +- .../canvas/actions_card_common.class.php | 12 +++--- .../company/actions_card_company.class.php | 2 +- .../canvas/company/tpl/card_create.tpl.php | 2 +- .../canvas/company/tpl/card_edit.tpl.php | 2 +- .../actions_card_individual.class.php | 4 +- .../canvas/individual/tpl/card_create.tpl.php | 2 +- .../canvas/individual/tpl/card_edit.tpl.php | 2 +- htdocs/societe/card.php | 4 +- htdocs/societe/checkvat/checkVatPopup.php | 4 +- htdocs/societe/class/api_contacts.class.php | 8 ++-- .../societe/class/api_thirdparties.class.php | 34 +++++++-------- .../class/companybankaccount.class.php | 4 +- .../class/companypaymentmode.class.php | 4 +- htdocs/societe/class/societe.class.php | 42 +++++++++---------- htdocs/societe/class/societeaccount.class.php | 8 ++-- htdocs/societe/list.php | 6 +-- htdocs/societe/paymentmodes.php | 2 +- htdocs/societe/societecontact.php | 2 +- htdocs/societe/website.php | 4 +- htdocs/stripe/class/actions_stripe.class.php | 2 +- htdocs/stripe/class/stripe.class.php | 14 +++---- htdocs/supplier_proposal/card.php | 14 +++---- .../class/api_supplier_proposals.class.php | 4 +- .../class/supplier_proposal.class.php | 32 +++++++------- htdocs/supplier_proposal/list.php | 2 +- htdocs/support/inc.php | 4 +- htdocs/takepos/admin/setup.php | 2 +- htdocs/takepos/genimg/index.php | 2 +- htdocs/takepos/index.php | 4 +- htdocs/takepos/invoice.php | 8 ++-- htdocs/takepos/pay.php | 2 +- htdocs/theme/eldy/badges.inc.php | 4 +- htdocs/theme/eldy/btn.inc.php | 2 +- htdocs/theme/eldy/dropdown.inc.php | 2 +- htdocs/theme/eldy/flags-sprite.inc.php | 2 +- htdocs/theme/eldy/global.inc.php | 18 ++++---- htdocs/theme/eldy/progress.inc.php | 2 +- htdocs/theme/eldy/theme_vars.inc.php | 8 ++-- htdocs/theme/md/badges.inc.php | 4 +- htdocs/theme/md/btn.inc.php | 2 +- htdocs/theme/md/dropdown.inc.php | 2 +- htdocs/theme/md/flags-sprite.inc.php | 2 +- htdocs/theme/md/info-box.inc.php | 2 +- htdocs/theme/md/style.css.php | 14 +++---- htdocs/theme/md/theme_vars.inc.php | 8 ++-- htdocs/ticket/card.php | 4 +- htdocs/ticket/class/actions_ticket.class.php | 4 +- htdocs/ticket/class/api_tickets.class.php | 16 +++---- htdocs/ticket/class/cticketcategory.class.php | 4 +- htdocs/ticket/class/ticket.class.php | 20 ++++----- htdocs/ticket/class/ticketstats.class.php | 4 +- htdocs/ticket/index.php | 4 +- htdocs/ticket/list.php | 4 +- htdocs/user/bank.php | 8 ++-- htdocs/user/card.php | 10 ++--- htdocs/user/class/api_users.class.php | 10 ++--- htdocs/user/class/user.class.php | 4 +- htdocs/user/class/usergroup.class.php | 18 ++++---- htdocs/user/document.php | 4 +- htdocs/user/group/card.php | 6 +-- htdocs/user/group/ldap.php | 4 +- htdocs/user/group/list.php | 2 +- htdocs/user/hierarchy.php | 2 +- htdocs/user/info.php | 2 +- htdocs/user/ldap.php | 2 +- htdocs/user/list.php | 4 +- htdocs/user/param_ihm.php | 4 +- .../variants/class/ProductAttribute.class.php | 4 +- .../class/ProductAttributeValue.class.php | 2 +- .../class/ProductCombination.class.php | 2 +- htdocs/variants/combinations.php | 2 +- htdocs/variants/list.php | 4 +- htdocs/webhook/class/target.class.php | 8 ++-- htdocs/webhook/target_card.php | 2 +- htdocs/webhook/target_list.php | 4 +- htdocs/webservices/admin/index.php | 2 +- .../demo_wsclient_actioncomm.php-NORUN | 2 +- .../demo_wsclient_thirdparty.php-NORUN | 10 ++--- htdocs/webservices/server_category.php | 20 ++++----- htdocs/webservices/server_other.php | 4 +- htdocs/webservices/server_thirdparty.php | 4 +- htdocs/website/class/website.class.php | 2 +- htdocs/website/class/websitepage.class.php | 6 +-- htdocs/website/index.php | 14 +++---- htdocs/website/websiteaccount_card.php | 2 +- .../workstation/class/workstation.class.php | 6 +-- htdocs/workstation/workstation_card.php | 2 +- htdocs/workstation/workstation_list.php | 4 +- htdocs/zapier/class/api_zapier.class.php | 8 ++-- htdocs/zapier/class/hook.class.php | 4 +- 118 files changed, 366 insertions(+), 366 deletions(-) diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index 688516299177e..0498c8d06bc87 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -302,7 +302,7 @@ $object->size_units = GETPOST('size_units', 'int'); $object->weight_units = GETPOST('weight_units', 'int'); - // On va boucler sur chaque ligne du document d'origine pour completer objet reception + // On va boucler sur chaque ligne du document d'origine pour completer object reception // avec info diverses + qte a livrer if ($object->origin == "supplierorder") { @@ -316,7 +316,7 @@ $object->socid = $objectsrc->socid; $object->ref_supplier = GETPOST('ref_supplier', 'alpha'); $object->model_pdf = GETPOST('model'); - $object->date_delivery = $date_delivery; // Date delivery planed + $object->date_delivery = $date_delivery; // Date delivery planned $object->fk_delivery_address = $objectsrc->fk_delivery_address; $object->shipping_method_id = GETPOST('shipping_method_id', 'int'); $object->tracking_number = GETPOST('tracking_number', 'alpha'); @@ -1008,7 +1008,7 @@ $dispatchLines[$numAsked] = array('paramSuffix'=>$paramSuffix, 'prod' => GETPOST($prod, 'int'), 'qty' => price2num(GETPOST($qty), 'MS'), 'ent' => GETPOST($ent, 'int'), 'pu' => price2num(GETPOST($pu), 'MU'), 'comment' => GETPOST('comment'), 'fk_commandefourndet' => GETPOST($fk_commandefourndet, 'int'), 'DLC'=> $dDLC, 'DLUO'=> $dDLUO, 'lot'=> GETPOST($lot, 'alpha')); } - // If create form is coming from same page, it means that post was sent but an error occured + // If create form is coming from same page, it means that post was sent but an error occurred if (preg_match('/^productl([0-9]+)$/i', $key, $reg)) { $numAsked++; $paramSuffix = $reg[1]; @@ -1101,7 +1101,7 @@ $arrayofpurchaselinealreadyoutput= array(); - // $_POST contains fk_commandefourndet_X_Y where Y is num of product line and X is number of splitted line + // $_POST contains fk_commandefourndet_X_Y where Y is num of product line and X is number of split lines $indiceAsked = 1; while ($indiceAsked <= $numAsked) { // Loop on $dispatchLines. Warning: $dispatchLines must be sorted by fk_commandefourndet (it is a regroupment key on output) $product = new Product($db); @@ -1366,7 +1366,7 @@ $formconfirm = ''; - // Confirm deleteion + // Confirm deletion if ($action == 'delete') { $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('DeleteReception'), $langs->trans("ConfirmDeleteReception", $object->ref), 'confirm_delete', '', 0, 1); } @@ -1397,7 +1397,7 @@ $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('ValidateReception'), $text, 'confirm_valid', '', 0, 1, 250); } - // Confirm cancelation + // Confirm cancellation if ($action == 'annuler') { $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('CancelReception'), $langs->trans("ConfirmCancelReception", $object->ref), 'confirm_cancel', '', 0, 1); } @@ -1970,7 +1970,7 @@ print ''.$formproduct->selectWarehouses($lines[$i]->fk_entrepot, 'entl'.$line_id, '', 1, 0, $lines[$i]->fk_product, '', 1).'
'; if (!getDolGlobalString('PRODUCT_DISABLE_SELLBY')) { @@ -1991,7 +1991,7 @@ print '
'; print dol_print_date($db->jdate($obj->delivery_date), "day"); diff --git a/htdocs/recruitment/class/api_recruitments.class.php b/htdocs/recruitment/class/api_recruitments.class.php index b68fe8602dbf4..88c7c54488ee9 100644 --- a/htdocs/recruitment/class/api_recruitments.class.php +++ b/htdocs/recruitment/class/api_recruitments.class.php @@ -64,7 +64,7 @@ public function __construct() /** * Get properties of a jobposition object * - * Return an array with jobposition informations + * Return an array with jobposition information * * @param int $id ID of jobposition * @return Object Object with cleaned properties @@ -95,7 +95,7 @@ public function getJobPosition($id) /** * Get properties of a candidature object * - * Return an array with candidature informations + * Return an array with candidature information * * @param int $id ID of candidature * @return Object Object with cleaned properties @@ -134,7 +134,7 @@ public function getCandidature($id) * @param int $limit Limit for list * @param int $page Page number * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" - * @param string $properties Restrict the data returned to theses properties. Ignored if empty. Comma separated list of properties names + * @param string $properties Restrict the data returned to these properties. Ignored if empty. Comma separated list of properties names * @return array Array of order objects * * @throws RestException @@ -328,7 +328,7 @@ public function postJobPosition($request_data = null) foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->jobposition->context['caller'] = $request_data['caller']; continue; } @@ -366,7 +366,7 @@ public function postCandidature($request_data = null) foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->jobposition->context['caller'] = $request_data['caller']; continue; } @@ -414,7 +414,7 @@ public function putJobPosition($id, $request_data = null) continue; } if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->jobposition->context['caller'] = $request_data['caller']; continue; } @@ -463,7 +463,7 @@ public function putCandidature($id, $request_data = null) continue; } if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->candidature->context['caller'] = $request_data['caller']; continue; } diff --git a/htdocs/recruitment/class/recruitmentcandidature.class.php b/htdocs/recruitment/class/recruitmentcandidature.class.php index 5505f6682d120..5de6f1487ae17 100644 --- a/htdocs/recruitment/class/recruitmentcandidature.class.php +++ b/htdocs/recruitment/class/recruitmentcandidature.class.php @@ -89,7 +89,7 @@ class RecruitmentCandidature extends CommonObject * 'noteditable' says if field is not editable (1 or 0) * 'default' is a default value for creation (can still be overwrote by the Setup of Default Values if field is editable in creation form). Note: If default is set to '(PROV)' and field is 'ref', the default value will be set to '(PROVid)' where id is rowid when a new record is created. * 'index' if we want an index in database. - * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...). + * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommended to name the field fk_...). * 'searchall' is 1 if we want to search in this field when making a search from the quick search button. * 'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8). * 'css' and 'cssview' and 'csslist' is the CSS style to use on field. 'css' is used in creation and update. 'cssview' is used in view mode. 'csslist' is used for columns in lists. For example: 'maxwidth200', 'wordbreak', 'tdoverflowmax200' @@ -492,7 +492,7 @@ public function validate($user, $notrigger = 0) // Protection if ($this->status == self::STATUS_VALIDATED) { - dol_syslog(get_class($this)."::validate action abandonned: already validated", LOG_WARNING); + dol_syslog(get_class($this)."::validate action abandoned: already validated", LOG_WARNING); return 0; } @@ -705,7 +705,7 @@ public function getFullName($langs, $option = 0, $nameorder = -1, $maxlen = 0) } /** - * Return a link to the object card (with optionaly the picto) + * Return a link to the object card (with optionally the picto) * * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) * @param string $option On what the link point to ('nolink', ...) @@ -995,7 +995,7 @@ public function getNextNumRef() * Create a document onto disk according to template module. * * @param string $modele Force template to use ('' to not force) - * @param Translate $outputlangs objet lang a utiliser pour traduction + * @param Translate $outputlangs object lang a utiliser pour traduction * @param int $hidedetails Hide details of lines * @param int $hidedesc Hide description * @param int $hideref Hide ref diff --git a/htdocs/recruitment/class/recruitmentjobposition.class.php b/htdocs/recruitment/class/recruitmentjobposition.class.php index dba9c86ef5ffa..a5f0d3bd8df95 100644 --- a/htdocs/recruitment/class/recruitmentjobposition.class.php +++ b/htdocs/recruitment/class/recruitmentjobposition.class.php @@ -95,7 +95,7 @@ class RecruitmentJobPosition extends CommonObject * 'noteditable' says if field is not editable (1 or 0) * 'default' is a default value for creation (can still be overwrote by the Setup of Default Values if field is editable in creation form). Note: If default is set to '(PROV)' and field is 'ref', the default value will be set to '(PROVid)' where id is rowid when a new record is created. * 'index' if we want an index in database. - * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...). + * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommended to name the field fk_...). * 'searchall' is 1 if we want to search in this field when making a search from the quick search button. * 'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8). * 'css' and 'cssview' and 'csslist' is the CSS style to use on field. 'css' is used in creation and update. 'cssview' is used in view mode. 'csslist' is used for columns in lists. For example: 'maxwidth200', 'wordbreak', 'tdoverflowmax200' @@ -507,7 +507,7 @@ public function validate($user, $notrigger = 0) // Protection if ($this->status == self::STATUS_VALIDATED) { - dol_syslog(get_class($this)."::validate action abandonned: already validated", LOG_WARNING); + dol_syslog(get_class($this)."::validate action abandoned: already validated", LOG_WARNING); return 0; } @@ -783,7 +783,7 @@ public function reopen($user, $notrigger = 0) } /** - * Return a link to the object card (with optionaly the picto) + * Return a link to the object card (with optionally the picto) * * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) * @param string $option On what the link point to ('nolink', ...) @@ -1052,7 +1052,7 @@ public function getNextNumRef() * Create a document onto disk according to template module. * * @param string $modele Force template to use ('' to not force) - * @param Translate $outputlangs objet lang a utiliser pour traduction + * @param Translate $outputlangs object lang a utiliser pour traduction * @param int $hidedetails Hide details of lines * @param int $hidedesc Hide description * @param int $hideref Hide ref diff --git a/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php b/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php index 133720a1b8c03..3a1e94ca061aa 100644 --- a/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php +++ b/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php @@ -318,7 +318,7 @@ public function write_file($object, $outputlangs, $srctemplatepath, $hidedetails $contactobject = $object->contact; } else { $socobject = $object->thirdparty; - // if we have a CUSTOMER contact and we dont use it as thirdparty recipient we store the contact object for later use + // if we have a CUSTOMER contact and we don't use it as thirdparty recipient we store the contact object for later use $contactobject = $object->contact; } } else { diff --git a/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php b/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php index 6a7030d5882e0..dd94bd1a5b3a4 100644 --- a/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php +++ b/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php @@ -157,7 +157,7 @@ public function __construct($db) } // Define position of columns - $this->posxdesc = $this->marge_gauche + 1; // used for notes ans other stuff + $this->posxdesc = $this->marge_gauche + 1; // used for notes and other stuff $this->tabTitleHeight = 5; // default height @@ -620,7 +620,7 @@ public function write_file($object, $outputlangs, $srctemplatepath = '', $hidede $curY = $tab_top_newpage; } - $pdf->SetFont('', '', $default_font_size - 1); // On repositionne la police par defaut + $pdf->SetFont('', '', $default_font_size - 1); // On repositionne la police par default @@ -1090,18 +1090,18 @@ public function defineColumnField($object, $outputlangs, $hidedetails = 0, $hide ); /* - * For exemple + * For example $this->cols['theColKey'] = array( 'rank' => $rank, // int : use for ordering columns 'width' => 20, // the column width in mm 'title' => array( 'textkey' => 'yourLangKey', // if there is no label, yourLangKey will be translated to replace label 'label' => ' ', // the final label : used fore final generated text - 'align' => 'L', // text alignement : R,C,L + 'align' => 'L', // text alignment : R,C,L 'padding' => array(0.5,0.5,0.5,0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left ), 'content' => array( - 'align' => 'L', // text alignement : R,C,L + 'align' => 'L', // text alignment : R,C,L 'padding' => array(0.5,0.5,0.5,0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left ), ); @@ -1114,7 +1114,7 @@ public function defineColumnField($object, $outputlangs, $hidedetails = 0, $hide 'width' => false, // only for desc 'status' => true, 'title' => array( - 'textkey' => 'Designation', // use lang key is usefull in somme case with module + 'textkey' => 'Designation', // use lang key is useful in somme case with module 'align' => 'L', // 'textkey' => 'yourLangKey', // if there is no label, yourLangKey will be translated to replace label // 'label' => ' ', // the final label diff --git a/htdocs/recruitment/lib/recruitment_recruitmentjobposition.lib.php b/htdocs/recruitment/lib/recruitment_recruitmentjobposition.lib.php index bb6e9fbc2fed7..a269bc6168336 100644 --- a/htdocs/recruitment/lib/recruitment_recruitmentjobposition.lib.php +++ b/htdocs/recruitment/lib/recruitment_recruitmentjobposition.lib.php @@ -113,7 +113,7 @@ function recruitmentjobpositionPrepareHead($object) /** * Return string with full Url * - * @param int $mode 0=True url, 1=Url formated with colors + * @param int $mode 0=True url, 1=Url formatted with colors * @param string $ref Ref of object * @param int $localorexternal 0=Url for browser, 1=Url for external access * @return string Url string diff --git a/htdocs/recruitment/recruitmentcandidature_card.php b/htdocs/recruitment/recruitmentcandidature_card.php index f3f5164c0c7ee..a6ee9fd58ef00 100644 --- a/htdocs/recruitment/recruitmentcandidature_card.php +++ b/htdocs/recruitment/recruitmentcandidature_card.php @@ -56,7 +56,7 @@ $search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_'); -// Initialize array of search criterias +// Initialize array of search criteria $search_all = GETPOST("search_all", 'alpha'); $search = array(); foreach ($object->fields as $key => $val) { diff --git a/htdocs/recruitment/recruitmentcandidature_list.php b/htdocs/recruitment/recruitmentcandidature_list.php index 68598edbb26e8..a5279acd2ee6d 100644 --- a/htdocs/recruitment/recruitmentcandidature_list.php +++ b/htdocs/recruitment/recruitmentcandidature_list.php @@ -82,7 +82,7 @@ $sortorder = "DESC"; } -// Initialize array of search criterias +// Initialize array of search criteria $search_all = GETPOST('search_all', 'alphanohtml'); $search = array(); foreach ($object->fields as $key => $val) { @@ -609,7 +609,7 @@ $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); -print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table +print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table print ''."\n"; diff --git a/htdocs/recruitment/recruitmentjobposition_applications.php b/htdocs/recruitment/recruitmentjobposition_applications.php index 38fc5f1cc4bc7..49f54fcfe6f2d 100644 --- a/htdocs/recruitment/recruitmentjobposition_applications.php +++ b/htdocs/recruitment/recruitmentjobposition_applications.php @@ -55,7 +55,7 @@ $search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_'); -// Initialize array of search criterias +// Initialize array of search criteria $search_all = GETPOST("search_all", 'alpha'); $search = array(); foreach ($object->fields as $key => $val) { diff --git a/htdocs/recruitment/recruitmentjobposition_card.php b/htdocs/recruitment/recruitmentjobposition_card.php index d93f5cb8a4758..f6ba521599e23 100644 --- a/htdocs/recruitment/recruitmentjobposition_card.php +++ b/htdocs/recruitment/recruitmentjobposition_card.php @@ -55,7 +55,7 @@ $search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_'); -// Initialize array of search criterias +// Initialize array of search criteria $search_all = GETPOST("search_all", 'alpha'); $search = array(); foreach ($object->fields as $key => $val) { diff --git a/htdocs/recruitment/recruitmentjobposition_list.php b/htdocs/recruitment/recruitmentjobposition_list.php index 622b6aab64e65..244bb711e18f1 100644 --- a/htdocs/recruitment/recruitmentjobposition_list.php +++ b/htdocs/recruitment/recruitmentjobposition_list.php @@ -78,7 +78,7 @@ $sortorder = "DESC"; } -// Initialize array of search criterias +// Initialize array of search criteria $search_all = GETPOST('search_all', 'alphanohtml'); $search = array(); foreach ($object->fields as $key => $val) { @@ -449,7 +449,7 @@ $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); -print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table +print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table print '
'."\n"; diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index 2783a366405bd..5287ac99f52a7 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -669,13 +669,13 @@ public function update_element_resource($user = null, $notrigger = 0) * @param string $element Element * @param int $element_id Id * @param string $resource_type Type - * @return array Aray of resources + * @return array Array of resources */ public function getElementResources($element, $element_id, $resource_type = '') { $resources = array(); - // Links beetween objects are stored in this table + // Links between objects are stored in this table $sql = 'SELECT rowid, resource_id, resource_type, busy, mandatory'; $sql .= ' FROM '.MAIN_DB_PREFIX.'element_resources'; $sql .= " WHERE element_id=".((int) $element_id)." AND element_type='".$this->db->escape($element)."'"; @@ -799,7 +799,7 @@ public function getTooltipContentArray($params) * * @param int $withpicto Add picto into link * @param string $option Where point the link ('compta', 'expedition', 'document', ...) - * @param string $get_params Parametres added to url + * @param string $get_params Parameters added to url * @param int $notooltip 1=Disable tooltip * @param string $morecss Add more css on link * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking @@ -904,7 +904,7 @@ public static function LibStatut($status, $mode = 0) // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** - * Charge indicateurs this->nb de tableau de bord + * Load indicators this->nb for state board * * @return int Return integer <0 if KO, >0 if OK */ diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php index 6186a90cd60ef..03941f84573be 100644 --- a/htdocs/resource/class/html.formresource.class.php +++ b/htdocs/resource/class/html.formresource.class.php @@ -67,7 +67,7 @@ public function __construct($db) * * @param int $selected Preselected resource id * @param string $htmlname Name of field in form - * @param string $filter Optionnal filters criteras (example: 's.rowid <> x') + * @param string $filter Optional filters criteras (example: 's.rowid <> x') * @param int $showempty Add an empty field * @param int $showtype Show third party type in combolist (customer, prospect or supplier) * @param int $forcecombo Force to use combo box @@ -76,7 +76,7 @@ public function __construct($db) * @param int $outputmode 0=HTML select string, 1=Array, 2=without form tag * @param int $limit Limit number of answers * @param string $morecss More css - * @param bool $multiple add [] in the name of element and add 'multiple' attribut + * @param bool $multiple add [] in the name of element and add 'multiple' attribute * @return string|array HTML string with */ public function select_resource_list($selected = '', $htmlname = 'fk_resource', $filter = '', $showempty = 0, $showtype = 0, $forcecombo = 0, $event = array(), $filterkey = '', $outputmode = 0, $limit = 20, $morecss = '', $multiple = false) diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index 75cf03d1bb82c..77e81696d8f2d 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -192,7 +192,7 @@ } } - // Update ressource + // Update resource if ($action == 'update_linked_resource' && $user->hasRight('resource', 'write') && !GETPOST('cancel', 'alpha')) { $res = $object->fetch_element_resource($lineid); if ($res) { diff --git a/htdocs/salaries/card.php b/htdocs/salaries/card.php index 19092a8383d17..89442fa0b4c16 100644 --- a/htdocs/salaries/card.php +++ b/htdocs/salaries/card.php @@ -1001,7 +1001,7 @@ function( data ) { $i = 0; $total = 0; - print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table + print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table print '
'; print ''; print ''; diff --git a/htdocs/salaries/class/paymentsalary.class.php b/htdocs/salaries/class/paymentsalary.class.php index 787d794a24073..27db76ba07eea 100644 --- a/htdocs/salaries/class/paymentsalary.class.php +++ b/htdocs/salaries/class/paymentsalary.class.php @@ -162,7 +162,7 @@ public function __construct($db) * Use this->amounts to have list of lines for the payment * * @param User $user User making payment - * @param int $closepaidcontrib 1=Also close payed contributions to paid, 0=Do nothing more + * @param int $closepaidcontrib 1=Also close paid contributions to paid, 0=Do nothing more * @return int Return integer <0 if KO, id of payment if OK */ public function create($user, $closepaidcontrib = 0) @@ -181,7 +181,7 @@ public function create($user, $closepaidcontrib = 0) $this->datep = $this->datepaye; } - // Validate parametres + // Validate parameters if (empty($this->datep)) { $this->error = 'ErrorBadValueForParameterCreatePaymentSalary'; return -1; @@ -252,7 +252,7 @@ public function create($user, $closepaidcontrib = 0) $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."payment_salary"); } - // If we want to closed payed invoices + // If we want to closed paid invoices if ($closepaidcontrib) { $tmpsalary = new Salary($this->db); $tmpsalary->fetch($salary_id); diff --git a/htdocs/salaries/class/salariesstats.class.php b/htdocs/salaries/class/salariesstats.class.php index a1e701ed87e84..fc687add5ea19 100644 --- a/htdocs/salaries/class/salariesstats.class.php +++ b/htdocs/salaries/class/salariesstats.class.php @@ -20,13 +20,13 @@ /** * \file htdocs/salaries/class/salariesstats.class.php * \ingroup salaries - * \brief File of class for statistics on salaries + * \brief File of class to manage salary statistics */ include_once DOL_DOCUMENT_ROOT.'/core/class/stats.class.php'; include_once DOL_DOCUMENT_ROOT.'/salaries/class/salary.class.php'; /** - * Classe permettant la gestion des stats des salaires + * Class to manage salary statistics */ class SalariesStats extends Stats { diff --git a/htdocs/salaries/class/salary.class.php b/htdocs/salaries/class/salary.class.php index e04f4430225c7..c561ec496af4d 100644 --- a/htdocs/salaries/class/salary.class.php +++ b/htdocs/salaries/class/salary.class.php @@ -676,7 +676,7 @@ public function info($id) // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** - * Tag social contribution as payed completely + * Tag social contribution as paid completely * * @deprecated * @see setPaid() @@ -691,7 +691,7 @@ public function set_paid($user) } /** - * Tag social contribution as payed completely + * Tag social contribution as paid completely * * @param User $user Object user making change * @return int Return integer <0 if KO, >0 if OK @@ -714,7 +714,7 @@ public function setPaid($user) // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** - * Remove tag payed on social contribution + * Remove tag paid on social contribution * * @param User $user Object user making change * @return int Return integer <0 if KO, >0 if OK @@ -741,7 +741,7 @@ public function set_unpaid($user) * Return label of current status * * @param int $mode 0=label long, 1=labels short, 2=Picto + Label short, 3=Picto, 4=Picto + Label long, 5=Label short + Picto - * @param double $alreadypaid 0=No payment already done, >0=Some payments were already done (we recommand to put here amount payed if you have it, 1 otherwise) + * @param double $alreadypaid 0=No payment already done, >0=Some payments were already done (we recommend to put here amount paid if you have it, 1 otherwise) * @return string Label */ public function getLibStatut($mode = 0, $alreadypaid = -1) @@ -755,7 +755,7 @@ public function getLibStatut($mode = 0, $alreadypaid = -1) * * @param int $status Id status * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=short label + picto, 6=Long label + picto - * @param double $alreadypaid 0=No payment already done, >0=Some payments were already done (we recommand to put here amount payed if you have it, 1 otherwise) + * @param double $alreadypaid 0=No payment already done, >0=Some payments were already done (we recommend to put here amount paid if you have it, 1 otherwise) * @return string Label */ public function LibStatut($status, $mode = 0, $alreadypaid = -1) diff --git a/htdocs/salaries/list.php b/htdocs/salaries/list.php index 64b82b4e8f2bd..89dc0b6927cbd 100644 --- a/htdocs/salaries/list.php +++ b/htdocs/salaries/list.php @@ -100,7 +100,7 @@ $childids = $user->getAllChildIds(1); -// Initialize array of search criterias +// Initialize array of search criteria $search_all = GETPOST("search_all", 'alpha'); $search = array(); foreach ($object->fields as $key => $val) { @@ -476,7 +476,7 @@ $selectedfields = ($mode != 'kanban' ? $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')) : ''); // This also change content of $arrayfields $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); -print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table +print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table print '
'.$langs->trans("RefPayment").'
'."\n"; // Fields title search diff --git a/htdocs/salaries/payment_salary/card.php b/htdocs/salaries/payment_salary/card.php index bdf21475a7770..d5aff1dd2500a 100644 --- a/htdocs/salaries/payment_salary/card.php +++ b/htdocs/salaries/payment_salary/card.php @@ -194,7 +194,7 @@ /* - * List of salaries payed + * List of salaries paid */ $disable_delete = 0; @@ -213,7 +213,7 @@ $total = 0; print '
'; - print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table + print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table print '
'; print ''; print ''; @@ -239,7 +239,7 @@ print ''; // Status print ''; - // Amount payed + // Amount paid print ''; print "\n"; if ($objp->paye == 1) { diff --git a/htdocs/salaries/payments.php b/htdocs/salaries/payments.php index 1c347efa4cdc0..c80070c78dda1 100644 --- a/htdocs/salaries/payments.php +++ b/htdocs/salaries/payments.php @@ -115,7 +115,7 @@ $childids = $user->getAllChildIds(1); -// Initialize array of search criterias +// Initialize array of search criteria $search_all = GETPOST("search_all", 'alpha'); $search = array(); foreach ($object->fields as $key => $val) { diff --git a/htdocs/salaries/virement_request.php b/htdocs/salaries/virement_request.php index 59f82b9880f60..87fa07dda2c06 100644 --- a/htdocs/salaries/virement_request.php +++ b/htdocs/salaries/virement_request.php @@ -369,7 +369,7 @@ $i = 0; $total = 0; - print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table + print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table print '
'.$langs->trans('Salary').''.price($objp->sc_amount).''.$salary->getLibStatut(4, $objp->amount).''.price($objp->amount).'
'; print ''; print ''; @@ -481,7 +481,7 @@ print ''; if (getDolGlobalString('STRIPE_SEPA_DIRECT_DEBIT_SHOW_OLD_BUTTON')) { // This is hidden, prefer to use mode enabled with STRIPE_SEPA_DIRECT_DEBIT - // TODO Replace this with a checkbox for each payment mode: "Send request to XXX immediatly..." + // TODO Replace this with a checkbox for each payment mode: "Send request to XXX immediately..." print "
"; //add stripe sepa button $buttonlabel = $langs->trans("MakeWithdrawRequestStripe"); diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index 3095e18f2b162..66f7c413f1957 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -223,7 +223,7 @@ } } -//Activate Set adress in list +//Activate Set address in list if ($action == "setaddadressinlist") { $val = GETPOST('value', 'int'); $res = dolibarr_set_const($db, "COMPANY_SHOW_ADDRESS_SELECTLIST", $val, 'yesno', 0, '', $conf->entity); diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index ac7d894b36b4b..1a405cf7799b5 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -19,11 +19,11 @@ /** * \file htdocs/societe/canvas/actions_card_common.class.php * \ingroup thirdparty - * \brief Fichier de la classe Thirdparty card controller (common) + * \brief File for the abstract class to manage third parties */ /** - * Classe permettant la gestion des tiers par defaut + * Abstract class to manage third parties */ abstract class ActionsCardCommon { @@ -253,13 +253,13 @@ public function assign_values(&$action, $id = 0, $ref = '') } // VAT - $this->tpl['yn_assujtva'] = $form->selectyesno('assujtva_value', $this->tpl['tva_assuj'], 1); // Assujeti par defaut en creation + $this->tpl['yn_assujtva'] = $form->selectyesno('assujtva_value', $this->tpl['tva_assuj'], 1); // Assujeti par default en creation // Select users $this->tpl['select_users'] = $form->select_dolusers($this->object->commercial_id, 'commercial_id', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); // Local Tax - // TODO mettre dans une classe propre au pays + // TODO Implement country specific action in country specific class if ($mysoc->country_code == 'ES') { $this->tpl['localtax'] = ''; @@ -357,7 +357,7 @@ public function assign_values(&$action, $id = 0, $ref = '') } // Local Tax - // TODO mettre dans une classe propre au pays + // TODO Implement country specific action in country specific class if ($mysoc->country_code == 'ES') { $this->tpl['localtax'] = ''; @@ -396,7 +396,7 @@ private function assign_post($action) $this->object->code_client = GETPOST("code_client"); $this->object->fournisseur = GETPOST("fournisseur"); $this->object->code_fournisseur = GETPOST("code_fournisseur"); - $this->object->address = GETPOST("adresse"); + $this->object->address = GETPOST("address"); $this->object->zip = GETPOST("zipcode"); $this->object->town = GETPOST("town"); $this->object->country_id = GETPOST("country_id") ? GETPOST("country_id") : $mysoc->country_id; diff --git a/htdocs/societe/canvas/company/actions_card_company.class.php b/htdocs/societe/canvas/company/actions_card_company.class.php index cd95285d75b36..f5d533ceeab03 100644 --- a/htdocs/societe/canvas/company/actions_card_company.class.php +++ b/htdocs/societe/canvas/company/actions_card_company.class.php @@ -34,7 +34,7 @@ class ActionsCardCompany extends ActionsCardCommon /** * Constructor * - * @param DoliDB $db Handler acces base de donnees + * @param DoliDB $db Handler access base de donnees * @param string $dirmodule Name of directory of module * @param string $targetmodule Name of directory of module where canvas is stored * @param string $canvas Name of canvas diff --git a/htdocs/societe/canvas/company/tpl/card_create.tpl.php b/htdocs/societe/canvas/company/tpl/card_create.tpl.php index 97a2e490ac4b7..b18f0b31ec29e 100644 --- a/htdocs/societe/canvas/company/tpl/card_create.tpl.php +++ b/htdocs/societe/canvas/company/tpl/card_create.tpl.php @@ -114,7 +114,7 @@ - + diff --git a/htdocs/societe/canvas/company/tpl/card_edit.tpl.php b/htdocs/societe/canvas/company/tpl/card_edit.tpl.php index c928d1e251423..651a9cc180def 100644 --- a/htdocs/societe/canvas/company/tpl/card_edit.tpl.php +++ b/htdocs/societe/canvas/company/tpl/card_edit.tpl.php @@ -129,7 +129,7 @@ - + diff --git a/htdocs/societe/canvas/individual/actions_card_individual.class.php b/htdocs/societe/canvas/individual/actions_card_individual.class.php index 376dbefa1bf9f..4778cf7f4f0d2 100644 --- a/htdocs/societe/canvas/individual/actions_card_individual.class.php +++ b/htdocs/societe/canvas/individual/actions_card_individual.class.php @@ -18,7 +18,7 @@ /** * \file htdocs/societe/canvas/individual/actions_card_individual.class.php * \ingroup thirdparty - * \brief Fichier de la classe Thirdparty card controller (individual canvas) + * \brief File for class for Thirdparty card controller with individual canvas */ include_once DOL_DOCUMENT_ROOT.'/societe/canvas/actions_card_common.class.php'; @@ -33,7 +33,7 @@ class ActionsCardIndividual extends ActionsCardCommon /** * Constructor * - * @param DoliDB $db Handler acces base de donnees + * @param DoliDB $db Handler access base de donnees * @param string $dirmodule Name of directory of module * @param string $targetmodule Name of directory of module where canvas is stored * @param string $canvas Name of canvas diff --git a/htdocs/societe/canvas/individual/tpl/card_create.tpl.php b/htdocs/societe/canvas/individual/tpl/card_create.tpl.php index 8ed547f7ecd69..e46721b167c2d 100644 --- a/htdocs/societe/canvas/individual/tpl/card_create.tpl.php +++ b/htdocs/societe/canvas/individual/tpl/card_create.tpl.php @@ -122,7 +122,7 @@ - + diff --git a/htdocs/societe/canvas/individual/tpl/card_edit.tpl.php b/htdocs/societe/canvas/individual/tpl/card_edit.tpl.php index e86d23768968e..9c53ad5b3d879 100644 --- a/htdocs/societe/canvas/individual/tpl/card_edit.tpl.php +++ b/htdocs/societe/canvas/individual/tpl/card_edit.tpl.php @@ -126,7 +126,7 @@ - + diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index b2e1d90266d19..ad81a592328a1 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1106,7 +1106,7 @@ $("#typent_id").change(); $("#effectif_id").val(id_ef15); $("#effectif_id").change(); - /* Force to recompute the width of a select2 field when it was hidden and then shown programatically */ + /* Force to recompute the width of a select2 field when it was hidden and then shown programmatically */ if ($("#civility_id").data("select2")) { $("#civility_id").select2({width: "resolve"}); } @@ -1557,7 +1557,7 @@ function formatCustomerSelection (selection) { // Vat is used print ''; print ''; if ($conf->browser->layout == 'phone') { print ''; diff --git a/htdocs/societe/checkvat/checkVatPopup.php b/htdocs/societe/checkvat/checkVatPopup.php index dd38649b5454b..ba9d77715eb6e 100644 --- a/htdocs/societe/checkvat/checkVatPopup.php +++ b/htdocs/societe/checkvat/checkVatPopup.php @@ -112,7 +112,7 @@ $messagetoshow = $result['faultstring']; } elseif (preg_match('/INVALID_INPUT/i', $result['faultstring']) || ($result['requestDate'] && !$result['valid'])) { - // Syntaxe ko + // Syntax ko if ($result['requestDate']) { print $langs->trans("Date").': '.$result['requestDate'].'
'; } @@ -120,7 +120,7 @@ print $langs->trans("ValueIsValid").': '.$langs->trans("No").' (Might be a non europeen VAT)
'; //$messagetoshow=$soapclient->response; } else { - // Syntaxe ok + // Syntax ok if ($result['requestDate']) { print $langs->trans("Date").': '.$result['requestDate'].'
'; } diff --git a/htdocs/societe/class/api_contacts.class.php b/htdocs/societe/class/api_contacts.class.php index 3d37b274d9929..a501ccb8c62be 100644 --- a/htdocs/societe/class/api_contacts.class.php +++ b/htdocs/societe/class/api_contacts.class.php @@ -60,7 +60,7 @@ public function __construct() /** * Get properties of a contact object * - * Return an array with contact informations + * Return an array with contact information * * @param int $id ID of contact * @param int $includecount Count and return also number of elements the contact is used as a link for @@ -166,7 +166,7 @@ public function getByEmail($email, $includecount = 0, $includeroles = 0) * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" * @param int $includecount Count and return also number of elements the contact is used as a link for * @param int $includeroles Includes roles of the contact - * @param string $properties Restrict the data returned to theses properties. Ignored if empty. Comma separated list of properties names + * @param string $properties Restrict the data returned to these properties. Ignored if empty. Comma separated list of properties names * @return array Array of contact objects * * @throws RestException @@ -284,7 +284,7 @@ public function post($request_data = null) foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->contact->context['caller'] = $request_data['caller']; continue; } @@ -333,7 +333,7 @@ public function put($id, $request_data = null) continue; } if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->contact->context['caller'] = $request_data['caller']; continue; } diff --git a/htdocs/societe/class/api_thirdparties.class.php b/htdocs/societe/class/api_thirdparties.class.php index 9604137ed10a7..c9adc61efb5ee 100644 --- a/htdocs/societe/class/api_thirdparties.class.php +++ b/htdocs/societe/class/api_thirdparties.class.php @@ -66,7 +66,7 @@ public function __construct() /** * Get properties of a thirdparty object * - * Return an array with thirdparty informations + * Return an array with thirdparty information * * @param int $id Id of third party to load * @return Object Object with cleaned properties @@ -81,7 +81,7 @@ public function get($id) /** * Get properties of a thirdparty object by email. * - * Return an array with thirdparty informations + * Return an array with thirdparty information * * @param string $email Email of third party to load * @return array|mixed Cleaned Societe object @@ -98,7 +98,7 @@ public function getByEmail($email) /** * Get properties of a thirdparty object by barcode. * - * Return an array with thirdparty informations + * Return an array with thirdparty information * * @param string $barcode Barcode of third party to load * @return array|mixed Cleaned Societe object @@ -127,7 +127,7 @@ public function getByBarcode($barcode) * Set to 4 to show only suppliers * @param int $category Use this param to filter list by category * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "((t.nom:like:'TheCompany%') or (t.name_alias:like:'TheCompany%')) and (t.datec:<:'20160101')" - * @param string $properties Restrict the data returned to theses properties. Ignored if empty. Comma separated list of properties names + * @param string $properties Restrict the data returned to these properties. Ignored if empty. Comma separated list of properties names * @return array Array of thirdparty objects */ public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $mode = 0, $category = 0, $sqlfilters = '', $properties = '') @@ -252,7 +252,7 @@ public function post($request_data = null) foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->company->context['caller'] = $request_data['caller']; continue; } @@ -297,7 +297,7 @@ public function put($id, $request_data = null) continue; } if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->company->context['caller'] = $request_data['caller']; continue; } @@ -967,7 +967,7 @@ public function getInvoicesQualifiedForReplacement($id) /** * Return list of invoices qualified to be corrected by a credit note. * Invoices matching the following rules are returned - * (validated + payment on process) or classified (paid completely or paid partialy) + not already replaced + not already a credit note + * (validated + payment on process) or classified (paid completely or paid partially) + not already replaced + not already a credit note * * @param int $id Id of thirdparty * @@ -1105,7 +1105,7 @@ public function createCompanyBankAccount($id, $request_data = null) foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $this->company->context['caller'] = $request_data['caller']; continue; } @@ -1161,7 +1161,7 @@ public function updateCompanyBankAccount($id, $bankaccount_id, $request_data = n foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $account->context['caller'] = $request_data['caller']; continue; } @@ -1411,7 +1411,7 @@ public function createSocieteAccount($id, $request_data = null) foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $account->context['caller'] = $request_data['caller']; continue; } @@ -1474,7 +1474,7 @@ public function putSocieteAccount($id, $site, $request_data = null) foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $account->context['caller'] = $request_data['caller']; continue; } @@ -1513,7 +1513,7 @@ public function putSocieteAccount($id, $site, $request_data = null) foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $account->context['caller'] = $request_data['caller']; continue; } @@ -1575,7 +1575,7 @@ public function patchSocieteAccount($id, $site, $request_data = null) foreach ($request_data as $field => $value) { if ($field === 'caller') { - // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller + // Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again with the caller $account->context['caller'] = $request_data['caller']; continue; } @@ -1738,9 +1738,9 @@ private function _validate($data) /** * Fetch properties of a thirdparty object. * - * Return an array with thirdparty informations + * Return an array with thirdparty information * - * @param int $rowid Id of third party to load (Use 0 to get a specimen record, use null to use other search criterias) + * @param int $rowid Id of third party to load (Use 0 to get a specimen record, use null to use other search criteria) * @param string $ref Reference of third party, name (Warning, this can return several records) * @param string $ref_ext External reference of third party (Warning, this information is a free field not provided by Dolibarr) * @param string $barcode Barcode of third party to load @@ -1781,8 +1781,8 @@ private function _fetch($rowid, $ref = '', $ref_ext = '', $barcode = '', $idprof } if (getDolGlobalString('FACTURE_DEPOSITS_ARE_JUST_PAYMENTS')) { - $filterabsolutediscount = "fk_facture_source IS NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice - $filtercreditnote = "fk_facture_source IS NOT NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice + $filterabsolutediscount = "fk_facture_source IS NULL"; // If we want deposit to be subtracted to payments only and not to total of final invoice + $filtercreditnote = "fk_facture_source IS NOT NULL"; // If we want deposit to be subtracted to payments only and not to total of final invoice } else { $filterabsolutediscount = "fk_facture_source IS NULL OR (description LIKE '(DEPOSIT)%' AND description NOT LIKE '(EXCESS RECEIVED)%')"; $filtercreditnote = "fk_facture_source IS NOT NULL AND (description NOT LIKE '(DEPOSIT)%' OR description LIKE '(EXCESS RECEIVED)%')"; diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php index 37e63bba1d6c7..5619d263aa181 100644 --- a/htdocs/societe/class/companybankaccount.class.php +++ b/htdocs/societe/class/companybankaccount.class.php @@ -66,7 +66,7 @@ class CompanyBankAccount extends Account * 'alwayseditable' says if field can be modified also when status is not draft ('1' or '0') * 'default' is a default value for creation (can still be overwrote by the Setup of Default Values if field is editable in creation form). Note: If default is set to '(PROV)' and field is 'ref', the default value will be set to '(PROVid)' where id is rowid when a new record is created. * 'index' if we want an index in database. - * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...). + * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommended to name the field fk_...). * 'searchall' is 1 if we want to search in this field when making a search from the quick search button. * 'isameasure' must be set to 1 or 2 if field can be used for measure. Field type must be summable like integer or double(24,8). Use 1 in most cases, or 2 if you don't want to see the column total into list (for example for percentage) * 'css' and 'cssview' and 'csslist' is the CSS style to use on field. 'css' is used in creation and update. 'cssview' is used in view mode. 'csslist' is used for columns in lists. For example: 'css'=>'minwidth300 maxwidth500 widthcentpercentminusx', 'cssview'=>'wordbreak', 'csslist'=>'tdoverflowmax200' @@ -262,7 +262,7 @@ public function create(User $user = null, $notrigger = 0) $error = 0; - // Check paramaters + // Check parameters if (empty($this->socid)) { $this->error = 'BadValueForParameter'; $this->errors[] = $this->error; diff --git a/htdocs/societe/class/companypaymentmode.class.php b/htdocs/societe/class/companypaymentmode.class.php index c8e4d1b95d68d..415cd0db2da7e 100644 --- a/htdocs/societe/class/companypaymentmode.class.php +++ b/htdocs/societe/class/companypaymentmode.class.php @@ -70,7 +70,7 @@ class CompanyPaymentMode extends CommonObject * 'visible' says if field is visible in list (Examples: 0=Not visible, 1=Visible on list and create/update/view forms, 2=Visible on list only. Using a negative value means field is not shown by default on list but can be selected for viewing) * 'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0). * 'index' if we want an index in database. - * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...). + * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommended to name the field fk_...). * 'position' is the sort order of field. * 'searchall' is 1 if we want to search in this field when making a search from the quick search button. * 'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8). @@ -359,7 +359,7 @@ public function delete(User $user, $notrigger = false) } /** - * Return a link to the object card (with optionaly the picto) + * Return a link to the object card (with optionally the picto) * * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) * @param string $option On what the link point to ('nolink', ...) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index f4309ce0e3144..23ffffb7e956e 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -171,7 +171,7 @@ class Societe extends CommonObject * 'noteditable' says if field is not editable (1 or 0) * 'default' is a default value for creation (can still be overwrote by the Setup of Default Values if field is editable in creation form). Note: If default is set to '(PROV)' and field is 'ref', the default value will be set to '(PROVid)' where id is rowid when a new record is created. * 'index' if we want an index in database. - * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...). + * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommended to name the field fk_...). * 'searchall' is 1 if we want to search in this field when making a search from the quick search button. * 'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8). * 'css' and 'cssview' and 'csslist' is the CSS style to use on field. 'css' is used in creation and update. 'cssview' is used in view mode. 'csslist' is used for columns in lists. For example: 'maxwidth200', 'wordbreak', 'tdoverflowmax200' @@ -880,7 +880,7 @@ public function __construct($db) /** * Create third party in database. - * $this->code_client = -1 and $this->code_fournisseur = -1 means automatic assignement. + * $this->code_client = -1 and $this->code_fournisseur = -1 means automatic assignment. * * @param User $user Object of user that ask creation * @param int $notrigger 1=Does not execute triggers, 0= execute triggers @@ -1070,7 +1070,7 @@ public function create(User $user, $notrigger = 0) * Create a contact/address from thirdparty * * @param User $user Object user - * @param int $no_email 1=Do not send mailing, 0=Ok to recieve mailling + * @param int $no_email 1=Do not send mailing, 0=Ok to receive mailing * @param array $tags Array of tag to affect to contact * @param int $notrigger 1=Does not execute triggers, 0= execute triggers * @return int Return integer <0 if KO, >0 if OK @@ -2208,7 +2208,7 @@ public function delete($id, User $fuser = null, $call_trigger = 1) return -1; } } else { - dol_syslog("Can't remove thirdparty with id ".$id.". There is ".$objectisused." childs", LOG_WARNING); + dol_syslog("Can't remove thirdparty with id ".$id.". There are ".$objectisused." children", LOG_WARNING); } return 0; } @@ -2386,7 +2386,7 @@ public function set_remise_supplier($remise, $note, User $user) * @param float $remise Amount of discount * @param User $user User adding discount * @param string $desc Reason of discount - * @param string $vatrate VAT rate (may contain the vat code too). Exemple: '1.23', '1.23 (ABC)', ... + * @param string $vatrate VAT rate (may contain the vat code too). Example: '1.23', '1.23 (ABC)', ... * @param int $discount_type 0 => customer discount, 1 => supplier discount * @param string $price_base_type Price base type 'HT' or 'TTC' * @return int Return integer <0 if KO, id of discount record if OK @@ -3090,7 +3090,7 @@ public function thirdparty_and_contact_phone_array() $contact_phone = $this->contact_property_array('mobile'); - if (!empty($this->phone)) { // If a phone of thirdparty is defined, we add it ot mobile of contacts + if (!empty($this->phone)) { // If a phone of thirdparty is defined, we add it to mobile of contacts if (empty($this->name)) { $this->name = $this->nom; } @@ -3726,7 +3726,7 @@ public function getParentsForCompany($company_id, $parents = array()) // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** - * Returns if a profid sould be verified to be unique + * Returns if a profid should be verified to be unique * * @param int $idprof 1,2,3,4,5,6 (Example: 1=siren, 2=siret, 3=naf, 4=rcs/rm, 5=eori, 6=idprof6) * @return boolean true if the ID must be unique @@ -3827,8 +3827,8 @@ public function id_prof_exists($idprof, $value, $socid = 0) /** * Check the validity of a professional identifier according to the country of the company (siren, siret, ...) * - * @param int $idprof 1,2,3,4 (Exemple: 1=siren,2=siret,3=naf,4=rcs/rm) - * @param Societe $soc Objet societe + * @param int $idprof 1,2,3,4 (Example: 1=siren,2=siret,3=naf,4=rcs/rm) + * @param Societe $soc Object societe * @return int Return integer <=0 if KO, >0 if OK * TODO better to have this in a lib than into a business class */ @@ -3889,7 +3889,7 @@ public function id_prof_check($idprof, $soc) } $n = 10 - substr($sum, strlen($sum) - 1, 1); - //Chek special NIF + //Check special NIF if (preg_match('/^[KLM]{1}/', $string)) { if ($num[8] == chr(64 + $n) || $num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr($string, 1, 8) % 23, 1)) { return 1; @@ -4201,7 +4201,7 @@ public function getNbOfEMailings() /** * Set "blacklist" mailing status * - * @param int $no_email 1=Do not send mailing, 0=Ok to recieve mailling + * @param int $no_email 1=Do not send mailing, 0=Ok to receive mailing * @return int Return integer <0 if KO, >0 if OK */ public function setNoEmail($no_email) @@ -4257,7 +4257,7 @@ public function setNoEmail($no_email) /** * get "blacklist" mailing status - * set no_email attribut to 1 or 0 + * set no_email attribute to 1 or 0 * * @return int Return integer <0 if KO, >0 if OK */ @@ -4316,7 +4316,7 @@ public function create_from_member(Adherent $member, $socname = '', $socalias = $name = $socname; $alias = $socalias ? $socalias : ''; - // Positionne parametres + // Positionne parameters $this->nom = $name; // TODO deprecated $this->name = $name; $this->name_alias = $alias; @@ -4490,7 +4490,7 @@ public function setMysoc(Conf $conf) $this->idprof4 = getDolGlobalString('MAIN_INFO_RCS'); $this->idprof5 = getDolGlobalString('MAIN_INFO_PROFID5'); $this->idprof6 = getDolGlobalString('MAIN_INFO_PROFID6'); - $this->tva_intra = getDolGlobalString('MAIN_INFO_TVAINTRA'); // VAT number, not necessarly INTRA. + $this->tva_intra = getDolGlobalString('MAIN_INFO_TVAINTRA'); // VAT number, not necessarily INTRA. $this->managers = getDolGlobalString('MAIN_INFO_SOCIETE_MANAGERS'); $this->capital = getDolGlobalString('MAIN_INFO_CAPITAL'); $this->forme_juridique_code = getDolGlobalString('MAIN_INFO_SOCIETE_FORME_JURIDIQUE'); @@ -4667,7 +4667,7 @@ public function LibProspLevel($fk_prospectlevel) global $langs; $lib = $langs->trans("ProspectLevel".$fk_prospectlevel); - // If lib not found in language file, we get label from cache/databse + // If lib not found in language file, we get label from cache/database if ($lib == $langs->trans("ProspectLevel".$fk_prospectlevel)) { $lib = $langs->getLabelFromKey($this->db, $fk_prospectlevel, 'c_prospectlevel', 'code', 'label'); } @@ -4758,7 +4758,7 @@ public function LibProspCommStatut($status, $mode = 0, $label = '', $picto = '') * Return amount of proposal not yet paid and total an dlist of all proposals * * @param string $mode 'customer' or 'supplier' - * @return array array('opened'=>Amount including tax that remains to pay, 'total_ht'=>Total amount without tax of all objects paid or not, 'total_ttc'=>Total amunt including tax of all object paid or not) + * @return array array('opened'=>Amount including tax that remains to pay, 'total_ht'=>Total amount without tax of all objects paid or not, 'total_ttc'=>Total amount including tax of all object paid or not) */ public function getOutstandingProposals($mode = 'customer') { @@ -4802,7 +4802,7 @@ public function getOutstandingProposals($mode = 'customer') * Return amount of order not yet paid and total and list of all orders * * @param string $mode 'customer' or 'supplier' - * @return array array('opened'=>Amount including tax that remains to pay, 'total_ht'=>Total amount without tax of all objects paid or not, 'total_ttc'=>Total amunt including tax of all object paid or not) + * @return array array('opened'=>Amount including tax that remains to pay, 'total_ht'=>Total amount without tax of all objects paid or not, 'total_ttc'=>Total amount including tax of all object paid or not) */ public function getOutstandingOrders($mode = 'customer') { @@ -4846,7 +4846,7 @@ public function getOutstandingOrders($mode = 'customer') * * @param string $mode 'customer' or 'supplier' * @param int $late 0 => all invoice, 1=> only late - * @return array array('opened'=>Amount including tax that remains to pay, 'total_ht'=>Total amount without tax of all objects paid or not, 'total_ttc'=>Total amunt including tax of all object paid or not) + * @return array array('opened'=>Amount including tax that remains to pay, 'total_ht'=>Total amount without tax of all objects paid or not, 'total_ttc'=>Total amount including tax of all object paid or not) */ public function getOutstandingBills($mode = 'customer', $late = 0) { @@ -4903,9 +4903,9 @@ public function getOutstandingBills($mode = 'customer', $late = 0) if ($obj->paye == 0 && $obj->status != $tmpobject::STATUS_DRAFT // Not a draft - && $obj->status != $tmpobject::STATUS_ABANDONED // Not abandonned + && $obj->status != $tmpobject::STATUS_ABANDONED // Not abandoned && $obj->status != $tmpobject::STATUS_CLOSED) { // Not classified as paid - //$sql .= " AND (status <> 3 OR close_code <> 'abandon')"; // Not abandonned for undefined reason + //$sql .= " AND (status <> 3 OR close_code <> 'abandon')"; // Not abandoned for undefined reason $paiement = $tmpobject->getSommePaiement(); $creditnotes = $tmpobject->getSumCreditNotesUsed(); $deposits = $tmpobject->getSumDepositsUsed(); @@ -4975,7 +4975,7 @@ public function LibCustProspStatut($status) * Create a document onto disk according to template module. * * @param string $modele Generator to use. Caller must set it to obj->model_pdf or GETPOST('model','alpha') for example. - * @param Translate $outputlangs objet lang a utiliser pour traduction + * @param Translate $outputlangs object lang a utiliser pour traduction * @param int $hidedetails Hide details of lines * @param int $hidedesc Hide description * @param int $hideref Hide ref diff --git a/htdocs/societe/class/societeaccount.class.php b/htdocs/societe/class/societeaccount.class.php index c4efe6be30623..f7fcb979edeb4 100644 --- a/htdocs/societe/class/societeaccount.class.php +++ b/htdocs/societe/class/societeaccount.class.php @@ -62,7 +62,7 @@ class SocieteAccount extends CommonObject * 'visible' says if field is visible in list (Examples: 0=Not visible, 1=Visible on list and create/update/view forms, 2=Visible on list only. Using a negative value means field is not shown by default on list but can be selected for viewing) * 'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0). * 'index' if we want an index in database. - * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...). + * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommended to name the field fk_...). * 'position' is the sort order of field. * 'searchall' is 1 if we want to search in this field when making a search from the quick search button. * 'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8). @@ -310,7 +310,7 @@ public function getCustomerAccount($id, $site, $status = 0, $site_account = '') $sql .= " AND (sa.site_account = '' OR sa.site_account IS NULL OR sa.site_account = '".$this->db->escape($site_account)."')"; $sql .= " ORDER BY sa.site_account DESC"; // To get the entry with a site_account defined in priority - dol_syslog(get_class($this)."::getCustomerAccount Try to find the first system customer id for ".$site." of thirdparty id=".$id." (exemple: cus_.... for stripe)", LOG_DEBUG); + dol_syslog(get_class($this)."::getCustomerAccount Try to find the first system customer id for ".$site." of thirdparty id=".$id." (example: cus_.... for stripe)", LOG_DEBUG); $result = $this->db->query($sql); if ($result) { if ($this->db->num_rows($result)) { @@ -404,7 +404,7 @@ public function getTooltipContentArray($params) } /** - * Return a link to the object card (with optionaly the picto) + * Return a link to the object card (with optionally the picto) * * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) * @param string $option On what the link point to ('nolink', ...) @@ -531,7 +531,7 @@ public function LibStatut($status, $mode = 0) } /** - * Charge les informations d'ordre info dans l'objet commande + * Charge les information d'ordre info dans l'objet commande * * @param int $id Id of order * @return void diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 0de0a878ab06a..71da286c48afc 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -223,7 +223,7 @@ if (isModEnabled('barcode')) { $fieldstosearchall['s.barcode'] = 'Gencod'; } -// Personalized search criterias. Example: $conf->global->THIRDPARTY_QUICKSEARCH_ON_FIELDS = 's.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode' +// Personalized search criteria. Example: $conf->global->THIRDPARTY_QUICKSEARCH_ON_FIELDS = 's.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode' if (getDolGlobalString('THIRDPARTY_QUICKSEARCH_ON_FIELDS')) { $fieldstosearchall = dolExplodeIntoArray($conf->global->THIRDPARTY_QUICKSEARCH_ON_FIELDS); } @@ -487,7 +487,7 @@ $help_url = 'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; -// Select every potentiels, and note each potentiels which fit in search parameters +// Select every potentials, and note each potentials which fit in search parameters $tab_level = array(); $sql = "SELECT code, label, sortorder"; $sql .= " FROM ".MAIN_DB_PREFIX."c_prospectlevel"; @@ -1197,7 +1197,7 @@ //$selectedfields = ($mode != 'kanban' ? $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')) : ''); // This also change content of $arrayfields $selectedfields .= ((count($arrayofmassactions) && $contextpage != 'poslist') ? $form->showCheckAddButtons('checkforselect', 1) : ''); -print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table +print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table print '
'.$langs->trans("RefPayment").'
trans('Address'); ?>
trans('Address'); ?>
trans('Address'); ?>
trans('Address'); ?>
'.$form->editfieldkey('VATIsUsed', 'assujtva_value', '', $object, 0).''; - print ''; // Assujeti par defaut en creation + print ''; // Assujeti par default en creation print '
'."\n"; // Fields title search diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php index 52e339bb5887f..fa1495ab87c03 100644 --- a/htdocs/societe/paymentmodes.php +++ b/htdocs/societe/paymentmodes.php @@ -1176,7 +1176,7 @@ //($stripeacc ? ' (Stripe connection with StripeConnect account '.$stripeacc.')' : ' (Stripe connection with keys from Stripe module setup)') print ''."\n"; - print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table + print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table print '
'."\n"; print ''; print ''; diff --git a/htdocs/societe/societecontact.php b/htdocs/societe/societecontact.php index 677fce1b7ca0a..7d109cfc3f4db 100644 --- a/htdocs/societe/societecontact.php +++ b/htdocs/societe/societecontact.php @@ -204,7 +204,7 @@ } } - // additionnal list with adherents of company + // additional list with adherents of company if (isModEnabled('adherent') && $user->hasRight('adherent', 'lire')) { require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php'; diff --git a/htdocs/societe/website.php b/htdocs/societe/website.php index 67192c08357f2..9b1bb4c14c283 100644 --- a/htdocs/societe/website.php +++ b/htdocs/societe/website.php @@ -86,7 +86,7 @@ unset($objectwebsiteaccount->fields['fk_soc']); // Remove this field, we are already on the thirdparty -// Initialize array of search criterias +// Initialize array of search criteria $search_all = GETPOST("search_all", 'alpha'); $search = array(); foreach ($objectwebsiteaccount->fields as $key => $val) { @@ -422,7 +422,7 @@ $selectedfields = ($mode != 'kanban' ? $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')) : ''); // This also change content of $arrayfields $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); -print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table +print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table print '
'.$langs->trans('Label').'
'."\n"; diff --git a/htdocs/stripe/class/actions_stripe.class.php b/htdocs/stripe/class/actions_stripe.class.php index fa4b87d88df42..55b62f7fd096e 100644 --- a/htdocs/stripe/class/actions_stripe.class.php +++ b/htdocs/stripe/class/actions_stripe.class.php @@ -165,7 +165,7 @@ public function addMoreActionsButtons($parameters, &$object, &$action) global $conf, $langs; if (is_object($object) && $object->element == 'facture') { - // On verifie si la facture a des paiements + // Verify if the invoice has payments $sql = 'SELECT pf.amount'; $sql .= ' FROM '.MAIN_DB_PREFIX.'paiement_facture as pf'; $sql .= ' WHERE pf.fk_facture = '.((int) $object->id); diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php index 7757f24be8b91..c100bdba1ca9d 100644 --- a/htdocs/stripe/class/stripe.class.php +++ b/htdocs/stripe/class/stripe.class.php @@ -198,7 +198,7 @@ public function customerStripe(Societe $object, $key = '', $status = 0, $createi $customer = \Stripe\Customer::retrieve(array('id'=>"$tiers", 'expand[]'=>'sources'), array("stripe_account" => $key)); } } catch (Exception $e) { - // For exemple, we may have error: 'No such customer: cus_XXXXX; a similar object exists in live mode, but a test mode key was used to make this request.' + // For example, we may have error: 'No such customer: cus_XXXXX; a similar object exists in live mode, but a test mode key was used to make this request.' $this->error = $e->getMessage(); } } elseif ($createifnotlinkedtostripe) { @@ -340,7 +340,7 @@ public function getSelectedReader($reader, $key = '', $status = 0) * @param int $status Status (0=test, 1=live) * @param int $usethirdpartyemailforreceiptemail 1=use thirdparty email for receipt * @param int $mode automatic=automatic confirmation/payment when conditions are ok, manual=need to call confirm() on intent - * @param boolean $confirmnow false=default, true=try to confirm immediatly after create (if conditions are ok) + * @param boolean $confirmnow false=default, true=try to confirm immediately after create (if conditions are ok) * @param string $payment_method 'pm_....' (if known) * @param string $off_session If we use an already known payment method to pay when customer is not available during the checkout flow. * @param string $noidempotency_key Do not use the idempotency_key when creating the PaymentIntent @@ -468,7 +468,7 @@ public function getPaymentIntent($amount, $currency_code, $tag, $description = ' global $dolibarr_main_url_root; $dataforintent = array( - "confirm" => $confirmnow, // try to confirm immediatly after create (if conditions are ok) + "confirm" => $confirmnow, // try to confirm immediately after create (if conditions are ok) "confirmation_method" => $mode, "amount" => $stripeamount, "currency" => $currency_code, @@ -635,7 +635,7 @@ public function getPaymentIntent($amount, $currency_code, $tag, $description = ' * Get the Stripe payment intent. Create it with confirmnow=false * Warning. If a payment was tried and failed, a payment intent was created. * But if we change something on object to pay (amount or other), reusing same payment intent is not allowed. - * Recommanded solution is to recreate a new payment intent each time we need one (old one will be automatically closed after a delay), + * Recommended solution is to recreate a new payment intent each time we need one (old one will be automatically closed after a delay), * that's why i comment the part of code to retrieve a payment intent with object id (never mind if we cumulate payment intent with old ones that will not be used) * Note: This is used when option STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION is on when making a payment from the public/payment/newpayment.php page * but not when using the STRIPE_USE_NEW_CHECKOUT. @@ -646,7 +646,7 @@ public function getPaymentIntent($amount, $currency_code, $tag, $description = ' * @param string $key ''=Use common API. If not '', it is the Stripe connect account 'acc_....' to use Stripe connect * @param int $status Status (0=test, 1=live) * @param int $usethirdpartyemailforreceiptemail 1=use thirdparty email for receipt - * @param boolean $confirmnow false=default, true=try to confirm immediatly after create (if conditions are ok) + * @param boolean $confirmnow false=default, true=try to confirm immediately after create (if conditions are ok) * @return \Stripe\SetupIntent|null Stripe SetupIntent or null if not found and failed to create */ public function getSetupIntent($description, $object, $customer, $key, $status, $usethirdpartyemailforreceiptemail = 0, $confirmnow = false) @@ -695,7 +695,7 @@ public function getSetupIntent($description, $object, $customer, $key, $status, global $dolibarr_main_url_root; $dataforintent = array( - "confirm" => $confirmnow, // Do not confirm immediatly during creation of intent + "confirm" => $confirmnow, // Do not confirm immediately during creation of intent "payment_method_types" => $paymentmethodtypes, // When payment_method_types is set, return_url is not required but payment mode can't be managed from dashboard /* 'return_url' => $dolibarr_main_url_root.'/public/payment/paymentok.php', @@ -1075,7 +1075,7 @@ public function sepaStripe($cu, CompanyPaymentMode $object, $stripeacc = '', $st $cs = $s->setupIntents->create($dataforintent); //$cs = $s->setupIntents->update($cs->id, ['payment_method' => $sepa->id]); $cs = $s->setupIntents->confirm($cs->id, ['mandate_data' => ['customer_acceptance' => ['type' => 'offline']]]); - // note: $cs->mandate contians ID of mandate on Stripe side + // note: $cs->mandate contains ID of mandate on Stripe side if (!$cs) { $this->error = 'Link SEPA <-> Customer failed'; diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 2a9841bad76fb..12551a2e7a3db 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -277,7 +277,7 @@ if (!$error) { $db->begin(); - // Si on a selectionne une demande a copier, on realise la copie + // When a copy request was made, make the copy if (GETPOST('createmode') == 'copy' && GETPOST('copie_supplier_proposal')) { if ($object->fetch(GETPOST('copie_supplier_proposal')) > 0) { $object->ref = GETPOST('ref'); @@ -702,7 +702,7 @@ $desc = $productsupplier->desc_supplier; } - //If text set in desc is the same as product descpription (as now it's preloaded) whe add it only one time + //If text set in desc is the same as product descpription (as now it's preloaded) we add it only one time if (trim($product_desc) == trim($desc) && getDolGlobalString('PRODUIT_AUTOFILL_DESC')) { $product_desc=''; } @@ -978,7 +978,7 @@ // Add buying price $fournprice = (GETPOST('fournprice') ? GETPOST('fournprice') : ''); - $buyingprice = (GETPOST('buying_price') != '' ? GETPOST('buying_price') : ''); // If buying_price is '0', we muste keep this value + $buyingprice = (GETPOST('buying_price') != '' ? GETPOST('buying_price') : ''); // If buying_price is '0', we must keep this value // Extrafields Lines $extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line); @@ -1276,7 +1276,7 @@ print '
'; $filter = '((s.fournisseur:=:1) AND (s.status:=:1))'; print img_picto('', 'company', 'class="pictofixedwidth"').$form->select_company((empty($socid) ? '' : $socid), 'socid', $filter, 'SelectThirdParty', 1, 0, null, 0, 'minwidth175 maxwidth500 widthcentpercentminusxx'); - // reload page to retrieve customer informations + // reload page to retrieve customer information if (getDolGlobalString('RELOAD_PAGE_ON_SUPPLIER_CHANGE')) { print '