action.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. global $_,$conf;
  3. switch($_['action']){
  4. case 'organizational_setting_save':
  5. Action::write(function(&$response){
  6. global $myUser,$conf,$_;
  7. User::check_access('organizational','configure');
  8. if(!$myUser->superadmin) return;
  9. foreach(Configuration::setting('organizational') as $key=>$value){
  10. if(!is_array($value)) continue;
  11. $allowed[] = $key;
  12. }
  13. foreach ($_['fields'] as $key => $value)
  14. if(in_array($key, $allowed)) $conf->put($key,$value);
  15. $response['message'] = 'Configuration enregistrée';
  16. });
  17. break;
  18. case 'organizational_employee_search':
  19. Action::write(function(&$response){
  20. global $myUser,$conf,$_;
  21. User::check_access('organizational','read');
  22. $users = array();
  23. $rootLogin = stripslashes($conf->get('organizational_root'));
  24. $filterOrigin = $conf->get('organizational_origin');
  25. $hiddenUsersRanks = $conf->get('organizational_hidden_users_ranks');
  26. if(empty($rootLogin)) throw new Exception("Merci de bien vouloir configurer le nom du PDG dans la partie réglages");
  27. $boss = User::byLogin($rootLogin);
  28. $allUsers = User::getAll(array('right' => false, 'force' => true));
  29. foreach($allUsers as $user)
  30. $users[$user->login] = $user;
  31. $managers = array();
  32. //création du tableau de managers
  33. foreach($allUsers as $index => $user){
  34. if(!isset($user->manager)|| !is_object($user->manager) || $user->manager->login=='') {
  35. unset($allUsers[$index]);
  36. unset($users[$index]);
  37. continue;
  38. };
  39. if($user->login=='') continue;
  40. if (($filterOrigin && $user->origin != $filterOrigin)
  41. || ($hiddenUsersRanks && strpos($hiddenUsersRanks, $user->login) !== false )) {
  42. unset($allUsers[$index]);
  43. unset($users[$index]);
  44. continue;
  45. }
  46. if(!isset($managers[$user->manager->login])){
  47. $managers[$user->manager->login] = array(
  48. 'manager' => $users[$user->manager->login],
  49. 'employees' => array()
  50. );
  51. }
  52. $managers[$user->manager->login]['employees'][] = $user;
  53. }
  54. $json = array();
  55. function organizational_tree($user,$users,$managers,&$json){
  56. $user->meta = json_decode($user->meta);
  57. $jsonUser = array(
  58. 'name' => $user->fullName(),
  59. 'manager' => isset($user->manager) ? $user->manager->fullName() : null ,
  60. 'title' => isset($user->function)? $user->function:'Employé',
  61. 'mobile' => $employee['mobile'] = !empty($user->mobile) ? $user->mobile : (isset($user->meta->personalPhone) ? $user->meta->personalPhone : $user->phone),
  62. 'mail' => $user->mail,
  63. 'avatar' => $user->getAvatar(),
  64. 'service' => $user->service,
  65. 'sst' => isset($user->meta->sst) && $user->meta->sst,
  66. );
  67. //var_dump($jsonUser['sst']);
  68. if(isset($managers[$user->login]) && count($managers[$user->login])!=0){
  69. $jsonUser['children'] = array();
  70. foreach($managers[$user->login]['employees'] as $subaltern){
  71. organizational_tree($subaltern,$users,$managers,$jsonUser['children']);
  72. }
  73. }
  74. $json[] = $jsonUser;
  75. }
  76. organizational_tree($boss,$users,$managers,$json);
  77. $response['json'] = (object) $json[0];
  78. $response['count'] = count($allUsers);
  79. });
  80. break;
  81. }
  82. ?>