action.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. global $_,$conf;
  3. switch($_['action']){
  4. /** SCREENVIDEO **/
  5. //Récuperation d'une liste de screenvideo
  6. case 'screenshare_screen_video_search':
  7. Action::write(function(&$response){
  8. global $myUser,$_;
  9. User::check_access('screenshare','read');
  10. require_once(__DIR__.SLASH.'ScreenVideo.class.php');
  11. // OPTIONS DE RECHERCHE, A ACTIVER POUR UNE RECHERCHE AVANCEE
  12. $query = 'SELECT * FROM '.ScreenVideo::tableName().' WHERE 1';
  13. $data = array();
  14. //Recherche simple
  15. if(!empty($_['filters']['keyword'])){
  16. $query .= ' AND label LIKE ?';
  17. $data[] = '%'.$_['filters']['keyword'].'%';
  18. }
  19. $query .= ' AND creator = ?';
  20. $data[] = $myUser->login;
  21. //Recherche avancée
  22. if(isset($_['filters']['advanced'])) filter_secure_query($_['filters']['advanced'],array('label'),$query,$data);
  23. //Tri des colonnes
  24. $query.=' ORDER BY created ';
  25. //Pagination
  26. $response['pagination'] = ScreenVideo::paginate(20,(!empty($_['page'])?$_['page']:0),$query,$data);
  27. $screenvideos = ScreenVideo::staticQuery($query,$data,true,0);
  28. foreach($screenvideos as $screenvideo){
  29. $row = $screenvideo->toArray();
  30. if($row['expire']==0){
  31. unset($row['expire']);
  32. }else{
  33. $row['expireDate'] = date('d/m/Y',$row['expire']);
  34. $row['expireHour'] = date('H:i',$row['expire']);
  35. }
  36. $row['url'] = ROOT_URL.'/index.php?module=screenshare&page=screen.play&slug='.$row['slug'];
  37. $response['rows'][] = $row;
  38. }
  39. });
  40. break;
  41. case 'screenshare_screen_video_preview':
  42. global $myUser,$_;
  43. require_once(__DIR__.SLASH.'ScreenVideo.class.php');
  44. if(isset($_['id'])){
  45. User::check_access('screenshare','read');
  46. $video = ScreenVideo::getById($_['id']);
  47. if($video->creator!=$myUser->login) throw new Exception("Vous n'avez pas la permission");
  48. }else if(isset($_['slug'])){
  49. $video = ScreenVideo::load(array('slug'=>$_['slug']));
  50. }
  51. File::downloadFile($video->file(),null,null,isset($_['download']));
  52. break;
  53. //Ajout ou modification d'élément screenvideo
  54. case 'screenshare_screen_video_save':
  55. Action::write(function(&$response){
  56. global $myUser,$_,$conf;
  57. User::check_access('screenshare','edit');
  58. require_once(__DIR__.SLASH.'ScreenVideo.class.php');
  59. $item = ScreenVideo::provide();
  60. $defaultExpire = $conf->get('screenshare_default_expire') == '' ? 24: $conf->get('screenshare_default_expire');
  61. if($item->id==0){
  62. $item->slug = sha1(md5('9523145'.mt_rand(0,1000).'dev'.time()));
  63. $item->label = 'Capture du '.date('d-m-Y H:i:s');
  64. $item->expire = time() + (3600*$defaultExpire) ;
  65. }
  66. if(isset($_['label']))$item->label = $_['label'];
  67. $item->expire = 0;
  68. if(!empty($_['expireDate'])){
  69. $date = explode('/',$_['expireDate']);
  70. $hour = !empty($_['expireHour']) ? explode(':',$_['expireHour']) : array(0,0);
  71. $time = mktime($hour[0],$hour[1],0,$date[1],$date[0],$date[2]);
  72. $item->expire = $time;
  73. }
  74. if(isset($_['comment'])) $item->comment = $_['comment'];
  75. $item->save();
  76. if(isset($_FILES['data'])) move_uploaded_file($_FILES['data']['tmp_name'], $item->file());
  77. $response['item'] = $item->toArray();
  78. });
  79. break;
  80. //Suppression d'élement screenvideo
  81. case 'screenshare_screen_video_delete':
  82. Action::write(function(&$response){
  83. global $myUser,$_;
  84. User::check_access('screenshare','delete');
  85. require_once(__DIR__.SLASH.'ScreenVideo.class.php');
  86. $capture = ScreenVideo::getById($_['id']);
  87. if($myUser->login!=$capture->creator && !$myUser->superAdmin) throw new Exception("Vous devez être le créateur de cette capture pour la supprimer");
  88. $capture->remove();
  89. });
  90. break;
  91. //Sauvegarde des configurations de screenshare
  92. case 'screenshare_setting_save':
  93. Action::write(function(&$response){
  94. global $myUser,$_,$conf;
  95. User::check_access('screenshare','configure');
  96. //Si input file "multiple", possibilité de normlaiser le
  97. //tableau $_FILES récupéré avec la fonction => normalize_php_files();
  98. foreach(Configuration::setting('screenshare') as $key=>$value){
  99. if(!is_array($value)) continue;
  100. $allowed[] = $key;
  101. }
  102. foreach ($_['fields'] as $key => $value) {
  103. if(in_array($key, $allowed))
  104. $conf->put($key,$value);
  105. }
  106. });
  107. break;
  108. }
  109. ?>