diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php
index af636c5609d..a5c603c2504 100644
--- a/htdocs/accountancy/customer/lines.php
+++ b/htdocs/accountancy/customer/lines.php
@@ -37,7 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
// Load translation files required by the page
-$langs->loadLangs(array("bills", "compta", "accountancy", "productbatch"));
+$langs->loadLangs(array("bills", "compta", "accountancy", "productbatch", "products"));
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
@@ -339,7 +339,7 @@ if ($result) {
print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "f.datef, f.ref, fd.rowid", "", $param, '', $sortfield, $sortorder, 'center ');
print_liste_field_titre("ProductRef", $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
//print_liste_field_titre("ProductLabel", $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
- print_liste_field_titre("Description", $_SERVER["PHP_SELF"], "fd.description", "", $param, '', $sortfield, $sortorder);
+ print_liste_field_titre("ProductDescription", $_SERVER["PHP_SELF"], "fd.description", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "fd.total_ht", "", $param, '', $sortfield, $sortorder, 'right ');
print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], "fd.tva_tx", "", $param, '', $sortfield, $sortorder, 'right ');
print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder);
diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php
index 2975c7de3c0..defe8bfd3b9 100644
--- a/htdocs/accountancy/customer/list.php
+++ b/htdocs/accountancy/customer/list.php
@@ -38,7 +38,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
// Load translation files required by the page
-$langs->loadLangs(array("bills", "companies", "compta", "accountancy", "other", "productbatch"));
+$langs->loadLangs(array("bills", "companies", "compta", "accountancy", "other", "productbatch", "products"));
$action = GETPOST('action', 'aZ09');
$massaction = GETPOST('massaction', 'alpha');
diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php
index 4bb163b6653..70d6d89216f 100644
--- a/htdocs/accountancy/supplier/lines.php
+++ b/htdocs/accountancy/supplier/lines.php
@@ -38,7 +38,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
// Load translation files required by the page
-$langs->loadLangs(array("compta", "bills", "other", "accountancy", "productbatch"));
+$langs->loadLangs(array("compta", "bills", "other", "accountancy", "productbatch", "products"));
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
@@ -334,16 +334,16 @@ if ($result) {
print '
';
print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "l.rowid", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder);
- print_liste_field_titre("InvoiceLabel", $_SERVER["PHP_SELF"], "f.libelle", "", $param, '', $sortfield, $sortorder);
+ //print_liste_field_titre("InvoiceLabel", $_SERVER["PHP_SELF"], "f.libelle", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "f.datef, f.ref, l.rowid", "", $param, '', $sortfield, $sortorder, 'center ');
print_liste_field_titre("ProductRef", $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
//print_liste_field_titre("ProductLabel", $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
- print_liste_field_titre("Description", $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder);
+ print_liste_field_titre("ProductDescription", $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "l.total_ht", "", $param, '', $sortfield, $sortorder, 'right ');
print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, '', $sortfield, $sortorder, 'right ');
print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre("Country", $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder);
- print_liste_field_titre("VATIntra", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder);
+ print_liste_field_titre("VATIntraShort", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre("AccountAccounting", $_SERVER["PHP_SELF"], "aa.account_number", "", $param, '', $sortfield, $sortorder);
$checkpicto = $form->showCheckAddButtons();
print_liste_field_titre($checkpicto, '', '', '', '', '', '', '', 'center ');
diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php
index 2f9141eb322..37f596c05c1 100644
--- a/htdocs/accountancy/supplier/list.php
+++ b/htdocs/accountancy/supplier/list.php
@@ -39,7 +39,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
// Load translation files required by the page
-$langs->loadLangs(array("bills", "companies", "compta", "accountancy", "other", "productbatch"));
+$langs->loadLangs(array("bills", "companies", "compta", "accountancy", "other", "productbatch", "products"));
$action = GETPOST('action', 'aZ09');
$massaction = GETPOST('massaction', 'alpha');
diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php
index 88ae8964c1b..08e7c2b5446 100644
--- a/htdocs/admin/mails.php
+++ b/htdocs/admin/mails.php
@@ -679,9 +679,10 @@ if ($action == 'edit')
print '
| '.$langs->trans("OtherOptions").' | |
';
// From
- print '| '.$langs->trans("MAIN_MAIL_EMAIL_FROM", ini_get('sendmail_from') ?ini_get('sendmail_from') : $langs->transnoentities("Undefined")).' | ';
+ print '
| '.$langs->trans("MAIN_MAIL_EMAIL_FROM", ini_get('sendmail_from') ?ini_get('sendmail_from') : $langs->transnoentities("Undefined")).' | ';
print ''.$conf->global->MAIN_MAIL_EMAIL_FROM;
- if (!empty($conf->global->MAIN_MAIL_EMAIL_FROM) && !isValidEmail($conf->global->MAIN_MAIL_EMAIL_FROM)) print img_warning($langs->trans("ErrorBadEMail"));
+ if (empty($conf->global->MAIN_MAIL_EMAIL_FROM)) print img_warning($langs->trans("Mandatory"));
+ elseif (!isValidEmail($conf->global->MAIN_MAIL_EMAIL_FROM)) print img_warning($langs->trans("ErrorBadEMail"));
print ' |
';
// Default from type
diff --git a/htdocs/core/boxes/box_clients.php b/htdocs/core/boxes/box_clients.php
index 11e8b6a8f29..adcff0d158c 100644
--- a/htdocs/core/boxes/box_clients.php
+++ b/htdocs/core/boxes/box_clients.php
@@ -2,7 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville
* Copyright (C) 2004-2010 Laurent Destailleur
* Copyright (C) 2005-2009 Regis Houssin
- * Copyright (C) 2015 Frederic France
+ * Copyright (C) 2015-2021 Frederic France
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -79,7 +79,7 @@ class box_clients extends ModeleBoxes
$this->max = $max;
- include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
+ include_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php';
$thirdpartystatic = new Client($this->db);
$this->info_box_head = array('text' => $langs->trans("BoxTitleLastModifiedCustomers", $max));
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index b21b4c3e839..6d0df215220 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -3279,7 +3279,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
'object_recruitmentjobposition', 'object_recruitmentcandidature',
'object_shipment', 'object_share-alt', 'object_supplier_invoice', 'object_supplier_invoicea', 'object_supplier_invoiced', 'object_supplier_order', 'object_supplier_proposal', 'object_service', 'object_stock',
'object_technic', 'object_ticket', 'object_trip', 'object_user', 'object_group', 'object_member',
- 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', 'object_website',
+ 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', 'object_website', 'object_movement',
'off', 'on', 'order',
'paiment', 'play', 'pdf', 'playdisabled', 'previous', 'poll', 'printer', 'product', 'propal', 'projecttask', 'stock', 'resize', 'service', 'stats', 'trip',
'setup', 'share-alt', 'sign-out', 'split', 'stripe-s', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'vcard', 'wrench',
@@ -3316,7 +3316,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
'edit'=>'pencil-alt', 'grip_title'=>'arrows-alt', 'grip'=>'arrows-alt', 'help'=>'question-circle',
'generic'=>'file', 'holiday'=>'umbrella-beach', 'label'=>'layer-group',
'member'=>'users', 'mrp'=>'cubes', 'next'=>'arrow-alt-circle-right',
- 'trip'=>'wallet', 'group'=>'users',
+ 'trip'=>'wallet', 'group'=>'users', 'movement'=>'people-carry',
'sign-out'=>'sign-out-alt',
'switch_off'=>'toggle-off', 'switch_on'=>'toggle-on', 'check'=>'check', 'bookmark'=>'star', 'bookmark'=>'star',
'bank'=>'university', 'close_title'=>'times', 'delete'=>'trash', 'edit'=>'pencil-alt', 'filter'=>'filter',
@@ -3405,7 +3405,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
'companies'=>'#6c6aa8', 'company'=>'#6c6aa8', 'contact'=>'#6c6aa8', 'dynamicprice'=>'#a69944',
'edit'=>'#444', 'note'=>'#999', 'error'=>'', 'help'=>'#bbb', 'listlight'=>'#999',
'dolly'=>'#a69944', 'dollyrevert'=>'#a69944', 'lot'=>'#a69944',
- 'map-marker-alt'=>'#aaa', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944',
+ 'map-marker-alt'=>'#aaa', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944', 'movement'=>'#a69944',
'other'=>'#ddd',
'playdisabled'=>'#ccc', 'printer'=>'#444', 'projectpub'=>'#986c6a', 'resize'=>'#444', 'rss'=>'#cba',
'shipment'=>'#a69944', 'stats'=>'#444', 'switch_off'=>'#999', 'uparrow'=>'#555', 'globe-americas'=>'#aaa',
diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php
index 004ac154aee..380a7c0dc12 100644
--- a/htdocs/core/lib/website2.lib.php
+++ b/htdocs/core/lib/website2.lib.php
@@ -86,7 +86,7 @@ function dolSavePageAlias($filealias, $object, $objectpage)
if ($objectpage->lang && in_array($objectpage->lang, explode(',', $object->otherlang))) {
$dirname = dirname($filealias);
$filename = basename($filealias);
- $filealias = $dirname.'/'.$objectpage->lang.'/'.$filename;
+ $filealiassub = $dirname.'/'.$objectpage->lang.'/'.$filename;
$aliascontent = 'id.'.tpl.php\'; ';
$aliascontent .= 'else require $dolibarr_main_data_root.\'/website/\'.$website->ref.\'/page'.$objectpage->id.'.tpl.php\';'."\n";
$aliascontent .= '?>'."\n";
- $result = file_put_contents($filealias, $aliascontent);
+ $result = file_put_contents($filealiassub, $aliascontent);
if ($result === false) {
- dol_syslog("Failed to write file ".$filealias, LOG_WARNING);
+ dol_syslog("Failed to write file ".$filealiassub, LOG_WARNING);
}
if (!empty($conf->global->MAIN_UMASK)) {
- @chmod($filealias, octdec($conf->global->MAIN_UMASK));
+ @chmod($filealiassub, octdec($conf->global->MAIN_UMASK));
}
}
// Save also alias into all language subdirectories if it is a main language
@@ -108,7 +108,7 @@ function dolSavePageAlias($filealias, $object, $objectpage)
$dirname = dirname($filealias);
$filename = basename($filealias);
foreach (explode(',', $object->otherlang) as $sublang) {
- $filealias = $dirname.'/'.$sublang.'/'.$filename;
+ $filealiassub = $dirname.'/'.$sublang.'/'.$filename;
$aliascontent = 'id.'.tpl.php\'; ';
$aliascontent .= 'else require $dolibarr_main_data_root.\'/website/\'.$website->ref.\'/page'.$objectpage->id.'.tpl.php\';'."\n";
$aliascontent .= '?>'."\n";
- $result = file_put_contents($filealias, $aliascontent);
+ $result = file_put_contents($filealiassub, $aliascontent);
if ($result === false) {
- dol_syslog("Failed to write file ".$filealias, LOG_WARNING);
+ dol_syslog("Failed to write file ".$filealiassub, LOG_WARNING);
}
if (!empty($conf->global->MAIN_UMASK)) {
- @chmod($filealias, octdec($conf->global->MAIN_UMASK));
+ @chmod($filealiassub, octdec($conf->global->MAIN_UMASK));
}
}
}
diff --git a/htdocs/core/modules/modCommande.class.php b/htdocs/core/modules/modCommande.class.php
index ac4d26725bc..f257c6e3132 100644
--- a/htdocs/core/modules/modCommande.class.php
+++ b/htdocs/core/modules/modCommande.class.php
@@ -271,7 +271,7 @@ class modCommande extends DolibarrModules
$r++;
$this->import_code[$r] = 'commande_'.$r;
- $this->import_label[$r] = 'Sales Orders';
+ $this->import_label[$r] = 'CustomersOrders';
$this->import_icon[$r] = $this->picto;
$this->import_entities_array[$r] = [];
$this->import_tables_array[$r] = ['c' => MAIN_DB_PREFIX.'commande', 'extra' => MAIN_DB_PREFIX.'commande_extrafields'];
@@ -357,7 +357,7 @@ class modCommande extends DolibarrModules
//Import CPV Lines
$r++;
$this->import_code[$r] = 'commande_lines_'.$r;
- $this->import_label[$r] = 'Order Details';
+ $this->import_label[$r] = 'OrderLine';
$this->import_icon[$r] = $this->picto;
$this->import_entities_array[$r] = [];
$this->import_tables_array[$r] = ['cd' => MAIN_DB_PREFIX.'commandedet', 'extra' => MAIN_DB_PREFIX.'commandedet_extrafields'];
diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php
index f96bab63e2f..075403cc3e4 100644
--- a/htdocs/fichinter/card.php
+++ b/htdocs/fichinter/card.php
@@ -246,7 +246,13 @@ if (empty($reshook))
}
// Extrafields
- $extrafields = new ExtraFields($db);
+
+ // Fill array 'array_options' with data from add form
+ $ret = $extrafields->setOptionalsFromPost(null, $object);
+ if ($ret < 0) {
+ $error++;
+ $action = 'create';
+ }
$array_options = $extrafields->getOptionalsFromPost($object->table_element);
$object->array_options = $array_options;
diff --git a/htdocs/includes/odtphp/odf.php b/htdocs/includes/odtphp/odf.php
index 0f5861caf68..857e1dabce2 100644
--- a/htdocs/includes/odtphp/odf.php
+++ b/htdocs/includes/odtphp/odf.php
@@ -136,9 +136,8 @@ class Odf
// instead of {aaa} so we should enhance this function.
//print $key.'-'.$value.'-'.strpos($this->contentXml, $this->config['DELIMITER_LEFT'] . $key . $this->config['DELIMITER_RIGHT']).'
';
if (strpos($this->contentXml, $tag) === false && strpos($this->stylesXml, $tag) === false) {
- //if (strpos($this->contentXml, '">'. $key . '') === false) {
- throw new OdfException("var $key not found in the document");
- //}
+ // Add the throw only for development. In most cases, it is normal to not having the key into the document (only few keys are presents).
+ //throw new OdfException("var $key not found in the document");
}
$this->vars[$tag] = $this->convertVarToOdf($value, $encode, $charset);
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index ee7b0052b7c..5e1fc0b69a1 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -541,6 +541,8 @@ Module40Name=Vendors
Module40Desc=Vendors and purchase management (purchase orders and billing of supplier invoices)
Module42Name=Debug Logs
Module42Desc=Logging facilities (file, syslog, ...). Such logs are for technical/debug purposes.
+Module43Name=Debug Bar
+Module43Desc=A tool for developper adding a debug bar in your browser.
Module49Name=Editors
Module49Desc=Editor management
Module50Name=Products
@@ -639,6 +641,8 @@ Module2900Name=GeoIPMaxmind
Module2900Desc=GeoIP Maxmind conversions capabilities
Module3200Name=Unalterable Archives
Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries.
+Module3400Name=Social Networks
+Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...).
Module4000Name=HRM
Module4000Desc=Human resources management (management of department, employee contracts and feelings)
Module5000Name=Multi-company
@@ -2096,4 +2100,4 @@ CombinationsSeparator=Separator character for product combinations
SeeLinkToOnlineDocumentation=See link to online documention on top menu for examples
SHOW_SUBPRODUCT_REF_IN_PDF=If the feature "%s" of module %s is used, show details of subproducts of a kit on PDF.
AskThisIDToYourBank=Contact your bank to get this ID
-AdvancedModeOnly=Permision available in Advanced permission mode only
\ No newline at end of file
+AdvancedModeOnly=Permision available in Advanced permission mode only
diff --git a/htdocs/user/list.php b/htdocs/user/list.php
index 04921893b6f..1f471cd3ad9 100644
--- a/htdocs/user/list.php
+++ b/htdocs/user/list.php
@@ -309,19 +309,22 @@ $sql .= " u.salary, u.datelastlogin, u.datepreviouslogin,";
$sql .= " u.ldap_sid, u.statut, u.entity,";
$sql .= " u.tms as date_update, u.datec as date_creation,";
$sql .= " u2.rowid as id2, u2.login as login2, u2.firstname as firstname2, u2.lastname as lastname2, u2.admin as admin2, u2.fk_soc as fk_soc2, u2.office_phone as ofice_phone2, u2.user_mobile as user_mobile2, u2.email as email2, u2.gender as gender2, u2.photo as photo2, u2.entity as entity2, u2.statut as statut2,";
-$sql .= " s.nom as name, s.canvas";
+$sql .= " s.nom as name, s.canvas,";
// Add fields from extrafields
if (!empty($extrafields->attributes[$object->table_element]['label'])) {
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? ", ef.".$key.' as options_'.$key : '');
+ foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
+ $sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? "ef.".$key.' as options_'.$key.', ' : '');
+ }
}
// Add fields from hooks
$parameters = array();
$reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
$sql .= preg_replace('/^,/', '', $hookmanager->resPrint);
$sql = preg_replace('/,\s*$/', '', $sql);
-$sql .= $hookmanager->resPrint;
$sql .= " FROM ".MAIN_DB_PREFIX."user as u";
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (u.rowid = ef.fk_object)";
+if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) {
+ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (u.rowid = ef.fk_object)";
+}
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON u.fk_soc = s.rowid";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user as u2 ON u.fk_user = u2.rowid";
if (!empty($search_categ) || !empty($catid)) $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_user as cu ON u.rowid = cu.fk_user"; // We'll need this table joined to the select in order to filter by categ
diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php
index 30961013806..bacc4664791 100644
--- a/htdocs/website/class/websitepage.class.php
+++ b/htdocs/website/class/websitepage.class.php
@@ -161,7 +161,7 @@ class WebsitePage extends CommonObject
//'status' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'index'=>true, 'position'=>1000),
'fk_website' =>array('type'=>'integer', 'label'=>'WebsiteId', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>40, 'searchall'=>0, 'foreignkey'=>'websitepage.rowid'),
'fk_page' =>array('type'=>'integer', 'label'=>'ParentPageId', 'enabled'=>1, 'visible'=>1, 'notnull'=>-1, 'position'=>45, 'searchall'=>0, 'foreignkey'=>'website.rowid'),
- 'allowed_in_frames' =>array('type'=>'integer', 'label'=>'AllowedInFrames', 'enabled'=>1, 'visible'=>-1, 'position'=>48, 'searchall'=>0),
+ 'allowed_in_frames' =>array('type'=>'integer', 'label'=>'AllowedInFrames', 'enabled'=>1, 'visible'=>-1, 'position'=>48, 'searchall'=>0, 'default'=>0),
'htmlheader' =>array('type'=>'text', 'label'=>'HtmlHeader', 'enabled'=>1, 'visible'=>0, 'position'=>50, 'searchall'=>0),
'content' =>array('type'=>'mediumtext', 'label'=>'Content', 'enabled'=>1, 'visible'=>0, 'position'=>51, 'searchall'=>0),
'grabbed_from' =>array('type'=>'varchar(255)', 'label'=>'GrabbedFrom', 'enabled'=>1, 'visible'=>1, 'index'=>1, 'position'=>400, 'comment'=>'URL page content was grabbed from'),
@@ -400,7 +400,7 @@ class WebsitePage extends CommonObject
$sql .= " t.fk_object";
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
$sql .= ' WHERE t.fk_website = '.$websiteid;
- // Manage filter
+ // Manage filter (same than into countAll)
$sqlwhere = array();
if (count($filter) > 0) {
foreach ($filter as $key => $value) {
@@ -501,14 +501,27 @@ class WebsitePage extends CommonObject
$sql = 'SELECT COUNT(t.rowid) as nb';
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
$sql .= ' WHERE t.fk_website = '.$websiteid;
- // Manage filter
+ // Manage filter (same than into fetchAll)
$sqlwhere = array();
if (count($filter) > 0) {
foreach ($filter as $key => $value) {
- if ($key == 't.rowid' || $key == 't.fk_website') {
- $sqlwhere[] = $key.'='.$value;
+ if ($key == 't.rowid' || $key == 't.fk_website' || $key == 'status') {
+ $sqlwhere[] = $key.' = '.$value;
+ } elseif ($key == 'type_container') {
+ $sqlwhere[] = $key." = '".$this->db->escape($value)."'";
} elseif ($key == 'lang' || $key == 't.lang') {
- $sqlwhere[] = $key." = '".$this->db->escape(substr($value, 0, 2))."'";
+ $listoflang = array();
+ $foundnull = 0;
+ foreach (explode(',', $value) as $tmpvalue) {
+ if ($tmpvalue == 'null') {
+ $foundnull++;
+ continue;
+ }
+ $listoflang[] = "'".$this->db->escape(substr(str_replace("'", '', $tmpvalue), 0, 2))."'";
+ }
+ $stringtouse = $key." IN (".join(',', $listoflang).")";
+ if ($foundnull) $stringtouse = '('.$stringtouse.' OR '.$key.' IS NULL)';
+ $sqlwhere[] = $stringtouse;
} else {
$sqlwhere[] = $key.' LIKE \'%'.$this->db->escape($value).'%\'';
}
diff --git a/htdocs/website/index.php b/htdocs/website/index.php
index 30937b74c34..ebcf31ad2c5 100644
--- a/htdocs/website/index.php
+++ b/htdocs/website/index.php
@@ -1752,7 +1752,6 @@ if ($action == 'updatemeta')
dol_mkdir($pathofwebsite);
-
// Now generate the master.inc.php page
$result = dolSaveMasterFile($filemaster);
if (!$result) setEventMessages('Failed to write file '.$filemaster, null, 'errors');
@@ -1762,6 +1761,17 @@ if ($action == 'updatemeta')
{
dol_syslog("We delete old alias page name=".$fileoldalias." to build a new alias page=".$filealias);
dol_delete_file($fileoldalias);
+
+ // Delete also pages into language subdirectories
+ if (empty($objectpage->lang) || !in_array($objectpage->lang, explode(',', $object->otherlang))) {
+ $dirname = dirname($fileoldalias);
+ $filename = basename($fileoldalias);
+ $sublangs = explode(',', $object->otherlang);
+ foreach ($sublangs as $sublang) {
+ $fileoldaliassub = $dirname.'/'.$sublang.'/'.$filename;
+ dol_delete_file($fileoldaliassub);
+ }
+ }
}
// Now delete the alternative alias.php pages
if (!empty($objectpage->old_object->aliasalt))
@@ -1773,11 +1783,22 @@ if ($action == 'updatemeta')
{
dol_syslog("We delete old alt alias pages name=".trim($tmpaliasalt));
dol_delete_file($pathofwebsite.'/'.trim($tmpaliasalt).'.php');
+
+ // Delete also pages into language subdirectories
+ if (empty($objectpage->lang) || !in_array($objectpage->lang, explode(',', $object->otherlang))) {
+ $dirname = dirname($pathofwebsite.'/'.trim($tmpaliasalt).'.php');
+ $filename = basename($pathofwebsite.'/'.trim($tmpaliasalt).'.php');
+ $sublangs = explode(',', $object->otherlang);
+ foreach ($sublangs as $sublang) {
+ $fileoldaliassub = $dirname.'/'.$sublang.'/'.$filename;
+ dol_delete_file($fileoldaliassub);
+ }
+ }
}
}
}
- // Save page alias
+ // Save page main alias
$result = dolSavePageAlias($filealias, $object, $objectpage);
if (!$result) setEventMessages('Failed to write file '.$filealias, null, 'errors');
// Save alt aliases
@@ -2025,19 +2046,28 @@ if (($action == 'updatesource' || $action == 'updatecontent' || $action == 'conf
dol_mkdir($pathofwebsite);
-
// Now generate the master.inc.php page
$result = dolSaveMasterFile($filemaster);
if (!$result) setEventMessages('Failed to write the master file file '.$filemaster, null, 'errors');
-
- // Now generate the alias.php page
- if (!empty($fileoldalias))
+ // Now delete the old alias.php page if we removed one
+ /*if (!empty($fileoldalias))
{
dol_syslog("We regenerate alias page new name=".$filealias.", old name=".$fileoldalias);
dol_delete_file($fileoldalias);
- }
+
+ // Delete also pages into language subdirectories
+ if (empty($objectpage->lang) || !in_array($objectpage->lang, explode(',', $object->otherlang))) {
+ $dirname = dirname($fileoldalias);
+ $filename = basename($fileoldalias);
+ $sublangs = explode(',', $object->otherlang);
+ foreach ($sublangs as $sublang) {
+ $fileoldaliassub = $dirname.'/'.$sublang.'/'.$filename;
+ dol_delete_file($fileoldaliassub);
+ }
+ }
+ }*/
// Save page alias
$result = dolSavePageAlias($filealias, $object, $objectpage);