ImageType.class.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. class ImageType {
  3. public static function manifest(){
  4. return array(
  5. 'uid' => 'image',
  6. 'label' => 'Schéma / Image',
  7. 'description' => 'Fichier image de type jpg/jpeg/png/bmp/gif/svg',
  8. 'fromExtension' => array('jpg','jpeg','png','bmp','gif','svg'),
  9. 'toExtension' => 'zip',
  10. 'icon' => 'fas fa-code-branch',
  11. 'color' => '#ffffff',
  12. 'background' => '#d7332d'
  13. );
  14. }
  15. //Import depuis un glisser déposé du fichier
  16. public static function fromFile($resource){
  17. // $resource->save();
  18. // $ext = getExt($resource->label);
  19. // $name = $resource->id.'.'.$ext;
  20. // file_put_contents(SKETCH_PATH.$name,$resource->content);
  21. // $resource->content = $name;
  22. // return $resource;
  23. }
  24. //Import depuis un flux json compressé de la ressource
  25. public static function fromJson($resource){
  26. // $resource->save();
  27. // $stream = base64_decode($resource->content);
  28. // $resource->content = $resource->id.'.png';
  29. // file_put_contents(SKETCH_PATH.$resource->content,$stream);
  30. // return $resource;
  31. }
  32. //export en fichier JSON compressé de la ressource
  33. public static function toJson($resource){
  34. // $resource = $resource->toArray();
  35. // $resource['content'] = base64_encode(file_get_contents(SKETCH_PATH.$resource['content']));
  36. // return $resource;
  37. }
  38. public static function toFile($resource){
  39. global $myUser;
  40. $infos = self::manifest();
  41. $path = $resource->directory();
  42. $filename = slugify($resource->label).'-'.time().'.'.$infos['toExtension'];
  43. $filepath = sys_get_temp_dir().DIRECTORY_SEPARATOR.$filename;
  44. $zip = new ZipArchive;
  45. if(file_exists($filepath))unlink($filepath);
  46. $res = $zip->open($filepath, ZipArchive::CREATE);
  47. if ($res === TRUE) {
  48. foreach(glob($path.'/*') as $f)
  49. $zip->addFile($f,basename($f));
  50. $zip->close();
  51. }
  52. return array(
  53. 'name'=> slugify($resource->label).'.'.$infos['toExtension'],
  54. 'content' => file_get_contents($filepath)
  55. );
  56. }
  57. /* EDITION */
  58. public static function toHtml($resource,$sketch=null){
  59. $infos = self::manifest();
  60. $response = array();
  61. //.$resource->id
  62. $images = array();
  63. foreach(glob($resource->directory().SLASH.'*.*') as $file){
  64. $images[] = array(
  65. 'path' => 'hackpoint'.SLASH.'sketch'.SLASH.$resource->sketch.SLASH.$resource->id.SLASH.utf8_encode(basename($file)),
  66. 'url' => 'action.php?action=hackpoint_download_file&file='.base64_encode('sketch'.SLASH.$resource->sketch.SLASH.$resource->id.SLASH.rawurlencode(basename($file))),
  67. 'name' => utf8_encode(basename($file)),
  68. 'icon' => getExtIcon(getExt($file))
  69. );
  70. }
  71. $response['html'] = '
  72. <div data-type="dropzone" data-preview data-label="Faites glisser vo(s) image(s) dans cette zone ou cliquez dessus" data-delete="resource_delete_document" data-save="resource_add_document" data-allowed="jpg,bmp,gif,png,jpeg,svg" class="form-control hackpoint-type-image" id="document" name="document">
  73. '.json_encode($images).'
  74. </div>';
  75. return $response;
  76. }
  77. }
  78. ?>