28 require
'../../main.inc.php';
29 require_once DOL_DOCUMENT_ROOT.
'/user/class/usergroup.class.php';
30 require_once DOL_DOCUMENT_ROOT.
'/core/lib/usergroups.lib.php';
31 require_once DOL_DOCUMENT_ROOT.
'/core/class/extrafields.class.php';
32 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
35 $canreadperms = ($user->admin || $user->rights->user->user->lire);
36 $caneditperms = ($user->admin || $user->rights->user->user->creer);
37 $candisableperms = ($user->admin || $user->rights->user->user->supprimer);
41 if (!empty($conf->global->MAIN_USE_ADVANCED_PERMS)) {
42 $canreadperms = ($user->admin || $user->rights->user->group_advance->read);
43 $caneditperms = ($user->admin || $user->rights->user->group_advance->write);
44 $candisableperms = ($user->admin || $user->rights->user->group_advance->delete);
45 $feature2 =
'group_advance';
49 $langs->loadLangs(array(
'users',
'other'));
52 $action =
GETPOST(
'action',
'aZ09');
53 $cancel =
GETPOST(
'cancel',
'aZ09');
54 $confirm =
GETPOST(
'confirm',
'alpha');
55 $contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'groupcard';
56 $backtopage =
GETPOST(
'backtopage',
'alpha');
58 $userid =
GETPOST(
'user',
'int');
60 $object =
new Usergroup($db);
63 $extrafields->fetch_name_optionals_label($object->table_element);
66 include DOL_DOCUMENT_ROOT.
'/core/actions_fetchobject.inc.php';
70 $hookmanager->initHooks(array(
'groupcard',
'globalcard'));
73 $result =
restrictedArea($user,
'user', $id,
'usergroup&usergroup', $feature2);
76 if (!empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE) {
85 $parameters = array(
'id' => $id,
'userid' => $userid,
'caneditperms' => $caneditperms);
86 $reshook = $hookmanager->executeHooks(
'doActions',
$parameters, $object, $action);
91 if (empty($reshook)) {
92 $backurlforlist = DOL_URL_ROOT.
'/user/group/list.php';
94 if (empty($backtopage) || ($cancel && empty($id))) {
95 if (empty($backtopage) || ($cancel && strpos($backtopage,
'__ID__'))) {
96 if (empty($id) && (($action !=
'add' && $action !=
'create') || $cancel)) {
97 $backtopage = $backurlforlist;
99 $backtopage = DOL_URL_ROOT.
'/user/group/card.php?id='.($id > 0 ? $id :
'__ID__');
105 header(
"Location: ".$backtopage);
110 if ($action ==
'confirm_delete' && $confirm ==
"yes") {
113 $object->delete($user);
114 header(
"Location: ".DOL_URL_ROOT.
"/user/group/list.php?restore_lastsearch_values=1");
117 $langs->load(
"errors");
123 if ($action ==
'add') {
125 if (!
GETPOST(
"nom",
"alphanohtml")) {
129 $object->name =
GETPOST(
"nom",
'alphanohtml');
133 $ret = $extrafields->setOptionalsFromPost(
null, $object);
138 if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
141 if ($conf->entity == 1 && $user->admin && !$user->entity) {
144 $object->entity = $conf->entity;
150 $id = $object->create();
155 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".$object->id);
160 $langs->load(
"errors");
161 setEventMessages($langs->trans(
"ErrorGroupAlreadyExists", $object->name),
null,
'errors');
166 $langs->load(
"errors");
172 if ($action ==
'adduser' || $action ==
'removeuser') {
176 $object->oldcopy = clone $object;
178 $edituser =
new User($db);
179 $edituser->fetch($userid);
180 if ($action ==
'adduser') {
181 $result = $edituser->SetInGroup($object->id, $object->entity);
183 if ($action ==
'removeuser') {
184 $result = $edituser->RemoveFromGroup($object->id, $object->entity);
188 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".$object->id);
195 $langs->load(
"errors");
201 if ($action ==
'update') {
207 $object->oldcopy = clone $object;
209 $object->name =
GETPOST(
"nom",
'alphanohtml');
213 $ret = $extrafields->setOptionalsFromPost(
null, $object,
'@GETPOSTISSET');
218 if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
221 $object->entity =
GETPOST(
"entity",
"int");
224 $ret = $object->update();
226 if ($ret >= 0 && !count($object->errors)) {
234 $langs->load(
"errors");
240 $upload_dir = $conf->user->dir_output.
'/usergroups';
241 $permissiontoadd = $user->rights->user->user->creer;
242 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
250 llxHeader(
'', $langs->trans(
"GroupCard"));
253 $fuserstatic =
new User($db);
257 if ($action ==
'create') {
262 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="post">';
263 print
'<input type="hidden" name="token" value="'.newToken().
'">';
264 print
'<input type="hidden" name="action" value="add">';
265 print
'<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
269 print
'<table class="border centpercent tableforfieldcreate">';
272 if (!empty($conf->multicompany->enabled) && is_object($mc)) {
273 if (empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && $conf->entity == 1 && $user->admin && !$user->entity) {
274 print
"<tr>".
'<td class="tdtop">'.$langs->trans(
"Entity").
'</td>';
275 print
"<td>".$mc->select_entities($conf->entity);
276 print
"</td></tr>\n";
278 print
'<input type="hidden" name="entity" value="'.$conf->entity.
'" />';
283 include DOL_DOCUMENT_ROOT.
'/core/tpl/commonfields_add.tpl.php';
286 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_add.tpl.php';
292 print
'<div class="center">';
293 print
'<input class="button" name="add" value="'.$langs->trans(
"CreateGroup").
'" type="submit">';
295 print
'<input class="button button-cancel" value="'.$langs->trans(
"Cancel").
'" name="cancel" type="submit">';
306 $res = $object->fetch_optionals();
309 $title = $langs->trans(
"Group");
314 if ($action ==
'delete') {
315 print
$form->formconfirm($_SERVER[
'PHP_SELF'].
"?id=".$object->id, $langs->trans(
"DeleteAGroup"), $langs->trans(
"ConfirmDeleteGroup", $object->name),
"confirm_delete",
'', 0, 1);
322 if ($action !=
'edit') {
325 $linkback =
'<a href="'.DOL_URL_ROOT.
'/user/group/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
327 dol_banner_tab($object,
'id', $linkback, $user->rights->user->user->lire || $user->admin);
329 print
'<div class="fichecenter">';
330 print
'<div class="fichehalfleft">';
331 print
'<div class="underbanner clearboth"></div>';
333 print
'<table class="border centpercent tableforfield">';
336 if (!empty($conf->mutlicompany->enabled)) {
337 print
'<tr><td class="titlefield">'.$langs->trans(
"Name").
'</td>';
338 print
'<td class="valeur">'.dol_escape_htmltag($object->name);
339 if (empty($object->entity)) {
340 print
img_picto($langs->trans(
"GlobalGroup"),
'redstar');
342 print
"</td></tr>\n";
346 if (!empty($conf->multicompany->enabled) && is_object($mc) && empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && $conf->entity == 1 && $user->admin && !$user->entity) {
347 $mc->getInfo($object->entity);
348 print
"<tr>".
'<td class="titlefield">'.$langs->trans(
"Entity").
'</td>';
349 print
'<td class="valeur">'.dol_escape_htmltag($mc->label);
350 print
"</td></tr>\n";
353 unset($object->fields[
'nom']);
357 include DOL_DOCUMENT_ROOT.
'/core/tpl/commonfields_view.tpl.php';
360 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
366 print
'<div class="clearboth"></div>';
374 print
'<div class="tabsAction">';
377 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons',
$parameters, $object, $action);
383 print
'<a class="butAction" href="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'&action=edit&token='.
newToken().
'">'.$langs->trans(
"Modify").
'</a>';
386 if ($candisableperms) {
387 print
'<a class="butActionDelete" href="'.$_SERVER[
'PHP_SELF'].
'?action=delete&token='.
newToken().
'&id='.$object->id.
'">'.$langs->trans(
"DeleteGroup").
'</a>';
399 if (!empty($object->members)) {
400 foreach ($object->members as $useringroup) {
401 $exclude[] = $useringroup->id;
406 $parameters = array(
'caneditperms' => $caneditperms,
'exclude' => $exclude);
407 $reshook = $hookmanager->executeHooks(
'formAddUserToGroup',
$parameters, $object, $action);
408 print $hookmanager->resPrint;
410 if (empty($reshook)) {
412 print
'<form action="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'" method="POST">'.
"\n";
413 print
'<input type="hidden" name="token" value="'.newToken().
'">';
414 print
'<input type="hidden" name="action" value="adduser">';
415 print
'<table class="noborder centpercent">'.
"\n";
416 print
'<tr class="liste_titre"><td class="titlefield liste_titre">'.$langs->trans(
"NonAffectedUsers").
'</td>'.
"\n";
417 print
'<td class="liste_titre">';
418 print
$form->select_dolusers(
'',
'user', 1, $exclude, 0,
'',
'', $object->entity, 0, 0,
'', 0,
'',
'minwidth200 maxwidth500');
420 print
'<input type="hidden" name="entity" value="'.$conf->entity.
'">';
421 print
'<input type="submit" class="button buttongen button-add" value="'.$langs->trans(
"Add").
'">';
422 print
'</td></tr>'.
"\n";
423 print
'</table></form>'.
"\n";
431 print
'<div class="div-table-responsive">';
432 print
'<table class="noborder centpercent">';
433 print
'<tr class="liste_titre">';
434 print
'<td class="liste_titre">'.$langs->trans(
"Login").
'</td>';
435 print
'<td class="liste_titre">'.$langs->trans(
"Lastname").
'</td>';
436 print
'<td class="liste_titre">'.$langs->trans(
"Firstname").
'</td>';
437 print
'<td class="liste_titre center" width="5">'.$langs->trans(
"Status").
'</td>';
438 print
'<td class="liste_titre right" width="5"> </td>';
441 if (!empty($object->members)) {
442 foreach ($object->members as $useringroup) {
443 print
'<tr class="oddeven">';
444 print
'<td class="tdoverflowmax150">';
445 print $useringroup->getNomUrl(-1,
'', 0, 0, 24, 0,
'login');
446 if (
isModEnabled(
'multicompany') && $useringroup->admin && empty($useringroup->entity)) {
447 print
img_picto($langs->trans(
"SuperAdministrator"),
'redstar');
448 } elseif ($useringroup->admin) {
449 print
img_picto($langs->trans(
"Administrator"),
'star');
452 print
'<td>'.$useringroup->lastname.
'</td>';
453 print
'<td>'.$useringroup->firstname.
'</td>';
454 print
'<td class="center">'.$useringroup->getLibStatut(5).
'</td>';
455 print
'<td class="right">';
456 if (!empty($user->admin)) {
457 print
'<a href="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'&action=removeuser&token='.
newToken().
'&user='.$useringroup->id.
'">';
458 print
img_picto($langs->trans(
"RemoveFromGroup"),
'unlink');
463 print
"</td></tr>\n";
466 print
'<tr><td colspan="6" class="opacitymedium">'.$langs->trans(
"None").
'</td></tr>';
474 print
'<div class="fichecenter"><div class="fichehalfleft">';
482 $urlsource = $_SERVER[
"PHP_SELF"].
"?id=".$object->id;
483 $genallowed = $user->rights->user->user->creer;
484 $delallowed = $user->rights->user->user->supprimer;
486 $somethingshown = $formfile->showdocuments(
'usergroup', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0,
'', 0,
'', $mysoc->default_lang);
489 $linktoelem =
$form->showLinkToObjectBlock($object,
null,
null);
490 $somethingshown =
$form->showLinkedObjectBlock($object, $linktoelem);
492 print
'</div><div class="fichehalfright">';
499 print
'</div></div>';
506 if ($action ==
'edit' && $caneditperms) {
507 print
'<form action="'.$_SERVER[
'PHP_SELF'].
'" method="post" name="updategroup" enctype="multipart/form-data">';
508 print
'<input type="hidden" name="token" value="'.newToken().
'">';
509 print
'<input type="hidden" name="action" value="update">';
510 print
'<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
511 print
'<input type="hidden" name="id" value="'.$object->id.
'">';
515 print
'<table class="border centpercent tableforfieldedit">'.
"\n";
518 if (!empty($conf->multicompany->enabled) && is_object($mc)) {
519 if (empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && $conf->entity == 1 && $user->admin && !$user->entity) {
520 print
"<tr>".
'<td class="tdtop">'.$langs->trans(
"Entity").
'</td>';
521 print
"<td>".$mc->select_entities($object->entity);
522 print
"</td></tr>\n";
524 print
'<input type="hidden" name="entity" value="'.$conf->entity.
'" />';
529 include DOL_DOCUMENT_ROOT.
'/core/tpl/commonfields_edit.tpl.php';
532 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_edit.tpl.php';
538 print
$form->buttonsSaveCancel();