Browse Source

Mauvais rangement.

3.2
marcimat@rezo.net 5 years ago
commit
fac6e268f3
  1. 562
      .gitattributes
  2. 128
      action/acceder_document.php
  3. 566
      action/ajouter_documents.php
  4. 58
      action/changer_mode_document.php
  5. 93
      action/copier_local.php
  6. 108
      action/desordonner_liens_documents.php
  7. 187
      action/dissocier_document.php
  8. 373
      action/editer_document.php
  9. 103
      action/ordonner_liens_documents.php
  10. 92
      action/supprimer_document.php
  11. 60
      action/supprimer_tous_orphelins.php
  12. 162
      action/tourner.php
  13. 36
      action/verifier_documents_brises.php
  14. 40
      action/verifier_documents_liens.php
  15. 327
      base/medias.php
  16. 410
      base/typedoc.php
  17. 24
      formulaires/changer_fichier_document.html
  18. 63
      formulaires/changer_fichier_document.php
  19. 38
      formulaires/configurer_documents.html
  20. 60
      formulaires/configurer_documents.php
  21. 112
      formulaires/editer_document.html
  22. 246
      formulaires/editer_document.php
  23. 27
      formulaires/illustrer_document.html
  24. 82
      formulaires/illustrer_document.php
  25. 46
      formulaires/inc-lister_archive_jointe.html
  26. 55
      formulaires/inc-upload_document.html
  27. 23
      formulaires/joindre_document.html
  28. 506
      formulaires/joindre_document.php
  29. 8
      formulaires/methodes_upload/distant.html
  30. 16
      formulaires/methodes_upload/ftp.html
  31. 14
      formulaires/methodes_upload/mediatheque.html
  32. 8
      formulaires/methodes_upload/upload.html
  33. 67
      inc/choisir_mode_document.php
  34. 50
      inc/documenter_objet.php
  35. 259
      inc/documents.php
  36. 58
      inc/getdocument.php
  37. 396
      inc/joindre_document.php
  38. 156
      inc/marquer_doublons_doc.php
  39. 161
      inc/renseigner_document.php
  40. 30
      inc/verifier_document_mode_image.php
  41. 30
      inc/verifier_document_mode_vignette.php
  42. 72
      inc/vignette.php
  43. 195
      javascript/gestion_listes_documents.js.html
  44. 539
      javascript/jquery.multifile.js
  45. 27
      javascript/medias_edit.js
  46. 94
      javascript/mejs-init.js
  47. 1
      javascript/mejs-init.min.js
  48. 172
      lang/medias.xml
  49. 212
      lang/medias_ar.php
  50. 60
      lang/medias_ast.php
  51. 36
      lang/medias_ay.php
  52. 54
      lang/medias_bg.php
  53. 59
      lang/medias_br.php
  54. 51
      lang/medias_bs.php
  55. 112
      lang/medias_ca.php
  56. 58
      lang/medias_co.php
  57. 53
      lang/medias_cpf.php
  58. 54
      lang/medias_cpf_hat.php
  59. 54
      lang/medias_cs.php
  60. 34
      lang/medias_da.php
  61. 210
      lang/medias_de.php
  62. 39
      lang/medias_el.php
  63. 211
      lang/medias_en.php
  64. 35
      lang/medias_en_hx.php
  65. 60
      lang/medias_eo.php
  66. 195
      lang/medias_es.php
  67. 55
      lang/medias_eu.php
  68. 193
      lang/medias_fa.php
  69. 47
      lang/medias_fon.php
  70. 209
      lang/medias_fr.php
  71. 207
      lang/medias_fr_fem.php
  72. 211
      lang/medias_fr_tu.php
  73. 59
      lang/medias_gl.php
  74. 35
      lang/medias_hac.php
  75. 52
      lang/medias_he.php
  76. 51
      lang/medias_hr.php
  77. 55
      lang/medias_hu.php
  78. 53
      lang/medias_id.php
  79. 26
      lang/medias_is.php
  80. 195
      lang/medias_it.php
  81. 57
      lang/medias_it_fem.php
  82. 51
      lang/medias_ja.php
  83. 53
      lang/medias_km.php
  84. 40
      lang/medias_la.php
  85. 193
      lang/medias_lb.php
  86. 40
      lang/medias_lt.php
  87. 51
      lang/medias_my.php
  88. 45
      lang/medias_nap.php
  89. 41
      lang/medias_nb.php
  90. 41
      lang/medias_ne.php
  91. 212
      lang/medias_nl.php
  92. 54
      lang/medias_oc_auv.php
  93. 54
      lang/medias_oc_gsc.php
  94. 54
      lang/medias_oc_lms.php
  95. 55
      lang/medias_oc_lnc.php
  96. 54
      lang/medias_oc_ni.php
  97. 54
      lang/medias_oc_ni_la.php
  98. 195
      lang/medias_oc_ni_mis.php
  99. 54
      lang/medias_oc_prv.php
  100. 54
      lang/medias_oc_va.php
  101. Some files were not shown because too many files have changed in this diff Show More

