* Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2015 Jean-François Ferry * * 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 * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file settlements/settlementsindex.php * \ingroup settlements * \brief Home page of settlements top menu */ //print_r($_REQUEST);exit; // Load Dolibarr environment $res = 0; // Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"] . "/main.inc.php"; } // Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME $tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { $i--; $j--; } if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1)) . "/main.inc.php")) { $res = @include substr($tmp, 0, ($i + 1)) . "/main.inc.php"; } if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1))) . "/main.inc.php")) { $res = @include dirname(substr($tmp, 0, ($i + 1))) . "/main.inc.php"; } // Try main.inc.php using relative path if (!$res && file_exists("../main.inc.php")) { $res = @include "../main.inc.php"; } if (!$res && file_exists("../../main.inc.php")) { $res = @include "../../main.inc.php"; } if (!$res && file_exists("../../../main.inc.php")) { $res = @include "../../../main.inc.php"; } if (!$res) { die("Include of main fails"); } use Luracast\Restler\RestException; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT . '/user/class/usergroup.class.php'; require_once DOL_DOCUMENT_ROOT . '/custom/settlements/class/groupusers.class.php'; require_once DOL_DOCUMENT_ROOT . '/custom/settlements/class/usernaplo.class.php'; require_once DOL_DOCUMENT_ROOT . '/custom/settlements/class/clearallusernaplo.class.php'; require_once DOL_DOCUMENT_ROOT . '/custom/settlements/class/helper.class.php'; require_once DOL_DOCUMENT_ROOT . '/custom/settlements/class/group.class.php'; // Load translation files required by the page $langs->loadLangs(array("settlements@settlements")); $massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists) $massactionadd = GETPOST('massactionadd', 'alpha'); // The bulk action (combo box choice into lists) $action = GETPOST('action', 'aZ09'); $cancel = GETPOST('cancel', 'int'); $id = GETPOST('id', 'int'); $idmenu = GETPOST('idmenu', 'int'); $toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list $toselectString = GETPOST('toselectString', 'alpha'); // Array of ids of elements selected into a list $toselectnewuser = GETPOST('toselectnewuser', 'array'); // Array of ids of elements selected into a list $search_title = GETPOST('search_title', 'alpha'); $search_group_title = GETPOST('search_group_title', 'alpha'); $confirmmassaction = GETPOST('confirmmassaction', 'alpha'); $confirmbutton = GETPOST('confirmbutton', 'int'); $userclearall = GETPOST('userclearall', 'int'); $deleteall = GETPOST('deleteall', 'int'); $confirm = GETPOST('confirm', 'alpha'); // Security check // if (! $user->rights->settlements->myobject->read) { // accessforbidden(); // } if ($deleteall) { unset($_SESSION['usersArray']); } $socid = GETPOST('socid', 'int'); if (isset($user->socid) && $user->socid > 0) { $action = ''; $socid = $user->socid; } $max = 5; $now = dol_now(); $form = new Form($db); $formfile = new FormFile($db); $userNaplo = new UserNaplo($db); $clearAllUserNaplo = new ClearAllUserNaplo($db); $groupUsers = new GroupUsers($db); $helper = new Helper($db); $entities = $helper->getAllEntities(); $entitiesArray = []; $selectedEntities = ''; foreach ($entities as $key => $value) { $val = GETPOST('entity_' . $key, 'int'); $entitiesArray[$key] = $val; /* if ($val != '') { $entitiesArrayIsEmpty = false; } */ } if(empty(array_filter($entitiesArray))){ $entitiesArray[1] = 1; } $selectedEntities = $helper->getEntities($entitiesArrayIsEmpty, $entities, $entitiesArray); $groups = $helper->getFilteredGroups($search_group_title, $selectedEntities); $groupToolsAndGroupUsersArray = $helper->getGTAndGUArray(); if (empty($id) || $id == 0) { foreach ($groups as $group) { $keys[] = $group['rowid']; } unset($_SESSION['usersArray']); $id = $keys[0]; } $allUsers = $helper->getAllUsers($db); $usersOfGroups = $helper->getUsersById($db, $id); $isConfirmedTheGroup = empty($helper->getUsersOfGroupsFromNaploToday($db, $id)) && !empty($usersOfGroups); $confirmButtonDisplay = $isConfirmedTheGroup ? "display:block;" : "display:none;"; $permissiontoclearall = $user->hasRight('settlements', 'settlementsgroup', 'clearall'); llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', 'classforhorizontalscrolloftabs'); include DOL_DOCUMENT_ROOT . '/custom/settlements/core/actions_addupdatedelete.inc.php'; if ($massaction == 'delete' && $confirmmassaction != '') { $toselectString = implode(',', $toselect); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . ' ?toselectString=' . $toselectString . '&id=' . $id . '&massaction=' . $massaction, $langs->trans('UserDeleteConfirm'), $langs->trans('UserDeleteConfirmObject', $userString), 'confirm_users_delete', '', 0, 1); } if ($massactionadd == 'add' && $confirmmassaction != '') { $usersOfGroups = $helper->getUsersById($db, $id); $usersOfGroupsFromNaploToday = $helper->getUsersOfGroupsFromNaploToday($db, $id); $confirmed = !empty($usersOfGroupsFromNaploToday) && !empty($usersOfGroups); $db->begin(); $error = 0; $userObj = new User($db); $groupObj = new Group($db); $groupResult = $groupObj->fetch($id); $groupEntity = $groupObj->fk_entity; foreach ($_SESSION['usersArray'] as $newuser) { //print $newuser . '
'; $createResult = $groupUsers->createGroupUsers($id, $newuser); if ($createResult < 0) { //print '1'; $error++; } $data = $helper->createDataArray($id, $massactionadd, $newuser); $naploResult = $userNaplo->createUserNaplo($user, $data); if ($naploResult < 0) { //print '2'; $error++; } $userUpdateResult = $helper->updateUserEntityInUser($newuser, $groupEntity); if ($userUpdateResult < 0) { //print '3'; $error++; } } //print 'asdasd';exit; if ($error) { $db->rollback(); unset($_SESSION['usersArray']); setEventMessage($langs->trans("PackageUserFailed", 'error')); } else { $db->commit(); unset($_SESSION['usersArray']); $helper->returnWindowLocation($_SERVER["PHP_SELF"], $id, $idmenu); //setEventMessage($langs->trans("useradded")); } unset($_SESSION['usersArray']); } if ($confirmbutton) { $db->begin(); $error = 0; $groupusers = new GroupUsers($db); $groupObj = new Group($db); $groupResult = $groupObj->fetch($id); $groupEntity = $groupObj->fk_entity; foreach ($toselect as $selected) { $moredata = explode('_', $selected); $array = []; $deleteResult = $groupusers->deleteLine($user, $moredata[0]); if ($deleteResult < 0) { $error++; $array['deleteLine'] = 1; } $createResult = $groupUsers->createGroupUsers($confirmbutton, $moredata[1]); if ($createResult < 0) { $error++; $array['createGroupUsers'] = 1; } $dataAdd = $helper->createDataArray($confirmbutton, 'add', $moredata[1]); $naploResult = $userNaplo->createUserNaplo($user, $dataAdd); if ($naploResult < 0) { $error++; $array['createUserNaplo'] = 1; } $userUpdateResult = $helper->updateUserEntityInUser($moredata[1], $groupEntity); if ($userUpdateResult < 0) { $error++; $array['updateUserEntityInUser'] = 1; } } if ($error) { $db->rollback(); unset($toselect); setEventMessage($langs->trans("PackageUserFailed", 'error')); //setEventMessage(print_r($array), 'error'); } else { $confirmbutton = null; $db->commit(); $helper->returnWindowLocation($_SERVER["PHP_SELF"], $id, $idmenu); //setEventMessage($langs->trans("usersconfirmed")); } } if ($massaction == 'delete' && $confirmmassaction != '') { print $formconfirm; } $url = $_SERVER["PHP_SELF"] . '?idmenu=' . $idmenu . '&mainmenu=settlements&leftmenu=&id=' . $id; /* if ($massaction!=0 || $massactionadd != 0) { $url .= "&id={$id}"; } */ print '
' . "\n"; print ''; print ''; print ''; if ($permissiontoclearall) { if ($helper->userGroupsAreEmpty()) { print '
' . $langs->trans('EmptyUsersGroup') . '
'; } else { include DOL_DOCUMENT_ROOT . '/custom/settlements/core/tpl/userclearall.tpl.php'; } } print load_fiche_titre($langs->trans("UserGroups"), '', 'settlements.png@settlements'); include DOL_DOCUMENT_ROOT . '/custom/settlements/core/tpl/usercheckboxes.tpl.php'; //print_r($entitiesArrayIsEmpty);exit; print '
'; $columnWidth = 100 / count($entities); foreach ($entities as $key => $value) { if (!$entitiesArrayIsEmpty) { $checked = $entitiesArray[$key] == $key ? 'checked' : ''; } else { $checked = 'checked'; } print '
'; } print '
'; print '
'; print ''; print ''; //print ' print ''; print '
' . $langs->trans("groupname") . '
'; print $helper->groupList($groups, $id); print '
'; //--------------------------------------------- # 2 //--------------------------------------------- print '
'; print ''; print ''; /* print ''; */ if (!empty($usersOfGroups)) { print ''; if(!empty($toselect)){ $$toselectUsers = []; foreach($toselect as $toselectUser){ list($toselectKey, $toselectValue) = explode('_', $toselectUser); $toselectUsers[] = $toselectValue; } } foreach ($usersOfGroups as $user) { if(!empty($toselect)){ $checkedUser = in_array($user['fk_user'], $toselectUsers) ? 'checked' : ''; } $rowidAndStatus = $helper->checkStatusToUsergroups($user, $id); if ($rowidAndStatus['status'] == 1 || empty($rowidAndStatus)) { //if ($rowidAndStatus) { $CashCLosed = ''; $chkCol2Disabled = ''; } else { $CashCLosed = '

