feat(autoload): Spip\Bigup dans l'autoloader

pull/4875/head
JamesRezo 2 months ago
parent 31ae00dd99
commit 0303d906ce

@ -4,6 +4,7 @@
### Added
- Autoloading PSR-4 Spip\Bigup
- Installable en tant que package Composer
### Changed

@ -1,7 +1,7 @@
# Big up (big upload)
Plugin SPIP permettant de téléverser de gros fichiers dans SPIP dans des formulaires CVT.
Fournit une API
Fournit une API
## Fonctionnement général
@ -14,7 +14,6 @@ Il est possible, dans le code html du formulaire de lister les fichiers
déjà envoyés, pour chaque champ de type file concerné (et de pouvoir demander
leur suppression).
### Amélioration javascript
Par dessus cela s'ajoute une couche javascript qui permet de téléverser
@ -30,7 +29,6 @@ dessus par exemple), et que l'utilisateur remet le même fichier à téléverser
les morceaux déjà reçus ne seront pas réenvoyés, ce qui économise un peu de
temps et de bande passante.
## Fonctionnement technique
Le fonctionnement général s'appuie sur les formulaires CVT de SPIP
@ -40,7 +38,7 @@ Pour les détails, lire : [le fonctionnement technique](https://github.com/marci
### Résumé
Au chargement d'un formulaire CVT, si la clé `_bigup_rechercher_fichiers`
Au chargement d'un formulaire CVT, si la clé `_bigup_rechercher_fichiers`
est présente, le plugin Bigup se chargera de retrouver les fichiers
déjà chargés pour ce formulaire et d'ajouter leur liste, pour chaque
champ concerné du formulaire, dans l'environnement.
@ -52,7 +50,7 @@ La saisie `bigup` dans le formulaire peut ensuite gérer l'ajout
de nouveaux fichiers et présenter la liste des fichiers déjà présents.
Le javascript Bigup qui utilise [la librairie Flow.js](https://github.com/flowjs/flow.js/)
ajoute une gestion en ajax du téléversement des fichiers, même très volumineux,
ajoute une gestion en ajax du téléversement des fichiers, même très volumineux,
dès qu'ils sont ajoutés. Le token de l'input, qui est envoyé
à PHP sert d'autorisation pour recevoir ces fichiers.
@ -65,22 +63,21 @@ nécessaires au calcul de la balise `#BIGUP_TOKEN`, ainsi que la liste des *fich
Le plugin dispose d'une saisie `bigup` à laquelle on peut passer
un certain nombre d'options, notamment `accept` et `multiple`
Pour les détails lire :
[la balise `#SAISIE_FICHIER`](https://github.com/marcimat/bigup/wiki/balise-SAISIE-fichier)
Pour les détails lire :
[la balise `#SAISIE_FICHIER`](https://github.com/marcimat/bigup/wiki/balise-SAISIE-fichier)
ou [la saisie `bigup`](hhttps://github.com/marcimat/bigup/wiki/balise-SAISIE-bigup).
Exemple :
[(#SAISIE_FICHIER{bigup, images,
[(#SAISIE_FICHIER{bigup, images,
label=Des images (par mime type),
accept=image/*,
multiple=oui})]
[(#SAISIE_FICHIER{bigup, cv,
[(#SAISIE_FICHIER{bigup, cv,
label=Un fichier pdf (par extension),
accept=.pdf})]
### Les nettoyages
Un cron nettoie tous les jours les fichiers partiels ou complets
@ -90,8 +87,7 @@ Ce même nettoyage est aussi réalisé dès qu'un fichier complet est reconstitu
c'est à dire après la réception de son dernier morceau.
Enfin après le traitement du formulaire, tous les fichiers complets
non utilisés de celui-ci sont enlevés.
non utilisés de celui-ci sont enlevés.
### Création d'un formulaire pour uploader les fichiers
@ -106,20 +102,20 @@ ce qui revient à écrire la plupart du temps :
<form method="post" action="#ENV{action}" enctype="multipart/form-data">
Les input qui autorisent plusieurs fichiers doivent l'indiquer :
- avec un nom de variable tableau, tel que `name='fichiers[]'`
- avec la propriété `multiple`
La saisie `bigup` s'occupe de cela dès lors que l'option multiple
est activée.
### Côté PHP
Pour recréer le tableu `$_FILES` tel que le crée habituellement PHP,
il faut connaître la valeur de l'attribut name de la balise input.
Pour recréer le tableu `$_FILES` tel que le crée habituellement PHP,
il faut connaître la valeur de l'attribut name de la balise input.
Cette valeur est transmise avec le token calculé, et est inscrite
dans le chemin de cache des fichiers reçu. Cela permet, à partir
Cette valeur est transmise avec le token calculé, et est inscrite
dans le chemin de cache des fichiers reçu. Cela permet, à partir
d'un fichier cache donné, de recréer le `$_FILES` qui lui correspondait.
[Voir les notes sur `$_FILES` dans le wiki](https://github.com/marcimat/bigup/wiki/Note-input-file-html5)
@ -128,13 +124,13 @@ d'un fichier cache donné, de recréer le `$_FILES` qui lui correspondait.
### JS
- Compatibilité plugin roles_documents
- Compatibilité plugin roles_documents
- Compatibilité plugin roles_logos
- Méthode pour simplifier lauto-submit des formulaires simples ?
### PHP
- Pouvoir restreindre par mime type
- Pouvoir restreindre par mime type
- Pouvoir restreindre par extension
### Autre
@ -147,5 +143,3 @@ d'un fichier cache donné, de recréer le `$_FILES` qui lui correspondait.
- Crée t'on un champ dans la table (c'est la logique de champs extras)
- ou ajoute t'on des liens sur l'objet sur spip_documents_liens…
- affiche-t-on des documents par défaut lorsqu'on édite le champ…

@ -1,5 +1,7 @@
<?php
use Spip\Bigup\Repondre;
/**
* Assez tôt on vérifie si on demande à tester la présence d'un morceau de fichier uploadé
* ou si on demande à envoyer un morceau de fichier.
@ -7,9 +9,8 @@
* Flow vérifie évidement que l'accès est accrédité !
**/
function action_bigup_dist() {
include_spip('inc/Bigup');
$bigup = \Spip\Bigup\Repondre::depuisRequest();
$bigup = Repondre::depuisRequest();
$bigup->repondre();
exit;
}

@ -1,5 +1,8 @@
<?php
use Spip\Bigup\Bigup;
use Spip\Bigup\Identifier;
/**
* Utilisations de pipelines par Big Upload
*
@ -126,14 +129,13 @@ function bigup_header_prive_css($flux) {
/**
* Obtenir une instance de la classe bigup pour ce formulaire
*
* @param array $flux
* Flux, tel que présent dans les pipelines des formulaires CVT
* @return \SPIP\Bigup\Bigup()
* @param array $flux Flux, tel que présent dans les pipelines des formulaires CVT
*
* @return Bigup
**/
function bigup_get_bigup($flux) {
include_spip('inc/Bigup');
$bigup = new \Spip\Bigup\Bigup(
\Spip\Bigup\Identifier::depuisArgumentsPipeline($flux['args'])
$bigup = new Bigup(
Identifier::depuisArgumentsPipeline($flux['args'])
);
return $bigup;
}

@ -32,5 +32,10 @@
"branch-alias": {
"dev-master": "3.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Spip\\Bigup\\": "src/"
}
}
}

@ -1,5 +1,7 @@
<?php
use Spip\Bigup\GestionRepertoires;
/**
* Tache de nettoyages de fichiers du plugin Big Upload
*
@ -20,9 +22,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { return;
* @return int
**/
function genie_bigup_nettoyer_repertoire_upload_dist($last) {
include_spip('inc/Bigup/GestionRepertoires');
\Spip\Bigup\GestionRepertoires::nettoyer_repertoire_recursif(_DIR_TMP . 'bigupload');
GestionRepertoires::nettoyer_repertoire_recursif(_DIR_TMP . 'bigupload');
return 1;
}

@ -4,6 +4,7 @@
<exclude-pattern>vendor/*</exclude-pattern>
<exclude-pattern>lang/*</exclude-pattern>
<exclude-pattern>lib/*</exclude-pattern>
<exclude-pattern>rector.php</exclude-pattern>
<rule ref="SPIP50"/>

@ -1,10 +1,5 @@
parameters:
ignoreErrors:
-
message: "#^Function include_spip not found\\.$#"
count: 1
path: action/bigup.php
-
message: "#^Function balise_INCLURE_dist not found\\.$#"
count: 1
@ -82,7 +77,7 @@ parameters:
-
message: "#^Function include_spip not found\\.$#"
count: 6
count: 5
path: bigup_pipelines.php
-
@ -140,258 +135,243 @@ parameters:
count: 3
path: formulaires/tester_bigup_extended.php
-
message: "#^Function include_spip not found\\.$#"
count: 1
path: genie/bigup_nettoyer_repertoire_upload.php
-
message: "#^Function _request not found\\.$#"
count: 1
path: inc/Bigup.php
-
message: "#^Function include_spip not found\\.$#"
count: 11
path: inc/Bigup.php
path: src/Bigup.php
-
message: "#^Function set_request not found\\.$#"
count: 2
path: inc/Bigup.php
path: src/Bigup.php
-
message: "#^Function spip_log not found\\.$#"
count: 1
path: inc/Bigup.php
path: src/Bigup.php
-
message: "#^Function spip_log not found\\.$#"
count: 1
path: inc/Bigup/Cache.php
path: src/Cache.php
-
message: "#^Function corriger_extension not found\\.$#"
count: 1
path: inc/Bigup/CacheFichiers.php
path: src/CacheFichiers.php
-
message: "#^Function ecrire_fichier not found\\.$#"
count: 1
path: inc/Bigup/CacheFichiers.php
path: src/CacheFichiers.php
-
message: "#^Function extraire_attribut not found\\.$#"
count: 3
path: inc/Bigup/CacheFichiers.php
path: src/CacheFichiers.php
-
message: "#^Function image_reduire not found\\.$#"
count: 1
path: inc/Bigup/CacheFichiers.php
path: src/CacheFichiers.php
-
message: "#^Function include_spip not found\\.$#"
count: 3
path: inc/Bigup/CacheFichiers.php
path: src/CacheFichiers.php
-
message: "#^Function lire_fichier not found\\.$#"
count: 2
path: inc/Bigup/CacheFichiers.php
path: src/CacheFichiers.php
-
message: "#^Function spip_log not found\\.$#"
count: 1
path: inc/Bigup/CacheFichiers.php
path: src/CacheFichiers.php
-
message: "#^Function supprimer_fichier not found\\.$#"
count: 1
path: inc/Bigup/CacheFichiers.php
path: src/CacheFichiers.php
-
message: "#^Function supprimer_timestamp not found\\.$#"
count: 1
path: inc/Bigup/CacheFichiers.php
path: src/CacheFichiers.php
-
message: "#^Function spip_log not found\\.$#"
count: 1
path: inc/Bigup/CacheRepertoire.php
path: src/CacheRepertoire.php
-
message: "#^Function spip_log not found\\.$#"
count: 1
path: inc/Bigup/Files.php
path: src/Files.php
-
message: "#^Undefined variable\\: \\$x$#"
count: 2
path: inc/Bigup/Files.php
path: src/Files.php
-
message: "#^Function _T not found\\.$#"
count: 1
path: inc/Bigup/Flow.php
path: src/Flow.php
-
message: "#^Function _request not found\\.$#"
count: 3
path: inc/Bigup/Flow.php
-
message: "#^Function include_spip not found\\.$#"
count: 1
path: inc/Bigup/Flow.php
path: src/Flow.php
-
message: "#^Function spip_log not found\\.$#"
count: 1
path: inc/Bigup/Flow.php
path: src/Flow.php
-
message: "#^Function taille_en_octets not found\\.$#"
count: 1
path: inc/Bigup/Flow.php
path: src/Flow.php
-
message: "#^Function find_in_path not found\\.$#"
count: 1
path: inc/Bigup/Formulaire.php
path: src/Formulaire.php
-
message: "#^Function include_spip not found\\.$#"
count: 4
path: inc/Bigup/Formulaire.php
count: 3
path: src/Formulaire.php
-
message: "#^Function inserer_attribut not found\\.$#"
count: 1
path: inc/Bigup/Formulaire.php
path: src/Formulaire.php
-
message: "#^Function pipeline not found\\.$#"
count: 1
path: inc/Bigup/Formulaire.php
path: src/Formulaire.php
-
message: "#^Function recuperer_fond not found\\.$#"
count: 1
path: inc/Bigup/Formulaire.php
path: src/Formulaire.php
-
message: "#^Function spip_log not found\\.$#"
count: 1
path: inc/Bigup/Formulaire.php
path: src/Formulaire.php
-
message: "#^Function table_valeur not found\\.$#"
count: 1
path: inc/Bigup/Formulaire.php
path: src/Formulaire.php
-
message: "#^Function timestamp not found\\.$#"
count: 1
path: inc/Bigup/Formulaire.php
path: src/Formulaire.php
-
message: "#^Function corriger_extension not found\\.$#"
count: 1
path: inc/Bigup/GestionRepertoires.php
path: src/GestionRepertoires.php
-
message: "#^Function include_spip not found\\.$#"
count: 4
path: inc/Bigup/GestionRepertoires.php
count: 3
path: src/GestionRepertoires.php
-
message: "#^Function jeune_fichier not found\\.$#"
count: 1
path: inc/Bigup/GestionRepertoires.php
path: src/GestionRepertoires.php
-
message: "#^Function sous_repertoire not found\\.$#"
count: 2
path: inc/Bigup/GestionRepertoires.php
path: src/GestionRepertoires.php
-
message: "#^Function supprimer_fichier not found\\.$#"
count: 1
path: inc/Bigup/GestionRepertoires.php
path: src/GestionRepertoires.php
-
message: "#^Function supprimer_repertoire not found\\.$#"
count: 6
path: inc/Bigup/GestionRepertoires.php
path: src/GestionRepertoires.php
-
message: "#^Function translitteration not found\\.$#"
count: 1
path: inc/Bigup/GestionRepertoires.php
path: src/GestionRepertoires.php
-
message: "#^Function _request not found\\.$#"
count: 3
path: inc/Bigup/Identifier.php
path: src/Identifier.php
-
message: "#^Function charger_fonction not found\\.$#"
count: 1
path: inc/Bigup/Identifier.php
path: src/Identifier.php
-
message: "#^Function decoder_contexte_ajax not found\\.$#"
count: 1
path: inc/Bigup/Identifier.php
path: src/Identifier.php
-
message: "#^Function encoder_contexte_ajax not found\\.$#"
count: 1
path: inc/Bigup/Identifier.php
path: src/Identifier.php
-
message: "#^Function include_spip not found\\.$#"
count: 5
path: inc/Bigup/Identifier.php
count: 4
path: src/Identifier.php
-
message: "#^Function lire_config not found\\.$#"
count: 1
path: inc/Bigup/Identifier.php
path: src/Identifier.php
-
message: "#^Function secret_du_site not found\\.$#"
count: 1
path: inc/Bigup/Identifier.php
path: src/Identifier.php
-
message: "#^Function session_get not found\\.$#"
count: 2
path: inc/Bigup/Identifier.php
path: src/Identifier.php
-
message: "#^Function spip_log not found\\.$#"
count: 1
path: inc/Bigup/Identifier.php
path: src/Identifier.php
-
message: "#^Function verifier_action_auteur not found\\.$#"
count: 1
path: inc/Bigup/Identifier.php
path: src/Identifier.php
-
message: "#^Function _request not found\\.$#"
count: 2
path: inc/Bigup/Repondre.php
path: src/Repondre.php
-
message: "#^Function spip_log not found\\.$#"
count: 1
path: inc/Bigup/Repondre.php
path: src/Repondre.php
-
message: "#^Result of static method Spip\\\\Bigup\\\\Repondre\\:\\:send\\(\\) \\(void\\) is used\\.$#"
count: 5
path: inc/Bigup/Repondre.php
path: src/Repondre.php

@ -9,24 +9,8 @@ namespace Spip\Bigup;
* @copyright 2015
* @author marcimat
* @licence GNU/GPL
* @package SPIP\Bigup\Fonctions
*/
if (!defined('_ECRIRE_INC_VERSION')) { return;
}
include_spip('inc/config');
include_spip('inc/Bigup/LogTrait');
include_spip('inc/Bigup/Cache');
include_spip('inc/Bigup/CacheFichiers');
include_spip('inc/Bigup/CacheRepertoire');
include_spip('inc/Bigup/Files');
include_spip('inc/Bigup/Flow');
include_spip('inc/Bigup/Formulaire');
include_spip('inc/Bigup/GestionRepertoires');
include_spip('inc/Bigup/Identifier');
include_spip('inc/Bigup/Repondre');
/**
* Gère la validité des requêtes et appelle Flow
**/

@ -2,9 +2,6 @@
namespace Spip\Bigup;
use Spip\Bigup\CacheRepertoire;
use Spip\Bigup\Identifier;
/**
* Gère le cache des fichiers dans tmp/bigupload
*
@ -12,13 +9,7 @@ use Spip\Bigup\Identifier;
* @copyright 2016
* @author marcimat
* @licence GNU/GPL
* @package SPIP\Bigup\Fonctions
*/
/**
* Gère le cache des fichiers dans tmp/bigupload
**/
class Cache {
use LogTrait;

@ -2,9 +2,6 @@
namespace Spip\Bigup;
use Spip\Bigup\CacheRepertoire;
use Spip\Bigup\Identifier;
/**
* Gère le cache des fichiers dans tmp/bigupload
*
@ -12,14 +9,7 @@ use Spip\Bigup\Identifier;
* @copyright 2016
* @author marcimat
* @licence GNU/GPL
* @package SPIP\Bigup\Fonctions
*/
/**
* Gère le cache des fichiers dans tmp/bigupload
*
**/
class CacheFichiers {
use LogTrait;

@ -2,10 +2,6 @@
namespace Spip\Bigup;
use Spip\Bigup\Cache;
use Spip\Bigup\CacheFichiers;
use Spip\Bigup\GestionRepertoires;
/**
* Gère le cache des fichiers dans tmp/bigupload
*
@ -15,11 +11,6 @@ use Spip\Bigup\GestionRepertoires;
* @licence GNU/GPL
* @package SPIP\Bigup\Fonctions
*/
/**
* Gère le cache des fichiers dans tmp/bigupload
**/
class CacheRepertoire {
use LogTrait;

@ -11,11 +11,6 @@ namespace Spip\Bigup;
* @licence GNU/GPL
* @package SPIP\Bigup\Fonctions
*/
/**
* Gestion des relations avec `$_FILES`
**/
class Files {
use LogTrait;

@ -2,8 +2,6 @@
namespace Spip\Bigup;
use Spip\Bigup\Cache;
/**
* Intégration de flow.js (ou resumable.js) côté PHP
*
@ -18,24 +16,8 @@ use Spip\Bigup\Cache;
* @copyright 2015
* @author marcimat
* @licence GNU/GPL
* @package SPIP\Bigup\Fonctions
*/
include_spip('inc/Bigup/LogTrait');
/**
* Retours de la classe Flow
* Indique le code de réponse http, et déventuelles données.
*/
class FlowResponse {
public $code = 415;
public $data = null;
public function __construct($code, $data = null) {
$this->code = $code;
$this->data = $data;
}
}
/**
* Réceptionne des morceaux de fichiers envoyés par flow.js
**/

@ -0,0 +1,17 @@
<?php
namespace Spip\Bigup;
/**
* Retours de la classe Flow
* Indique le code de réponse http, et déventuelles données.
*/
class FlowResponse {
public $code = 415;
public $data = null;
public function __construct($code, $data = null) {
$this->code = $code;
$this->data = $data;
}
}

@ -2,8 +2,6 @@
namespace Spip\Bigup;
use Spip\Bigup\Identifier;
/**
* Gère les modifications du html d'un formulaire existant
*
@ -11,10 +9,8 @@ use Spip\Bigup\Identifier;
* @copyright 2016
* @author marcimat
* @licence GNU/GPL
* @package SPIP\Bigup\Fonctions
*/
include_spip('inc/Bigup/LogTrait');
include_spip('inc/flock');
/**

@ -12,7 +12,6 @@ namespace Spip\Bigup;
* @package SPIP\Bigup\Fonctions
*/
include_spip('inc/Bigup/LogTrait');
include_spip('inc/flock');
/**

@ -9,14 +9,7 @@ namespace Spip\Bigup;
* @copyright 2016
* @author marcimat
* @licence GNU/GPL
* @package SPIP\Bigup\Fonctions
*/
include_spip('inc/Bigup/LogTrait');
/**
* Gère l'identification du formulaire
**/
class Identifier {
use LogTrait;

@ -9,12 +9,7 @@ namespace Spip\Bigup;
* @copyright 2015
* @author marcimat
* @licence GNU/GPL
* @package SPIP\Bigup\Fonctions
*/
/**
* Gère les logs de bigup
**/
trait LogTrait {
/**
* Des logs

@ -12,10 +12,8 @@ use Spip\Bigup\Cache;
* @copyright 2016
* @author marcimat
* @licence GNU/GPL
* @package SPIP\Bigup\Fonctions
*/
/**
* Gère la réception d'actions ajax
*
Loading…
Cancel
Save