562
.gitattributes vendored

@ -0,0 +1,562 @@
* 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/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

128
action/acceder_document.php

@ -0,0 +1,128 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* 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')) {
return;
}
include_spip('inc/headers');
// acces aux documents joints securise
// verifie soit que le demandeur est authentifie
// 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() {
include_spip('inc/documents');
// $file exige pour eviter le scan id_document par id_document
$f = rawurldecode(_request('file'));
$file = get_spip_doc($f);
$arg = rawurldecode(_request('arg'));
$status = false;
if (strpos($f, '../') !== false
or preg_match(',^\w+://,', $f)
) {
$status = 403;
} else {
if (!file_exists($file) or !is_readable($file)) {
$status = 404;
} else {
$where = 'D.fichier=' . sql_quote(set_spip_doc($file))
. ($arg ? ' AND D.id_document=' . intval($arg) : '');
$doc = sql_fetsel(
'D.id_document, D.titre, D.fichier, T.mime_type, T.inclus, D.extension',
'spip_documents AS D LEFT JOIN spip_types_documents AS T ON D.extension=T.extension',
$where
);
if (!$doc) {
$status = 404;
} else {
// ETag pour gerer le status 304
$ETag = md5($file . ': ' . filemtime($file));
if (isset($_SERVER['HTTP_IF_NONE_MATCH'])
and $_SERVER['HTTP_IF_NONE_MATCH'] == $ETag
) {
http_status(304); // Not modified
exit;
} else {
header('ETag: ' . $ETag);
}
//
// Verifier les droits de lecture du document
// en controlant la cle passee en argument
//
include_spip('inc/securiser_action');
$cle = _request('cle');
if (!verifier_cle_action($doc['id_document'] . ',' . $f, $cle)) {
spip_log("acces interdit $cle erronee");
$status = 403;
}
}
}
}
switch ($status) {
case 403:
include_spip('inc/minipres');
echo minipres();
break;
case 404:
http_status(404);
include_spip('inc/minipres');
echo minipres(_T('erreur') . ' 404', _T('medias:info_document_indisponible'));
break;
default:
header('Content-Type: ' . $doc['mime_type']);
// pour les images ne pas passer en attachment
// sinon, lorsqu'on pointe directement sur leur adresse,
// le navigateur les downloade au lieu de les afficher
if ($doc['inclus'] == 'non') {
// Si le fichier a un titre avec extension,
// ou si c'est un nom bien connu d'Unix, le prendre
// sinon l'ignorer car certains navigateurs pataugent
$f = basename($file);
if (isset($doc['titre'])
and (preg_match('/^\w+[.]\w+$/', $doc['titre']) or $doc['titre'] == 'Makefile')
) {
$f = $doc['titre'];
}
// ce content-type est necessaire pour eviter des corruptions de zip dans ie6
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=\"$f\";");
header('Content-Transfer-Encoding: binary');
// fix for IE catching or PHP bug issue
header('Pragma: public');
header('Expires: 0'); // set expiration time
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
}
if ($cl = filesize($file)) {
header('Content-Length: ' . $cl);
}
readfile($file);
break;
}
}

566
action/ajouter_documents.php