' . $langs->trans('dailyClosingisOpen') . ' 

'; $chkCol2Disabled = 'disabled'; } print ''; } } else { print ''; } print '
' . $langs->trans("usersingroup", $helper->getGroupRefByID($id)) . '
' . $langs->trans("selectall") . '
' . $user['lastname'] . ' ' . $user['firstname'] . ' (' . $user['login'] . ') ' . $CashCLosed . '
' . $langs->trans('nouser') . '
'; //--------------------------------------------- # 3 //--------------------------------------------- print '
'; print ''; print ''; print ''; print ''; print ''; print '' . "\n"; // End of page llxFooter(); $db->close(); ?>
' . $langs->trans("freeusers") . '
'; if (is_array($allUsers['freeUsers'])/* && !$isConfirmedTheGroup*/) { foreach ($allUsers['freeUsers'] as $freeUser) { $nickname = isset($freeUser['nickname']) ? '' . $freeUser['nickname'] . ' - ' : ''; $linkToDailyclosing = $freeUser['openDailyClosing'] > 0 ? '
' . $langs->trans('HasAnOpenDailyClosing') . 'Link
' : ''; $dCDisabled = $freeUser['openDailyClosing'] > 0 ? 'disabled' : ''; print ''; } } else { print ''; } print '
' . $nickname . $freeUser['lastname'] . ' ' . $freeUser['firstname'] . ' (' . $freeUser['login'] . ') ' . $linkToDailyclosing . '
' . $langs->trans('NoUser') . '
'; if (is_array($allUsers['addedUsers'])) { foreach ($allUsers['addedUsers'] as $addedUser) { $nickname = isset($addedUser['nickname']) ? '' . $addedUser['nickname'] . ' - ' : ''; print ''; print ''; } } print '
' . $nickname . $addedUser['lastname'] . ' ' . $addedUser['firstname'] . ' (' . $addedUser['login'] . ')
' . $addedUser['groupref'] . '
'; print '