diff --git a/apps/maarch_entreprise/admin/users/users_management_controler.php b/apps/maarch_entreprise/admin/users/users_management_controler.php index 447a731ef8114b99331877218af3470e0bc8fa38..536fd522b001b445b59bb71ae9b0f4effd26e749 100644 --- a/apps/maarch_entreprise/admin/users/users_management_controler.php +++ b/apps/maarch_entreprise/admin/users/users_management_controler.php @@ -518,31 +518,150 @@ function display_up_check($user_id) $old_user=$_POST['id']; $new_user=$_POST['user_id']; - if ($new_user <> 'NO_USER') { + if ($new_user <> 'no_user') { //LIST OF ENTITIES - $entitiesList = []; + $resListToCheck = []; + foreach ($_SESSION['m_admin']['entitiesUserToRedirect']['entity_id'] as $entity) { - $query = "SELECT res_id FROM res_letterbox WHERE confidentiality = 'Y' AND destination = ? AND dest_user = ? AND status <> 'END'"; + //CHECK LISTMODEL + if (isset($_POST['entityModels'])) { + $query = "UPDATE listmodels SET item_id = ? WHERE object_id = ? AND item_id = ?"; + $arrayPDO = array($new_user,$entity,$old_user); + $db->query($query, $arrayPDO); + } + + //CHECK DIFFLIST + $query = "SELECT distinct(r.res_id),r.dest_user FROM res_view_letterbox r INNER JOIN listinstance l ON r.res_id = l.res_id WHERE confidentiality = 'Y' AND destination = ? AND item_id = ? AND closing_date is null AND difflist_type = 'entity_id' and process_date is null"; $arrayPDO = array($entity,$old_user); $stmt = $db->query($query, $arrayPDO); - $res = $stmt->fetchObject(); - $resListToCheck[] = $res->res_id; + while ($res = $stmt->fetchObject()) { + $resListToCheck[] = $res->res_id; + $destList[] = $res->dest_user; + } + } - + $i=0; foreach ($resListToCheck as $res_id) { - //UPDATE res_letterbox - $query = "UPDATE res_letterbox SET dest_user = ? WHERE res_id = ?"; - $arrayPDO = array($new_user,$res_id); + if ($destList[$i] == $old_user) { + //UPDATE res_letterbox for dest + $query = "UPDATE res_letterbox SET dest_user = ? WHERE res_id = ?"; + $arrayPDO = array($new_user,$res_id); + $db->query($query, $arrayPDO); + } + + //UDPATE listinstance for all item_mode + $query = "UPDATE listinstance SET item_id = ? WHERE res_id = ? AND item_id = ? AND difflist_type = 'entity_id'"; + $arrayPDO = array($new_user, $res_id, $old_user); + $db->query($query, $arrayPDO); + + //ADD history entry + $query = "SELECT listinstance_id, item_mode FROM listinstance WHERE res_id = ? and item_id = ? AND difflist_type = 'entity_id'"; + $arrayPDO = array($res_id,$new_user); $stmt = $db->query($query, $arrayPDO); + while ($res = $stmt->fetchObject()) { + $listinstance_id = $res->listinstance_id; + $item_mode = $res->item_mode; + include_once 'core' . DIRECTORY_SEPARATOR . 'class' . DIRECTORY_SEPARATOR . 'class_history.php'; + $hist = new history(); + $hist->add( + ENT_LISTINSTANCE, + $listinstance_id, + 'UP', + 'diff'.$item_mode.'user', + 'Réaffectation du document confidentiel '.$res_id.' de '. $old_user .' à '. $new_user . ' en tant que "'.$item_mode.'"', + $_SESSION['config']['databasetype'], + 'entities' + ); + } + $i++; + } + + $resListToCheck = []; + foreach ($_SESSION['m_admin']['entitiesUserToRedirect']['entity_id'] as $entity) { + //CHECK VISA_CIRCUIT + $query = "SELECT distinct(r.res_id) FROM res_view_letterbox r INNER JOIN listinstance l ON r.res_id = l.res_id WHERE confidentiality = 'Y' AND destination = ? AND item_id = ? AND closing_date is null AND difflist_type = 'VISA_CIRCUIT' and process_date is null"; + $arrayPDO = array($entity,$old_user); + $stmt = $db->query($query, $arrayPDO); + while ($res = $stmt->fetchObject()) { + $resListToCheck[] = $res->res_id; + } + } + foreach ($resListToCheck as $res_id) { //UDPATE listinstance - $query = "UPDATE listinstance SET item_id = ? WHERE res_id = ? and item_mode = 'dest'"; - $arrayPDO = array($new_user,$res_id); + $query = "UPDATE listinstance SET item_id = ? WHERE res_id = ? AND item_id = ? AND difflist_type = 'VISA_CIRCUIT' and process_date is null"; + $arrayPDO = array($new_user,$res_id,$old_user); + $db->query($query, $arrayPDO); + + //ADD history entry + $query = "SELECT listinstance_id FROM listinstance WHERE res_id = ? AND item_id = ? AND difflist_type = 'VISA_CIRCUIT'"; + $arrayPDO = array($res_id,$new_user); $stmt = $db->query($query, $arrayPDO); + $res = $stmt->fetchObject(); + $listinstance_id = $res->listinstance_id; + include_once 'core' . DIRECTORY_SEPARATOR . 'class' . DIRECTORY_SEPARATOR . 'class_history.php'; + $hist = new history(); + $hist->add( + ENT_LISTINSTANCE, + $listinstance_id, + 'UP', + 'diffvisauser', + 'Réaffectation du document confidentiel '.$res_id.' de '. $old_user .' à '. $new_user . ' dans le circuit de visa', + $_SESSION['config']['databasetype'], + 'entities' + ); + + } + } else { + + $resListToCheck = []; + foreach ($_SESSION['m_admin']['entitiesUserToRedirect']['entity_id'] as $entity) { + if (isset($_POST['entityModels'])) { + //CHECK LISTMODELS + $query = "DELETE FROM listmodels WHERE item_id = ? AND object_id = ? AND item_mode <> 'dest'"; + $arrayPDO = array($old_user,$entity); + $db->query($query, $arrayPDO); + + //FIX AND RESET POS AND MODE VISA CIRCUIT + /*$query = "SELECT item_id FROM listmodels WHERE object_id = ? AND object_type = 'VISA_CIRCUIT' ORDER BY item_mode DESC, sequence ASC"; + $arrayPDO = array($entity); + $stmt = $db->query($query, $arrayPDO); + $nbRes = $stmt->rowCount(); + $i = 1; + + while ($res = $stmt->fetchObject()) { + if ($i == $nbRes) { + $query = "UPDATE listmodels SET SEQUENCE = '0', item_mode = 'sign' WHERE item_id = ? AND object_id = ? AND object_type = 'VISA_CIRCUIT'"; + $arrayPDO = array($res->item_id,$entity); + $db->query($query, $arrayPDO); + } else { + $query = "UPDATE listmodels SET SEQUENCE = ?, item_mode = 'visa' WHERE item_id = ? AND object_id = ? AND object_type = 'VISA_CIRCUIT'"; + $arrayPDO = array($i-1,$entity,$res->item_id); + $db->query($query, $arrayPDO); + } + $i++; + }*/ + } + + //CHECK VISA_CIRCUIT + $query = "SELECT distinct(r.res_id) FROM res_view_letterbox r INNER JOIN listinstance l ON r.res_id = l.res_id WHERE confidentiality = 'Y' AND destination = ? AND item_id = ? AND closing_date is null AND difflist_type = 'VISA_CIRCUIT' and process_date is null"; + $arrayPDO = array($entity,$old_user); + $stmt = $db->query($query, $arrayPDO); + while ($res = $stmt->fetchObject()) { + $resListToCheck[] = $res->res_id; + } + } + + foreach ($resListToCheck as $res_id) { + + //UDPATE listinstance + $query = "UPDATE listinstance SET item_id = ?, process_comment = '[DEL] supprimé - changement d’entité', process_date = CURRENT_TIMESTAMP WHERE res_id = ? AND item_id = ? AND difflist_type = 'VISA_CIRCUIT' and process_date is null"; + $arrayPDO = array($old_user,$res_id,$old_user); + $db->query($query, $arrayPDO); //ADD history entry - $query = "SELECT listinstance_id FROM listinstance WHERE res_id = ? and item_mode = 'dest'"; - $arrayPDO = array($res_id); + $query = "SELECT listinstance_id FROM listinstance WHERE res_id = ? AND item_id = ? AND difflist_type = 'VISA_CIRCUIT'"; + $arrayPDO = array($res_id,$old_user); $stmt = $db->query($query, $arrayPDO); $res = $stmt->fetchObject(); $listinstance_id = $res->listinstance_id; @@ -552,61 +671,109 @@ function display_up_check($user_id) ENT_LISTINSTANCE, $listinstance_id, 'UP', - 'diffdestuser', - 'Réaffectation du document confidentiel '.$res_id.' de '. $old_user .' à '. $new_user . ' en tant que "dest"', + 'diffvisauser', + 'Désactivation de l\'utilisateur '. $old_user .' dans le circuit de visa du document confidentiel '.$res_id, $_SESSION['config']['databasetype'], 'entities' ); - } + } + $resListToCheck = []; + foreach ($_SESSION['m_admin']['entitiesUserToRedirect']['entity_id'] as $entity) { + //CHECK Listinstance + $query = "SELECT distinct(r.res_id) FROM res_view_letterbox r INNER JOIN listinstance l ON r.res_id = l.res_id WHERE confidentiality = 'Y' AND destination = ? AND closing_date is null AND item_id = ? AND difflist_type = 'entity_id' AND item_mode <> 'dest' AND process_date is null"; + $arrayPDO = array($entity,$old_user); + $stmt = $db->query($query, $arrayPDO); + while ($res = $stmt->fetchObject()) { + $resListToCheck[] = $res->res_id; + } + } + + foreach ($resListToCheck as $res_id) { + + //UDPATE listinstance + $query = "UPDATE listinstance SET item_id = ?, process_comment = '[DEL] supprimé - changement d’entité', process_date = CURRENT_TIMESTAMP WHERE res_id = ? AND item_id = ? AND difflist_type = 'entity_id' AND process_date is null and item_mode <> 'dest'"; + $arrayPDO = array($old_user,$res_id,$old_user); + $db->query($query, $arrayPDO); + + //ADD history entry + $query = "SELECT listinstance_id,item_mode FROM listinstance WHERE res_id = ? AND item_id = ? AND difflist_type = 'entity_id'"; + $arrayPDO = array($res_id,$old_user); + $stmt = $db->query($query, $arrayPDO); + while ($res = $stmt->fetchObject()) { + $listinstance_id = $res->listinstance_id; + $item_mode = $res->item_mode; + include_once 'core' . DIRECTORY_SEPARATOR . 'class' . DIRECTORY_SEPARATOR . 'class_history.php'; + $hist = new history(); + $hist->add( + ENT_LISTINSTANCE, + $listinstance_id, + 'UP', + 'diff'.$item_mode.'user', + 'Désactivation de l\'utilisateur '. $old_user .' en tant que "'.$item_mode.'" du document confidentiel '.$res_id, + $_SESSION['config']['databasetype'], + 'entities' + ); + } + + } + } $_SESSION['info'] = _USER_UPDATED; + //echo '<script type="text/javascript">window.top.location=\''.$_SESSION['config']['businessappurl'] .'index.php?page=users_management_controler&admin=users&id='.$old_user.'&mode=up\'</script>'; echo '<script type="text/javascript">window.top.location=\''.$_SESSION['config']['businessappurl'] .'index.php?page=users_management_controler&admin=users&mode=list\'</script>'; } + $frm = ''; + $frm .= '<h1><i class="fa fa-user fa-2x"></i> '._UPDATE.' '.strtolower(_USER).': <i>'.$user_id.'</i></h1>'; + $frm .= '<div class="error" id="main_error">'.$_SESSION['error'].'</div>'; + $_SESSION['error'] = ""; + $frm .= '<br>'; + $frm .= '<div class="block">'; + + //INFO BLOCK + $frm .= '<h3 style="text-align:center;"><i class="fa fa-info-circle"></i> '._INFO_MESSAGE_UPDATE_USER.' <i class="fa fa-info-circle"></i></h3>'; + + //RESLIST + $frm .= '<br/>'; + $frm .= '<ul style="width: 400px;margin: auto;">'; + for ($i=0;$i<count($_SESSION['m_admin']['entitiesUserToRedirect']['entity_id']);$i++) { + $frm .= '<li style="list-style: inside;"><b>'.$_SESSION['m_admin']['entitiesUserToRedirect']['nbDocs'][$i].'</b> '._CONFIDENTIAL_DOCUMENTS .' ('._ENTITY.' <b>'.$_SESSION['m_admin']['entitiesUserToRedirect']['entity_id'][$i].')</b></li>'; + } + $frm .= '</ul>'; + $frm .= '<br/>'; + + //USER LIST REPLACEMENT + $frm .= '<form name="user_del" id="user_del" style="width: 100%;text-align:center;margin:auto;" method="post" class="forms">'; + $frm .= '<input type="hidden" value="'.$user_id.'" name="id">'; + $frm .= '<select name="user_id" id="user_id">'; + $frm .= '<option value="no_user">'._NO_REPLACEMENT.'</option>'; + $stmt = $db->query("select * from users order by user_id ASC"); + while ($users = $stmt->fetchObject()) { + if ($users->user_id != $user_id) { + $frm .= '<option value="'.$users->user_id.'">'.$users->lastname.' '.$users->firstname.'</option>'; + } + } + $frm .= '</select>'; - echo '<h1><i class="fa fa-users fa-2x"></i>'._UPDATE.' '.strtolower(_USER).': <i>'.$user_id.'</i></h1>'; - echo "<div class='error' id='main_error'>".$_SESSION['error']."</div>"; - $_SESSION['error'] = ""; - ?> - <br> - <div class="block"> - <div id="main_error" style="text-align:center;"> - <b><?php - echo _WARNING_MESSAGE_UPDATE_USER; - ?></b> - </div> - <br/> - <form name="user_del" id="user_del" style="width: 350px;margin:auto;" method="post" class="forms"> - <input type="hidden" value="<?php functions::xecho($user_id);?>" name="id"> - <?php - for ($i=0;$i<count($_SESSION['m_admin']['entitiesUserToRedirect']['entity_id']);$i++) { - echo "<h3>".$_SESSION['m_admin']['entitiesUserToRedirect']['nbDocs'][$i]." "._CONFIDENTIAL_DOCUMENTS ." ("._TO." ".$user_id." - ".$_SESSION['m_admin']['entitiesUserToRedirect']['entity_id'][$i]."):</h3>"; - } - ?> - <br> - <br> - <select name="user_id" id="user_id" onchange=''> - <option value="no_user"><?php echo _NO_REPLACEMENT;?></option> - <?php - $stmt = $db->query("select * from users order by user_id ASC"); - while ($users = $stmt->fetchObject()) { - if ($users->user_id != $user_id) { - ?> - <option value="<?php functions::xecho($users->user_id);?>"><?php functions::xecho($users->lastname . " " . $users->firstname);?></option> - <?php - } - - } - ?> - </select> - <p class="buttons"> - <input type="submit" value="<?php echo _DEL_AND_REAFFECT;?>" name="valid" class="button" onclick='if(document.getElementById("doc_type_id").options[document.getElementById("doc_type_id").selectedIndex].value == ""){alert("<?php echo _CHOOSE_REPLACEMENT_DOCTYPES ?> !");return false;}else{return(confirm("<?php echo _REALLY_DELETE.$s_id;?> \n\r\n\r<?php echo _DEFINITIVE_ACTION?>"));}'/> - <input type="button" value="<?php echo _CANCEL;?>" class="button" onclick="window.location.href='<?php echo $_SESSION['config']['businessappurl'] ?>index.php?page=usergroups_management_controler&mode=list&admin=groups&order=<?php functions::xecho($_REQUEST['order']);?>&order_field=<?php functions::xecho($_REQUEST['order_field']);?>&start=<?php functions::xecho($_REQUEST['start']);?>&what=<?php functions::xecho($_REQUEST['what']);?>';"/> - </p> - </form> - </div> - <?php - exit(); + //CLEAN LISTMODEL BUTTON + $frm .= '<input type="checkbox" name="entityModels" id="entityModels" /> '._MESSAGE_REAFFECT_USER_LISTMODEL; + + $frm .= '<br/>'; + $frm .= '<br/>'; + + //WARNING BLOCK + $frm .= '<p style="text-align:center;color:red;"><i class="fa fa-warning"></i> '._WARNING_MESSAGE_UPDATE_USER.' <i class="fa fa-warning"></i></p>'; + + //ACTIONS BUTTONS + $frm .= '<p class="buttons">'; + $frm .= '<input type="submit" value="'._DEL_AND_REAFFECT.'" name="valid" class="button" />'; + $frm .= ' <input type="button" value="'._CANCEL.'" class="button" onclick="window.location.href=\''.$_SESSION['config']['businessappurl'].'index.php?page=users_management_controler&mode=up&admin=users&id='.$user_id.'&order='.$_REQUEST['order'].'&order_field='.$_REQUEST['order_field'].'&start='.$_REQUEST['start'].'&what='.$_REQUEST['what'].'\'" />'; + $frm .= '</p>'; + + $frm .= '</form>'; + $frm .= '</div>'; + echo $frm; + exit(); } /** @@ -735,8 +902,8 @@ function validate_user_submit() } for ($i=0;$i<count($entitiesUserCheck);$i++) { if (!in_array($entitiesUserCheck[$i]['ENTITY_ID'], $newUserEntitiesList)) { - $query = "SELECT count(res_id) FROM res_letterbox WHERE confidentiality = 'Y' AND destination = ? AND dest_user = ? AND status <> 'END'"; - $arrayPDO = array($entitiesUserCheck[$i]['ENTITY_ID'],$_REQUEST['user_id']); + $query = "SELECT count(distinct(r.res_id)) FROM res_view_letterbox r INNER JOIN listinstance l ON r.res_id = l.res_id WHERE ((dest_user = ? and item_id = ?) OR (item_id = ? AND difflist_type = 'entity_id' AND process_comment is null) OR (item_id = ? AND difflist_type = 'VISA_CIRCUIT' AND process_date is null)) AND closing_date is null AND confidentiality = 'Y' AND destination = ?"; + $arrayPDO = array($_REQUEST['user_id'],$_REQUEST['user_id'],$_REQUEST['user_id'],$_REQUEST['user_id'],$entitiesUserCheck[$i]['ENTITY_ID']); $stmt = $db->query($query, $arrayPDO); $res = $stmt->fetchObject(); if ($res->count > 0) { @@ -894,6 +1061,7 @@ function validate_user_submit() } unset($_SESSION['m_admin']); header("location: ".$_SESSION['config']['businessappurl']."index.php?page=".$pageName."&mode=list&admin=users&order=".$status['order']."&order_field=".$status['order_field']."&start=".$status['start']."&what=".$status['what']); + //header("location: ".$_SESSION['config']['businessappurl']."index.php?page=".$pageName."&mode=up&admin=users&id=".$_REQUEST['user_id']."&order=".$status['order']."&order_field=".$status['order_field']."&start=".$status['start']."&what=".$status['what']); } } diff --git a/apps/maarch_entreprise/index.php b/apps/maarch_entreprise/index.php index 220bb57d71706937986ab178b6dd27f364026aa1..98940818e980c3208c84fd022822550ab779edfa 100644 --- a/apps/maarch_entreprise/index.php +++ b/apps/maarch_entreprise/index.php @@ -327,7 +327,7 @@ if (file_exists($path)) { <script> var main_error = $j('#main_error_popup'); if (main_error != null) { - main_error.style.display = 'table-cell'; + main_error.css({"display":"table-cell"}) Element.hide.delay(10, 'main_error_popup'); } </script> @@ -339,7 +339,7 @@ if (file_exists($path)) { <script> var main_info = $j('#main_info'); if (main_info != null) { - main_info.style.display = 'table-cell'; + main_info.css({"display":"table-cell"}) Element.hide.delay(10, 'main_info'); } </script> diff --git a/apps/maarch_entreprise/lang/en.php b/apps/maarch_entreprise/lang/en.php index 00914a2257d8695fea4ff9371e208509bbfae189..83830e903cb0b36c877ce4ebdd01abec937c8e3f 100644 --- a/apps/maarch_entreprise/lang/en.php +++ b/apps/maarch_entreprise/lang/en.php @@ -149,6 +149,12 @@ if (!defined("_WARNING_MESSAGE_DEL_GROUP")) define("_WARNING_MESSAGE_DEL_GROUP", "Warning :<br>There are users associated to this group. Choose a replacement group:"); if (!defined("_WARNING_MESSAGE_DEL_USER")) define("_WARNING_MESSAGE_DEL_USER", "Warning :<br> There are diffusion lists associated to this user. Choose a replacement user:"); +if (!defined("_INFO_MESSAGE_UPDATE_USER")) + define("_INFO_MESSAGE_UPDATE_USER", "In order to keep confidentiality of documents in progress of current user's entity, you can replace him with another user"); +if (!defined("_WARNING_MESSAGE_UPDATE_USER")) + define("_WARNING_MESSAGE_UPDATE_USER", "If you choose \"NO REPLACEMENT\" and current user is in dest, he can't be removed !"); +if (!defined("_MESSAGE_REAFFECT_USER_LISTMODEL")) + define("_MESSAGE_REAFFECT_USER_LISTMODEL", "Include user reassignment in list models"); if (!defined("_USERS_IN_GROUPS")) define("_USERS_IN_GROUPS", "Users in the group"); if (!defined("_LISTE_DIFFUSION_IN_USER")) define("_LISTE_DIFFUSION_IN_USER", "Diffusion list(s) for the user"); diff --git a/apps/maarch_entreprise/lang/fr.php b/apps/maarch_entreprise/lang/fr.php index 912f6e52388f2208a382c9c65d33d6d0d1e4abcc..6975039a1dae17a26a8b34e57ef916b107539703 100755 --- a/apps/maarch_entreprise/lang/fr.php +++ b/apps/maarch_entreprise/lang/fr.php @@ -148,9 +148,13 @@ if (!defined("_WARNING_MESSAGE_DEL_TYPE")) if (!defined("_WARNING_MESSAGE_DEL_GROUP")) define("_WARNING_MESSAGE_DEL_GROUP", "Avertissement :<br> Il existe des utilisateurs associés à ce groupe. Choisissez un groupe de remplacement :"); if (!defined("_WARNING_MESSAGE_DEL_USER")) - define("_WARNING_MESSAGE_DEL_USER", "Avertissement :<br> Il existe des modèles de liste de diffusion avec cet utilisateur. Choisissez un utilisateur de remplacement :"); + define("_WARNING_MESSAGE_DEL_USER", "Avertissement :<br> Il existe des listes de diffusion associées à cet utilisateur. Choisissez un utilisateur de remplacement :"); +if (!defined("_INFO_MESSAGE_UPDATE_USER")) + define("_INFO_MESSAGE_UPDATE_USER", "Afin de garder la confidentialité des courriers en cours de traitement du service, il est recommandé de réaffecter ceux-ci à un autre utilisateur"); if (!defined("_WARNING_MESSAGE_UPDATE_USER")) - define("_WARNING_MESSAGE_UPDATE_USER", "Avertissement :<br>Afin de garder la confidentialité des courriers en cours de traitement du service, il est recommandé de réaffecter ceux-ci à un autre utilisateur :"); + define("_WARNING_MESSAGE_UPDATE_USER", "Si vous choisissez \"AUCUN REMPLACEMENT\" et que l'utilisateur actuel est en destinataire, celui ne sera pas supprimé !"); +if (!defined("_MESSAGE_REAFFECT_USER_LISTMODEL")) + define("_MESSAGE_REAFFECT_USER_LISTMODEL", "Inclure la réaffectation dans les modèles de liste de diffusion"); if (!defined("_USERS_IN_GROUPS")) define("_USERS_IN_GROUPS", "utilisateur(s) dans le groupe"); if (!defined("_LISTE_DIFFUSION_IN_USER")) define("_LISTE_DIFFUSION_IN_USER", "liste(s) de diffusion pour l'utilisateur "); diff --git a/modules/entities/difflist_display.php b/modules/entities/difflist_display.php index 40c3c67840160570ea70173c37a0ea51bf7ebf50..ee7a3f08293b757125781958ddb6c13966aa2893 100644 --- a/modules/entities/difflist_display.php +++ b/modules/entities/difflist_display.php @@ -1,103 +1,112 @@ -<?php -# Display list -/* Requires - $difflist = diffusion list array - $_SESSION[m_admin]['entities'][listmodel] - $_SESSION[$origin][listinstance] - $roles = list of available roles - $onlyCC = hide 'dest'; -*/ - echo '<div style="max-height:490px;overflow:auto;">'; - $empty = 0; - $nb_roles = 0; - if($origin == 'indexing' && $category == 'outgoing'){ - //$difflist['copy'] = array(); - } - - foreach($roles as $role_id => $role_label) { - $nb_role++; - if($category == 'outgoing' && $role_label == 'Destinataire'){ - $role_label = _SHIPPER; - } - if(($specific_role != $role_id && $specific_role.'_copy' != $role_id && $specific_role.'_info' != $role_id) && isset($specific_role) && $specific_role <> '') - continue; - if(count($difflist[$role_id]['users']) > 0 - || count($difflist[$role_id]['entities']) > 0 - ) { - $empty++; - ?> - <h3 class="sstit" style="font-size: 1.2em;"><?php functions::xecho($role_label);?></h3><?php - if(count($difflist[$role_id]['users']) > 0) { ?> - <table cellpadding="0" cellspacing="0" border="0" class="listingsmall liste_diff spec" style="width:100%;margin:0;"><?php - $color = ' class="col"'; - for($i=0, $l=count($difflist[$role_id]['users']); - $i<$l; - $i++ - ) { - $user = $difflist[$role_id]['users'][$i]; - - if ($color == ' class="col"') $color = ' '; - else $color = ' class="col"';?> - <tr <?php echo $color;?> > - <td style="width:15%;text-align:center;"> - <i class="fa fa-user fa-2x" title="<?php echo _USER;?>"></i> - </td> - <td style="width:10%;"><?php - /* if($user['visible'] == 'Y') { ?> - <i class="fa fa-check fa-2x" title="<?php echo _VISIBLE;?>"></i> <?php - } else {?> - <i class="fa fa-times fa-2x" title="<?php echo _NOT_VISIBLE;?>"></i><?php - } */?> - </td> - <td style="width:37%;"><?php functions::xecho($user['lastname'] . " " . $user['firstname']);?></td> - <td style="width:38%;"><?php functions::xecho($user['entity_label']);?></td> - <?php - if($showStatus == true){ - if(!empty($difflist[$role_id]['users'][$i]['process_date'])){ - echo '<td style="width:5%;"><i class="fa fa-check" aria-hidden="true" style="color:green;"></i></td>'; - }else{ - echo '<td style="width:5%;"><i class="fa fa-hourglass-half" aria-hidden="true"></i></td>'; - } - } - - ?> - </tr><?php - } ?> - </table><?php - } - if(count($difflist[$role_id]['entities']) > 0) { ?> - <table cellpadding="0" cellspacing="0" border="0" class="listingsmall liste_diff spec" style="width:100%;margin:0;"><?php - $color = ' class="col"'; - for ($i=0, $l=count($difflist[$role_id]['entities']); - $i<$l; - $i++ - ) { - $entity = $difflist[$role_id]['entities'][$i]; - if ($color == ' class="col"') $color = ''; - else $color = ' class="col"';?> - <tr <?php echo $color;?> > - <td style="width:15%;text-align:center;"> - <i class="fa fa-sitemap fa-2x" title="<?php echo _ENTITY . " " . $role_label ;?>" ></i> - </td> - <td style="width:10%;"><?php - /*if($entity['visible'] == 'Y') { ?> - <i class="fa fa-check fa-2x" title="<?php echo _VISIBLE;?>"></i><?php - } else {?> - <i class="fa fa-times fa-2x" title="<?php echo _NOT_VISIBLE;?>"></i><?php - }*/ ?> - </td> - <td style="width:37%;"><?php functions::xecho($entity['entity_id']);?></td> - <td style="width:38%;"><?php functions::xecho($entity['entity_label']);?></td> - </tr> <?php - } ?> - </table><?php - } ?> - <br/><?php - } - } - - if($empty == $nb_roles){ - echo '<div style="font-style:italic;text-align:center;color:#ea0000;margin:10px;">'._DIFF_LIST.' '._IS_EMPTY.'</div>'; - } -echo '</div>'; -?> +<?php +# Display list +/* Requires + $difflist = diffusion list array + $_SESSION[m_admin]['entities'][listmodel] + $_SESSION[$origin][listinstance] + $roles = list of available roles + $onlyCC = hide 'dest'; +*/ + echo '<div style="max-height:490px;overflow:auto;">'; + $empty = 0; + $nb_roles = 0; + if($origin == 'indexing' && $category == 'outgoing'){ + //$difflist['copy'] = array(); + } + + foreach($roles as $role_id => $role_label) { + $nb_role++; + if($category == 'outgoing' && $role_label == 'Destinataire'){ + $role_label = _SHIPPER; + } + if(($specific_role != $role_id && $specific_role.'_copy' != $role_id && $specific_role.'_info' != $role_id) && isset($specific_role) && $specific_role <> '') + continue; + if(count($difflist[$role_id]['users']) > 0 + || count($difflist[$role_id]['entities']) > 0 + ) { + $empty++; + ?> + <h3 class="sstit" style="font-size: 1.2em;"><?php functions::xecho($role_label);?></h3><?php + if(count($difflist[$role_id]['users']) > 0) { ?> + <table cellpadding="0" cellspacing="0" border="0" class="listingsmall liste_diff spec" style="width:100%;margin:0;"><?php + $color = ' class="col"'; + for($i=0, $l=count($difflist[$role_id]['users']); + $i<$l; + $i++ + ) { + $user = $difflist[$role_id]['users'][$i]; + + if ($color == ' class="col"') $color = ' '; + else $color = ' class="col"'; + + if (preg_match("/[DEL]/", $difflist[$role_id]['users'][$i]['process_comment'])) { + $styleMoved=" style='text-decoration: line-through;opacity:0.5;' "; + $descMoved=$difflist[$role_id]['users'][$i]['process_comment']; + } else { + $styleMoved=""; + $descMoved=""; + } + ?> + <tr <?php echo $color.$styleMoved;?> title="<?php echo $descMoved;?>"> + <td style="width:15%;text-align:center;"> + <i class="fa fa-user fa-2x" title="<?php echo _USER;?>"></i> + </td> + <td style="width:10%;"><?php + /* if($user['visible'] == 'Y') { ?> + <i class="fa fa-check fa-2x" title="<?php echo _VISIBLE;?>"></i> <?php + } else {?> + <i class="fa fa-times fa-2x" title="<?php echo _NOT_VISIBLE;?>"></i><?php + } */?> + </td> + <td style="width:37%;"><?php functions::xecho($user['lastname'] . " " . $user['firstname']);?></td> + <td style="width:38%;"><?php functions::xecho($user['entity_label']);?></td> + <?php + if($showStatus == true){ + if(!empty($difflist[$role_id]['users'][$i]['process_date'])){ + echo '<td style="width:5%;"><i class="fa fa-check" aria-hidden="true" style="color:green;"></i></td>'; + }else{ + echo '<td style="width:5%;"><i class="fa fa-hourglass-half" aria-hidden="true"></i></td>'; + } + } + + ?> + </tr><?php + } ?> + </table><?php + } + if(count($difflist[$role_id]['entities']) > 0) { ?> + <table cellpadding="0" cellspacing="0" border="0" class="listingsmall liste_diff spec" style="width:100%;margin:0;"><?php + $color = ' class="col"'; + for ($i=0, $l=count($difflist[$role_id]['entities']); + $i<$l; + $i++ + ) { + $entity = $difflist[$role_id]['entities'][$i]; + if ($color == ' class="col"') $color = ''; + else $color = ' class="col"';?> + <tr <?php echo $color;?> > + <td style="width:15%;text-align:center;"> + <i class="fa fa-sitemap fa-2x" title="<?php echo _ENTITY . " " . $role_label ;?>" ></i> + </td> + <td style="width:10%;"><?php + /*if($entity['visible'] == 'Y') { ?> + <i class="fa fa-check fa-2x" title="<?php echo _VISIBLE;?>"></i><?php + } else {?> + <i class="fa fa-times fa-2x" title="<?php echo _NOT_VISIBLE;?>"></i><?php + }*/ ?> + </td> + <td style="width:37%;"><?php functions::xecho($entity['entity_id']);?></td> + <td style="width:38%;"><?php functions::xecho($entity['entity_label']);?></td> + </tr> <?php + } ?> + </table><?php + } ?> + <br/><?php + } + } + + if($empty == $nb_roles){ + echo '<div style="font-style:italic;text-align:center;color:#ea0000;margin:10px;">'._DIFF_LIST.' '._IS_EMPTY.'</div>'; + } +echo '</div>'; +?> diff --git a/modules/visa/class/class_modules_tools_Abstract.php b/modules/visa/class/class_modules_tools_Abstract.php index 9753faf7cbfa604aaa98ed3b9b0c7a3756fd9f09..e29657cc1d9397a90a260249557caa2f32d8b241 100644 --- a/modules/visa/class/class_modules_tools_Abstract.php +++ b/modules/visa/class/class_modules_tools_Abstract.php @@ -552,11 +552,11 @@ abstract class visa_Abstract extends Database }else{ $str .= '<div id="emptyVisa" style="display:none;"><strong><em>' . _EMPTY_VISA_WORKFLOW . '</em></strong></div>'; if(count($circuit['visa']['users']) > 0){ + $isCurrentVisa = false; foreach ($circuit['visa']['users'] as $it=>$info_userVis) { if(empty($info_userVis['process_date'])){ - if(($lastUserVis == true && $isVisaStep == true)){ + if($lastUserVis == true && $isVisaStep == true && $isCurrentVisa === false){ $vised = ' currentVis'; - $disabled = ''; $link_vis = 'arrow-right '; $del_vis = '<div class="delete_visa"></div>'; @@ -594,20 +594,31 @@ abstract class visa_Abstract extends Database $info_vised = ''; $link_vis = 'hourglass-half'; - } $lastUserVis = false; + $isCurrentVisa = true; }else{ $lastUserVis = true; $modif = 'false'; - $vised = ' vised'; - $link_vis = 'check'; + + $disabled = ' disabled="disabled"'; - $info_vised = '<br/><sub>visé le : '.functions::format_date_db($info_userVis['process_date'],'','',true).'</sub>'; - $del_vis = ''; + if(preg_match("/[DEL]/", $info_userVis['process_comment'])){ + $info_vised = ''; + $link_vis = 'times'; + $vised = ' moved vised'; + $del_vis = '<i class="fa fa-trash" aria-hidden="true" onclick="delVisaUser(this.parentElement.parentElement);" title="'._DELETE.'"></i>'; + }else{ + $info_vised = '<br/><sub>visé le : '.functions::format_date_db($info_userVis['process_date'],'','',true).'</sub>'; + $link_vis = 'check'; + $vised = ' vised'; + $del_vis = ''; + } + + } //VISA USER LINE CIRCUIT $str .= '<div class="droptarget'.$vised.'" id="visa_'.$i.'" draggable="'.$modif.'">'; @@ -639,9 +650,8 @@ abstract class visa_Abstract extends Database //FOR USER SIGN foreach ($circuit['sign']['users'] as $info_userSign) { - - if(empty($info_userSign['process_date'])){ - if($lastUserVis == true && $isVisaStep == true){ + if(empty($info_userSign['process_date'])) { + if(($lastUserVis == true && $isVisaStep == true)) { $vised = ' currentVis'; $modif = 'false'; $disabled = ''; @@ -682,10 +692,18 @@ abstract class visa_Abstract extends Database } }else{ - $modif = 'false'; - $vised = ' vised'; - $link_vis = 'check'; - $info_vised = '<br/><sub>signé le : '.functions::format_date_db($info_userSign['process_date'],'','',true).'</sub>'; + $modif = 'false'; + if (preg_match("/[DEL]/", $info_userSign['process_comment'])) { + $info_vised = ''; + $link_vis = 'times'; + $vised = ' moved vised'; + $del_vis = '<i class="fa fa-trash" aria-hidden="true" onclick="delVisaUser(this.parentElement.parentElement);" title="'._DELETE.'"></i>'; + }else{ + $vised = ' vised'; + $link_vis = 'check'; + $info_vised = '<br/><sub>signé le : '.functions::format_date_db($info_userSign['process_date'],'','',true).'</sub>'; + } + } //VISA USER LINE CIRCUIT $str .= '<div class="droptarget'.$vised.'" id="visa_'.$i.'" draggable="'.$modif.'">'; diff --git a/modules/visa/css/module.css b/modules/visa/css/module.css index 12a27aca50fffd9b024c5a3796c6cd98c7775e0b..39a9ea3b6c0c19c1be06f6a60ba5dce8b998a806 100644 --- a/modules/visa/css/module.css +++ b/modules/visa/css/module.css @@ -144,6 +144,12 @@ border: solid 2px green; } +.moved{ + opacity: 0.5 !important; + color : #666 !important; + border: solid 2px white !important; +} + .droptarget input{ width : 100%; }