@ -0,0 +1,566 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* 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. *
\***************************************************************************/
/**
* Gestion de l'action ajouter_documents
*
* @package SPIP\Medias\Action
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/getdocument');
include_spip('inc/documents');
include_spip('inc/choisir_mode_document'); // compat core
include_spip('inc/renseigner_document');
/**
* Ajouter des documents
*
* @param int $id_document
* Document à remplacer, ou pour une vignette, l'id_document de maman
* 0 ou 'new' pour une insertion
* @param array $files
* Tableau de tableaux de propriétés pour chaque document à insérer
* @param string $objet
* Objet auquel associer le document
* @param int $id_objet
* id_objet
* @param string $mode
* Mode par défaut si pas precisé pour le document
* @return array
* Liste des id_documents inserés
*/
function action_ajouter_documents_dist($id_document, $files, $objet, $id_objet, $mode) {
$ajouter_un_document = charger_fonction('ajouter_un_document', 'action');
$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)) {
$ajoutes[] = $ajouter_un_document($id_document, reset($files), $objet, $id_objet, $mode);
} else {
foreach ($files as $file) {
$ajoutes[] = $ajouter_un_document('new', $file, $objet, $id_objet, $mode);
}
}
return $ajoutes;
}
/**
* Ajouter un document (au format $_FILES)
*
* @param int $id_document
* Document à remplacer, ou pour une vignette, l'id_document de maman
* 0 ou 'new' pour une insertion
* @param array $file
* Propriétes au format $_FILE étendu :
*
* - string tmp_name : source sur le serveur
* - string name : nom du fichier envoye
* - bool titrer : donner ou non un titre a partir du nom du fichier
* - bool distant : pour utiliser une source distante sur internet
* - string mode : vignette|image|documents|choix
* @param string $objet
* Objet auquel associer le document
* @param int $id_objet
* id_objet
* @param string $mode
* Mode par défaut si pas precisé pour le document
* @return array|bool|int|mixed|string|unknown
*
* - int : l'id_document ajouté (opération réussie)
* - string : une erreur s'est produit, la chaine est le message d'erreur
*
*/
function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, $mode) {
$source = $file['tmp_name'];
$nom_envoye = $file['name'];
// passer en minuscules le nom du fichier, pour eviter les collisions
// si le file system fait la difference entre les deux il ne detectera
// pas que Toto.pdf et toto.pdf
// et on aura une collision en cas de changement de file system
$file['name'] = strtolower(translitteration($file['name']));
// 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 = 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, 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'];
unset($file['distant']);
}
// Documents distants : pas trop de verifications bloquantes, mais un test
// via une requete HEAD pour savoir si la ressource existe (non 404), si le
// 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', array('nom' => $source));
}
include_spip('inc/distant');
$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['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)) {
$champs = array_merge($champs, $infos);
}
unset($champs['type_image']);
} // on ne doit plus arriver ici, car l'url distante a ete verifiee a la saisie !
else {
spip_log("Echec du lien vers le document $source, abandon");
return $a; // message d'erreur
}
} else { // pas distant
$champs = array(
'distant' => 'non'
);
$champs['titre'] = '';
if ($titrer) {
$titre = substr($nom_envoye, 0, strrpos($nom_envoye, '.')); // Enlever l'extension du nom du fichier
$titre = preg_replace(',[[:punct:][:space:]]+,u', ' ', $titre);
$champs['titre'] = preg_replace(',\.([^.]+)$,', '', $titre);
}
if (!is_array($fichier = fixer_fichier_upload($file, $mode))) {
return is_string($fichier) ?
$fichier : _T('medias:erreur_upload_type_interdit', array('nom' => $file['name']));
}
$champs['inclus'] = $fichier['inclus'];
$champs['extension'] = $fichier['extension'];
$champs['fichier'] = $fichier['fichier'];
/**
* Récupère les informations du fichier
* -* largeur
* -* hauteur
* -* type_image
* -* taille
* -* ses metadonnées si une fonction de metadatas/ est présente
*/
$infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension']);
if (is_string($infos)) {
// c'est un message d'erreur !
return $infos;
}
// lorsqu’une image arrive avec une mauvaise extension par rapport au mime type, adapter.
// 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);
$new = copier_document($infos['type_image'], $file['name'] . '.' . $infos['type_image'], $champs['fichier']);
if ($new) {
supprimer_fichier($champs['fichier']);
$champs['fichier'] = $new;
$champs['extension'] = $infos['type_image'];
$infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension']);
if (is_string($infos)) {
// c'est un message d'erreur !
return $infos;
}
spip_log('> Image `' . $file['name'] . '` renommée en : ' . basename($champs['fichier']), 'medias' . _LOG_INFO);
} else {
spip_log('! Image `' . $file['name'] . '` non renommée en extension : ' . $champs['extension'], 'medias' . _LOG_INFO_IMPORTANTE);
}
}
$champs = array_merge($champs, $infos);
// Si mode == 'choix', fixer le mode image/document
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;
if (($test = verifier_taille_document_acceptable($champs)) !== true) {
spip_unlink($champs['fichier']);
return $test; // erreur sur les dimensions du fichier
}
unset($champs['type_image']);
unset($champs['inclus']);
$champs['fichier'] = set_spip_doc($champs['fichier']);
}
// si le media est pas renseigne, le faire, en fonction de l'extension
if (!isset($champs['media'])) {
$champs['media'] = sql_getfetsel(
'media_defaut',
'spip_types_documents',
'extension=' . sql_quote($champs['extension'])
);
}
// lier le parent si necessaire
if ($id_objet = intval($id_objet) and $objet) {
$champs['parents'][] = "$objet|$id_objet";
}
// "mettre a jour un document" si on lui
// passe un id_document
if ($id_document = intval($id_document)) {
unset($champs['titre']); // garder le titre d'origine
unset($champs['date']); // garder la date d'origine
unset($champs['descriptif']); // garder la desc d'origine
// unset($a['distant']); # on peut remplacer un doc statique par un doc distant
// unset($a['mode']); # on peut remplacer une image par un document ?
}
include_spip('action/editer_document');
// Installer le document dans la base
if (!$id_document) {
if ($id_document = document_inserer()) {
spip_log(
'ajout du document ' . $file['tmp_name'] . ' ' . $file['name'] . " (M '$mode' T '$objet' L '$id_objet' D '$id_document')",
'medias'
);
} else {
spip_log(
'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', array('fichier' => '<em>' . $file['name'] . '</em>'));
}
document_modifier($id_document, $champs);
// permettre aux plugins de faire des modifs a l'ajout initial
// ex EXIF qui tourne les images si necessaire
// Ce plugin ferait quand même mieux de se placer dans metadata/jpg.php
pipeline(
'post_edition',
array(
'args' => array(
'table' => 'spip_documents', // compatibilite
'table_objet' => 'documents',
'spip_table_objet' => 'spip_documents',
'type' => 'document',
'id_objet' => $id_document,
'champs' => array_keys($champs),
'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;
}
/**
* 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 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;
}
/**
* Vérifie la possibilité d'uploader une extension
*
* Vérifie aussi si l'extension est autorisée pour le mode demandé
* si on connait le mode à ce moment là
*
* @param string $source
* Nom du fichier
* @param string $mode
* Mode d'inclusion du fichier, si connu
* @return array|bool|string
*
* - array : extension acceptée (tableau descriptif).
* Avec un index 'autozip' si il faut zipper
* - false ou message d'erreur si l'extension est refusée
*/
function verifier_upload_autorise($source, $mode = '') {
$infos = array('fichier' => $source);
$res = false;
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'"
)) {
$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'"
)) {
$infos = array_merge($infos, $res);
$res['autozip'] = true;
}
}
if ($mode and $res) {
// verifier en fonction du mode si une fonction est proposee
if ($verifier_document_mode = charger_fonction('verifier_document_mode_' . $mode, 'inc', true)) {
$check = $verifier_document_mode($infos); // true ou message d'erreur sous forme de chaine
if ($check !== true) {
$res = $check;
}
}
}
if (!$res or is_string($res)) {
spip_log("Upload $source interdit ($res)", _LOG_INFO_IMPORTANTE);
}
return $res;
}
/**
* Tester le type de document
*
* - le document existe et n'est pas de taille 0 ?
* - interdit a l'upload ?
* - quelle extension dans spip_types_documents ?
* - est-ce "inclus" comme une image ?
*
* Le zipper si necessaire
*
* @param array $file
* Au format $_FILES
* @param string $mode
* Mode d'inclusion du fichier, si connu
* @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))) {
if (!isset($row['autozip'])) {
$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
*/
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', array('nom' => $file['tmp_name']));
} else {
return $row;
}
} else {
// creer un zip comme demande
// pour encapsuler un fichier dont l'extension n'est pas supportee
unset($row['autozip']);
$ext = 'zip';
if (!$tmp_dir = tempnam(_DIR_TMP, 'tmp_upload')) {
return false;
}
spip_unlink($tmp_dir);
@mkdir($tmp_dir);
include_spip('inc/charsets');
$tmp = $tmp_dir . '/' . translitteration($file['name']);
// conserver l'extension dans le nom de fichier, par exemple toto.js => toto.js.zip
$file['name'] .= '.' . $ext;
// 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;
$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 (!$v_list) {
spip_log('Echec creation du zip');
return false;
}
$row['fichier'] = copier_document($row['extension'], $file['name'], $source);
spip_unlink($source);
/**
* On vérifie que le fichier a une taille
* si non, on le supprime et on affiche une erreur
*/
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', array('nom' => $file['tmp_name']));
} else {
return $row;
}
}
} else {
return $row;
} // retourner le message d'erreur
}
/**
* Verifier si le fichier respecte les contraintes de tailles
*
* @param array $infos
* @return bool|mixed|string
*/
function verifier_taille_document_acceptable(&$infos) {
// 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']);
}
}
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']
)
)
)
);
}
}
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
if ($verifier_document_mode = charger_fonction('verifier_document_mode_' . $infos['mode'], 'inc', true)) {
return $verifier_document_mode($infos);
}
return true;
}

