Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into

develop
This commit is contained in:
Laurent Destailleur (aka Eldy) 2025-02-05 10:45:38 +01:00
commit b6ac3ea2e9
11 changed files with 30 additions and 32 deletions

View File

@ -10497,7 +10497,7 @@ abstract class CommonObject
}
// Create lines
if (!empty($this->table_element_line) && !empty($this->fk_element)) {
if (!empty($this->table_element_line) && !empty($this->fk_element) && !empty($this->lines)) {
foreach ($this->lines as $line) {
$keyforparent = $this->fk_element;
$line->$keyforparent = $this->id;

View File

@ -1597,7 +1597,9 @@ function dol_delete_file($file, $disableglob = 0, $nophperrors = 0, $nohook = 0,
}
}
} else {
$ok = false; // to avoid false positive
if (empty($nophperrors)) {
$ok = false; // to avoid false positive
}
dol_syslog("No files to delete found", LOG_DEBUG);
}
} else {

View File

@ -1080,11 +1080,11 @@ function getNbOfImagePublicURLOfObject($object)
* @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 int $cover 1=Add a filter on field "cover", 0=Exclude "cover" images, -1=No filter
* @param int $cover 1=Sort with cover then position, -1=Filter on cover last then position, 0=Exclude cover and filter on position first
* @return string HTML img content or '' if no image found
* @see getNbOfImagePublicURLOfObject(), getPublicFilesOfObject(), getImageFromHtmlContent()
*/
function getImagePublicURLOfObject($object, $no = 1, $extName = '', $cover = -1)
function getImagePublicURLOfObject($object, $no = 1, $extName = '', $cover = 1)
{
global $db;
@ -1099,8 +1099,12 @@ function getImagePublicURLOfObject($object, $no = 1, $extName = '', $cover = -1)
$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 .= ($cover >= 0 ? " AND cover = ".((int) $cover) : "");
$sql .= $db->order("cover,position,rowid", "ASC,ASC,ASC");
$sql .= ($cover ? "" : " AND cover <> 1");
if ($cover == 1) {
$sql .= $db->order("cover,position,rowid", "ASC,ASC,ASC");
} else {
$sql .= $db->order("cover,position,rowid", "DESC,ASC,ASC");
}
$resql = $db->query($sql);
if ($resql) {

View File

@ -604,15 +604,10 @@ class modAgenda extends DolibarrModules
*/
public function init($options = '')
{
global $conf;
// Permissions
$this->remove($options);
$sql = array(
"DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->db->escape($this->const[0][2])."' AND type='action' AND entity = ".((int) $conf->entity),
// "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->db->escape($this->const[0][2])."','action',".((int) $conf->entity).")"
);
$sql = array();
return $this->_init($sql, $options);
}

View File

@ -21,23 +21,20 @@
* or see https://www.gnu.org/
*/
/*
* Code to output content when action is presend
*
* $trackid must be defined
* $modelmail
* $defaulttopic and $defaulttopiclang
* $diroutput
* $arrayoffamiliestoexclude=array('system', 'mycompany', 'object', 'objectamount', 'date', 'user', ...);
* $file
*/
/**
* @var int<0,1> $diroutput
* @var string $trackid
* @var string $modelmail
* @var string $defaulttopic
* @var string $defaulttopiclang
* @var string[] $arrayoffamiliestoexclude
* @var int<0,1> $diroutput
* @var string[] $arrayoffamiliestoexclude Example: array('system', 'mycompany', 'object', 'objectamount', 'date', 'user', ...);
* @var string $file
* @var string $action
* @var CommonObject $object
* @var Conf $conf
* @var DoliDB $db
* @var HookManager $hookmanager
* @var Translate $langs
*/
'
@phan-var-force int<0,1> $diroutput

View File

@ -104,7 +104,7 @@ if (($id > 0) || $ref) {
}
$upload_dir = $conf->holiday->dir_output.'/'.get_exdir(0, 0, 0, 1, $object, '');
$upload_dir = $conf->holiday->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 1, $object, '');
$modulepart = 'holiday';
// Protection if external user
@ -303,7 +303,7 @@ if ($object->id) {
$permissiontoadd = $user->hasRight('holiday', 'write');
$permtoedit = $user->hasRight('holiday', 'write');
$param = '&id='.$object->id;
$relativepathwithnofile = dol_sanitizeFileName($object->ref).'/';
$relativepathwithnofile = get_exdir(0, 0, 0, 1, $object, '').'/';
$savingdocmask = dol_sanitizeFileName($object->ref).'-__file__';
include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php';

View File

@ -247,7 +247,7 @@ INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, acc
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5252,'PCG25-DEV','IMMO', '278',5226,'Mali de fusion sur actifs financiers','1');
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5253,'PCG25-DEV','IMMO', '279',5226,'Versements restant à effectuer sur titres immobilisés non libérés','1');
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5254,'PCG25-DEV','IMMO', '28',5968,'Amortissements des immobilisations','1');
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5255,'PCG25-DEV','IMMO', '280',5254,'Amortissements des immobilisations incorporelles et des frais d''''établissement (même ventilation que celle du compte 20)','1');
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5255,'PCG25-DEV','IMMO', '280',5254,'Amortissements des immobilisations incorporelles et des frais d''établissement (même ventilation que celle du compte 20)','1');
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5256,'PCG25-DEV','IMMO', '2801',5255,'Frais d''établissement (même ventilation que celle du compte 201)','1');
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5257,'PCG25-DEV','IMMO', '2803',5255,'Frais de développement','1');
INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5258,'PCG25-DEV','IMMO', '2805',5255,'Concessions et droits similaires, brevets, licences, solutions informatiques, droits et valeurs similaires','1');

View File

@ -4157,7 +4157,7 @@ function migrate_delete_old_files($db, $langs, $conf)
//print '<b>'DOL_DOCUMENT_ROOT.$filetodelete."</b><br>\n";
if (preg_match('/\*/', $filetodelete) || file_exists(DOL_DOCUMENT_ROOT.$filetodelete)) {
//print "Process file ".$filetodelete."\n";
$result = dol_delete_file(DOL_DOCUMENT_ROOT.$filetodelete, 0, 0, 0, null, true, 0);
$result = dol_delete_file(DOL_DOCUMENT_ROOT.$filetodelete, 0, (preg_match('/\*/', $filetodelete) ? 1 : 0), 0, null, true, 0);
if (!$result) {
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteFile", DOL_DOCUMENT_ROOT.$filetodelete);

View File

@ -463,5 +463,5 @@ IDOfPaymentInAnExternalSystem=Αναγνωριστικό του τρόπου π
AADEWebserviceCredentials=Στοιχεία πρόσβασης υπηρεσιών ΑΑΔΕ
ThirdPartyMustBeACustomerToCreateBANOnStripe=Το τρίτο μέρος πρέπει να είναι πελάτης για να επιτρέπεται η καταχώρηση των τραπεζικών του στοιχείων από το Stripe
NewSocNameForClone=Νέο όνομα εταιρίας
ConfirmCloneThirdparties=Είστε σίγουροι ότι θέλετε να δημιουργήσετε αντίγραφο της εταιρίας <b>%s</b></s ='notranslate'>;
ConfirmCloneThirdparties=Είστε σίγουροι ότι θέλετε να δημιουργήσετε αντίγραφο της εταιρίας <b>%s</b>
SocialNetworksBusiness=Κοινωνικά δίκτυα εταιρίας

View File

@ -44,13 +44,13 @@ YouCanAlsoDeployToAnotherWHP=<u>Exécutez votre site Web dans un fournisseur d'h
CheckVirtualHostPerms=Vérifiez également que l'utilisateur de l'hôte virtuel (par exemple www-data) dispose des autorisations <strong>%s</strong> sur les fichiers dans <br><strong>%s</strong>
TestDeployOnWeb=Tester/déployer sur le Web
PreviewSiteServedByWebServer=<u>Aperçu %s dans un nouvel onglet.</u><br><br>Le %s sera servi par un serveur Web externe (comme Apache, Nginx, IIS). Vous devez installer et configurer ce serveur avant de pointer vers le répertoire :<br><strong>%s</strong><br>URL servie par un serveur externe :<br><strong>%s</strong>
PreviewSiteServedByDolibarr=<u>Aperçu %s dans un nouvel onglet.</u><br><br>Le %s sera servi par le serveur Dolibarr, il n'a donc pas besoin d'installer de serveur Web supplémentaire (comme Apache, Nginx, IIS).<br>L'inconvénient est que les URL des pages ne sont pas conviviales et commencez par le chemin de votre Dolibarr.<br>URL servie par Dolibarr :<br><strong>%s</strong><br><br>Pour déployer ou tester en utilisant votre propre serveur Web externe (comme Apache, Nginx, Lighttp), utilisez le lien "<br> class='notranslate'>%s</span>".
PreviewSiteServedByDolibarr=<u>Aperçu %s dans un nouvel onglet.</u><br><br>Le %s sera servi par le serveur Dolibarr, il n'a donc pas besoin d'installer de serveur Web supplémentaire (comme Apache, Nginx, IIS).<br>L'inconvénient est que les URL des pages ne sont pas conviviales et commencez par le chemin de votre Dolibarr.<br>URL servie par Dolibarr :<br><strong>%s</strong><br><br>Pour déployer ou tester en utilisant votre propre serveur Web externe (comme Apache, Nginx, Lighttp), utilisez le lien "%s".
VirtualHostUrlNotDefined=L'URL de l'hôte virtuel servi par le serveur Web externe n'est pas définie
NoPageYet=Pas encore de pages
YouCanCreatePageOrImportTemplate=Vous pouvez créer une nouvelle page ou importer un modèle de site Web complet
SyntaxHelp=Aide sur des astuces de syntaxe spécifiques
YouCanEditHtmlSourceckeditor=Vous pouvez modifier le code source HTML en utilisant le bouton « Source » dans l'éditeur.
YouCanEditHtmlSource=<br><span class="fa fa-bug paddingright"></span> Vous pouvez inclure du code PHP dans cette source en utilisant les balises <strong>&lt;?php ?&gt;</strong>. Les variables globales suivantes sont disponibles : $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug paddingright"></span> Vous pouvez également inclure le contenu d'une autre page/conteneur avec la syntaxe suivante :<br><strong>&lt;?php includeContainer('alias_du_conteneur_à_inclure'); ?&gt;</strong><br><br><span class="fa fa-bug paddingright"></span> Vous pouvez créer une redirection vers une autre page/conteneur avec la syntaxe suivante (Remarque : n'affichez aucun contenu avant une redirection) :<br><strong>&lt;?php redirectToContainer('alias_du_conteneur_vers_la_rediriger'); ?&gt;</strong><br>Vous pouvez également effectuer une redirection avec des paramètres GET :<br><strong>&lt;?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?&gt;</strong><br><br><span class="fa fa-link paddingright"></span> Pour ajouter un lien vers une autre page, utilisez la syntaxe :<br><strong>&lt;a href="alias_de_la_page_à_lier_à.php"&gt;monlien&lt;a&gt;</strong><br><br><p><span class="fa fa-bug paddingright"></span> Vous pouvez définir dynamiquement le titre de la page et les <strong>balises méta SEO</strong> (titre, mots-clés, description). Définissez simplement les variables suivantes :<br> <code>$__PAGE__TITLE__ = "Valeur du titre …";</code><br> <code>$__PAGE__KEYWORDS__ = "mot-clé1, mot-clé2, mot-clé3 …"; // Séparé par des virgules</code><br> <code>$__PAGE__DESC__ = "Description …";</code></p><br><span class="fa fa-download paddingright"></span> À inclure un <strong>lien pour télécharger</strong> un fichier stocké dans le répertoire <strong>documents</strong>, utilisez le wrapper <strong>document.php</strong> :<br>Exemple, pour un fichier dans documents/ecm (à enregistrer), la syntaxe est :<br> class='notranslate'><br></span><strong>&lt;a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"&gt;</strong><br>Pour un fichier dans documents/medias (répertoire ouvert pour accès public), la syntaxe est :<br><strong>&lt;a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"&gt;</strong><br>Pour un fichier partagé avec un lien de partage (accès ouvert à l'aide de la clé de hachage de partage du fichier), la syntaxe est :<br><strong>&lt;a href="/document.php?hashp=publicsharekeyoffile"&gt;</strong>b0342f ccfda19bz0
YouCanEditHtmlSource=<br><span class="fa fa-bug paddingright"></span> Vous pouvez inclure du code PHP dans cette source en utilisant les balises <strong>&lt;?php ?&gt;</strong>. Les variables globales suivantes sont disponibles : $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug paddingright"></span> Vous pouvez également inclure le contenu d'une autre page/conteneur avec la syntaxe suivante :<br><strong>&lt;?php includeContainer('alias_du_conteneur_à_inclure'); ?&gt;</strong><br><br><span class="fa fa-bug paddingright"></span> Vous pouvez créer une redirection vers une autre page/conteneur avec la syntaxe suivante (Remarque : n'affichez aucun contenu avant une redirection) :<br><strong>&lt;?php redirectToContainer('alias_du_conteneur_vers_la_rediriger'); ?&gt;</strong><br>Vous pouvez également effectuer une redirection avec des paramètres GET :<br><strong>&lt;?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?&gt;</strong><br><br><span class="fa fa-link paddingright"></span> Pour ajouter un lien vers une autre page, utilisez la syntaxe :<br><strong>&lt;a href="alias_de_la_page_à_lier_à.php"&gt;monlien&lt;a&gt;</strong><br><br><p><span class="fa fa-bug paddingright"></span> Vous pouvez définir dynamiquement le titre de la page et les <strong>balises méta SEO</strong> (titre, mots-clés, description). Définissez simplement les variables suivantes :<br> <code>$__PAGE__TITLE__ = "Valeur du titre …";</code><br> <code>$__PAGE__KEYWORDS__ = "mot-clé1, mot-clé2, mot-clé3 …"; // Séparé par des virgules</code><br> <code>$__PAGE__DESC__ = "Description …";</code></p><br><span class="fa fa-download paddingright"></span> À inclure un <strong>lien pour télécharger</strong> un fichier stocké dans le répertoire <strong>documents</strong>, utilisez le wrapper <strong>document.php</strong> :<br>Exemple, pour un fichier dans documents/ecm (à enregistrer), la syntaxe est :<br><strong>&lt;a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"&gt;</strong><br>Pour un fichier dans documents/medias (répertoire ouvert pour accès public), la syntaxe est :<br><strong>&lt;a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"&gt;</strong><br>Pour un fichier partagé avec un lien de partage (accès ouvert à l'aide de la clé de hachage de partage du fichier), la syntaxe est :<br><strong>&lt;a href="/document.php?hashp=publicsharekeyoffile"&gt;</strong>b0342f ccfda19bz0
YouCanEditHtmlSource1=<br><span class="fa fa-image paddingright"></span> Pour inclure une <strong>image</strong> stockée dans le répertoire <strong>medias</strong> (répertoire ouvert au public), utilisez le chemin relatif commençant par <strong>/medias</strong>, exemple :<br><strong>&lt;img src="/medias/image/myimagepath/filename.ext"&gt;</strong><br>
YouCanEditHtmlSource2=Pour une image partagée avec un lien de partage (accès libre à l'aide de la clé de hachage de partage du fichier), utilisez le wrapper :<br><strong>&lt;img src="/viewimage.php?hashp=12345679012..."&gt;</strong><br>
YouCanEditHtmlSource3=Pour obtenir l'URL de l'image d'un objet PHP, utilisez<br><strong>&lt;img src="&lt;?php print getImagePublicURLOfObject($object, 1, "_small") ?&gt;"&gt;</strong><br>

View File

@ -62,7 +62,7 @@ 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=<br><span class="fa fa-bug paddingright"></span> Vous pouvez inclure du code PHP dans cette source en utilisant les tags <strong>&lt;?php ?&gt;</strong>. Les variables globales suivantes sont disponibles : $conf, $db, $mysoc, $utilisateur, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug paddingright"></span> Vous pouvez également inclure du contenu d'une autre page/conteneur avec la syntaxe suivante :<br><strong>&lt;?php includeContainer('alias_of_container_to_include'); ?&gt;</strong><br><br><span class="fa fa-bug paddingright"></span> Vous pouvez effectuer une redirection vers une autre page/conteneur avec la syntaxe suivante (Remarque : ne génère aucun contenu avant une redirection) :<br><strong>&lt;?php redirectToContainer(' alias_of_container_to_redirect_to'); ?&gt;</strong><br>Vous pouvez également effectuer une redirection avec les paramètres GET :<br><strong>&lt;?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?&gt;</strong><br><br><span class="fa fa-link paddingright"></span> Pour ajouter un lien vers une autre page, utilisez la syntaxe :<br><strong>&lt;a href="alias_of_page_to_link_to.php" &gt;monlien&lt;a&gt;</strong> <br><br><span class="fa fa-download paddingright"></span> Pour inclure un<strong> lien pour télécharger</strong> un fichier stocké dans le répertoire <strong>documents</strong>, utilisez l'encapsuleur <strong> document.php</strong> :<br>Exemple, pour un fichier dans documents/ecm (besoin d'être loggué), la syntaxe est :<br><strong>&lt;a href="/document.php?modulepart=ecm&fichier= [relative_dir/]filename.ext"&gt;</strong><br>Pour un fichier dans des documents/médias (répertoire ouvert en accès public), la syntaxe est:<br><strong>&lt;a href="/document.php?modulepart=medias&fichier=[relative_dir/]filename.ext"&gt;</strong><br>Pour un fichier partagé avec un lien de partage (accès ouvert en utilisant la clé de partage de fichier), la syntaxe est:<br><strong>&lt;a href="/document.php?hashp=publicsharekeyoffile"&gt;</strong><br>
YouCanEditHtmlSource=<br><span class="fa fa-bug paddingright"></span> Vous pouvez inclure du code PHP dans cette source en utilisant les tags <strong>&lt;?php ?&gt;</strong>. Les variables globales suivantes sont disponibles : $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug paddingright"></span> Vous pouvez également inclure du contenu d'une autre page/conteneur avec la syntaxe suivante :<br><strong>&lt;?php includeContainer('alias_of_container_to_include'); ?&gt;</strong><br><br><span class="fa fa-bug paddingright"></span> Vous pouvez effectuer une redirection vers une autre page/conteneur avec la syntaxe suivante (Remarque : ne génère aucun contenu avant une redirection) :<br><strong>&lt;?php redirectToContainer(' alias_of_container_to_redirect_to'); ?&gt;</strong><br>Vous pouvez également effectuer une redirection avec les paramètres GET :<br><strong>&lt;?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?&gt;</strong><br><br><span class="fa fa-link paddingright"></span> Pour ajouter un lien vers une autre page, utilisez la syntaxe :<br><strong>&lt;a href="alias_of_page_to_link_to.php" &gt;monlien&lt;a&gt;</strong> <br><br><span class="fa fa-download paddingright"></span> Pour inclure un<strong> lien pour télécharger</strong> un fichier stocké dans le répertoire <strong>documents</strong>, utilisez l'encapsuleur <strong> document.php</strong> :<br>Exemple, pour un fichier dans documents/ecm (besoin d'être loggué), la syntaxe est :<br><strong>&lt;a href="/document.php?modulepart=ecm&fichier= [relative_dir/]filename.ext"&gt;</strong><br>Pour un fichier dans des documents/médias (répertoire ouvert en accès public), la syntaxe est:<br><strong>&lt;a href="/document.php?modulepart=medias&fichier=[relative_dir/]filename.ext"&gt;</strong><br>Pour un fichier partagé avec un lien de partage (accès ouvert en utilisant la clé de partage de fichier), la syntaxe est:<br><strong>&lt;a href="/document.php?hashp=publicsharekeyoffile"&gt;</strong><br>
YouCanEditHtmlSource1=<br><span class="fa fa-image paddingright"></span> Pour inclure une <strong>image</strong> stockée dans le répertoire <strong>medias</strong> (répertoire ouvert au public), utilisez le chemin relatif commençant par <strong>/medias</strong>, exemple:<br><strong>&lt;img src="/medias/image/myimagepath/filename.ext"&gt;</strong><br>
YouCanEditHtmlSource2=Pour une image partagée avec un lien de partage (accès libre à l'aide de la clé de partage de fichier), utilisez l'encapsuleur :<br><strong>&lt;img src="/viewimage.php?hashp=12345679012..."&gt;</strong><br>
YouCanEditHtmlSource3=Pour obtenir l'adresse URL de l'image d'un objet PHP, utilisez<br><strong>&lt;img src="&lt;?php print getImagePublicURLOfObject($object, 1, "_small") ?&gt;"&gt;</strong><br>