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 :
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 :
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
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];} }
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'; }
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
Commentaire