58
action/changer_mode_document.php

@ -0,0 +1,58 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* 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')) {
return;
}
/**
* 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
*/
function action_changer_mode_document_dist($id_document = null, $mode = null) {
if (is_null($id_document) or is_null($mode)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
if (!preg_match(',^(\d+)\W(\w+)$,', $arg, $r)) {
spip_log("action_changer_mode_document $arg pas compris");
} else {
array_shift($r);
list($id_document, $mode) = $r;
}
}
if ($id_document
and include_spip('inc/autoriser')
and autoriser('modifier', 'document', $id_document)
) {
action_changer_mode_document_post($id_document, $mode);
}
}
// 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, array('vignette', 'image', 'document'))
) {
include_spip('action/editer_document');
document_modifier($id_document, array('mode' => $mode));
}
}

93
action/copier_local.php

@ -0,0 +1,93 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* 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')) {
return;
}
/**
* Fonction appellee lorsque l'utilisateur clique sur le bouton
* 'copier en local' (document/portfolio).
* 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
*/
function action_copier_local_dist($id_document = null) {
if (!$id_document) {
// Recupere les arguments.
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
$id_document = intval($arg);
}
if (!$id_document) {
spip_log("action_copier_local_dist $arg pas compris");
return false;
} else {
// arguments recuperes, on peut maintenant appeler la fonction.
return action_copier_local_post($id_document);
}
}
/**
* https://code.spip.net/@action_copier_local_post
*
* @param $id_document
* @return bool|mixed|string
*/
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));
$source = $row['fichier'];
// si la source est bien un fichier distant
// sinon c'est une donnee moisie, on ne fait rien
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 = 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 = array();
$ajouter_documents($id_document, $files, '', 0, $row['mode'], $liste);
spip_unlink($fichier);
// ajouter l'origine du document aux credits
include_spip('action/editer_document');
document_modifier(
$id_document,
array('credits' => ($row['credits'] ? $row['credits'] . ', ' : '') . $source)
);
return true;
} else {
spip_log("echec copie locale $source", 'medias' . _LOG_ERREUR);
}
} else {
spip_log("echec copie locale $source n'est pas une URL distante", 'medias' . _LOG_ERREUR);
}
return _T('medias:erreur_copie_fichier', array('nom' => $source));
}

