Skip to content
Extraits de code Groupes Projets
Valider 415c0df1 rédigé par marcimat@rezo.net's avatar marcimat@rezo.net
Parcourir les fichiers

Sur le serveur, /tmp n’est pas toujours accessible pour l’application...

Sur le serveur, /tmp n’est pas toujours accessible pour l’application libreoffice, et notre tmp/odt2spip y fonctionne.
On permet donc simplement de définir _LIBREOFFICE_HOME pour les tests locaux éventuels `define('_LIBREOFFICE_HOME', '/tmp');`

Par précaution, aussi, on nettoie régulièrement le répertoire tmp/odt2spip.
parent 438e00f5
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -7,6 +7,7 @@ formulaires/document2spip.html -text
formulaires/document2spip.php -text
formulaires/odt2spip.html -text
formulaires/odt2spip.php -text
genie/odt2spip_nettoyer_repertoire_upload.php -text
inc/convertir_avec_libreoffice.php -text
inc/libreoffice.php -text
inc/odt2spip.php -text
......
<?php
/**
* Tache de nettoyages de fichiers du plugin Odt2SPIP
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
* Enlève les fichiers du répertoire de travail de odt2spip qui sont trop vieux
*
* @param int $last
* @return int
**/
function genie_odt2spip_nettoyer_repertoire_upload_dist($last) {
odt2spip_nettoyer_repertoire_recursif(_DIR_TMP . 'odt2spip', 3600);
return 1;
}
/**
* Nettoyer un répertoire suivant l'age et le nombre de ses fichiers
*
* Nettoie aussi les sous répertoires.
* Supprime automatiquement les répertoires vides.
*
* @param string $repertoire
* Répertoire à nettoyer
* @param int $age_max
* Age maxium des fichiers en seconde. Par défaut 24*3600
* @param int $max_files
* Nombre maximum de fichiers dans le dossier
* @return bool
* - false : erreur de lecture du répertoire.
* - true : action réalisée.
**/
function odt2spip_nettoyer_repertoire_recursif($repertoire, $age_max = 86400) {
$repertoire = rtrim($repertoire, '/');
if (!is_dir($repertoire)) {
return false;
}
$fichiers = scandir($repertoire);
if ($fichiers === false) {
return false;
}
$fichiers = odt2spip_filtrer_fichiers($fichiers);
if (!$fichiers) {
supprimer_repertoire($repertoire);
return true;
}
foreach ($fichiers as $fichier) {
$chemin = $repertoire . DIRECTORY_SEPARATOR . $fichier;
if (is_dir($chemin)) {
odt2spip_nettoyer_repertoire_recursif($chemin, $age_max);
}
elseif (is_file($chemin) and !jeune_fichier($chemin, $age_max)) {
supprimer_fichier($chemin);
}
}
// à partir d'ici, on a pu possiblement vider le répertoire…
// on le supprime s'il est devenu vide.
$fichiers = scandir($repertoire);
if ($fichiers === false) {
return false;
}
$fichiers = odt2spip_filtrer_fichiers($fichiers);
if (!$fichiers) {
supprimer_repertoire($repertoire);
}
return true;
}
/**
* Enlever d'une liste des fichiers ce qui est inutile
*
* Enlève les fichiers .. et . ainsi que des fichiers à
* ne pas considérer comme importants pour tester qu'un
* répertoire a du contenu.
* Particulièrement .ok et file.bigup.json
*
* @todo
* Trouver un mécanisme pour transmettre l'info file.bigup.json
* qui ne devrait pas être en dur ici.
*
* @param array $fichiers
* @return array
*/
function odt2spip_filtrer_fichiers($fichiers) {
return array_diff($fichiers, ['..', '.', '.ok']);
}
\ No newline at end of file
......@@ -95,10 +95,12 @@ class LibreOffice {
$command .= ' ' . str_replace(' ', '\ ', $this->fichier);
// il doit pouvoir écrire quelque part
#$home = $this->outputDir ? $this->outputDir : dirname($this->fichier);
#@chmod($home, 0777);
if (defined('_LIBREOFFICE_HOME') and _LIBREOFFICE_HOME) {
$home = _LIBREOFFICE_HOME;
} else {
$home = $this->outputDir ? $this->outputDir : dirname($this->fichier);
}
$home='/tmp'; // hum ?
$command = 'export HOME=' . realpath($home) . '; ' . $command;
return $command;
......
<paquet
prefix="odt2spip"
categorie="edition"
version="3.0.0-dev"
version="3.0.0-alpha1"
schema="201406091738"
etat="dev"
compatibilite="[3.1.0;3.2.*]"
......@@ -20,4 +20,6 @@
<necessite nom="saisies" compatibilite="[2.18.0;]" />
<utilise nom="bigup" compatibilite="[1.0.0-dev;]" />
<genie nom="nettoyer_repertoire_upload" periode="3600" />
</paquet>
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter