diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php
index c628d669a35..fb5a98968d8 100644
--- a/htdocs/contact/class/contact.class.php
+++ b/htdocs/contact/class/contact.class.php
@@ -1487,6 +1487,10 @@ class Contact extends CommonObject
{
global $conf, $langs, $hookmanager;
+ if (!empty($conf->dol_no_mouse_hover)) {
+ $notooltip = 1; // Force disable tooltips
+ }
+
$result = '';
$params = [
'id' => $this->id,
@@ -1511,14 +1515,14 @@ class Contact extends CommonObject
if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) {
$add_save_lastsearch_values = 1;
}
- if ($add_save_lastsearch_values) {
+ if ($url && $add_save_lastsearch_values) {
$url .= '&save_lastsearch_values=1';
}
}
$url .= $moreparam;
- $linkclose = "";
+ $linkclose = '';
if (empty($notooltip)) {
if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
$label = $langs->trans("ShowContact");
@@ -1526,33 +1530,40 @@ class Contact extends CommonObject
}
$linkclose .= ($label ? ' title="'.dol_escape_htmltag($label, 1).'"' : ' title="tocomplete"');
$linkclose .= $dataparams.' class="'.$classfortooltip.($morecss ? ' '.$morecss : '').'"';
+ } else {
+ $linkclose = ($morecss ? ' class="'.$morecss.'"' : '');
}
- $linkstart = '';
- $linkend = '';
-
- if ($option == 'xxx') {
- $linkstart = '';
+ if ($option == 'nolink' || empty($url)) {
+ $linkend = '';
+ } else {
$linkend = '';
}
- $result .= (($option == 'nolink') ? '' : $linkstart);
+ $result .= $linkstart;
+
if ($withpicto) {
if ($withpicto < 0) {
$result .= ''.Form::showphoto('contact', $this, 0, 0, 0, 'userphoto'.($withpicto == -3 ? 'small' : ''), 'mini', 0, 1).'';
} else {
- $result .= img_object(($notooltip ? '' : $label), ( $this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : $dataparams.' class="'.(($withpicto != 2) ? 'paddingright ' : '').$classfortooltip.'"'), 0, 0, $notooltip ? 0 : 1);
+ $result .= img_object(($notooltip ? '' : $label), ($this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'"'), 0, 0, $notooltip ? 0 : 1);
}
}
if ($withpicto != 2 && $withpicto != -2) {
$result .= ''.($maxlen ? dol_trunc($this->getFullName($langs), $maxlen) : $this->getFullName($langs)).'';
}
- $result .= (($option == 'nolink') ? '' : $linkend);
+
+ $result .= $linkend;
global $action;
$hookmanager->initHooks(array('contactdao'));
- $parameters = array('id'=>$this->id, 'getnomurl' => &$result);
+ $parameters = array('id' => $this->id, 'getnomurl' => &$result);
$reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook > 0) {
$result = $hookmanager->resPrint;
diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php
index 4fee704c3f0..b50af6e4851 100644
--- a/htdocs/core/lib/security.lib.php
+++ b/htdocs/core/lib/security.lib.php
@@ -476,12 +476,12 @@ function restrictedArea(User $user, $features, $object = 0, $tableandshare = '',
continue;
}
- if ($feature == 'societe') {
+ if ($feature == 'societe' && !in_array('contact', $feature2)) {
if (!$user->hasRight('societe', 'lire') && !$user->hasRight('fournisseur', 'lire')) {
$readok = 0;
$nbko++;
}
- } elseif ($feature == 'contact') {
+ } elseif (($feature == 'societe' && in_array('contact', $feature2)) || $feature == 'contact') {
if (empty($user->rights->societe->contact->lire)) {
$readok = 0;
$nbko++;
@@ -845,6 +845,10 @@ function checkUserAccessToObject($user, array $featuresarray, $object = 0, $tabl
//var_dump($feature);exit;
// For backward compatibility
+ if ($feature == 'societe' && in_array('contact', $feature2)) {
+ $feature = 'contact';
+ $feature2 = '';
+ }
if ($feature == 'member') {
$feature = 'adherent';
}
@@ -868,7 +872,7 @@ function checkUserAccessToObject($user, array $featuresarray, $object = 0, $tabl
// Array to define rules of checks to do
$check = array('adherent', 'banque', 'bom', 'don', 'mrp', 'user', 'usergroup', 'payment', 'payment_supplier', 'product', 'produit', 'service', 'produit|service', 'categorie', 'resource', 'expensereport', 'holiday', 'salaries', 'website', 'recruitment', 'chargesociales'); // Test on entity only (Objects with no link to company)
$checksoc = array('societe'); // Test for object Societe
- $checkother = array('agenda', 'contact', 'contrat'); // Test on entity + link to third party on field $dbt_keyfield. Allowed if link is empty (Ex: contacts...).
+ $checkparentsoc = array('agenda', 'contact', 'contrat'); // Test on entity + link to third party on field $dbt_keyfield. Allowed if link is empty (Ex: contacts...).
$checkproject = array('projet', 'project'); // Test for project object
$checktask = array('projet_task'); // Test for task object
$checkhierarchy = array('expensereport', 'holiday'); // check permission among the hierarchy of user
@@ -946,7 +950,7 @@ function checkUserAccessToObject($user, array $featuresarray, $object = 0, $tabl
$checkonentitydone = 1;
}
- if (in_array($feature, $checkother) && $objectid > 0) { // Test on entity + link to thirdparty. Allowed if link is empty (Ex: contacts...).
+ if (in_array($feature, $checkparentsoc) && $objectid > 0) { // Test on entity + link to thirdparty. Allowed if link is empty (Ex: contacts...).
// If external user: Check permission for external users
if ($user->socid > 0) {
$sql = "SELECT COUNT(dbt.".$dbt_select.") as nb";
diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php
index c2c677ba8b4..37b3e6da247 100644
--- a/htdocs/modulebuilder/template/class/myobject.class.php
+++ b/htdocs/modulebuilder/template/class/myobject.class.php
@@ -811,7 +811,7 @@ class MyObject extends CommonObject
$url = dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.$this->id;
- if ($option != 'nolink') {
+ if ($option !== 'nolink') {
// Add param to save lastsearch_values or not
$add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) {
@@ -886,7 +886,7 @@ class MyObject extends CommonObject
global $action, $hookmanager;
$hookmanager->initHooks(array($this->element.'dao'));
- $parameters = array('id'=>$this->id, 'getnomurl' => &$result);
+ $parameters = array('id' => $this->id, 'getnomurl' => &$result);
$reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook > 0) {
$result = $hookmanager->resPrint;