From e818bf732d5359ab593323b24d42b824b913146b Mon Sep 17 00:00:00 2001 From: lvessiller-opendsi Date: Mon, 1 Sep 2025 19:55:00 +0200 Subject: [PATCH 01/15] FIX extra field list depend on parent list when editing a card (#35165) --- htdocs/core/class/commonobject.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index b81688307b9..dc5b3f72aad 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -7693,7 +7693,7 @@ abstract class CommonObject $("#"+child_list).hide(); //Show mother lists } else if ($("#"+parent_list).val() != 0){ - $("#"+parent_list).show(); + showOptions'.$type.'(child_list, parent_list, orig_select[child_list]); } //Show the child list if the parent list value is selected $("select[name=\""+parent_list+"\"]").click(function() { From 41e914f9ac7571cbedd5da163aac78c2b6ae94d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sat, 20 Sep 2025 18:37:01 +0200 Subject: [PATCH 02/15] fix CI v19 (#35413) * fix CI v19 * Update ProductCombination.class.php * Update combinations.php * Update combinations.php * Update actions_massactions.inc.php --- htdocs/core/actions_massactions.inc.php | 3 ++- htdocs/variants/class/ProductCombination.class.php | 6 ++++-- htdocs/variants/combinations.php | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 13823992335..e7637b68f75 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -1291,7 +1291,8 @@ if (!$error && ($action == 'updateprice' && $confirm == 'yes') && $permissiontoa setEventMessages($object->error, $object->errors, 'errors'); } } elseif (getDolGlobalString('PRODUIT_MULTIPRICES')) { - for ($level = 1; $level <= getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); $level++) { + $maxlevel = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($level = 1; $level <= $maxlevel; $level++) { if ($object->price_base_type == 'TTC') { $newprice = $object->multiprices_ttc[$level] * (100 + $pricepercentage) / 100; $minprice = $object->multiprices_min_ttc[$level]; diff --git a/htdocs/variants/class/ProductCombination.class.php b/htdocs/variants/class/ProductCombination.class.php index 0fe34d1fec6..3d491325b5f 100644 --- a/htdocs/variants/class/ProductCombination.class.php +++ b/htdocs/variants/class/ProductCombination.class.php @@ -526,7 +526,8 @@ class ProductCombination // MultiPrix if (getDolGlobalString('PRODUIT_MULTIPRICES')) { - for ($i = 1; $i <= getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); $i++) { + $produit_multiprices_limit = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($i = 1; $i <= $produit_multiprices_limit; $i++) { if ($parent->multiprices[$i] != '' || isset($this->combination_price_levels[$i]->variation_price)) { $new_type = empty($parent->multiprices_base_type[$i]) ? 'HT' : $parent->multiprices_base_type[$i]; $new_min_price = $parent->multiprices_min[$i]; @@ -835,7 +836,8 @@ class ProductCombination // Init price level if (getDolGlobalString('PRODUIT_MULTIPRICES')) { - for ($i = 1; $i <= getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); $i++) { + $produit_multiprices_limit = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($i = 1; $i <= $produit_multiprices_limit; $i++) { $productCombinationLevel = new ProductCombinationLevel($this->db); $productCombinationLevel->fk_product_attribute_combination = $newcomb->id; $productCombinationLevel->fk_price_level = $i; diff --git a/htdocs/variants/combinations.php b/htdocs/variants/combinations.php index 663a567c31a..04183e8ef60 100644 --- a/htdocs/variants/combinations.php +++ b/htdocs/variants/combinations.php @@ -295,7 +295,8 @@ if (($action == 'add' || $action == 'create') && empty($massaction) && !GETPOST( if (getDolGlobalString('PRODUIT_MULTIPRICES')) { $prodcomb->combination_price_levels = array(); - for ($i = 1; $i <= getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); $i++) { + $maxi = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($i = 1; $i <= $maxi; $i++) { $productCombinationLevel = new ProductCombinationLevel($db); $productCombinationLevel->fk_product_attribute_combination = $prodcomb->id; $productCombinationLevel->fk_price_level = $i; @@ -725,7 +726,8 @@ if (!empty($id) || !empty($ref)) { } else { $prodcomb->fetchCombinationPriceLevels(); - for ($i = 1; $i <= getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); $i++) { + $maxi = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($i = 1; $i <= $maxi; $i++) { $keyforlabel = 'PRODUIT_MULTIPRICES_LABEL'.$i; $text = $langs->trans('ImpactOnPriceLevel', $i).' - '.getDolGlobalString($keyforlabel); print ''; From 4e7954b85c1d49c1594df5263ef1af51cf443bd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 21 Sep 2025 12:10:43 +0200 Subject: [PATCH 03/15] fix CI v19 (#35414) --- htdocs/product/class/product.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index fb24f95a81b..1fa3bef4db6 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -2672,7 +2672,8 @@ class Product extends CommonObject // Load multiprices array if (getDolGlobalString('PRODUIT_MULTIPRICES') && empty($ignore_price_load)) { // prices per segment - for ($i = 1; $i <= getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); $i++) { + $produit_multiprices_limit = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($i = 1; $i <= $produit_multiprices_limit; $i++) { $sql = "SELECT price, price_ttc, price_min, price_min_ttc,"; $sql .= " price_base_type, tva_tx, default_vat_code, tosell, price_by_qty, rowid, recuperableonly"; $sql .= " FROM ".$this->db->prefix()."product_price"; @@ -2782,7 +2783,8 @@ class Product extends CommonObject return -1; } } elseif (getDolGlobalString('PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES') && empty($ignore_price_load)) { // prices per customer and quantity - for ($i = 1; $i <= getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); $i++) { + $produit_multiprices_limit = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($i = 1; $i <= $produit_multiprices_limit; $i++) { $sql = "SELECT price, price_ttc, price_min, price_min_ttc,"; $sql .= " price_base_type, tva_tx, default_vat_code, tosell, price_by_qty, rowid, recuperableonly"; $sql .= " FROM ".$this->db->prefix()."product_price"; From 1d56ed09f4a958f9a57b5955f0ea21cd37deb1de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 21 Sep 2025 12:12:37 +0200 Subject: [PATCH 04/15] fix doc (#35416) * fix doc * Update commonobject.class.php * Update mo.class.php --- htdocs/core/class/commonobject.class.php | 2 +- htdocs/mrp/class/mo.class.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 5a276f290e2..0db953ae342 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -792,7 +792,7 @@ abstract class CommonObject public $labelStatusShort = array(); /** - * @var array Array to store lists of tpl + * @var array Array to store lists of tpl */ public $tpl; diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index c9a54f04c89..3e28f60e1dc 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -266,7 +266,7 @@ class Mo extends CommonObject public $fk_parent_line; /** - @ var array{id:int,label:string,qty_bom:int|float,stock:float,seuil_stock_alerte:float,virtual_stock:float,qty:float,fk_unit:int,qty_frozen:float,disable_stock_change:int<0,1>,efficiency:float} tpl + * @var array{}|array{id:int,label:string,qty_bom:int|float,stock:float,seuil_stock_alerte:float,virtual_stock:float,qty:float,fk_unit:int,qty_frozen:float,disable_stock_change:int<0,1>,efficiency:float} tpl */ public $tpl = array(); From 92454d671f2d464b63424c9bf90e95bcb3d20762 Mon Sep 17 00:00:00 2001 From: Dylan Bourdere Date: Mon, 22 Sep 2025 12:11:32 +0200 Subject: [PATCH 05/15] rename tab name in comment of modulebuilder (#35431) --- .../template/core/modules/modMyModule.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php index b5dfb86dba7..258ff995e96 100644 --- a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php +++ b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php @@ -185,13 +185,13 @@ class modMyModule extends DolibarrModules // 'group' to add a tab in group view // 'intervention' to add a tab in intervention view // 'invoice' to add a tab in customer invoice view - // 'invoice_supplier' to add a tab in supplier invoice view + // 'supplier_invoice' to add a tab in supplier invoice view // 'member' to add a tab in fundation member view // 'opensurveypoll' to add a tab in opensurvey poll view // 'order' to add a tab in sale order view - // 'order_supplier' to add a tab in supplier order view + // 'supplier_order' to add a tab in supplier order view // 'payment' to add a tab in payment view - // 'payment_supplier' to add a tab in supplier payment view + // 'supplier_payment' to add a tab in supplier payment view // 'product' to add a tab in product view // 'propal' to add a tab in propal view // 'project' to add a tab in project view From f135c22cd12ae72defa56ec0276db68554d4c7ec Mon Sep 17 00:00:00 2001 From: John BOTELLA <68917336+thersane-john@users.noreply.github.com> Date: Mon, 22 Sep 2025 20:28:04 +0200 Subject: [PATCH 06/15] Fix tootltip (#35441) --- htdocs/core/lib/company.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index f62cd65c1f0..a74a890e013 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -1601,7 +1601,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl // Address - Phone - Email if (!empty($arrayfields['t.address']['checked'])) { $addresstoshow = $contactstatic->getBannerAddress('contact', $object); - print ''; + print ''; print $addresstoshow; print ''; } From 669c939bcd2b70c5cfad83b8a605fff416e713fc Mon Sep 17 00:00:00 2001 From: Dylan Bourdere Date: Mon, 22 Sep 2025 20:30:47 +0200 Subject: [PATCH 07/15] use getDolGlobalString to avoid getting undefined property (#35436) --- htdocs/compta/facture/class/facture.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 3c87c830fd4..81d90568684 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -5836,7 +5836,7 @@ class Facture extends CommonInvoice } // Errors Recipient - $errors_to = $conf->global->MAIN_MAIL_ERRORS_TO; + $errors_to = getDolGlobalString('MAIN_MAIL_ERRORS_TO');; $trackid = 'inv'.$tmpinvoice->id; $sendcontext = 'standard'; From 65a3b0893d4c8aa7bac82c3e2cff0d9d07ccf69f Mon Sep 17 00:00:00 2001 From: Dylan Bourdere Date: Mon, 22 Sep 2025 20:31:50 +0200 Subject: [PATCH 08/15] fix undefined properties (#35435) --- htdocs/core/class/commonobject.class.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index bf543d32c25..9c8602cb382 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -605,6 +605,10 @@ abstract class CommonObject protected $labelStatus; protected $labelStatusShort; + /** + * @var string output + */ + public $output; /** * @var array List of child tables. To test if we can delete object. From cd69b8deb1635594925c2fc47b8c2243bd58974d Mon Sep 17 00:00:00 2001 From: John BOTELLA <68917336+thersane-john@users.noreply.github.com> Date: Wed, 24 Sep 2025 10:37:53 +0200 Subject: [PATCH 09/15] Fix history tooltip display (#35464) --- htdocs/fourn/class/fournisseur.product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 7c5854ecdfb..9046770dce4 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -1346,7 +1346,7 @@ class ProductFournisseur extends Product $label .= '
'.$langs->trans('ProductAccountancyBuyExportCode').': '.length_accountg($this->accountancy_code_buy_export); } - $logPrices = $this->listProductFournisseurPriceLog($this->product_fourn_price_id, 'pfpl.datec', 'DESC'); // set sort order here + $logPrices = $this->listProductFournisseurPriceLog($this->product_fourn_price_id, 'pfpl.datec', 'DESC', getDolGlobalInt('MAIN_TOOLTIP_PRICELOG_HISTORY_LIMIT', 10)); // set sort order here if (is_array($logPrices) && count($logPrices) > 0) { $label .= '

'; $label .= ''.$langs->trans("History").''; From 161d0e4fdf72c666a8a481366d0c05e76a7afca1 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 24 Sep 2025 10:38:16 +0200 Subject: [PATCH 10/15] FIX missing entity filter (#35461) --- htdocs/core/boxes/box_graph_invoices_permonth.php | 2 +- htdocs/core/boxes/box_graph_invoices_peryear.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/boxes/box_graph_invoices_permonth.php b/htdocs/core/boxes/box_graph_invoices_permonth.php index af0dcbac277..9401154cefa 100644 --- a/htdocs/core/boxes/box_graph_invoices_permonth.php +++ b/htdocs/core/boxes/box_graph_invoices_permonth.php @@ -132,7 +132,7 @@ class box_graph_invoices_permonth extends ModeleBoxes $HEIGHT = '192'; $stats = new FactureStats($this->db, $socid, $mode, 0); - $stats->where = "f.fk_statut > 0"; + $stats->where = "f.entity IN (".getEntity('invoice').") AND f.fk_statut > 0"; $px1 = null; $px2 = null; diff --git a/htdocs/core/boxes/box_graph_invoices_peryear.php b/htdocs/core/boxes/box_graph_invoices_peryear.php index fccfa5b7530..b52fb20adfd 100644 --- a/htdocs/core/boxes/box_graph_invoices_peryear.php +++ b/htdocs/core/boxes/box_graph_invoices_peryear.php @@ -126,7 +126,7 @@ class box_graph_invoices_peryear extends ModeleBoxes $HEIGHT = '192'; $stats = new FactureStats($this->db, $socid, $mode, 0); - $stats->where = "f.fk_statut > 0"; + $stats->where = "f.entity IN (".getEntity('invoice').") AND f.fk_statut > 0"; // Build graphic amount of object. $data = array(array('Lib',val1,val2,val3),...) $data2 = $stats->getAmountByYear($numberyears); From 84ba1852aa1346c7203e4cb814d25745baa02206 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Wed, 24 Sep 2025 15:25:15 +0200 Subject: [PATCH 11/15] Another try to have autoassignement on v18 --- ..._quality_qodana.yml => code_quality_qodana.yml.disabled} | 2 -- .github/workflows/{pr-18.yaml.disabled => pr-18.yaml} | 6 +----- 2 files changed, 1 insertion(+), 7 deletions(-) rename .github/workflows/{code_quality_qodana.yml => code_quality_qodana.yml.disabled} (94%) rename .github/workflows/{pr-18.yaml.disabled => pr-18.yaml} (92%) diff --git a/.github/workflows/code_quality_qodana.yml b/.github/workflows/code_quality_qodana.yml.disabled similarity index 94% rename from .github/workflows/code_quality_qodana.yml rename to .github/workflows/code_quality_qodana.yml.disabled index cb08ea9b4cd..5ea1093988e 100644 --- a/.github/workflows/code_quality_qodana.yml +++ b/.github/workflows/code_quality_qodana.yml.disabled @@ -3,8 +3,6 @@ on: schedule: - cron: "0 20 * * 1,3,5" workflow_dispatch: - branches: - - develop # push: # branches: # - develop diff --git a/.github/workflows/pr-18.yaml.disabled b/.github/workflows/pr-18.yaml similarity index 92% rename from .github/workflows/pr-18.yaml.disabled rename to .github/workflows/pr-18.yaml index 4f274e28c8f..47fb32ac8ea 100644 --- a/.github/workflows/pr-18.yaml.disabled +++ b/.github/workflows/pr-18.yaml @@ -8,7 +8,7 @@ name: Set reviewer for v18 on: - pull_request: + pull_request_target: types: [opened, synchronize, reopened] branches: - "18.0" @@ -20,10 +20,6 @@ jobs: pr18: runs-on: ubuntu-latest - #env: - # GH_TOKEN: ${{ github.token }} - # GH_TOKENS: ${{ secrets.GITHUB_TOKEN }} - steps: - name: Generate a token id: generate-token From 6916ca7ac822bd6c4c9344f24d2d10d4922a33f8 Mon Sep 17 00:00:00 2001 From: Dylan Bourdere Date: Thu, 25 Sep 2025 11:47:19 +0200 Subject: [PATCH 12/15] fix: PHP warning: use getDolGlobalString (#35475) --- htdocs/user/class/user.class.php | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index e1b2dfd369c..920ea8a1719 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -2658,13 +2658,8 @@ class User extends CommonObject $outputlangs = new Translate("", $conf); - if (isset($this->conf->MAIN_LANG_DEFAULT) - && $this->conf->MAIN_LANG_DEFAULT != 'auto') { // If user has defined its own language (rare because in most cases, auto is used) - $outputlangs->getDefaultLang($this->conf->MAIN_LANG_DEFAULT); - } - - if ($this->conf->MAIN_LANG_DEFAULT) { - $outputlangs->setDefaultLang($this->conf->MAIN_LANG_DEFAULT); + if (getDolGlobalString('MAIN_LANG_DEFAULT')) { + $outputlangs->setDefaultLang(getDolGlobalString('MAIN_LANG_DEFAULT')); } else { // If user has not defined its own language, we used current language $outputlangs = $langs; } From bcf6d6a7a2e0a42ff03672ea524caefe5aa7f93a Mon Sep 17 00:00:00 2001 From: lvessiller-opendsi Date: Thu, 25 Sep 2025 11:47:51 +0200 Subject: [PATCH 13/15] FIX api orders : forward database error on failure (backpot commit d9e81cb) (#35478) --- htdocs/commande/class/commande.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 5c38cbdf51d..eb0b6378d79 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1156,7 +1156,7 @@ class Commande extends CommonOrder } } } else { - dol_print_error($this->db); + $this->error = $this->db->lasterror(); $this->db->rollback(); return -1; } From 35bb894393efb9bf42442d40a7addae6f5a1be99 Mon Sep 17 00:00:00 2001 From: atm-GregM <85485123+atm-GregM@users.noreply.github.com> Date: Thu, 25 Sep 2025 11:57:49 +0200 Subject: [PATCH 14/15] FIX check commande liste validate (#35479) --- htdocs/commande/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 442b3090955..96a420adfec 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -781,7 +781,7 @@ if ($action == 'validate' && $permissiontoadd && $objectclass !== null) { } else { $idwarehouse = 0; } - if ($objecttmp->valid($user, $idwarehouse)) { + if ($objecttmp->valid($user, $idwarehouse) > 0) { setEventMessages($langs->trans('hasBeenValidated', $objecttmp->ref), null, 'mesgs'); } else { setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); From a63eae790384d289ddbeca5c63ed31ed5feb06dd Mon Sep 17 00:00:00 2001 From: Dylan Bourdere Date: Thu, 25 Sep 2025 11:59:09 +0200 Subject: [PATCH 15/15] Fix: property api dir_temp (#35439) * fix undefined property * rename key --- htdocs/core/class/conf.class.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 7b1188f6f9a..34e1eb8ebd3 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -125,6 +125,7 @@ class Conf public $notification; public $expensereport; public $productbatch; + public $api; @@ -257,6 +258,7 @@ class Conf $this->notification = new stdClass(); $this->expensereport = new stdClass(); $this->productbatch = new stdClass(); + $this->api = new stdClass(); // Common arrays $this->cache = array(); @@ -504,6 +506,10 @@ class Conf $this->admin->dir_output = $rootfordata.'/admin'; $this->admin->dir_temp = $rootfortemp.'/admin/temp'; + // For api storage + $this->api->dir_output = $rootfordata.'/api'; + $this->api->dir_temp = $rootfortemp.'/api/temp'; + // For user storage $this->user->multidir_output = array($this->entity => $rootfordata."/users"); $this->user->multidir_temp = array($this->entity => $rootfortemp."/users/temp");