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))
43 $canreadperms = ($user->admin || $user->rights->user->group_advance->read);
44 $caneditperms = ($user->admin || $user->rights->user->group_advance->write);
45 $candisableperms = ($user->admin || $user->rights->user->group_advance->delete);
46 $feature2 =
'group_advance';
50 $langs->loadLangs(array(
'users',
'other'));
53 $action =
GETPOST(
'action',
'aZ09');
54 $cancel =
GETPOST(
'cancel',
'aZ09');
55 $confirm =
GETPOST(
'confirm',
'alpha');
56 $contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'groupcard';
57 $backtopage =
GETPOST(
'backtopage',
'alpha');
59 $userid =
GETPOST(
'user',
'int');
62 $result =
restrictedArea($user,
'user', $id,
'usergroup&usergroup', $feature2);
65 if (!empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE)
70 $object =
new Usergroup($db);
73 $extrafields->fetch_name_optionals_label($object->table_element);
76 include DOL_DOCUMENT_ROOT.
'/core/actions_fetchobject.inc.php';
80 $hookmanager->initHooks(array(
'groupcard',
'globalcard'));
88 $parameters = array(
'id' => $id,
'userid' => $userid,
'caneditperms' => $caneditperms);
89 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
90 if ($reshook < 0)
setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
92 if (empty($reshook)) {
93 $backurlforlist = DOL_URL_ROOT.
'/user/group/list.php';
95 if (empty($backtopage) || ($cancel && empty($id))) {
96 if (empty($backtopage) || ($cancel && strpos($backtopage,
'__ID__'))) {
97 if (empty($id) && (($action !=
'add' && $action !=
'create') || $cancel)) $backtopage = $backurlforlist;
98 else $backtopage =
dol_buildpath(
'/user/group/card.php', 1).
'?id='.($id > 0 ? $id :
'__ID__');
104 header(
"Location: ".$backtopage);
109 if ($action ==
'confirm_delete' && $confirm ==
"yes")
114 $object->delete($user);
115 header(
"Location: ".DOL_URL_ROOT.
"/user/group/list.php?restore_lastsearch_values=1");
118 $langs->load(
"errors");
124 if ($action ==
'add')
128 if (!
GETPOST(
"nom",
"nohtml")) {
132 $object->name =
GETPOST(
"nom",
'nohtml');
136 $ret = $extrafields->setOptionalsFromPost(null, $object);
137 if ($ret < 0) $error++;
139 if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) $object->entity = 0;
140 else $object->entity = $_POST[
"entity"];
144 $id = $object->create();
150 header(
"Location: ".
$_SERVER[
'PHP_SELF'].
"?id=".$object->id);
155 $langs->load(
"errors");
156 setEventMessages($langs->trans(
"ErrorGroupAlreadyExists", $object->name), null,
'errors');
161 $langs->load(
"errors");
167 if ($action ==
'adduser' || $action ==
'removeuser')
174 $object->oldcopy = clone $object;
176 $edituser =
new User($db);
177 $edituser->fetch($userid);
178 if ($action ==
'adduser') $result = $edituser->SetInGroup($object->id, $object->entity);
179 if ($action ==
'removeuser') $result = $edituser->RemoveFromGroup($object->id, $object->entity);
183 header(
"Location: ".
$_SERVER[
'PHP_SELF'].
"?id=".$object->id);
190 $langs->load(
"errors");
196 if ($action ==
'update')
204 $object->oldcopy = clone $object;
206 $object->name =
GETPOST(
"nom",
'nohtml');
210 $ret = $extrafields->setOptionalsFromPost(null, $object);
211 if ($ret < 0) $error++;
213 if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) $object->entity = 0;
214 else $object->entity = $_POST[
"entity"];
216 $ret = $object->update();
218 if ($ret >= 0 && !count($object->errors))
227 $langs->load(
"errors");
233 $upload_dir = $conf->usergroup->dir_output;
234 $permissiontoadd = $user->rights->user->user->creer;
235 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
243 llxHeader(
'', $langs->trans(
"GroupCard"));
245 $form =
new Form($db);
246 $fuserstatic =
new User($db);
247 $form =
new Form($db);
250 if ($action ==
'create')
256 print '<form action="'.$_SERVER[
"PHP_SELF"].
'" method="post">';
257 print '<input type="hidden" name="token" value="'.newToken().
'">';
258 print '<input type="hidden" name="action" value="add">';
259 print '<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
263 print '<table class="border centpercent tableforfieldcreate">';
266 if (!empty($conf->multicompany->enabled) && is_object($mc))
268 if (empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && $conf->entity == 1 && $user->admin && !$user->entity)
270 print "<tr>".
'<td class="tdtop">'.$langs->trans(
"Entity").
'</td>';
271 print "<td>".$mc->select_entities($conf->entity);
272 print "</td></tr>\n";
274 print '<input type="hidden" name="entity" value="'.$conf->entity.
'" />';
279 include DOL_DOCUMENT_ROOT.
'/core/tpl/commonfields_add.tpl.php';
282 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_add.tpl.php';
288 print '<div class="center">';
289 print '<input class="button" name="add" value="'.$langs->trans(
"CreateGroup").
'" type="submit">';
291 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')
316 print $form->formconfirm(
$_SERVER[
'PHP_SELF'].
"?id=".$object->id, $langs->trans(
"DeleteAGroup"), $langs->trans(
"ConfirmDeleteGroup", $object->name),
"confirm_delete",
'', 0, 1);
323 if ($action !=
'edit')
327 $linkback =
'<a href="'.DOL_URL_ROOT.
'/user/group/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
329 dol_banner_tab($object,
'id', $linkback, $user->rights->user->user->lire || $user->admin);
331 print '<div class="fichecenter">';
332 print '<div class="fichehalfleft">';
333 print '<div class="underbanner clearboth"></div>';
335 print '<table class="border centpercent tableforfield">';
338 if (!empty($conf->mutlicompany->enabled))
340 print '<tr><td class="titlefield">'.$langs->trans(
"Name").
'</td>';
341 print '<td class="valeur">'.dol_escape_htmltag($object->name);
342 if (empty($object->entity))
346 print "</td></tr>\n";
350 if (!empty($conf->multicompany->enabled) && is_object($mc) && empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && $conf->entity == 1 && $user->admin && !$user->entity)
352 $mc->getInfo($object->entity);
353 print "<tr>".
'<td class="titlefield">'.$langs->trans(
"Entity").
'</td>';
354 print '<td class="valeur">'.dol_escape_htmltag($mc->label);
355 print "</td></tr>\n";
358 unset($object->fields[
'nom']);
362 include DOL_DOCUMENT_ROOT.
'/core/tpl/commonfields_view.tpl.php';
365 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
371 print '<div class="clearboth"></div>';
380 print '<div class="tabsAction">';
382 $parameters = array();
383 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
384 if ($reshook < 0)
setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
388 print '<a class="butAction" href="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'&action=edit&token='.
newToken().
'">'.$langs->trans(
"Modify").
'</a>';
391 if ($candisableperms)
393 print '<a class="butActionDelete" href="'.$_SERVER[
'PHP_SELF'].
'?action=delete&id='.$object->id.
'&token='.
newToken().
'">'.$langs->trans(
"DeleteGroup").
'</a>';
405 if (!empty($object->members))
407 foreach ($object->members as $useringroup)
409 $exclude[] = $useringroup->id;
414 $parameters = array(
'caneditperms' => $caneditperms,
'exclude' => $exclude);
415 $reshook = $hookmanager->executeHooks(
'formAddUserToGroup', $parameters, $object, $action);
416 print $hookmanager->resPrint;
422 print '<form action="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'" method="POST">'.
"\n";
423 print '<input type="hidden" name="token" value="'.newToken().
'">';
424 print '<input type="hidden" name="action" value="adduser">';
425 print '<table class="noborder centpercent">'.
"\n";
426 print '<tr class="liste_titre"><td class="titlefield liste_titre">'.$langs->trans(
"NonAffectedUsers").
'</td>'.
"\n";
427 print '<td class="liste_titre">';
428 print $form->select_dolusers(
'',
'user', 1, $exclude, 0,
'',
'', $object->entity, 0, 0,
'', 0,
'',
'maxwidth300');
430 print '<input type="hidden" name="entity" value="'.$conf->entity.
'">';
431 print '<input type="submit" class="button buttongen" value="'.$langs->trans(
"Add").
'">';
432 print '</td></tr>'.
"\n";
433 print '</table></form>'.
"\n";
441 print '<table class="noborder centpercent">';
442 print '<tr class="liste_titre">';
443 print '<td class="liste_titre">'.$langs->trans(
"Login").
'</td>';
444 print '<td class="liste_titre">'.$langs->trans(
"Lastname").
'</td>';
445 print '<td class="liste_titre">'.$langs->trans(
"Firstname").
'</td>';
446 print '<td class="liste_titre center" width="5">'.$langs->trans(
"Status").
'</td>';
447 print '<td class="liste_titre right" width="5"> </td>';
450 if (!empty($object->members))
452 foreach ($object->members as $useringroup)
454 print '<tr class="oddeven">';
456 print $useringroup->getNomUrl(-1,
'', 0, 0, 24, 0,
'login');
457 if ($useringroup->admin && !$useringroup->entity) {
459 } elseif ($useringroup->admin) {
463 print '<td>'.$useringroup->lastname.
'</td>';
464 print '<td>'.$useringroup->firstname.
'</td>';
465 print '<td class="center">'.$useringroup->getLibStatut(5).
'</td>';
466 print '<td class="right">';
467 if (!empty($user->admin)) {
468 print '<a href="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'&action=removeuser&user='.$useringroup->id.
'">';
474 print "</td></tr>\n";
477 print '<tr><td colspan="6" class="opacitymedium">'.$langs->trans(
"None").
'</td></tr>';
484 print '<div class="fichecenter"><div class="fichehalfleft">';
492 $urlsource =
$_SERVER[
"PHP_SELF"].
"?id=".$object->id;
493 $genallowed = $user->rights->user->user->creer;
494 $delallowed = $user->rights->user->user->supprimer;
496 $somethingshown = $formfile->showdocuments(
'usergroup', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0,
'', 0,
'', $soc->default_lang);
499 $linktoelem = $form->showLinkToObjectBlock($object, null, null);
500 $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
502 print '</div><div class="fichehalfright"><div class="ficheaddleft">';
509 print '</div></div></div>';
516 if ($action ==
'edit' && $caneditperms)
518 print '<form action="'.$_SERVER[
'PHP_SELF'].
'" method="post" name="updategroup" enctype="multipart/form-data">';
519 print '<input type="hidden" name="token" value="'.newToken().
'">';
520 print '<input type="hidden" name="action" value="update">';
521 print '<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
522 print '<input type="hidden" name="id" value="'.$object->id.
'">';
526 print '<table class="border centpercent tableforfieldedit">'.
"\n";
529 if (!empty($conf->multicompany->enabled) && is_object($mc))
531 if (empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && $conf->entity == 1 && $user->admin && !$user->entity)
533 print "<tr>".
'<td class="tdtop">'.$langs->trans(
"Entity").
'</td>';
534 print "<td>".$mc->select_entities($object->entity);
535 print "</td></tr>\n";
537 print '<input type="hidden" name="entity" value="'.$conf->entity.
'" />';
542 include DOL_DOCUMENT_ROOT.
'/core/tpl/commonfields_edit.tpl.php';
545 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_edit.tpl.php';
551 print '<div class="center"><input type="submit" class="button button-save" name="save" value="'.$langs->trans(
"Save").
'">';
552 print ' <input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
Class to manage Dolibarr users.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
setEventMessages($mesg, $mesgs, $style= 'mesgs', $messagekey= '')
Set event messages in dol_events session object.
load_fiche_titre($titre, $morehtmlright= '', $picto= 'generic', $pictoisfullpath=0, $id= '', $morecssontable= '', $morehtmlcenter= '')
Load a title with picto.
img_picto($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt= '', $morecss= '', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
group_prepare_head($object)
Prepare array with list of tabs.
restrictedArea($user, $features, $objectid=0, $tableandshare= '', $feature2= '', $dbt_keyfield= 'fk_soc', $dbt_select= 'rowid', $isdraft=0)
Check permissions of a user to show a page and an object.
accessforbidden($message= '', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program Calling this function terminate execution ...
dol_sanitizeFileName($str, $newstr= '_', $unaccent=1)
Clean a string to use it as a file name.
print $_SERVER["PHP_SELF"]
Edit parameters.
dol_get_fiche_head($links=array(), $active= '', $title= '', $notab=0, $picto= '', $pictoisfullpath=0, $morehtmlright= '', $morecss= '', $limittoshow=0, $moretabssuffix= '')
Show tabs of a record.
print
Draft customers invoices.
dol_htmlcleanlastbr($stringtodecode)
This function remove all ending and br at end.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dol_banner_tab($object, $paramid, $morehtml= '', $shownav=1, $fieldid= 'rowid', $fieldref= 'ref', $morehtmlref= '', $moreparam= '', $nodbprefix=0, $morehtmlleft= '', $morehtmlstatus= '', $onlybanner=0, $morehtmlright= '')
Show tab footer of a card.
dol_set_focus($selector)
Set focus onto field with selector (similar behaviour of 'autofocus' HTML5 tag)