action.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. global $_,$conf;
  3. switch($_['action']){
  4. /** SMS **/
  5. //Envois d'un contact par sms
  6. case 'directory_send_sms':
  7. Action::write(function(&$response){
  8. global $myUser,$_,$conf;
  9. if(!$myUser->connected()) throw new Exception("Vous devez être connecté",401);
  10. Plugin::need('sms/Sms');
  11. $user = User::byLogin($_['user']);
  12. if(empty($myUser->mobile))throw new Exception("Votre numéro de téléphone n'est pas renseigné");
  13. if(empty($conf->get('sms_api_url')) || empty($conf->get('sms_api_token'))) throw new Exception("Api SMS non configurée");
  14. $sms = new Sms($conf->get('sms_api_url'),$conf->get('sms_api_token'));
  15. $sms->phone = str_replace(' ','',$myUser->mobile);
  16. $card = ROOT_URL.'/action.php?action=directory_get_cardav&token='.sha1('vcard:'.$user->phone.'-'.$user->id.'-'.$user->login);
  17. $sms->message = $user->fullName().': ';
  18. $sms->message .= PHP_EOL;
  19. $sms->message .= 'fixe : '.str_replace(' ','',$user->phone);
  20. $sms->message .= PHP_EOL;
  21. $sms->message .= 'mobile : '.str_replace(' ','',$user->mobile);
  22. $sms->message .= PHP_EOL;
  23. $sms->message .= 'mail : '.$user->mail;
  24. $sms->message .= PHP_EOL;
  25. $sms->message .=' vcard: '.$card;
  26. Log::put('Envois à '.$sms->phone.' : '.$sms->message,'Sms');
  27. try{
  28. $response = $sms->send();
  29. Log::put('Envois à '.$sms->phone.' : '.json_encode($response),'Sms');
  30. $response['phone'] = $myUser->mobile;
  31. }catch(Exception $e){
  32. throw new Exception('ERREUR : '.$e->getMessage());
  33. Log::put('Envois à '.$sms->phone.' ERREUR : '.$e->getMessage(),'Sms');
  34. }
  35. });
  36. break;
  37. case 'directory_get_qr':
  38. global $myUser,$_,$conf;
  39. if(!$myUser->connected()) throw new Exception("Permission denied");
  40. header('Content-type:image/gif');
  41. $user = User::byLogin($_['user']);
  42. $meCard = 'MECARD:N:'.utf8_decode($user->fullName()).';ORG:Firm;TEL:'.str_replace(' ','',$user->phone).';URL:http\://;EMAIL:'.$user->mail.';;';
  43. $a = new QR($meCard);
  44. echo $a->image(7);
  45. exit();
  46. break;
  47. case 'directory_get_cardav':
  48. global $myUser,$_,$conf;
  49. if(!$myUser->connected()) throw new Exception("Permission denied");
  50. if(isset($_['token'])){
  51. foreach (User::getAll() as $user) {
  52. if(sha1('vcard:'.$user->phone.'-'.$user->id.'-'.$user->login) == $_['user']) $target = $user;
  53. }
  54. }
  55. if(isset($_['user'])) $user = User::byLogin($_['user']);
  56. if(isset($target)) $user = $target;
  57. if(empty($user)) throw new Exception("Utilisateur introuvable");
  58. header('Content-Type: text/x-vCard');
  59. header('Content-Disposition: attachment; filename= "'.$user->login.'.vcf"');
  60. $vCard = 'BEGIN:VCARD'.PHP_EOL;
  61. $vCard .= 'VERSION:3.0'.PHP_EOL;
  62. $vCard .= 'N:'.utf8_decode($user->name.';'.$user->firstname).PHP_EOL;
  63. $vCard .= 'ORG:Firm'.PHP_EOL;
  64. $vCard .= 'ADR;TYPE=WORK:;;122 Avenue Saint Emilion;Martignas;Aquitaine;30127;France'.PHP_EOL;
  65. $vCard .= 'LABEL;TYPE=WORK:122 Avenue Saint Emilion;\nMartignas, Aquitaine 30127\nFrance'.PHP_EOL;
  66. $vCard .= 'TEL;CELL:'.str_replace(' ','',$user->phone).PHP_EOL;
  67. $vCard .= 'URL:'.PHP_EOL;
  68. $vCard .= 'EMAIL:'.utf8_decode($user->mail).PHP_EOL;
  69. $vCard .= 'END:VCARD';
  70. header('Content-Length: '.strlen($vCard));
  71. echo $vCard;
  72. exit();
  73. break;
  74. case 'directory_get_excel':
  75. global $myUser,$_,$conf;
  76. if(!$myUser->connected()) throw new Exception("Permission denied");
  77. list($columns,$userMapping) = directory_get_contacts();
  78. $excel = implode(';',$columns)."\n";
  79. foreach($userMapping as $user=>$infos){
  80. foreach ($infos['values'] as $key => $value):
  81. $excel .= strip_tags(utf8_decode($value)).';';
  82. endforeach;
  83. $excel .= "\n";
  84. }
  85. File::downloadStream($excel,"annuaire ".date('d-m-Y').".csv",'text/csv');
  86. exit();
  87. break;
  88. }
  89. ?>