108
action/desordonner_liens_documents.php

@ -0,0 +1,108 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* 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. *
\***************************************************************************/
/**
* Gestion de l'action desordonner_document
*
* @package SPIP\Medias\Action
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Désordonner des documents
*
* @param string $arg
* fournit les arguments de la fonction dissocier_document
* sous la forme `$id_objet-$objet-$document-suppr-safe`
*
* - 4eme arg : suppr = true, false sinon
* - 5eme arg : safe = true, false sinon
*
* @return void
*/
function action_desordonner_liens_documents_dist($arg = null) {
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
$arg = explode('-', $arg);
list($id_objet, $objet, $document) = $arg;
if (
$id_objet = intval($id_objet)
and autoriser('desordonnerdocuments', $objet, $id_objet)
) {
desordonner_liens_documents($document, $objet, $id_objet);
} else {
spip_log("Interdit de désordonner les documents sur : $objet $id_objet", 'spip');
}
}
/**
* Désordonner des documents
*
* @param int|string $document
* id_document a désordonner
* I/image pour dissocier les images en mode Image
* I/document pour dissocier les images en mode document
* D/document pour dissocier les documents non image en mode document
* @param string $objet
* objet duquel dissocier
* @param $id_objet
* id_objet duquel dissocier
* @return void
*/
function desordonner_liens_documents($document, $objet, $id_objet) {
include_spip('action/editer_liens');
if ($id_document = intval($document)) {
desordonner_liens_document($id_document, $objet, $id_objet);
} else {
list($image, $mode) = explode('/', $document);
$image = ($image == 'I');
$typdoc = sql_in('docs.extension', array('gif', 'jpg', 'png'), $image ? '' : 'NOT');
$obj = 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet);
$s = sql_select(
'docs.id_document',
'spip_documents AS docs LEFT JOIN spip_documents_liens AS l ON l.id_document=docs.id_document',
"$obj AND vu='non' AND docs.mode=" . sql_quote($mode) . " AND $typdoc"
);
while ($t = sql_fetch($s)) {
desordonner_liens_document($t['id_document'], $objet, $id_objet);
}
}
}
/**
* Désordonner un document
*
* @param int $id_document
* id_document a désordonner
* @param string $objet
* objet duquel dissocier
* @param $id_objet
* id_objet duquel dissocier
* @return void
*/
function desordonner_liens_document($id_document, $objet, $id_objet) {
objet_qualifier_liens(
array('document' => $id_document),
array($objet => $id_objet),
array('rang_lien' => 0)
);
}

