Browse Source

version fonctionnelle, ajout fonctionnalites, epuration des logs de deboggage

master
Marc F 10 months ago
parent
commit
d1d8d9afc4
  1. 23
      README.md
  2. 2
      action/purger_media.php
  3. 6
      action/recuperer_media.php
  4. 26
      formulaires/configurer_owncloud.php
  5. 6
      formulaires/importer_owncloud.php
  6. 4
      formulaires/purger_owncloud.html
  7. 13
      genie/owncloud.php
  8. 2
      inclure/connection_dav_fonctions.php
  9. 8
      lang/owncloud_fr.php
  10. 26
      lang/owncloud_fr_tu.php
  11. 2
      lang/paquet-owncloud_fr.php
  12. 106
      owncloud_fonctions.php
  13. 6
      paquet.xml

23
README.md

@ -1,14 +1,20 @@
SPIP - owncloud
=======
Ce plugin permet d'importer avec webdav des médias dans SPIP depuis owncloud.
Ce plugin permet d'importer avec webdav des médias dans SPIP depuis owncloud/nextcloud.
Vous pouvez récupérer la liste des fichiers depuis votre owncloud en peuplant un fichier json à la racine de tmp/, dans ce fichier json on retrouve la liste des fichiers présents sur le owncloud dans le répertoire que vous avez renseignez dans la configuration. Ensuite, vous pouvez importer vos fichiers dans SPIP un par un.
Vous pouvez activer la syncho sur un répertoire de owncloud pour importer automatiquement les images dans SPIP. On stock le md5 dans une base pour ne pas insérer à nouveau le document. La synchro vous permet d'importer automatiquement beaucoup de document dans SPIP.
Vous pouvez activer la syncho sur un répertoire de owncloud pour importer automatiquement les documents dans SPIP. On stock le md5 dans une base pour ne pas insérer à nouveau le document. La synchro vous permet d'importer automatiquement beaucoup de document dans SPIP.
Vous pouvez également purger vos documents déjà importé dans SPIP (remise à zéro)
** Vous ne pouvez plus effacer ** les documents distants de votre Owncloud après les avoir importer dans SPIP.
Mais une option "effacer documents locaux" vous permet :
- non-cochée, les nouveaux fichiers sur votre Cloud sont ajoutés aux documents précédement obtenus (ou mis à jour) à vos documents Spip
- cochée, les nouveaux fichiers de votre Cloud sont biensur ajoutés à vos documents, mais les fichiers qui ont été supprimés dans le Cloud seront aussi supprimés le lendemain des documents Spip.
** Vous ne pouvez plus effacer ** les documents distants de votre Owncloud après les avoir importer dans SPIP.
Vous pouvez également purger vos documents déjà importé dans SPIP.
# Changelog
@ -16,11 +22,16 @@ Vous pouvez également purger vos documents déjà importé dans SPIP.
## Version 1.x.x
### Version 1.2.1 (19/02/2022)
- correction explication effacement_distants par effacement_locaux
- ajout fonction "regrouper les documents dans un album"
### Version 1.2.0 (16/02/2022)
- reprise fonctionnelle
- supression des accès https authentifiés
- les fichiers du Cloud sont copiés dans un répertoire temporaire lors de la "récuperation des documents" est activée
- supression des accès https Basic 0authentification
- les fichiers du Cloud sont copiés dans un répertoire temporaire lors de la "récuperation des documents"
- puis ajouter aux documents "local" Spip
- la synchronisation effectue ces memes actions toutes les 6h
- les fichiers disparus du Cloud sont aussi supprimés des documents Spip si l'option "effacement des documents distants"

2
action/purger_media.php

