Compare commits

...

No commits in common. 'master' and '3.2' have entirely different histories.
master ... 3.2

  1. 564
      .gitattributes
  2. 7
      .gitignore
  3. 30
      CHANGELOG.md
  4. 3
      README.md
  5. 21
      action/acceder_document.php
  6. 276
      action/ajouter_documents.php
  7. 25
      action/changer_mode_document.php
  8. 45
      action/copier_local.php
  9. 24
      action/desordonner_liens_documents.php
  10. 35
      action/dissocier_document.php
  11. 260
      action/editer_document.php
  12. 36
      action/ordonner_liens_documents.php
  13. 31
      action/supprimer_document.php
  14. 16
      action/supprimer_tous_orphelins.php
  15. 47
      action/tourner.php
  16. 14
      action/verifier_documents_brises.php
  17. 12
      action/verifier_documents_liens.php
  18. 139
      base/medias.php
  19. 36
      base/typedoc.php
  20. 18
      composer.json
  21. 24
      formulaires/changer_fichier_document.html
  22. 63
      formulaires/changer_fichier_document.php
  23. 6
      formulaires/configurer_documents.html
  24. 26
      formulaires/configurer_documents.php
  25. 39
      formulaires/editer_document.html
  26. 51
      formulaires/editer_document.php
  27. 12
      formulaires/illustrer_document.html
  28. 42
      formulaires/illustrer_document.php
  29. 6
      formulaires/inc-lister_archive_jointe.html
  30. 8
      formulaires/inc-upload_document.html
  31. 9
      formulaires/joindre_document.html
  32. 80
      formulaires/joindre_document.php
  33. 4
      formulaires/methodes_upload/distant.html
  34. 2
      formulaires/methodes_upload/mediatheque.html
  35. 13
      inc/choisir_mode_document.php
  36. 86
      inc/determiner_statut_document.php
  37. 12
      inc/documenter_objet.php
  38. 90
      inc/documents.php
  39. 12
      inc/getdocument.php
  40. 279
      inc/joindre_document.php
  41. 38
      inc/marquer_doublons_doc.php
  42. 57
      inc/renseigner_document.php
  43. 17
      inc/verifier_document_mode_image.php
  44. 17
      inc/verifier_document_mode_vignette.php
  45. 196
      inc/verifier_taille_document_acceptable.php
  46. 21
      inc/vignette.php
  47. 86
      javascript/gestion_listes_documents.js.html
  48. 539
      javascript/jquery.multifile.js
  49. 9
      javascript/medias_edit.js
  50. 192
      lang/medias.xml
  51. 12
      lang/medias_ar.php
  52. 128
      lang/medias_br.php
  53. 2
      lang/medias_ca.php
  54. 17
      lang/medias_de.php
  55. 12
      lang/medias_en.php
  56. 169
      lang/medias_eo.php
  57. 25
      lang/medias_es.php
  58. 6
      lang/medias_fa.php
  59. 14
      lang/medias_fr.php
  60. 16
      lang/medias_fr_fem.php
  61. 12
      lang/medias_fr_tu.php
  62. 26
      lang/medias_it.php
  63. 194
      lang/medias_ja.php
  64. 6
      lang/medias_lb.php
  65. 6
      lang/medias_nl.php
  66. 6
      lang/medias_oc_ni_mis.php
  67. 6
      lang/medias_pt.php
  68. 23
      lang/medias_pt_br.php
  69. 6
      lang/medias_ru.php
  70. 6
      lang/medias_sk.php
  71. 6
      lang/medias_uk.php
  72. 20
      lang/paquet-medias.xml
  73. 15
      lang/paquet-medias_br.php
  74. 15
      lang/paquet-medias_eo.php
  75. 2
      lang/paquet-medias_fr.php
  76. 15
      lang/paquet-medias_ja.php
  77. 12
      lib/getid3/extension.cache.dbm.php
  78. 13
      lib/getid3/extension.cache.mysql.php
  79. 87
      lib/getid3/extension.cache.mysqli.php
  80. 18
      lib/getid3/extension.cache.sqlite3.php
  81. 414
      lib/getid3/getid3.lib.php
  82. 422
      lib/getid3/getid3.php
  83. 16
      lib/getid3/module.archive.gzip.php
  84. 92
      lib/getid3/module.archive.hpk.php
  85. 11
      lib/getid3/module.archive.rar.php
  86. 3
      lib/getid3/module.archive.szip.php
  87. 10
      lib/getid3/module.archive.tar.php
  88. 44
      lib/getid3/module.archive.xz.php
  89. 44
      lib/getid3/module.archive.zip.php
  90. 54
      lib/getid3/module.audio-video.asf.php
  91. 9
      lib/getid3/module.audio-video.bink.php
  92. 6
      lib/getid3/module.audio-video.flv.php
  93. 81
      lib/getid3/module.audio-video.ivf.php
  94. 55
      lib/getid3/module.audio-video.matroska.php
  95. 18
      lib/getid3/module.audio-video.mpeg.php
  96. 4
      lib/getid3/module.audio-video.nsv.php
  97. 681
      lib/getid3/module.audio-video.quicktime.php
  98. 6
      lib/getid3/module.audio-video.real.php
  99. 188
      lib/getid3/module.audio-video.riff.php
  100. 11
      lib/getid3/module.audio-video.swf.php
  101. Some files were not shown because too many files have changed in this diff Show More

564
.gitattributes vendored

@ -0,0 +1,564 @@
* text=auto !eol
action/acceder_document.php -text
action/ajouter_documents.php -text
action/changer_mode_document.php -text
action/copier_local.php -text
action/desordonner_liens_documents.php -text
action/dissocier_document.php -text
action/editer_document.php -text
action/ordonner_liens_documents.php -text
action/supprimer_document.php -text
action/supprimer_tous_orphelins.php -text
action/tourner.php -text
action/verifier_documents_brises.php -text
action/verifier_documents_liens.php -text
base/medias.php -text
base/typedoc.php -text
formulaires/changer_fichier_document.html -text
formulaires/changer_fichier_document.php -text
formulaires/configurer_documents.html -text
formulaires/configurer_documents.php -text
formulaires/editer_document.html -text
formulaires/editer_document.php -text
formulaires/illustrer_document.html -text
formulaires/illustrer_document.php -text
formulaires/inc-lister_archive_jointe.html -text
formulaires/inc-upload_document.html -text
formulaires/joindre_document.html -text
formulaires/joindre_document.php -text
formulaires/methodes_upload/distant.html -text
formulaires/methodes_upload/ftp.html -text
formulaires/methodes_upload/mediatheque.html -text
formulaires/methodes_upload/upload.html -text
inc/choisir_mode_document.php -text
inc/documenter_objet.php -text
inc/documents.php -text
inc/getdocument.php -text
inc/joindre_document.php -text
inc/marquer_doublons_doc.php -text
inc/renseigner_document.php -text
inc/verifier_document_mode_image.php -text
inc/verifier_document_mode_vignette.php -text
inc/vignette.php -text
javascript/gestion_listes_documents.js.html -text
javascript/jquery.multifile.js -text
javascript/medias_edit.js -text
javascript/mejs-init.js -text
javascript/mejs-init.min.js -text
lang/medias.xml -text
lang/medias_ar.php -text
lang/medias_ast.php -text
lang/medias_ay.php -text
lang/medias_bg.php -text
lang/medias_br.php -text
lang/medias_bs.php -text
lang/medias_ca.php -text
lang/medias_co.php -text
lang/medias_cpf.php -text
lang/medias_cpf_hat.php -text
lang/medias_cs.php -text
lang/medias_da.php -text
lang/medias_de.php -text
lang/medias_el.php -text
lang/medias_en.php -text
lang/medias_en_hx.php -text
lang/medias_eo.php -text
lang/medias_es.php -text
lang/medias_eu.php -text
lang/medias_fa.php -text
lang/medias_fon.php -text
lang/medias_fr.php -text
lang/medias_fr_fem.php -text
lang/medias_fr_tu.php -text
lang/medias_gl.php -text
lang/medias_hac.php -text
lang/medias_he.php -text
lang/medias_hr.php -text
lang/medias_hu.php -text
lang/medias_id.php -text
lang/medias_is.php -text
lang/medias_it.php -text
lang/medias_it_fem.php -text
lang/medias_ja.php -text
lang/medias_km.php -text
lang/medias_la.php -text
lang/medias_lb.php -text
lang/medias_lt.php -text
lang/medias_my.php -text
lang/medias_nap.php -text
lang/medias_nb.php -text
lang/medias_ne.php -text
lang/medias_nl.php -text
lang/medias_oc_auv.php -text
lang/medias_oc_gsc.php -text
lang/medias_oc_lms.php -text
lang/medias_oc_lnc.php -text
lang/medias_oc_ni.php -text
lang/medias_oc_ni_la.php -text
lang/medias_oc_ni_mis.php -text
lang/medias_oc_prv.php -text
lang/medias_oc_va.php -text
lang/medias_pl.php -text
lang/medias_pt.php -text
lang/medias_pt_br.php -text
lang/medias_ro.php -text
lang/medias_roa.php -text
lang/medias_ru.php -text
lang/medias_sk.php -text
lang/medias_sq.php -text
lang/medias_sv.php -text
lang/medias_tr.php -text
lang/medias_uk.php -text
lang/medias_vi.php -text
lang/medias_wo.php -text
lang/medias_zh.php -text
lang/paquet-medias.xml -text
lang/paquet-medias_ar.php -text
lang/paquet-medias_de.php -text
lang/paquet-medias_en.php -text
lang/paquet-medias_es.php -text
lang/paquet-medias_fa.php -text
lang/paquet-medias_fr_fem.php -text
lang/paquet-medias_fr_tu.php -text
lang/paquet-medias_it.php -text
lang/paquet-medias_lb.php -text
lang/paquet-medias_nl.php -text
lang/paquet-medias_oc_ni_mis.php -text
lang/paquet-medias_pt.php -text
lang/paquet-medias_pt_br.php -text
lang/paquet-medias_ru.php -text
lang/paquet-medias_sk.php -text
lang/paquet-medias_uk.php -text
lib/getid3/extension.cache.dbm.php -text
lib/getid3/extension.cache.mysql.php -text
lib/getid3/extension.cache.mysqli.php -text
lib/getid3/extension.cache.sqlite3.php -text
lib/getid3/getid3.lib.php -text
lib/getid3/getid3.php -text
lib/getid3/module.archive.gzip.php -text
lib/getid3/module.archive.rar.php -text
lib/getid3/module.archive.szip.php -text
lib/getid3/module.archive.tar.php -text
lib/getid3/module.archive.zip.php -text
lib/getid3/module.audio-video.asf.php -text
lib/getid3/module.audio-video.bink.php -text
lib/getid3/module.audio-video.flv.php -text
lib/getid3/module.audio-video.matroska.php -text
lib/getid3/module.audio-video.mpeg.php -text
lib/getid3/module.audio-video.nsv.php -text
lib/getid3/module.audio-video.quicktime.php -text
lib/getid3/module.audio-video.real.php -text
lib/getid3/module.audio-video.riff.php -text
lib/getid3/module.audio-video.swf.php -text
lib/getid3/module.audio-video.ts.php -text
lib/getid3/module.audio.aa.php -text
lib/getid3/module.audio.aac.php -text
lib/getid3/module.audio.ac3.php -text
lib/getid3/module.audio.amr.php -text
lib/getid3/module.audio.au.php -text
lib/getid3/module.audio.avr.php -text
lib/getid3/module.audio.bonk.php -text
lib/getid3/module.audio.dsf.php -text
lib/getid3/module.audio.dss.php -text
lib/getid3/module.audio.dts.php -text
lib/getid3/module.audio.flac.php -text
lib/getid3/module.audio.la.php -text
lib/getid3/module.audio.lpac.php -text
lib/getid3/module.audio.midi.php -text
lib/getid3/module.audio.mod.php -text
lib/getid3/module.audio.monkey.php -text
lib/getid3/module.audio.mp3.php -text
lib/getid3/module.audio.mpc.php -text
lib/getid3/module.audio.ogg.php -text
lib/getid3/module.audio.optimfrog.php -text
lib/getid3/module.audio.rkau.php -text
lib/getid3/module.audio.shorten.php -text
lib/getid3/module.audio.tta.php -text
lib/getid3/module.audio.voc.php -text
lib/getid3/module.audio.vqf.php -text
lib/getid3/module.audio.wavpack.php -text
lib/getid3/module.graphic.bmp.php -text
lib/getid3/module.graphic.efax.php -text
lib/getid3/module.graphic.gif.php -text
lib/getid3/module.graphic.jpg.php -text
lib/getid3/module.graphic.pcd.php -text
lib/getid3/module.graphic.png.php -text
lib/getid3/module.graphic.svg.php -text
lib/getid3/module.graphic.tiff.php -text
lib/getid3/module.misc.cue.php -text
lib/getid3/module.misc.exe.php -text
lib/getid3/module.misc.iso.php -text
lib/getid3/module.misc.msoffice.php -text
lib/getid3/module.misc.par2.php -text
lib/getid3/module.misc.pdf.php -text
lib/getid3/module.tag.apetag.php -text
lib/getid3/module.tag.id3v1.php -text
lib/getid3/module.tag.id3v2.php -text
lib/getid3/module.tag.lyrics3.php -text
lib/getid3/module.tag.xmp.php -text
lib/getid3/write.apetag.php -text
lib/getid3/write.id3v1.php -text
lib/getid3/write.id3v2.php -text
lib/getid3/write.lyrics3.php -text
lib/getid3/write.metaflac.php -text
lib/getid3/write.php -text
lib/getid3/write.real.php -text
lib/getid3/write.vorbiscomment.php -text
lib/mejs/lang/ca.js -text
lib/mejs/lang/cs.js -text
lib/mejs/lang/de.js -text
lib/mejs/lang/es.js -text
lib/mejs/lang/fa.js -text
lib/mejs/lang/fr.js -text
lib/mejs/lang/hr.js -text
lib/mejs/lang/hu.js -text
lib/mejs/lang/it.js -text
lib/mejs/lang/ja.js -text
lib/mejs/lang/ko.js -text
lib/mejs/lang/nl.js -text
lib/mejs/lang/pl.js -text
lib/mejs/lang/pt-br.js -text
lib/mejs/lang/pt.js -text
lib/mejs/lang/ro.js -text
lib/mejs/lang/ru.js -text
lib/mejs/lang/sk.js -text
lib/mejs/lang/sv.js -text
lib/mejs/lang/uk.js -text
lib/mejs/lang/zh-cn.js -text
lib/mejs/lang/zh.js -text
lib/mejs/mediaelement-and-player.js -text
lib/mejs/mediaelement-and-player.min.js -text
lib/mejs/mediaelement-flash-audio-ogg.swf -text
lib/mejs/mediaelement-flash-audio.swf -text
lib/mejs/mediaelement-flash-video-hls.swf -text
lib/mejs/mediaelement-flash-video-mdash.swf -text
lib/mejs/mediaelement-flash-video.swf -text
lib/mejs/mediaelement.js -text
lib/mejs/mediaelement.min.js -text
lib/mejs/mediaelementplayer-legacy.css -text
lib/mejs/mediaelementplayer-legacy.min.css -text
lib/mejs/mediaelementplayer.css -text
lib/mejs/mediaelementplayer.min.css -text
lib/mejs/mejs-controls.png -text
lib/mejs/mejs-controls.svg -text
lib/mejs/package.js -text
lib/mejs/package.json -text
lib/mejs/renderers/dailymotion.js -text
lib/mejs/renderers/dailymotion.min.js -text
lib/mejs/renderers/facebook.js -text
lib/mejs/renderers/facebook.min.js -text
lib/mejs/renderers/soundcloud.js -text
lib/mejs/renderers/soundcloud.min.js -text
lib/mejs/renderers/twitch.js -text
lib/mejs/renderers/twitch.min.js -text
lib/mejs/renderers/vimeo.js -text
lib/mejs/renderers/vimeo.min.js -text
/medias_administrations.php -text
/medias_autoriser.php -text
/medias_fonctions.php -text
/medias_ieconfig.php -text
/medias_pipelines.php -text
metadata/audio.php -text
metadata/html.php -text
metadata/image.php -text
metadata/svg.php -text
metadata/swf.php -text
metadata/video.php -text
modeles/application.html -text
modeles/audio.html -text
modeles/doc.html -text
modeles/doc_legende.html -text
modeles/document_case.html -text
modeles/document_case_fonctions.php -text
modeles/document_desc.html -text
modeles/document_desc_fonctions.php -text
modeles/emb.html -text
modeles/emb_fonctions.php -text
modeles/emb_mp4.html -text
modeles/image.html -text
modeles/img.html -text
modeles/text.html -text
modeles/text_csv.html -text
modeles/text_html.html -text
modeles/video.html -text
prive/objets/contenu/portfolio_document.html -text
prive/objets/editer/colonne_document.html -text
prive/objets/editer/document_popup.html -text
prive/objets/infos/document.html -text
prive/objets/liste/documents.html -text
prive/squelettes/contenu/document_edit.html -text
prive/squelettes/contenu/documents.html -text
prive/squelettes/contenu/popin-choisir_document.html -text
prive/squelettes/inclure/ajouter-documents.html -text
prive/squelettes/inclure/ajouter-documents_fonctions.php -text
prive/squelettes/inclure/bouton-supprimer-orphelins.html -text
prive/squelettes/inclure/colonne-documents.html -text
prive/squelettes/inclure/document_infos.html -text
prive/squelettes/inclure/mediatheque-choisir.html -text
prive/squelettes/inclure/mediatheque-galerie.html -text
prive/squelettes/inclure/mediatheque-navigation.html -text
prive/squelettes/inclure/mediatheque-navigation_fonctions.php -text
prive/squelettes/inclure/portfolio-documents.html -text
prive/squelettes/navigation/document_edit.html -text
prive/squelettes/top/documents.html -text
prive/style_prive_plugin_medias.html -text
prive/themes/spip/images/base/audio-16.png -text
prive/themes/spip/images/base/audio-22.png -text
prive/themes/spip/images/base/audio-32.png -text
prive/themes/spip/images/base/distant-22.png -text
prive/themes/spip/images/base/image-24.png -text
prive/themes/spip/images/base/photo-16.png -text
prive/themes/spip/images/base/photo-22.png -text
prive/themes/spip/images/base/photo-32.png -text
prive/themes/spip/images/base/unreadable-22.png -text
prive/themes/spip/images/base/video-16.png -text
prive/themes/spip/images/base/video-22.png -text
prive/themes/spip/images/base/video-32.png -text
prive/themes/spip/images/base/vu-16.png -text
prive/themes/spip/images/deplacer-16.png -text
prive/themes/spip/images/distant-16.png -text
prive/themes/spip/images/doc-16.png -text
prive/themes/spip/images/doc-24.png -text
prive/themes/spip/images/doc-32.png -text
prive/themes/spip/images/doc-add-16.png -text
prive/themes/spip/images/doc-add-24.png -text
prive/themes/spip/images/doc-add-32.png -text
prive/themes/spip/images/doc-del-16.png -text
prive/themes/spip/images/doc-del-24.png -text
prive/themes/spip/images/doc-del-32.png -text
prive/themes/spip/images/doc-edit-16.png -text
prive/themes/spip/images/doc-edit-24.png -text
prive/themes/spip/images/doc-edit-32.png -text
prive/themes/spip/images/doc-new-16.png -text
prive/themes/spip/images/doc-new-24.png -text
prive/themes/spip/images/doc-new-32.png -text
prive/themes/spip/images/document-16.png -text
prive/themes/spip/images/document-24.png -text
prive/themes/spip/images/document-32.png -text
prive/themes/spip/images/document-add-16.png -text
prive/themes/spip/images/document-add-24.png -text
prive/themes/spip/images/document-add-32.png -text
prive/themes/spip/images/document-del-16.png -text
prive/themes/spip/images/document-del-24.png -text
prive/themes/spip/images/document-del-32.png -text
prive/themes/spip/images/document-distant-24.png -text
prive/themes/spip/images/document-edit-16.png -text
prive/themes/spip/images/document-edit-24.png -text
prive/themes/spip/images/document-edit-32.png -text
prive/themes/spip/images/document-manquant-24.png -text
prive/themes/spip/images/document-new-16.png -text
prive/themes/spip/images/document-new-24.png -text
prive/themes/spip/images/document-new-32.png -text
prive/themes/spip/images/document-vu-24.png -text
prive/themes/spip/images/documents-cases-16.png -text
prive/themes/spip/images/documents-liste-16.png -text
prive/themes/spip/images/documents-liste-courte-16.png -text
prive/themes/spip/images/image-16.png -text
prive/themes/spip/images/image-24.png -text
prive/themes/spip/images/image-32.png -text
prive/themes/spip/images/image-add-16.png -text
prive/themes/spip/images/image-add-24.png -text
prive/themes/spip/images/image-add-32.png -text
prive/themes/spip/images/image-del-16.png -text
prive/themes/spip/images/image-del-24.png -text
prive/themes/spip/images/image-del-32.png -text
prive/themes/spip/images/image-edit-16.png -text
prive/themes/spip/images/image-edit-24.png -text
prive/themes/spip/images/image-edit-32.png -text
prive/themes/spip/images/image-new-16.png -text
prive/themes/spip/images/image-new-24.png -text
prive/themes/spip/images/image-new-32.png -text
prive/themes/spip/images/media-audio-16.png -text
prive/themes/spip/images/media-audio-24.png -text
prive/themes/spip/images/media-audio-32.png -text
prive/themes/spip/images/media-image-16.png -text
prive/themes/spip/images/media-image-24.png -text
prive/themes/spip/images/media-image-32.png -text
prive/themes/spip/images/media-video-16.png -text
prive/themes/spip/images/media-video-24.png -text
prive/themes/spip/images/media-video-32.png -text
prive/themes/spip/images/portfolio-128.png -text
prive/themes/spip/images/portfolio-16.png -text
prive/themes/spip/images/portfolio-24.png -text
prive/themes/spip/images/portfolio-32.png -text
prive/themes/spip/images/portfolio-64.png -text
prive/themes/spip/images/tourner-180-12.png -text
prive/themes/spip/images/tourner-droite-12.png -text
prive/themes/spip/images/tourner-gauche-12.png -text
prive/themes/spip/images/vu-16-10.png -text
prive/themes/spip/images/vu-16.png -text
prive/themes/spip/images/vu-32.png -text
prive/themes/spip2/images/base/audio-16.png -text
prive/themes/spip2/images/base/audio-22.png -text
prive/themes/spip2/images/base/audio-32.png -text
prive/themes/spip2/images/base/distant-22.png -text
prive/themes/spip2/images/base/image-24.png -text
prive/themes/spip2/images/base/photo-16.png -text
prive/themes/spip2/images/base/photo-22.png -text
prive/themes/spip2/images/base/photo-32.png -text
prive/themes/spip2/images/base/unreadable-22.png -text
prive/themes/spip2/images/base/video-16.png -text
prive/themes/spip2/images/base/video-22.png -text
prive/themes/spip2/images/base/video-32.png -text
prive/themes/spip2/images/base/vu-16.png -text
prive/themes/spip2/images/distant-16.png -text
prive/themes/spip2/images/document-16.png -text
prive/themes/spip2/images/document-24.png -text
prive/themes/spip2/images/document-32.png -text
prive/themes/spip2/images/document-distant-24.png -text
prive/themes/spip2/images/document-manquant-24.png -text
prive/themes/spip2/images/document-vu-24.png -text
prive/themes/spip2/images/media-audio-16.png -text
prive/themes/spip2/images/media-audio-24.png -text
prive/themes/spip2/images/media-audio-32.png -text
prive/themes/spip2/images/media-image-16.png -text
prive/themes/spip2/images/media-image-24.png -text
prive/themes/spip2/images/media-image-32.png -text
prive/themes/spip2/images/media-video-16.png -text
prive/themes/spip2/images/media-video-24.png -text
prive/themes/spip2/images/media-video-32.png -text
prive/themes/spip2/images/portfolio-128.png -text
prive/themes/spip2/images/portfolio-16.png -text
prive/themes/spip2/images/portfolio-24.png -text
prive/themes/spip2/images/portfolio-64.png -text
prive/themes/spip2/images/tourner-180-12.png -text
prive/themes/spip2/images/tourner-droite-12.png -text
prive/themes/spip2/images/tourner-gauche-12.png -text
prive/themes/spip2/images/vu-16-10.png -text
prive/themes/spip2/images/vu-16.png -text
prive/themes/spip2/images/vu-32.png -text
prive/vignettes/3gp.png -text
prive/vignettes/aac.png -text
prive/vignettes/abw.png -text
prive/vignettes/ai.png -text
prive/vignettes/aiff.png -text
prive/vignettes/anx.png -text
prive/vignettes/asf.png -text
prive/vignettes/avi.png -text
prive/vignettes/axa.png -text
prive/vignettes/axv.png -text
prive/vignettes/bin.png -text
prive/vignettes/blend.png -text
prive/vignettes/bmp.png -text
prive/vignettes/bz2.png -text
prive/vignettes/c.png -text
prive/vignettes/cls.png -text
prive/vignettes/css.png -text
prive/vignettes/csv.png -text
prive/vignettes/deb.png -text
prive/vignettes/defaut.png -text
prive/vignettes/djvu.png -text
prive/vignettes/doc.png -text
prive/vignettes/docm.png -text
prive/vignettes/docx.png -text
prive/vignettes/dotm.png -text
prive/vignettes/dotx.png -text
prive/vignettes/dv.png -text
prive/vignettes/dvi.png -text
prive/vignettes/eps.png -text
prive/vignettes/epub.png -text
prive/vignettes/f4a.png -text
prive/vignettes/f4b.png -text
prive/vignettes/f4p.png -text
prive/vignettes/f4v.png -text
prive/vignettes/flac.png -text
prive/vignettes/flv.png -text
prive/vignettes/gif.png -text
prive/vignettes/gz.png -text
prive/vignettes/h.png -text
prive/vignettes/html.png -text
prive/vignettes/index.php -text
prive/vignettes/jpg.png -text
prive/vignettes/kml.png -text
prive/vignettes/kmz.png -text
prive/vignettes/m4a.png -text
prive/vignettes/m4b.png -text
prive/vignettes/m4p.png -text
prive/vignettes/m4u.png -text
prive/vignettes/m4v.png -text
prive/vignettes/mid.png -text
prive/vignettes/mka.png -text
prive/vignettes/mkv.png -text
prive/vignettes/mng.png -text
prive/vignettes/mov.png -text
prive/vignettes/mp3.png -text
prive/vignettes/mp4.png -text
prive/vignettes/mpc.png -text
prive/vignettes/mpg.png -text
prive/vignettes/odb.png -text
prive/vignettes/odc.png -text
prive/vignettes/odf.png -text
prive/vignettes/odg.png -text
prive/vignettes/odi.png -text
prive/vignettes/odm.png -text
prive/vignettes/odp.png -text
prive/vignettes/ods.png -text
prive/vignettes/odt.png -text
prive/vignettes/oga.png -text
prive/vignettes/ogg.png -text
prive/vignettes/ogv.png -text
prive/vignettes/ogx.png -text
prive/vignettes/otg.png -text
prive/vignettes/otp.png -text
prive/vignettes/ots.png -text
prive/vignettes/ott.png -text
prive/vignettes/pas.png -text
prive/vignettes/pdf.png -text
prive/vignettes/pgn.png -text
prive/vignettes/png.png -text
prive/vignettes/potm.png -text
prive/vignettes/potx.png -text
prive/vignettes/ppam.png -text
prive/vignettes/pps.png -text
prive/vignettes/ppsm.png -text
prive/vignettes/ppsx.png -text
prive/vignettes/ppt.png -text
prive/vignettes/pptm.png -text
prive/vignettes/pptx.png -text
prive/vignettes/ps.png -text
prive/vignettes/psd.png -text
prive/vignettes/qt.png -text
prive/vignettes/ra.png -text
prive/vignettes/ram.png -text
prive/vignettes/rm.png -text
prive/vignettes/rpm.png -text
prive/vignettes/rtf.png -text
prive/vignettes/sdd.png -text
prive/vignettes/sdw.png -text
prive/vignettes/sit.png -text
prive/vignettes/smil.png -text
prive/vignettes/spip.png -text
prive/vignettes/spx.png -text
prive/vignettes/sty.png -text
prive/vignettes/svg.png -text
prive/vignettes/swf.png -text
prive/vignettes/sxc.png -text
prive/vignettes/sxi.png -text
prive/vignettes/sxw.png -text
prive/vignettes/tex.png -text
prive/vignettes/tgz.png -text
prive/vignettes/tif.png -text
prive/vignettes/torrent.png -text
prive/vignettes/ttf.png -text
prive/vignettes/txt.png -text
prive/vignettes/wav.png -text
prive/vignettes/webm.png -text
prive/vignettes/wma.png -text
prive/vignettes/wmv.png -text
prive/vignettes/xcf.png -text
prive/vignettes/xlam.png -text
prive/vignettes/xls.png -text
prive/vignettes/xlsb.png -text
prive/vignettes/xlsm.png -text
prive/vignettes/xlsx.png -text
prive/vignettes/xltm.png -text
prive/vignettes/xltx.png -text
prive/vignettes/xml.png -text
prive/vignettes/xspf.png -text
prive/vignettes/zip.png -text
puce_statut/document.php -text
squelettes/contenu/document.html -text
squelettes/document.html -text
squelettes/head/document.html -text
urls/generer_url_document.php -text
urls/generer_url_ecrire_document.php -text

