diff --git a/htdocs/core/actions_extrafields.inc.php b/htdocs/core/actions_extrafields.inc.php index b34cbe886ab..30e3549e912 100644 --- a/htdocs/core/actions_extrafields.inc.php +++ b/htdocs/core/actions_extrafields.inc.php @@ -174,7 +174,9 @@ if ($action == 'add') (GETPOST('perms', 'alpha')?GETPOST('perms', 'alpha'):''), (GETPOST('list', 'alpha')?1:0), (GETPOST('ishidden', 'alpha')?1:0), - GETPOST('computed_value','alpha') + GETPOST('computed_value','alpha'), + (GETPOST('entitycurrentorall', 'alpha')?0:'') + ); if ($result > 0) { diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 966f3f859c0..835d3758ca9 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -139,9 +139,10 @@ class ExtraFields * @param int $list Into list view by default * @param int $ishidden Is hidden extrafield (warning, do not rely on this. If your module need a hidden data, it must use its own table) * @param string $computed Computed value + * @param string $entity Entity of extrafields * @return int <=0 if KO, >0 if OK */ - function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0, $default_value='', $param=0, $alwayseditable=0, $perms='', $list=0, $ishidden=0, $computed='') + function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0, $default_value='', $param=0, $alwayseditable=0, $perms='', $list=0, $ishidden=0, $computed='', $entity='') { if (empty($attrname)) return -1; if (empty($label)) return -1; @@ -158,7 +159,7 @@ class ExtraFields if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' || $type == 'separate') { // Add declaration of field into table - $result2=$this->create_label($attrname, $label, $type, $pos, $size, $elementtype, $unique, $required, $param, $alwayseditable, $perms, $list, $ishidden, $default, $computed); + $result2=$this->create_label($attrname, $label, $type, $pos, $size, $elementtype, $unique, $required, $param, $alwayseditable, $perms, $list, $ishidden, $default, $computed, $entity); $err2=$this->errno; if ($result2 > 0 || ($err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' && $err2 == 'DB_ERROR_RECORD_ALREADY_EXISTS')) { @@ -277,9 +278,10 @@ class ExtraFields * @param int $ishidden Is hidden extrafield (warning, do not rely on this. If your module need a hidden data, it must use its own table) * @param string $default Default value (in database. use the default_value feature for default value on screen). * @param string $computed Computed value + * @param string $entity Entity of extrafields * @return int <=0 if KO, >0 if OK */ - private function create_label($attrname, $label='', $type='', $pos=0, $size=0, $elementtype='member', $unique=0, $required=0, $param='', $alwayseditable=0, $perms='', $list=0, $ishidden=0, $default='', $computed='') + private function create_label($attrname, $label='', $type='', $pos=0, $size=0, $elementtype='member', $unique=0, $required=0, $param='', $alwayseditable=0, $perms='', $list=0, $ishidden=0, $default='', $computed='',$entity='') { global $conf,$user; @@ -331,7 +333,7 @@ class ExtraFields $sql.= " '".$type."',"; $sql.= " '".$pos."',"; $sql.= " '".$size."',"; - $sql.= " ".$conf->entity.","; + $sql.= " ".($entity===''?$conf->entity:$entity).","; $sql.= " '".$elementtype."',"; $sql.= " '".$unique."',"; $sql.= " '".$required."',"; @@ -477,9 +479,10 @@ class ExtraFields * @param int $ishidden Is hidden extrafield (warning, do not rely on this. If your module need a hidden data, it must use its own table) * @param string $default Default value (in database. use the default_value feature for default value on screen). * @param string $computed Computed value + * @param string $entity Entity of extrafields * @return int >0 if OK, <=0 if KO */ - function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0, $perms='',$list='',$ishidden=0,$default='',$computed='') + function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0, $perms='',$list='',$ishidden=0,$default='',$computed='',$entity='') { if ($elementtype == 'thirdparty') $elementtype='societe'; if ($elementtype == 'contact') $elementtype='socpeople'; @@ -527,7 +530,7 @@ class ExtraFields { if ($label) { - $result=$this->update_label($attrname,$label,$type,$length,$elementtype,$unique,$required,$pos,$param,$alwayseditable,$perms,$list,$ishidden,$default,$computed); + $result=$this->update_label($attrname,$label,$type,$length,$elementtype,$unique,$required,$pos,$param,$alwayseditable,$perms,$list,$ishidden,$default,$computed,$entity); } if ($result > 0) { @@ -581,12 +584,13 @@ class ExtraFields * @param int $ishidden Is hidden extrafield (warning, do not rely on this. If your module need a hidden data, it must use its own table) * @param string $default Default value (in database. use the default_value feature for default value on screen). * @param string $computed Computed value + * @param string $entity Entity of extrafields * @return int <=0 if KO, >0 if OK */ - private function update_label($attrname,$label,$type,$size,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0,$perms='',$list=0,$ishidden=0,$default='',$computed='') + private function update_label($attrname,$label,$type,$size,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0,$perms='',$list=0,$ishidden=0,$default='',$computed='',$entity='') { global $conf, $user; - dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required.", ".$pos.", ".$alwayseditable.", ".$perms.", ".$list.", ".$ishidden.", ".$default.", ".$computed); + dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required.", ".$pos.", ".$alwayseditable.", ".$perms.", ".$list.", ".$ishidden.", ".$default.", ".$computed.", ".$entity); // Clean parameters if ($elementtype == 'thirdparty') $elementtype='societe'; @@ -605,7 +609,7 @@ class ExtraFields $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."extrafields"; $sql_del.= " WHERE name = '".$attrname."'"; - $sql_del.= " AND entity = ".$conf->entity; + $sql_del.= " AND entity = ".($entity===''?$conf->entity:$entity); $sql_del.= " AND elementtype = '".$elementtype."'"; $resql1=$this->db->query($sql_del); @@ -632,7 +636,7 @@ class ExtraFields $sql.= " datec"; $sql.= ") VALUES ("; $sql.= "'".$attrname."',"; - $sql.= " ".$conf->entity.","; + $sql.= " ".($entity===''?$conf->entity:$entity).","; $sql.= " '".$this->db->escape($label)."',"; $sql.= " '".$type."',"; $sql.= " '".$size."',"; @@ -699,6 +703,7 @@ class ExtraFields dol_syslog("fetch_name_optionals_label elementtype=".$elementtype); $sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms,list,ishidden,fielddefault,fieldcomputed"; + $sql .= ",entity"; $sql.= " FROM ".MAIN_DB_PREFIX."extrafields"; $sql.= " WHERE entity IN (0,".$conf->entity.")"; if ($elementtype) $sql.= " AND elementtype = '".$elementtype."'"; @@ -732,6 +737,7 @@ class ExtraFields $this->attribute_perms[$tab->name]=$tab->perms; $this->attribute_list[$tab->name]=$tab->list; $this->attribute_hidden[$tab->name]=$tab->ishidden; + $this->attribute_entity[$tab->name]=$tab->entity; // New usage $this->attributes[$tab->elementtype]['type'][$tab->name]=$tab->type; @@ -748,6 +754,7 @@ class ExtraFields $this->attributes[$tab->elementtype]['perms'][$tab->name]=$tab->perms; $this->attributes[$tab->elementtype]['list'][$tab->name]=$tab->list; $this->attributes[$tab->elementtype]['ishidden'][$tab->name]=$tab->ishidden; + $this->attributes[$tab->elementtype]['entity'][$tab->name]=$tab->entity; } } if ($elementtype) $this->attributes[$elementtype]['loaded']=1; diff --git a/htdocs/core/tpl/admin_extrafields_add.tpl.php b/htdocs/core/tpl/admin_extrafields_add.tpl.php index 62821372e56..ce63a3a0902 100644 --- a/htdocs/core/tpl/admin_extrafields_add.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_add.tpl.php @@ -173,6 +173,9 @@ global->MAIN_CAN_HIDE_EXTRAFIELDS)) { ?> trans("Hidden"); ?>> +multicompany->enabled) { ?> + trans("AllEntities"); ?>> + global->MAIN_FEATURES_LEVEL >= 2) { ?> trans("ByDefaultInList"); ?> diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php index 6f049c506a3..a1d7e18d09e 100644 --- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php @@ -143,6 +143,9 @@ $list=$extrafields->attribute_list[$attrname]; if (! empty($conf->global->MAIN_CAN_HIDE_EXTRAFIELDS)) { $ishidden=$extrafields->attribute_hidden[$attrname]; } +if ($conf->multicompany->enabled) { + $entitycurrentorall=$extrafields->attribute_entity[$attrname]; +} if((($type == 'select') || ($type == 'checkbox') || ($type == 'radio')) && is_array($param)) { @@ -232,6 +235,9 @@ else global->MAIN_CAN_HIDE_EXTRAFIELDS)) { ?> trans("Hidden"); ?>> +multicompany->enabled) { ?> + trans("AllEntities"); ?>> + global->MAIN_FEATURES_LEVEL >= 2) { ?> trans("ByDefaultInList"); ?> diff --git a/htdocs/core/tpl/admin_extrafields_view.tpl.php b/htdocs/core/tpl/admin_extrafields_view.tpl.php index a6d7e735735..904ff632bcf 100644 --- a/htdocs/core/tpl/admin_extrafields_view.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_view.tpl.php @@ -49,6 +49,9 @@ print ''.$langs->trans("ComputedFormula").''; print ''.$langs->trans("Required").''; print ''.$langs->trans("AlwaysEditable").''; if (! empty($conf->global->MAIN_CAN_HIDE_EXTRAFIELDS)) print ''.$langs->trans("Hidden").''; +if ($conf->multicompany->enabled) { + print ''.$langs->trans("AllEntities").''; +} print ' '; print "\n"; @@ -68,6 +71,9 @@ if (count($extrafields->attribute_type)) print ''.yn($extrafields->attribute_required[$key])."\n"; print ''.yn($extrafields->attribute_alwayseditable[$key])."\n"; if (! empty($conf->global->MAIN_CAN_HIDE_EXTRAFIELDS)) print ''.yn($extrafields->attribute_hidden[$key])."\n"; // Add hidden option on not working feature. Why hide if user can't see it. + if ($conf->multicompany->enabled) { + print ''.($extrafields->attribute_entity[$key]==0?$langs->trans("All"):$langs->trans("Current")).''; + } print ''.img_edit().''; print "  ".img_delete()."\n"; print ""; diff --git a/htdocs/install/mysql/migration/6.0.0-7.0.0.sql b/htdocs/install/mysql/migration/6.0.0-7.0.0.sql index 2b58dbbf18e..45c72bd9cc8 100644 --- a/htdocs/install/mysql/migration/6.0.0-7.0.0.sql +++ b/htdocs/install/mysql/migration/6.0.0-7.0.0.sql @@ -183,3 +183,8 @@ ALTER TABLE llx_expensereport_det ADD COLUMN fk_c_exp_tax_cat integer; ALTER TABLE llx_user ADD COLUMN default_range integer; ALTER TABLE llx_user ADD COLUMN default_c_exp_tax_cat integer; + +ALTER TABLE llx_extrafields ADD COLUMN fk_user_author integer; +ALTER TABLE llx_extrafields ADD COLUMN fk_user_modif integer; +ALTER TABLE llx_extrafields ADD COLUMN datec datetime; +ALTER TABLE llx_extrafields ADD COLUMN tms timestamp; \ No newline at end of file