directory.plugin.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. require_once(__DIR__.SLASH.'QRCode.class.php');
  3. function directory_plugin_menu(&$accountMenu){
  4. global $_, $myUser;
  5. if(!$myUser->connected()) throw new Exception('Vous devez être connecté pour accéder à cette fonctionnalité',401);
  6. $accountMenu[]= array(
  7. 'sort' =>1,
  8. 'url' => 'account.php?section=directory',
  9. 'icon' => 'fas fa-angle-right',
  10. 'label' => 'Annuaire',
  11. );
  12. }
  13. function directory_get_contacts(){
  14. $users = User::getAll();
  15. $userMapping = array();
  16. foreach ($users as $user) {
  17. $userMapping[$user->login] = array(
  18. 'object'=>$user,
  19. 'values' => array(
  20. 'Nom' => strtoupper($user->name).' '.$user->firstname,
  21. 'Email' => '<a href="mailto:'.$user->mail.'">'.$user->mail.'</a>',
  22. 'Fixe' => '<a href="tel: '.$user->phone.'">'.$user->phone.'</a>',
  23. 'Portable (pro)' => '<a href="tel: '.$user->mobile.'">'.$user->mobile.'</a>'
  24. )
  25. );
  26. }
  27. Plugin::callHook('directory_list',array(&$userMapping));
  28. $columns = array();
  29. $reference = array();
  30. foreach ($userMapping as $infos) {
  31. if(isset($infos['values']) && count($infos['values']) > count($reference)) $reference = $infos['values'];
  32. }
  33. if(!empty($reference)) $columns = array_keys($reference);
  34. //Tri par ordre alphabétique
  35. uasort($userMapping, function($a, $b){
  36. return strcmp($a['object']->name, $b['object']->name);
  37. });
  38. return array($columns,$userMapping);
  39. }
  40. //cette fonction comprends toutes les actions du plugin qui ne nécessitent pas de vue html
  41. function directory_action(){
  42. require_once(__DIR__.SLASH.'action.php');
  43. }
  44. function directory_plugin_page(){
  45. global $myUser,$_;
  46. if(!isset($_['section']) || $_['section']!='directory') return;
  47. if($myUser!=false){
  48. list($columns,$userMapping) = directory_get_contacts();
  49. ?>
  50. <div class="tab-pane fade show active">
  51. <h3>Annuaire</h3>
  52. <p>Annuaire de la société</p>
  53. <hr>
  54. <a type="btn" href="action.php?action=directory_get_excel" class="btn btn-primary" title="Excel"><i class="far fa-file-excel"></i> Exporter l'annuaire (.csv)</a>
  55. <br/><br/>
  56. <table class="table table-striped table-bordered table-hover">
  57. <thead>
  58. <tr>
  59. <?php foreach($columns as $column): ?>
  60. <th><?php echo $column; ?></th>
  61. <?php endforeach; ?>
  62. <th>Action</th>
  63. </tr>
  64. </thead>
  65. <?php foreach($userMapping as $infos){
  66. $user = $infos['object'];
  67. if($user->origin != ''){
  68. ?>
  69. <tr data-user="<?php echo $user->login; ?>">
  70. <?php foreach($columns as $column): ?>
  71. <td><?php echo isset($infos['values'][$column])?$infos['values'][$column]:''; ?></td>
  72. <?php endforeach; ?>
  73. <td>
  74. <a type="btn" target="_blank" href="action.php?action=directory_get_qr&amp;user=<?php echo $user->login; ?>" class="btn btn-primary btn-sm" title="QR Code"><i class="fas fa-qrcode"></i></a>
  75. <a type="btn" href="action.php?action=directory_get_cardav&amp;user=<?php echo $user->login; ?>" class="btn btn-primary btn-sm" title="Cardav"><i class="far fa-address-card"></i></a>
  76. <?php if(Plugin::is_active('fr.core.sms')): ?>
  77. <div onclick="directory_send_sms(this)" class="btn btn-primary btn-sm" title="Me l'envoyer par sms"><i class="fas fa-sms"></i></div>
  78. <?php endif; ?>
  79. </td>
  80. </tr>
  81. <?php
  82. }
  83. } ?>
  84. </table>
  85. </div>
  86. <?php } else { ?>
  87. <div id="main" class="wrapper clearfix">
  88. <article>
  89. <h3>Vous devez être connecté</h3>
  90. </article>
  91. </div>
  92. <?php }
  93. }
  94. Plugin::addJs("/js/main.js");
  95. Plugin::addHook("action", "directory_action");
  96. Plugin::addHook("menu_account", "directory_plugin_menu");
  97. Plugin::addHook("content_account", "directory_plugin_page");
  98. ?>