187
action/dissocier_document.php

<
@ -0,0 +1,187 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* 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. *
\***************************************************************************/
/**
* Gestion de l'action dissocier_document
*
* @package SPIP\Medias\Action
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Dissocier un document
*
* @param string $arg
* fournit les arguments de la fonction dissocier_document
* sous la forme `$id_objet-$objet-$document-suppr-safe`
*
* - 4eme arg : suppr = true, false sinon
* - 5eme arg : safe = true, false sinon
*
* @return void
*/
function action_dissocier_document_dist($arg = null) {
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
// attention au cas ou id_objet est negatif !
if (strncmp($arg, '-', 1) == 0) {
$arg = explode('-', substr($arg, 1));
list($id_objet, $objet, $document) = $arg;
$id_objet = -$id_objet;
} else {
$arg = explode('-', $arg);
list($id_objet, $objet, $document) = $arg;
}
$suppr = $check = false;
if (count($arg) > 3 and $arg[3] == 'suppr') {
$suppr = true;
}
if (count($arg) > 4 and $arg[4] == 'safe') {
$check = true;
}
if ($id_objet = intval($id_objet)
and (
($id_objet < 0 and $id_objet == -$GLOBALS['visiteur_session']['id_auteur'])
or autoriser('dissocierdocuments', $objet, $id_objet)
)
) {
dissocier_document($document, $objet, $id_objet, $suppr, $check);
} else {
spip_log("Interdit de modifier $objet $id_objet", 'spip');
}
}
/**
* Supprimer un lien entre un document et un objet
*
* @param int $id_document
* @param string $objet
* @param int $id_objet
* @param bool $supprime
* si true, le document est supprime si plus lie a aucun objet
* @param bool $check
* si true, on verifie les documents references dans le texte de l'objet
* et on les associe si pas deja fait
* @return bool
*/
function supprimer_lien_document($id_document, $objet, $id_objet, $supprime = false, $check = false) {
if (!$id_document = intval($id_document)) {
return false;
}
// [TODO] le mettre en paramètre de la fonction ?
$serveur = '';
// D'abord on ne supprime pas, on dissocie
include_spip('action/editer_liens');
objet_dissocier(array('document' => $id_document), array($objet => $id_objet), array('role' => '*'));
// Si c'est une vignette, l'eliminer du document auquel elle appartient