Extensions du plugin Phocadownload

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • chabi01
    a répondu
    Bonjour tout le monde !

    J'ai trouvé !!

    J'ai contourné le problème en faisant la vérification dans le code php mais pas dans la requête !

    Je vous explique, cela pourra peut-être servir à d'autres

    La requête est légèrement différente de l'originale : on inclut simplement le champ date en plus dans le résultat.
    Code:
    $query = 'SELECT a.id, a.title, a.alias, a.filename_play, a.filename_preview, a.link_external, a.image_filename, a.filename, c.id as catid, a.confirm_license, a.date, c.title as cattitle, c.alias as catalias,'
    . ' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'
    . ' CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(\':\', c.id, c.alias) ELSE c.id END as catslug'
    . ' FROM #__phocadownload AS a'
    . ' LEFT JOIN #__phocadownload_categories AS c ON a.catid = c.id';
    C'est dans le traitement de la liste de fichier (filelist dans le fichier) que l'on va filtrer en fait :

    Code:
    if (!empty($items)) {
    
    $output .= '<div class="phocadownloadfilelist">';
    foreach ($items as $item) {
    
    //Debut CODE Xavier
    if (isset($item->date) && ($item->date != '') && $day !='') {
    
    $dateString = strtotime($item->date) ;
    $dateStringtoday = strtotime(date("Y-m-d H:i:s")) ;
    
    if (floor(($dateStringtoday - $dateString)/24/60/60) > $day) {
    continue;
    }
    }
    //Fin CODE Xavier
    En clair, on prend la date de création du fichier et on la compare à la date du jour en la soustrayant. Si le résultat est supérieur à la valeur de $day, on a dépassé la date des x derniers jours et on saute à l'élément suivant dans la boucle avec "continue".

    Et voilà !
    Ca marche très bien !

    Maintenant, il pourra y avoir quelques améliorations.
    Je me suis rendu compte que le plugin parse tout le code en une fois dans la page.
    Cela veut dire que si j'ai plusieurs appels de liste de fichiers de catégories différentes, si le plugin voit "day=une_valeur", il appliquera cette valeur pour toute la page.
    Du coup, on ne peut pas avec cette solution avoir une catégorie limité au 60 derniers jours et dessous une autre catégorie sans filtrage.
    J'ai posté en même temps sur le forum Phoca et je verrai si Jan (de Phoca) a du temps et l'envie de, pourquoi pas, faire évoluer cette fonctionnalité et comment, ou encore m'aider à trouver une solution pour donner un filtrage différent dans la même page sur plusieurs catégorie

    De la même manière, il va me falloir d'un point de vue personnel continuer de voir pourquoi cette requête n'a jamais voulu fonctionner, mais ceci est une autre histoire !!

    Merci à tous ceux qui m'ont filé un coup de main en tout cas
    Bien à vous tous,
    Xavier

    [EDIT] Je ne passe pas le sujet en "réglé" pour l'instant, si d'autres solutions ou compléments à cette solution sont trouvés, on ne sait jamais )
    Dernière édition par chabi01 à 08/07/2022, 15h55

    Laisser un commentaire:


  • roland_d_alsace
    a répondu
    Hello.

    Le + simple dans ce cas est déjà de tester la requête via phpmyadmin.

    Regarde ici pour recupérer le sql : https://forum.joomla.fr/forum/d%C3%A...le#post2011839
    Dernière édition par roland_d_alsace à 04/07/2022, 17h36

    Laisser un commentaire:


  • chabi01
    a répondu
    Personne n'a d'idée ?

    Laisser un commentaire:


  • chabi01
    a crée un sujet Extensions du plugin Phocadownload

    Extensions du plugin Phocadownload

    Bonjour à tous,
    Cela fait un bail que je n'ai pas pu venir ici !
    Je devrai pouvoir y venir plus souvent à partir de mi juillet (mais je ne rien promettre encore...)

    Je reviens vers vous pour avoir l'aide d'experts SQL. Je ne suis pas moi-même un expert SQL et je dois me planter dans ma démarche.

    Je vous explique.
    Pour appeler une liste de fichier de PhocaDownload dans un article, on peut utiliser un tag comme ceci par exemple : {phocadownload view=filelist|id=51}.
    C'est le plugin de Phocadownload qui va ensuite parser le code et fournir la liste.

    Je me suis dit, "tiens, je vais améliorer le truc pour voir !" (oui, oui, je sais, des fois, on a des idées un peu bête... mais j'aime bien apprendre .

    Ok.
    Alors du coup, j'ai analysé le fichier plugin de Phocadownload et la conception est assez simple :
    - le plugin découpe la chaine du tag
    - le plugin à l'aide des éléments trouvé dans le tag va remonter la liste des fichiers.

    OK.
    Alors j'ai tenté un truc : je vais ajouter un tag possible à la chaine pour ne lister que les fichiers des 60 derniers jours !

    J'ai donc ajouté cela dans la chaine : {phocadownload view=filelist|id=51|day=60}
    Juste le "day=60".

    Ensuite, j'ai regardé le fichier plugin et je l'ai modifié.
    A la ligne 122, j'ai ajouté la reconnaissance du tag "day" et récupéré la valeur :
    Code:
    else if($values[0]=='url') {$url = $values[1];}
    else if($values[0]=='day') {$day = $values[1];}
    }
    Ok, ça marche : la variable $day stocke la valeur 60.

    Ensuite, je suis descendu à l'endroit où le "Filelist" est géré et j'ai simplement voulu modifier la requête pour ne garder que les valeurs que je souhaite :

    Code:
    case 'filelist':
    
    $fileOrdering = PhocaDownloadOrdering::getOrderingText($ordering, 3);
    
    if ($day !='') {
    
    
    $query = 'SELECT a.id, a.title, a.alias, a.filename_play, a.filename_preview, a.link_external, a.image_filename, a.filename, a.date as date, c.id as catid, a.confirm_license, c.title as cattitle, c.alias as catalias'
    . ' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'
    . ' CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(\':\', c.id, c.alias) ELSE c.id END as catslug'
    . ' FROM #__phocadownload AS a'
    . ' LEFT JOIN #__phocadownload_categories AS c ON a.catid = c.id'
    . ' WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 60 DAY) AND NOW()';
    
    
    } else {
    
    
    $query = 'SELECT a.id, a.title, a.alias, a.filename_play, a.filename_preview, a.link_external, a.image_filename, a.filename, c.id as catid, a.confirm_license, c.title as cattitle, c.alias as catalias,'
    . ' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'
    . ' CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(\':\', c.id, c.alias) ELSE c.id END as catslug'
    . ' FROM #__phocadownload AS a'
    . ' LEFT JOIN #__phocadownload_categories AS c ON a.catid = c.id';
    
    }
    Vous pouvez voir dans le else la requête originale et dans mon test vérifiant que $day a été trouvé la requête que j'ai créée : j'ai juste ajouté le champ "date" et ajouté un "where" pour filtrer sur l'intervalle (ici, je n'ai pas cherché à récupérer la valeur, j'ai juste mis 60 pour tester).

    Bah oui... mais apparemment, ma requête est foireuse et génère une erreur sql...

    Après une après midi passée à tenter de trouver le pourquoi du comment, je sèche : je n'arrive pas à comprendre pourquoi la requête ne marche pas alors que l'original elle fonctionne...

    Voilà : si l'un d'entre vous est capable de me filer un coup de main pour m'aider à comprendre et m'aider à trouver où est mon erreur, et bien, ce sera cool

    A bientôt tout le monde

    Bien à vous tous,
    Xavier
    PS : vous voyez, je continue de jouer avec Joomla

Annonce

Réduire
1 sur 2 < >

C'est [Réglé] et on n'en parle plus ?

A quoi ça sert ?
La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
Comment ajouter la mention [Réglé] à votre discussion ?
1 - Aller sur votre discussion et éditer votre premier message :


2 - Cliquer sur la liste déroulante Préfixe.

3 - Choisir le préfixe [Réglé].


4 - Et voilà… votre discussion est désormais identifiée comme réglée.

2 sur 2 < >

Assistance au forum - Outil de publication d'infos de votre site

Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

UTILISER À VOS PROPRES RISQUES :
L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

Problèmes connus :
FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

Installation :

1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

Archive zip : https://github.com/AFUJ/FPA/zipball/master

2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
et remplacer www. votresite .com par votre nom de domaine


Exemples:
Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
Télécharger le script fpa-fr.php dans: /public_html/
Pour executer le script: http://www..com/fpa-fr.php

Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
Télécharger le script fpa-fr.php dans: /public_html/cms/
Pour executer le script: http://www..com/cms/fpa-fr.php

En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
Voir plus
Voir moins

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X