7
.gitignore vendored

@ -1,7 +0,0 @@
/vendor/
/composer.phar
/composer.lock
/phpcs.xml
/phpstan.neon
/.php_cs.cache
/.php_cs.txt

30
CHANGELOG.md

@ -1,30 +0,0 @@
# Changelog
## [Unreleased]
### Security
- spip-team/securite#4832 et spip-team/securite#4833 appliquer `_TRAITEMENT_TYPO` sur le champ `CREDITS` et bien visualier le html suspect
### Added
- Fichier `README.md`
### Changed
- Compatible SPIP 4.2.0-dev
### Removed
- spip/safehtml#4786 Suppression du Sanitizer SVG qui est maintenant dans le plugin SafeHtml
- Suppression du formulaire `FORMULAIRE_CHANGER_FICHIER_DOCUMENT` qui n'est plus utilisé par SPIP (la fonctionnalité se trouve directement dans `FORMULAIRE_EDITER_DOCUMENT`)
### Fixed
- #4907 Réparer l'usage de `#LOGO_DOCUMENT{align}`
- #4905 Utiliser une déclaration moins prioritaire pour ajouter le traitement typo sur le champ `#CREDITS`
- spip/spip#5274 Homogénéiser les labels des listes
- #4902 Suppression des boutons excédentaires de sens de tri sur certaines listes de documents
- #4893 Il ne faut pas contraindre la taille des SVG
- #4891 Amélioration du message d’erreur de taille de document
- #4889 Refaire un alter sur la champ mode avant la migration des logos, par précaution