@ -13,7 +13,7 @@ include_spip('owncloud_fonctions');
* @return string
*/
function action_purger_media_dist() {
spip_log( "action_purger_media_dist", 'owncloud.' . _LOG_ERREUR);
spip_log( "action_purger_media_dist", 'owncloud.' . _LOG_INFO);
$purger = purger_media_spip();
return $purger;

6
action/recuperer_media.php

@ -14,7 +14,7 @@ include_spip('inc/distant');
* @return string
*/
function action_recuperer_media_dist() {
spip_log( "action_recuperer_media_dist()", 'owncloud.' . _LOG_ERREUR);
spip_log( "action_recuperer_media_dist()", 'owncloud.' . _LOG_DEBUG);
include_spip('inc/config');
$config = lire_config('owncloud');
/* clear dossier de téléchargement local local */
@ -32,7 +32,7 @@ spip_log( "action_recuperer_media_dist()", 'owncloud.' . _LOG_ERREUR);
'userName' => $config['login'],
'password' => $config['password']
);
spip_log( $settings['baseUri'], 'owncloud.' . _LOG_ERREUR);
spip_log( $settings['baseUri'], 'owncloud.' . _LOG_DEBUG);
try {
$client = new Sabre\DAV\Client($settings);
@ -51,7 +51,7 @@ spip_log( $settings['baseUri'], 'owncloud.' . _LOG_ERREUR);
foreach ($liste as $cle => $valeur) {
$document = $url['url_courte'].$cle;
spip_log( "lastmodified = " . $valeur['{DAV:}getlastmodified'] . " contentlength = " . $valeur['{DAV:}getcontentlength'] . " contenttype = " . $valeur['{DAV:}getcontenttype'], 'owncloud.' . _LOG_ERREUR);
//spip_log( "lastmodified = " . $valeur['{DAV:}getlastmodified'] . " contentlength = " . $valeur['{DAV:}getcontentlength'] . " contenttype = " . $valeur['{DAV:}getcontenttype'], 'owncloud.' . _LOG_DEBUG);
if ( !empty($valeur['{DAV:}getcontenttype']) ) {

26
formulaires/configurer_owncloud.php

@ -49,7 +49,16 @@ function formulaires_configurer_owncloud_saisies_dist() {
'label' => _T('owncloud:cfg_directory_remote'),
'explication' => _T('owncloud:cfg_directory_remote_explication')
)
),
array(
'saisie' => 'input',
'options' => array(
'nom' => 'content_album',
'label' => _T('owncloud:cfg_content_album'),
'explication' => _T('owncloud:cfg_content_album_explication')
)
)
)
),
array(
@ -70,9 +79,9 @@ function formulaires_configurer_owncloud_saisies_dist() {
array(
'saisie' => 'case',
'options' => array(
'nom' => 'activer_effacement_distant',
'label' => _T('owncloud:cfg_activer_effacement_distant'),
'explication' => _T('owncloud:cfg_activer_effacement_distant_explication'),
'nom' => 'activer_effacement_local',
'label' => _T('owncloud:cfg_activer_effacement_local'),
'explication' => _T('owncloud:cfg_activer_effacement_local_explication'),
'afficher_si' => '@activer_synchro@ == "on"'
)
),
@ -92,8 +101,9 @@ function formulaires_configurer_owncloud_charger_dist() {
'password' => $config['password'],
'url_remote' => $config['url_remote'],
'directory_remote' => $config['directory_remote'],
'content_album' => $config['content_album'],
'activer_synchro' => $config['activer_synchro'],
'activer_effacement_distant' => $config['activer_effacement_distant']
'activer_effacement_local' => $config['activer_effacement_local']
);
return (empty($config)) ? array() : $config;
@ -143,17 +153,21 @@ function formulaires_configurer_owncloud_traiter_dist() {
$directory_remote = ltrim(_request('directory_remote'), '/');
$directory_remote = rtrim($directory_remote, '/');
// indiquer le numero de l'album
$content_album = _request('content_album');
$activer_synchro = (_request('activer_synchro')=='on')?'on':'off';
$activer_effacement_distant = (_request('activer_effacement_distant')=='on')?'on':'off';
$activer_effacement_local = (_request('activer_effacement_local')=='on')?'on':'off';
$meta_configuration = array(
'login' => $login,
'password' => $password,
'url_remote' => $url_remote,
'directory_remote' => $directory_remote,
'content_album' => $content_album,
'activer_synchro' => $activer_synchro,
'activer_effacement_distant' => $activer_effacement_distant);
'activer_effacement_local' => $activer_effacement_local);
include_spip('inc/meta');
ecrire_meta('owncloud', serialize($meta_configuration), '');

6
formulaires/importer_owncloud.php

@ -44,16 +44,14 @@ function formulaires_importer_owncloud_verifier_dist($id_owncloud = 'new', $obje
* Environnement du formulaire
**/
function formulaires_importer_owncloud_traiter_dist($id_owncloud = 'new', $objet = '', $id_objet = '', $retour = '', $ajaxload = 'oui', $options = '') {
spip_log( "formulaires_importer_owncloud_traiter_dist", 'owncloud.' . _LOG_ERREUR);
spip_log( "formulaires_importer_owncloud_traiter_dist", 'owncloud.' . _LOG_DEBUG);
include_spip('owncloud_fonctions');
include_spip('inc/flock');
$lire_fichier = lire_fichier(_DIR_TMP . 'owncloud.json', $contenu);
$lire_json = json_decode($contenu, true);
foreach ($lire_json as $cle => $valeur) {
// $url_propre = securise_identifiants($valeur['document'], true);
// $ajouts = importer_media_owncloud($url_propre . '?' . $valeur['md5']);
spip_log( "importer le fichier dans docs depuis tmp" . $valeur['body']['fichier'], 'owncloud.' . _LOG_ERREUR);
//spip_log( "importer le fichier dans docs depuis tmp" . $valeur['body']['fichier'], 'owncloud.' . _LOG_INFO);
$ajouts = importer_media_owncloud_received($valeur['body']['fichier'] . '?' . $valeur['md5']);
}

4
formulaires/purger_owncloud.html

@ -1,7 +1,7 @@
<div class="formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{objet}-#ENV{id,nouveau}">
<h3 class='titrem'><img src="#CHEMIN_IMAGE{owncloud-24.png}" class="cadre-icone" /><:owncloud:owncloud_purger_item:></h3>
<p><:owncloud:owncloud_purger_explication:></p>
[(#CONFIG{owncloud/activer_effacement_distant}|=={on}|oui)
[(#CONFIG{owncloud/activer_effacement_local}|=={on}|oui)
<p><:owncloud:owncloud_purger_avertissement:></p>]
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
@ -17,4 +17,4 @@
<input type="submit" class="submit" value="<:owncloud:bouton_purger_medias:>" /></p>
</form>
]
</div>
</div>

13
genie/owncloud.php

@ -57,27 +57,18 @@ function genie_owncloud_dist() {
$lire_fichier = lire_fichier(_DIR_TMP . 'owncloud.json', $contenu);
$lire_json = json_decode($contenu, true);
foreach ($lire_json as $cle => $valeur) {
// $url = $valeur['document'] . '?' . $valeur['md5'];
// importer_media_owncloud($url);
spip_log( "importer le fichier dans docs depuis tmp" . $valeur['body']['fichier'], 'owncloud.' . _LOG_ERREUR);
spip_log( "importer le fichier dans docs depuis tmp" . $valeur['body']['fichier'], 'owncloud.' . _LOG_INFO);
$ajouts = importer_media_owncloud_received($valeur['body']['fichier'] . '?' . $valeur['md5']);
}
//TODO redefinir l'effacement des fichiers
// on ne change rien sur le cloud, seul les fichiers récupéres et n'existant plus sur le cloud
// seront supprimés si l'option est validée
if ($config['activer_effacement_distant'] == 'on') {
// supprimer_fichier_distant();
if ($config['activer_effacement_local'] == 'on') {
supr_old_documents();
}
}
// $url_propre = securise_identifiants($valeur['document'], true);
// $ajouts = importer_media_owncloud($url_propre . '?' . $valeur['md5']);
} else {
return false;
}

2
inclure/connection_dav_fonctions.php

@ -11,7 +11,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
*
**/
function test_connexion_dav() {
spip_log( "test_connexion_dav()", 'owncloud.' . _LOG_ERREUR);
//spip_log( "test_connexion_dav()", 'owncloud.' . _LOG_DEBUG);
include_spip('owncloud_fonctions');
include_spip('inc/config');

8
lang/owncloud_fr.php

@ -17,11 +17,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'bouton_recuperer_media' => 'Récupérer les documents',
// C
'cfg_activer_effacement_distant' => 'Effacer des documents distants',
'cfg_activer_effacement_distant_explication' => 'En cochant cette case, vous activez l’effacement des fichiers sur le Owncloud distant. La suppression des documents concerne le répertoire renseigné dans les "Paramètres de connexion". <br /><strong>Attention</strong>, cette action est brutale. Vous allez perdre vos données hébergés sur votre Owncloud.',
'cfg_activer_effacement_local' => 'Effacer des documents locaux',
'cfg_activer_effacement_local_explication' => 'En cochant cette case, vous activez l’effacement des fichiers précédement téléchargés mais qui ont été depuis supprimés sur le Cloud. Cette option est nécessaire si vous voulez disposez d\'une image de votre dossier Cloud. <br /><strong>Attention</strong>, La suppression des documents est effective le lendemain du dernier accès au Cloud.',
'cfg_activer_synchro' => 'Activer la synchronisation des documents',
'cfg_activer_synchro_explication' => 'En cochant cette case, vous activez la synchronisation des documents depuis Owncloud pour les importer directement dans SPIP.',
'cfg_configuration' => 'Paramètres de connexion',
'cfg_content_album' => 'Album où seront regroupés les documents',
'cfg_content_album_explication' => 'indiquer le numéro de l\'album où seront regroupés les documents',
'cfg_directory_remote' => 'Répertoire des documents',
'cfg_directory_remote_delete' => 'Répertoire des documents pour la synchro',
'cfg_directory_remote_delete_explication' => 'Renseigner le répertoire de synchronisation distant, si celui-ci est différent répertoire des documents renseignés plus haut.',
@ -64,7 +66,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'owncloud_importer_explication' => '<strong>Attention</strong> : L’importation sur beaucoup de document peut prendre beaucoup de temps.',
'owncloud_peupler_explication' => 'En cliquant sur ce bouton, vous récupérez les fichiers présent sur votre Owncloud.',
'owncloud_peupler_item' => 'Récupération des documents',
'owncloud_purger_avertissement' => '<p><strong>Attention :</strong> Vous avez activé l’effacement des fichiers distants, il est probable que vos fichiers ne soient plus présents sur votre Owncloud, en cliquant sur ce bouton vous pouvez perdre vos documents.</p>',
'owncloud_purger_avertissement' => '<p><strong>Attention :</strong> Vous avez activé l’effacement des fichiers locaux, il est possible que des fichiers précédement téléchargés ne soient plus présents sur votre Owncloud, en cliquant sur ce bouton vous aller perdre ces documents disparus de votre Cloud.</p>',
'owncloud_purger_explication' => 'En cliquant sur ce bouton, vous supprimez les identifiants uniques permettant de vous indiquer si un fichier a déjà été importé dans SPIP et vous supprimez également les fichiers importés précédemment dans SPIP.',
'owncloud_purger_item' => 'Purger les documents',

26
lang/owncloud_fr_tu.php

@ -19,19 +19,21 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'bouton_recuperer_media' => 'Récupére les documents',
// C
'cfg_activer_effacement_distant' => 'Efface des documents distants',
'cfg_activer_effacement_distant_explication' => 'En cochant cette case, tu active l’effacement des fichiers sur ton Owncloud distant. La suppression des documents concerne le répertoire que tu as renseigné dans les "Paramètres de connexion". <br /><strong>Attention</strong>, cette action est brutale. Tu va perdre tes données hébergés sur ton Owncloud.',
'cfg_activer_effacement_local' => 'Efface des documents locaux',
'cfg_activer_effacement_local_explication' => 'En cochant cette case, tu actives l’effacement des fichiers précédement téléchargés mais qui ont été depuis supprimés dans le Cloud. Cette option permet de maintenir une image du dossier du Cloud. <br /><strong>Attention</strong>, La suppression des documents est effective le lendemain du dernier accès au Cloud.',
'cfg_activer_synchro' => 'Active la synchronisation des documents',
'cfg_activer_synchro_explication' => 'En cochant cette case, tu active la synchronisation des documents depuis ton Owncloud pour les importer directement dans SPIP.',
'cfg_configuration' => 'Paramètres de connexion',
'cfg_content_album' => 'Album où seront regroupés les documents',
'cfg_content_album_explication' => 'indiques le numéro de l\'album où seront regroupés les documents',
'cfg_directory_remote' => 'Répertoire des documents',
'cfg_directory_remote_delete' => 'Répertoire des documents pour la synchro',
'cfg_directory_remote_delete_explication' => 'Renseigne le répertoire de synchronisation distant, si celui-ci est différent répertoire des documents renseignés plus haut.',
'cfg_directory_remote_explication' => 'Renseigne le répertoire où se trouve tes documents sur Owncloud',
'cfg_directory_remote_delete_explication' => 'Renseignes le répertoire de synchronisation local, si celui-ci est différent répertoire des documents renseignés plus haut.',
'cfg_directory_remote_explication' => 'Renseignes le répertoire où se trouve tes documents sur Owncloud',
'cfg_login' => 'Nom d’utilisateur',
'cfg_login_explication' => 'Renseigne le nom d’utilisateur de votre Owncloud',
'cfg_login_explication' => 'Renseignes le nom d’utilisateur de ton Cloud',
'cfg_password' => 'Mot de passe',
'cfg_password_explication' => 'Renseigne le mot de passe de votre Owncloud',
'cfg_password_explication' => 'Renseignes le mot de passe de ton Cloud',
'cfg_synchro' => 'Paramètres de synchronisation',
'cfg_titre_parametrages' => 'Paramètrage',
'cfg_url_remote' => 'URL de ton Owncloud',
@ -48,7 +50,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'fichier' => 'Fichier',
// I
'importer_image' => 'Importe un fichier',
'importer_image' => 'Importer un fichier',
'importer_tout_image' => 'Importer tous les fichiers',
// M
@ -64,15 +66,15 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// O
'owncloud' => 'Owncloud',
'owncloud_importer_explication' => '<strong>Attention</strong> : L’importation sur beaucoup de document peut prendre beaucoup de temps.',
'owncloud_peupler_explication' => 'En cliquant sur ce bouton, tu va récupérer les fichiers présent sur ton Owncloud.',
'owncloud_peupler_explication' => 'En cliquant sur ce bouton, tu vas récupérer les fichiers présent sur ton Owncloud.',
'owncloud_peupler_item' => 'Récupération des documents',
'owncloud_purger_avertissement' => '<p><strong>Attention :</strong> Tu as activé l’effacement des fichiers distants, il est probable que tes fichiers ne soient plus présents sur ton Owncloud, en cliquant sur ce bouton tu peux perdre tes documents.</p>',
'owncloud_purger_explication' => 'En cliquant sur ce bouton, tu supprime les identifiants uniques permettant de t’indiquer si un fichier a déjà été importé dans SPIP et tu supprime également les fichiers importés précédemment dans SPIP.',
'owncloud_purger_avertissement' => '<p><strong>Attention :</strong> Tu as activé l’effacement des fichiers locaux, il est probable que des fichiers ne soient plus présents sur ton Cloud, en cliquant sur ce bouton tu peux perdre ces documents.</p>',
'owncloud_purger_explication' => 'En cliquant sur ce bouton, tu supprimes les identifiants uniques permettant de t’indiquer si un fichier a déjà été importé dans SPIP et tu supprimes également les fichiers importés précédemment dans SPIP.',
'owncloud_purger_item' => 'Purge les documents',
// P
'pas_de_media' => 'Aucuns documents n’est importés pour le moment, clique sur le bouton pour récupérer les documents depuis Owncloud',
'pas_de_media_erreur' => 'Vérifier que le répertoire est bien renseigné dans la configuration ou que celui-ci existe sur Owncloud.',
'pas_de_media' => 'Aucun document n’est importé pour le moment, cliques sur le bouton pour récupérer les documents depuis Owncloud',
'pas_de_media_erreur' => 'Vérifies que le répertoire est bien renseigné dans la configuration ou que celui-ci existe sur Owncloud.',
// T
'taille_fichier' => 'Taille du fichier',

2
lang/paquet-owncloud_fr.php

@ -11,6 +11,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'owncloud_description' => '
- Vous pouvez récupérer la liste des fichiers depuis votre owncloud
- Vous pouvez activer la syncho sur un répertoire de owncloud
- Vous pouvez effacer les documents distants de votre Owncloud après les avoir importer dans SPIP',
- Vous pouvez effacer les documents locaux qui ont disparus depuis sur votre Cloud',
'owncloud_slogan' => 'Ce plugin permet de récupérer vos documents depuis Owncloud'
);

106
owncloud_fonctions.php

@ -19,7 +19,6 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @return array
*/
function construire_url() {
// spip_log( "construire_url", 'owncloud.' . _LOG_ERREUR);
// Construire l'url de la forme http://login:password@owncloud.me/remote.php/webdav/
include_spip('inc/config');
$config = lire_config('owncloud');
@ -29,14 +28,10 @@ function construire_url() {
$url_protocle = parse_url($config['url_remote'], PHP_URL_SCHEME);
$url_courte = preg_replace('(' . $url_protocle . '?://)', $url_protocle . '://' . $config['login'] . ':' . $config['password'] . '@', $url_remote);
// $url_courte = $url_remote ;
// $url_webdav = $url_courte . '/remote.php/webdav/';
// $url = $url_webdav.$config['directory_remote'];
// $url_courte = $url_remote ;
$url_webdav = $url_courte . '/remote.php/dav/files/';
$url_webdav = $url_webdav.$config['login'] . '/';
$url = $url_webdav.$config['directory_remote'];
// spip_log( $url, 'owncloud.' . _LOG_ERREUR);
spip_log( "construire_url : " . $url, 'owncloud.' . _LOG_DEBUG);
} else {
return false;
}
@ -85,7 +80,7 @@ function curl_get($href, $header = false, $body = true, $timeout = 30, $add_agen
$result = curl_getinfo($ch, $status);
}
$infos = curl_getinfo($ch);
spip_log("curl_get " . $infos['content_type'] . ' ' . $href, 'owncloud.' . _LOG_ERREUR);
spip_log("curl_get " . $infos['content_type'] . ' ' . $href, 'owncloud.' . _LOG_DEBUG);
curl_close($ch);
return $result;
@ -99,7 +94,7 @@ spip_log("curl_get " . $infos['content_type'] . ' ' . $href, 'owncloud.' . _LOG_
* @return array
*/
function recuperer_infos_distantes_curl($document) {
spip_log( "recuperer_infos_distantes_curl de : " . $document, 'owncloud.' . _LOG_ERREUR);
spip_log( "recuperer_infos_distantes_curl de : " . $document, 'owncloud.' . _LOG_DEBUG);
$body = curl_get($document, false, true, 30, false, '');
$path_parts = pathinfo($document);
$fichier = urldecode($path_parts['basename']);
@ -111,8 +106,8 @@ spip_log( "recuperer_infos_distantes_curl de : " . $document, 'owncloud.' . _LOG
$mime = mime_content_type($le_fichier) ; /* type de fichier recus */
$size_image = @getimagesize($le_fichier);
$taille = filesize($le_fichier);
// $type_image = false; /*recuperer tous types de fichier */
spip_log( "le fichier a été copié dans tmp : " . $le_fichier, 'owncloud.' . _LOG_ERREUR);
//spip_log( "le fichier a été copié dans tmp : " . $le_fichier, 'owncloud.' . _LOG_INFO);
/* maintenant insérer ces fichiers dans les documents
*
* $ajouter_documents = charger_fonction('ajouter_documents', 'action');
@ -151,52 +146,6 @@ function securise_identifiants($document, $reverse = false) {
}
/**
* Importer les médias dans SPIP
*
* @param string $url l'URL cible
* @return string
*/
function importer_media_owncloud($url) {
spip_log( "importer_media_owncloud($url)", 'owncloud.' . _LOG_ERREUR);
spip_log( $url, 'owncloud.' . _LOG_ERREUR);
$url_propre = securise_identifiants($url, true);
$parts = parse_url($url_propre);
parse_str($parts['query'], $query);
$md5 = $parts['query'];
$url = preg_replace('/' . $md5 . '/', '', $url_propre);
// $url = preg_replace('/' . '\?' . '/', '', $url);
$existe = sql_getfetsel('md5', 'spip_ownclouds', 'md5=' . sql_quote($md5));
if (!$existe) {
$ajouter_documents = charger_fonction('ajouter_documents', 'action');
$name = basename($parts['path']);
spip_log( $url . " name: " . $name , 'owncloud.' . _LOG_ERREUR);
// $ajouts = $ajouter_documents(false, array(array('tmp_name' => $url, 'name' => $name, 'distant' => true)), null, null, 'auto');
$ajouts = $ajouter_documents(false, array(array('tmp_name' => $url, 'name' => $name, 'distant' => true)), null, null, 'auto');
/* ajouter dans un album à intégrer
$ajouts = $ajouter_documents(false, array(array('tmp_name' => $url, 'name' => $name, 'distant' => true)), 'album', 2 , 'auto');
*/
if (is_array($ajouts)) {
foreach ($ajouts as $id_document) {
$copier_local = charger_fonction('copier_local', 'action');
$copier_local($id_document);
// Virer l'url du document distant des crédits pour éviter la visu user / pass
// Ajouter aussi le md5 du document
document_modifier($id_document, array('credits' => '', 'md5' => $md5, 'titre' => $name ));
}
$stock_import = sql_insertq('spip_ownclouds', array('titre' => $name, 'md5' => $md5, 'date_modif' => date('Y-m-d H:i:s')));
}
} else {
spip_log('Doc inséré ou inexistant' . $url, 'owncloud.' . _LOG_ERREUR);
}
return $ajouts;
}
/**
* Importer les médias dans SPIP
*
@ -204,34 +153,33 @@ spip_log( $url . " name: " . $name , 'owncloud.' . _LOG_ERREUR);
* @return string
*/
function importer_media_owncloud_received($url) {
spip_log( "importer_media_owncloud_received", 'owncloud.' . _LOG_ERREUR);
spip_log( $url, 'owncloud.' . _LOG_ERREUR);
// $url_propre = securise_identifiants($url, true);
// $parts = parse_url($url_propre);
//spip_log( "importer_media_owncloud_received", 'owncloud.' . _LOG_INFO);
//spip_log( $url, 'owncloud.' . _LOG_INFO);
$url_propre = $url;
$parts = parse_url($url_propre);
parse_str($parts['query'], $query);
$md5 = $parts['query'];
$url = preg_replace('/' . $md5 . '/', '', $url_propre);
$url = preg_replace('/' . '\?' . '/', '', $url);
spip_log( $url_propre . " url: " . $url . " md5:" . $md5 . " name: " . $url , 'owncloud.' . _LOG_ERREUR);
//spip_log( $url_propre . " url: " . $url . " md5:" . $md5, 'owncloud.' . _LOG_DEBUG);
$existe = sql_getfetsel('md5', 'spip_ownclouds', 'md5=' . sql_quote($md5));
if (!$existe) {
$ajouter_documents = charger_fonction('ajouter_documents', 'action');
$name = basename($parts['path']);
spip_log( $url . " name: " . $name , 'owncloud.' . _LOG_ERREUR);
$ajouts = $ajouter_documents(false, array(array('tmp_name' => $url, 'name' => $name, 'distant' => false)), null, null, 'auto');
/* TODO : ajouter dans un album à intégrer
$ajouts = $ajouter_documents(false, array(array('tmp_name' => $url, 'name' => $name, 'distant' => true)), 'album', 2 , 'auto');
*/
$l_album = lire_config('owncloud/content_album');
if ($l_album == '') {
$ajouts = $ajouter_documents(false, array(array('tmp_name' => $url, 'name' => $name, 'distant' => false)), null, null, 'auto');
} else {
$ajouts = $ajouter_documents(false, array(array('tmp_name' => $url, 'name' => $name, 'distant' => false)), 'album', $l_album , 'auto');
}
if (is_array($ajouts)) {
foreach ($ajouts as $id_document) {
spip_log( " copier local name: " . $id_document , 'owncloud.' . _LOG_ERREUR);
spip_log( " $url copier local name: " . $id_document , 'owncloud.' . _LOG_INFO);
$copier_local = charger_fonction('copier_local', 'action');
$copier_local($id_document);
// Virer l'url du document distant des crédits pour éviter la visu user / pass
// Ajouter aussi le md5 du document
document_modifier($id_document, array('credits' => 'depuis Cloud Mairie', 'md5' => $md5, 'titre' => $name ));
}
@ -239,10 +187,9 @@ spip_log( " copier local name: " . $id_document , 'owncloud.' . _LOG_ERREUR);
}
} else {
spip_log('Doc existant' . $url . " est " . $existe, 'owncloud.' . _LOG_ERREUR);
spip_log('Doc existant' . $url . " est " . $existe, 'owncloud.' . _LOG_INFO);
$stock_update = sql_updateq('spip_ownclouds',array('maj' => date('Y-m-d H:i:s')), "md5='$md5'");
}
//TODO reste a supprimer les absents
return $ajouts;
}
@ -290,12 +237,12 @@ function supprimer_fichier_distant() {
* @return boolean
*/
function purger_media_spip() {
spip_log( "purger_media_dist", 'owncloud.' . _LOG_ERREUR);
spip_log( "purger_media_dist", 'owncloud.' . _LOG_DEBUG);
$document_owncloud = sql_allfetsel('md5', 'spip_ownclouds');
if ($document_owncloud) {
foreach ($document_owncloud as $valeur) {
$nom_fichier = sql_getfetsel('fichier', 'spip_documents', 'md5=' . sql_quote($valeur['md5']));
spip_log( "nom_fichier = " . $nom_fichier, 'owncloud.' . _LOG_ERREUR);
//spip_log( "nom_fichier = " . $nom_fichier, 'owncloud.' . _LOG_INFO);
if ($nom_fichier) {
$document_spip = sql_delete('spip_documents', 'md5=' . sql_quote($valeur['md5']));
@ -357,25 +304,20 @@ function rrmdir($dir) {
* cad dont la date de mise à jour est antérieure à la dernière mise à jour Webdav
*/
function supr_old_documents() {
spip_log( "supr_old_documents", 'owncloud.' . _LOG_ERREUR);
spip_log( "supr_old_documents", 'owncloud.' . _LOG_INFO);
$jour_j = date('z');
//TODO conf du délais avant suppression en nb de jour
// $date = date('Y-m-d H:i:s');
// $dayoftheyear = date('z'); //date('z',affdate); //no jour de l'année
// $dayofthelast = date('z', strtotime("2021-02-16 00:48")); //no jour de la date
$document_owncloud = sql_allfetsel('md5,maj', 'spip_ownclouds');
//spip_log( "liste des fichiers" . $document_owncloud, 'owncloud.' . _LOG_ERREUR);
//spip_log( "liste des fichiers" . $document_owncloud, 'owncloud.' . _LOG_INFO);
if ($document_owncloud) {
foreach ($document_owncloud as $valeur) {
//spip_log( "fichier du " . $valeur['maj'] . " md5= " . $valeur['md5'], 'owncloud.' . _LOG_ERREUR);
//spip_log( "fichier du " . date('z', strtotime($valeur['maj'])) . " jour_j " . $jour_j, 'owncloud.' . _LOG_ERREUR);
//spip_log( "fichier du " . $valeur['maj'] . " md5= " . $valeur['md5'], 'owncloud.' . _LOG_DEBUG);
//spip_log( "fichier du " . date('z', strtotime($valeur['maj'])) . " jour_j " . $jour_j, 'owncloud.' . _LOG_DEBUG);
if (! (date('z', strtotime($valeur['maj'])) == $jour_j) ) {
// si date du fichier 'no jour' est différent du no_jour courant alors on detruit le document
$nom_fichier = sql_getfetsel('titre', 'spip_documents', 'md5=' . sql_quote($valeur['md5']));
if ($nom_fichier) {
spip_log( "delete = " . $nom_fichier, 'owncloud.' . _LOG_ERREUR);
spip_log( "delete = " . $nom_fichier, 'owncloud.' . _LOG_INFO);
sql_delete('spip_documents', 'md5=' . sql_quote($valeur['md5']));
sql_delete('spip_ownclouds', 'md5=' . sql_quote($valeur['md5']));
}

6
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="owncloud"
categorie="multimedia"
version="1.0.9"
version="1.2.1"
etat="dev"
compatibilite="[3.1.0;3.2.*]"
logo="prive/themes/spip/images/owncloud-64.png"
@ -10,9 +10,9 @@
>
<nom>Owncloud</nom>
<!-- Récupérer vos documents depuis Owncloud -->
<!-- Récupérer vos documents depuis Owncloud/Nextcloud -->
<auteur>cyp</auteur>
<auteur>cyp-lebardix</auteur>
<credit lien="http://sabre.io/">Sabre/DAV</credit>
<licence>GNU/GPL</licence>

Loading…
Cancel
Save