3
README.md

@ -1,3 +0,0 @@
# Plugin Médias
Ce plugin gère les documents éditoriaux (médias images, sons, pdf, ...)

21
action/acceder_document.php

@ -1,13 +1,13 @@
<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* Copyright (c) 2001-2020 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) {
@ -21,8 +21,8 @@ include_spip('inc/headers');
// soit que le document est publie, c'est-a-dire
// joint a au moins 1 article ou rubrique publie
// https://code.spip.net/@action_acceder_document_dist
function action_acceder_document_dist() {
$doc = [];
include_spip('inc/documents');
// $file exige pour eviter le scan id_document par id_document
@ -31,8 +31,7 @@ function action_acceder_document_dist() {
$arg = rawurldecode(_request('arg'));
$status = false;
if (
strpos($f, '../') !== false
if (strpos($f, '../') !== false
or preg_match(',^\w+://,', $f)
) {
$status = 403;
@ -53,8 +52,7 @@ function action_acceder_document_dist() {
} else {
// ETag pour gerer le status 304
$ETag = md5($file . ': ' . filemtime($file));
if (
isset($_SERVER['HTTP_IF_NONE_MATCH'])
if (isset($_SERVER['HTTP_IF_NONE_MATCH'])
and $_SERVER['HTTP_IF_NONE_MATCH'] == $ETag
) {
http_status(304); // Not modified
@ -102,8 +100,7 @@ function action_acceder_document_dist() {
// sinon l'ignorer car certains navigateurs pataugent
$f = basename($file);
if (
isset($doc['titre'])
if (isset($doc['titre'])
and (preg_match('/^\w+[.]\w+$/', $doc['titre']) or $doc['titre'] == 'Makefile')
) {
$f = $doc['titre'];

276
action/ajouter_documents.php

@ -1,13 +1,13 @@
<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* Copyright (c) 2001-2020 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
@ -44,7 +44,7 @@ include_spip('inc/renseigner_document');
*/
function action_ajouter_documents_dist($id_document, $files, $objet, $id_objet, $mode) {
$ajouter_un_document = charger_fonction('ajouter_un_document', 'action');
$ajoutes = [];
$ajoutes = array();
// on ne peut mettre qu'un seul document a la place d'un autre ou en vignette d'un autre
if (intval($id_document)) {
@ -95,33 +95,18 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
// et on aura une collision en cas de changement de file system
$file['name'] = strtolower(translitteration($file['name']));
// Sécurité : si jamais il existe deja une entrée dans la BDD avec ce chemin de document, remettre le document dans tmp, ce qui permettra ensuite qu'il soit dupliqué, et qu'il n'y ait pas deux entrées en base avec la même ligne 'fichier'.
// Cela n'arrive que si $file indique un document qui se trouve déjà dans IMG.
while (sql_getfetsel('fichier', 'spip_documents', 'fichier='.sql_quote(set_spip_doc($file['tmp_name'])))) {
$tmp = tempnam(_DIR_TRANSFERT, $file['tmp_name']);
if (deplacer_fichier_upload($file['tmp_name'], $tmp)) {
$file['tmp_name'] = $tmp;
} else {
spip_log('Erreur lors de la tenative de copie de '.$file['tmp_name'].' en '.$tmp, 'medias' . _LOG_ERREUR);
break;
}
}
// Pouvoir definir dans mes_options.php que l'on veut titrer tous les documents par d?faut
if (!defined('_TITRER_DOCUMENTS')) {
define('_TITRER_DOCUMENTS', false);
}
$titrer = $file['titrer'] ?? _TITRER_DOCUMENTS;
$titrer = isset($file['titrer']) ? $file['titrer'] : _TITRER_DOCUMENTS;
$mode = ((isset($file['mode']) and $file['mode']) ? $file['mode'] : $mode);
include_spip('inc/modifier');
if (
isset($file['distant']) and $file['distant']
and !in_array($mode, ['choix', 'auto', 'image', 'document'])
) {
spip_log("document distant $source accepte sans verification, mode=$mode", 'medias' . _LOG_INFO_IMPORTANTE);
if (isset($file['distant']) and $file['distant']
and !in_array($mode, array('choix', 'auto', 'image', 'document'))) {
spip_log("document distant $source accepte sans verification, mode=$mode", 'medias'._LOG_INFO_IMPORTANTE);
include_spip('inc/distant');
$file['tmp_name'] = _DIR_RACINE . copie_locale($source);
$source = $file['tmp_name'];
@ -133,31 +118,19 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
// content-type est connu, et si possible recuperer la taille, voire plus.
if (isset($file['distant']) and $file['distant']) {
if (!tester_url_absolue($source)) {
return _T('medias:erreur_chemin_distant', ['nom' => $source]);
return _T('medias:erreur_chemin_distant', array('nom' => $source));
}
include_spip('inc/distant');
$source = str_replace(["'",'"','<'], ['%27','%22','%3C'], $source);
$source = str_replace(array("'",'"','<'),array("%27",'%22','%3C'), $source);
if (is_array($a = renseigner_source_distante($source))) {
$champs = $a;
# NB: dans les bonnes conditions (fichier autorise et pas trop gros)
# $a['copie_locale'] est une copie locale du fichier
// voir si le document a besoin d'un nettoyage et le cas echeant relire ses infos apres
if (!empty($champs['copie_locale']) and file_exists($champs['copie_locale'])) {
$res_sanitize = sanitizer_document($champs['copie_locale'], $champs['extension']);
$infos = renseigner_taille_dimension_image($champs['copie_locale'], $champs['extension']);
}
else {
$infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension'], true);
}
# $a['fichier'] est une copie locale du fichier
$infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension'], true);
// on ignore erreur eventuelle sur $infos car on est distant, ca ne marche pas forcement
if (is_array($infos)) {
foreach ($infos as $k => $v) {
if (!empty($v) or empty($champs[$k])) {
$champs[$k] = $v;
}
}
$champs = array_merge($champs, $infos);
}
unset($champs['type_image']);
@ -168,9 +141,10 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
return $a; // message d'erreur
}
} else { // pas distant
$champs = [
$champs = array(
'distant' => 'non'
];
);
$champs['titre'] = '';
if ($titrer) {
@ -186,7 +160,7 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
if (!is_array($fichier = fixer_fichier_upload($file, $mode))) {
return is_string($fichier) ?
$fichier : _T('medias:erreur_upload_type_interdit', ['nom' => $file['name']]);
$fichier : _T('medias:erreur_upload_type_interdit', array('nom' => $file['name']));
}
$champs['inclus'] = $fichier['inclus'];
@ -211,8 +185,7 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
// Exemple : si extension .jpg mais le contenu est un png
if (!empty($infos['type_image']) and $infos['type_image'] !== $champs['extension']) {
spip_log('Image `' . $file['name'] . '` mauvaise extension. Correcte : ' . $infos['type_image'], 'medias' . _LOG_INFO);
$subdir = determiner_sous_dossier_document($infos['type_image'], $file['name'] . '.' . $infos['type_image'], $mode);
$new = copier_document($infos['type_image'], $file['name'] . '.' . $infos['type_image'], $champs['fichier'], $subdir);
$new = copier_document($infos['type_image'], $file['name'] . '.' . $infos['type_image'], $champs['fichier']);
if ($new) {
supprimer_fichier($champs['fichier']);
$champs['fichier'] = $new;
@ -228,28 +201,19 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
}
}
// voir si le document a besoin d'un nettoyage et le cas echeant relire ses infos apres
if (sanitizer_document($champs['fichier'], $champs['extension'])) {
$infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension']);
}
$champs = array_merge($champs, $infos);
// Si mode == 'choix', fixer le mode image/document
if (in_array($mode, ['choix', 'auto'])) {
if (in_array($mode, array('choix', 'auto'))) {
$choisir_mode_document = charger_fonction('choisir_mode_document', 'inc');
$mode = $choisir_mode_document($champs, $champs['inclus'] == 'image', $objet);
}
$champs['mode'] = $mode;
// ne pas tester les tailles max de logos et documents définies dans les defines _MAX_SIZE, _MAX_WIDTH & _MAX_HEIGHT
// lors de la migration des logos en base cf logo_migrer_en_base()
if (!isset($GLOBALS['logo_migrer_en_base'])) {
if (($test = verifier_taille_document_acceptable($champs)) !== true) {
spip_unlink($champs['fichier']);
if (($test = verifier_taille_document_acceptable($champs)) !== true) {
spip_unlink($champs['fichier']);
return $test; // erreur sur les dimensions du fichier
}
return $test; // erreur sur les dimensions du fichier
}
unset($champs['type_image']);
@ -267,8 +231,7 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
}
// lier le parent si necessaire
// attention au cas particulier du site 0 utilisé pour le logo du site
if ($objet and (($id_objet = intval($id_objet)) or in_array($objet, ['site', 'rubrique']))) {
if ($id_objet = intval($id_objet) and $objet) {
$champs['parents'][] = "$objet|$id_objet";
}
@ -292,13 +255,13 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
);
} else {
spip_log(
'Echec document_inserer() du document ' . $file['tmp_name'] . ' ' . $file['name'] . " (M '$mode' T '$objet' L '$id_objet' D '$id_document')",
'Echec insert_document() du document ' . $file['tmp_name'] . ' ' . $file['name'] . " (M '$mode' T '$objet' L '$id_objet' D '$id_document')",
'medias' . _LOG_ERREUR
);
}
}
if (!$id_document) {
return _T('medias:erreur_insertion_document_base', ['fichier' => '<em>' . $file['name'] . '</em>']);
return _T('medias:erreur_insertion_document_base', array('fichier' => '<em>' . $file['name'] . '</em>'));
}
document_modifier($id_document, $champs);
@ -308,8 +271,8 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
// Ce plugin ferait quand même mieux de se placer dans metadata/jpg.php
pipeline(
'post_edition',
[
'args' => [
array(
'args' => array(
'table' => 'spip_documents', // compatibilite
'table_objet' => 'documents',
'spip_table_objet' => 'spip_documents',
@ -319,27 +282,46 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
'serveur' => '', // serveur par defaut, on ne sait pas faire mieux pour le moment
'action' => 'ajouter_document',
'operation' => 'ajouter_document', // compat <= v2.0
],
),
'data' => $champs
]
)
);
return $id_document;
}
/**
* Sous-repertoire dans lequel on stocke le document
* en regle general $ext/ sauf pour les logo
* @param $ext
* @param $fichier
* @param $mode
* @return mixed
* Corrige l'extension du fichier dans quelques cas particuliers
*
* @note
* Une extension 'pdf ' passe dans la requête de contrôle
* mysql> SELECT * FROM spip_types_documents WHERE extension="pdf ";
*
* @todo
* À passer dans base/typedoc
*
* @param string $ext
* @return string
*/
function determiner_sous_dossier_document($ext, $fichier, $mode) {
// si mode un logoxx on met dans logo/
if (strncmp($mode, 'logo', 4) === 0) {
return 'logo';
function corriger_extension($ext) {
$ext = preg_replace(',[^a-z0-9],i', '', $ext);
switch ($ext) {
case 'htm':
$ext = 'html';
break;
case 'jpeg':
$ext = 'jpg';
break;
case 'tiff':
$ext = 'tif';
break;
case 'aif':
$ext = 'aiff';
break;
case 'mpeg':
$ext = 'mpg';
break;
}
return $ext;
@ -362,31 +344,26 @@ function determiner_sous_dossier_document($ext, $fichier, $mode) {
* - false ou message d'erreur si l'extension est refusée
*/
function verifier_upload_autorise($source, $mode = '') {
$infos = ['fichier' => $source];
$infos = array('fichier' => $source);
$res = false;
if (
preg_match(',\.([a-z0-9]+)(\?.*)?$,i', $source, $match)
if (preg_match(',\.([a-z0-9]+)(\?.*)?$,i', $source, $match)
and $ext = $match[1]
) {
$ext = corriger_extension(strtolower($ext));
if (
$res = sql_fetsel(
'extension,inclus,media_defaut as media',
'spip_types_documents',
'extension=' . sql_quote($ext) . " AND upload='oui'"
)
) {
if ($res = sql_fetsel(
'extension,inclus,media_defaut as media',
'spip_types_documents',
'extension=' . sql_quote($ext) . " AND upload='oui'"
)) {
$infos = array_merge($infos, $res);
}
}
if (!$res) {
if (
$res = sql_fetsel(
'extension,inclus,media_defaut as media',
'spip_types_documents',
"extension='zip' AND upload='oui'"
)
) {
if ($res = sql_fetsel(
'extension,inclus,media_defaut as media',
'spip_types_documents',
"extension='zip' AND upload='oui'"
)) {
$infos = array_merge($infos, $res);
$res['autozip'] = true;
}
@ -423,16 +400,15 @@ function verifier_upload_autorise($source, $mode = '') {
* Au format $_FILES
* @param string $mode
* Mode d'inclusion du fichier, si connu
* @return array|string
* @return array
*/
function fixer_fichier_upload($file, $mode = '') {
/**
* On vérifie que le fichier existe et qu'il contient quelque chose
*/
if (is_array($row = verifier_upload_autorise($file['name'], $mode))) {
$subdir = determiner_sous_dossier_document($row['extension'], $file['name'], $mode);
if (!isset($row['autozip'])) {
$row['fichier'] = copier_document($row['extension'], $file['name'], $file['tmp_name'], $subdir);
$row['fichier'] = copier_document($row['extension'], $file['name'], $file['tmp_name']);
/**
* On vérifie que le fichier a une taille
* si non, on le supprime et on affiche une erreur
@ -440,7 +416,7 @@ function fixer_fichier_upload($file, $mode = '') {
if ($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) {
spip_log('Echec copie du fichier ' . $file['tmp_name'] . ' (taille de fichier indéfinie)');
spip_unlink(get_spip_doc($row['fichier']));
return _T('medias:erreur_copie_fichier', ['nom' => $file['tmp_name']]);
return _T('medias:erreur_copie_fichier', array('nom' => $file['tmp_name']));
} else {
return $row;
}
@ -466,19 +442,25 @@ function fixer_fichier_upload($file, $mode = '') {
// deplacer le fichier tmp_name dans le dossier tmp
deplacer_fichier_upload($file['tmp_name'], $tmp, true);
include_spip('inc/pclzip');
$source = _DIR_TMP . basename($tmp_dir) . '.' . $ext;
include_spip('inc/archives');
$archive = new Spip\Archives\SpipArchives($source);
$res = $archive->emballer([$tmp]);
$archive = new PclZip($source);
$v_list = $archive->create(
$tmp,
PCLZIP_OPT_REMOVE_PATH,
$tmp_dir,
PCLZIP_OPT_ADD_PATH,
''
);
effacer_repertoire_temporaire($tmp_dir);
if (!$res) {
spip_log("Echec creation du zip $source", 'medias' . _LOG_ERREUR);
return _T('medias:erreur_ecriture_fichier');
if (!$v_list) {
spip_log('Echec creation du zip');
return false;
}
$row['fichier'] = copier_document($row['extension'], $file['name'], $source, $subdir);
$row['fichier'] = copier_document($row['extension'], $file['name'], $source);
spip_unlink($source);
/**
* On vérifie que le fichier a une taille
@ -488,7 +470,7 @@ function fixer_fichier_upload($file, $mode = '') {
spip_log('Echec copie du fichier ' . $file['tmp_name'] . ' (taille de fichier indéfinie)');
spip_unlink(get_spip_doc($row['fichier']));
return _T('medias:erreur_copie_fichier', ['nom' => $file['tmp_name']]);
return _T('medias:erreur_copie_fichier', array('nom' => $file['tmp_name']));
} else {
return $row;
}
@ -506,14 +488,78 @@ function fixer_fichier_upload($file, $mode = '') {
*/
function verifier_taille_document_acceptable(&$infos) {
$is_logo = in_array($infos['mode'], ['logoon', 'logooff']);
// si ce n'est pas une image
if (!$infos['type_image']) {
if (defined('_DOC_MAX_SIZE') and _DOC_MAX_SIZE > 0 and $infos['taille'] > _DOC_MAX_SIZE * 1024) {
return _T(
'medias:info_doc_max_poids',
array(
'maxi' => taille_en_octets(_DOC_MAX_SIZE * 1024),
'actuel' => taille_en_octets($infos['taille'])
)
);
}
} // si c'est une image
else {
if ((defined('_IMG_MAX_WIDTH') and _IMG_MAX_WIDTH and $infos['largeur'] > _IMG_MAX_WIDTH)
or (defined('_IMG_MAX_HEIGHT') and _IMG_MAX_HEIGHT and $infos['hauteur'] > _IMG_MAX_HEIGHT)
) {
$max_width = (defined('_IMG_MAX_WIDTH') and _IMG_MAX_WIDTH) ? _IMG_MAX_WIDTH : '*';
$max_height = (defined('_IMG_MAX_HEIGHT') and _IMG_MAX_HEIGHT) ? _IMG_MAX_HEIGHT : '*';
// pas la peine d'embeter le redacteur avec ca si on a active le calcul des miniatures
// on met directement a la taille maxi a la volee
if (isset($GLOBALS['meta']['creer_preview']) and $GLOBALS['meta']['creer_preview'] == 'oui') {
include_spip('inc/filtres');
$img = filtrer('image_reduire', $infos['fichier'], $max_width, $max_height);
$img = extraire_attribut($img, 'src');
$img = supprimer_timestamp($img);
if (@file_exists($img) and $img !== $infos['fichier']) {
spip_unlink($infos['fichier']);
@rename($img, $infos['fichier']);
$size = @getimagesize($infos['fichier']);
$infos['largeur'] = $size[0];
$infos['hauteur'] = $size[1];
$infos['taille'] = @filesize($infos['fichier']);
}
}
$verifier_taille_document_acceptable = charger_fonction('verifier_taille_document_acceptable', 'inc');
$res = $verifier_taille_document_acceptable($infos, $is_logo);
if ((defined('_IMG_MAX_WIDTH') and _IMG_MAX_WIDTH and $infos['largeur'] > _IMG_MAX_WIDTH)
or (defined('_IMG_MAX_HEIGHT') and _IMG_MAX_HEIGHT and $infos['hauteur'] > _IMG_MAX_HEIGHT)
) {
return _T(
'medias:info_image_max_taille',
array(
'maxi' =>
_T(
'info_largeur_vignette',
array(
'largeur_vignette' => $max_width,
'hauteur_vignette' => $max_height
)
),
'actuel' =>
_T(
'info_largeur_vignette',
array(
'largeur_vignette' => $infos['largeur'],
'hauteur_vignette' => $infos['hauteur']
)
)
)
);
}
}
// si erreur, on arrete la
if ($res !== true) {
return $res;
if (defined('_IMG_MAX_SIZE') and _IMG_MAX_SIZE > 0 and $infos['taille'] > _IMG_MAX_SIZE * 1024) {
return _T(
'medias:info_image_max_poids',
array(
'maxi' => taille_en_octets(_IMG_MAX_SIZE * 1024),
'actuel' => taille_en_octets($infos['taille'])
)
);
}
}
// verifier en fonction du mode si une fonction est proposee

25
action/changer_mode_document.php

@ -1,13 +1,13 @@
<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* Copyright (c) 2001-2020 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) {
@ -18,6 +18,8 @@ if (!defined('_ECRIRE_INC_VERSION')) {
/**
* Cette action permet de basculer du mode image au mode document et vice versa
*
* https://code.spip.net/@action_changer_mode_document_dist
*
* @param int $id_document
* @param string $mode
* @return void
@ -31,12 +33,11 @@ function action_changer_mode_document_dist($id_document = null, $mode = null) {
spip_log("action_changer_mode_document $arg pas compris");
} else {
array_shift($r);
[$id_document, $mode] = $r;
list($id_document, $mode) = $r;
}
}
if (
$id_document
if ($id_document
and include_spip('inc/autoriser')
and autoriser('modifier', 'document', $id_document)
) {
@ -44,14 +45,14 @@ function action_changer_mode_document_dist($id_document = null, $mode = null) {
}
}
// https://code.spip.net/@action_changer_mode_document_post
function action_changer_mode_document_post($id_document, $mode) {
// - id_document le doc a modifier
// - mode le mode a lui donner
if (
$id_document = intval($id_document)
and in_array($mode, ['vignette', 'image', 'document'])
if ($id_document = intval($id_document)
and in_array($mode, array('vignette', 'image', 'document'))
) {
include_spip('action/editer_document');
document_modifier($id_document, ['mode' => $mode]);
document_modifier($id_document, array('mode' => $mode));
}
}

45
action/copier_local.php

@ -1,13 +1,13 @@
<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* Copyright (c) 2001-2020 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) {
@ -20,6 +20,8 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* Il s'agit de la partie logique, c'est a dire que cette fonction
* realise la copie.
*
* https://code.spip.net/@action_copier_local_dist
*
* @param null $id_document
* @return bool|mixed|string
*/
@ -44,6 +46,7 @@ function action_copier_local_dist($id_document = null) {
}
/**
* https://code.spip.net/@action_copier_local_post
*
* @param $id_document
* @return bool|mixed|string
@ -51,29 +54,22 @@ function action_copier_local_dist($id_document = null) {
function action_copier_local_post($id_document) {
// Il faut la source du document pour le copier
$row = sql_fetsel('mode,fichier, descriptif, credits', 'spip_documents', 'id_document=' . intval($id_document));
$row = sql_fetsel('mode,fichier, descriptif, credits', 'spip_documents', 'id_document='.intval($id_document));
$source = $row['fichier'];
// si la source est bien un fichier distant
// sinon c'est une donnee moisie, on ne fait rien
include_spip('inc/distant');
if (
tester_url_absolue($source)
and valider_url_distante($source)
) {
// on fait une copie locale en verifiant aussi l'URL finale qui a été récupérée
$fichier = copie_locale($source, 'auto', null, null, 'valider_url_distante');
// on revalide la source *apres* copie car si elle est controlee par un serveur dns malicieux elle peut etre changeante
if (
$fichier
and valider_url_distante($source)
) {
if (tester_url_absolue($source)) {
include_spip('inc/distant'); // pour 'copie_locale'
$fichier = copie_locale($source);
if ($fichier
and tester_url_absolue($source)) {
$fichier = _DIR_RACINE . $fichier;
$files = [];
$files[] = ['tmp_name' => $fichier, 'name' => basename($fichier)];
$files = array();
$files[] = array('tmp_name' => $fichier, 'name' => basename($fichier));
$ajouter_documents = charger_fonction('ajouter_documents', 'action');
spip_log("convertit doc $id_document en local: $source => $fichier", 'medias');
$liste = [];
$liste = array();
$ajouter_documents($id_document, $files, '', 0, $row['mode'], $liste);
spip_unlink($fichier);
@ -82,19 +78,16 @@ function action_copier_local_post($id_document) {
include_spip('action/editer_document');
document_modifier(
$id_document,
['credits' => ($row['credits'] ? $row['credits'] . ', ' : '') . $source]
array('credits' => ($row['credits'] ? $row['credits'] . ', ' : '') . $source)
);
return true;
} else {
spip_log("echec copie locale $source", 'medias' . _LOG_ERREUR);
if ($fichier) {
@unlink(_DIR_RACINE . $fichier);
}
}
} else {
spip_log("echec copie locale $source n'est pas une URL distante", 'medias' . _LOG_ERREUR);
}
return _T('medias:erreur_copie_fichier', ['nom' => $source]);
return _T('medias:erreur_copie_fichier', array('nom' => $source));
}

24
action/desordonner_liens_documents.php

@ -1,13 +1,13 @@
<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* Copyright (c) 2001-2020 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
@ -40,7 +40,7 @@ function action_desordonner_liens_documents_dist($arg = null) {
}
$arg = explode('-', $arg);
[$id_objet, $objet, $document] = $arg;
list($id_objet, $objet, $document) = $arg;
if (
$id_objet = intval($id_objet)