|
Wordbook "evolution" - hack admin |
|
Régulier
Inscrit: 26/02/2007 16:00
|
Ce sujet fait suite à : https://www.frxoops.org/modules/newbb/ ... p?topic_id=22576&forum=12Mais le thème abordé est tellement différent du corps du sujet précédent que je préfère en ouvrir un nouveau. Sur mon site www.aquaportail.com, nous utilisons un système de Newsletter fait maison car il y a des envois très réguliers et les modules existants étaient soient trop lourds, soient... buggués. Par rapport à WordBook v1.16, voici un fichier d'administration qui permet de connaître la liste des entrées dans le glossaire (sans gestion de catégorie) entre 2 dates données. L'intérêt est évident lorsqu'on veut, par exemple, communiquer les dernières entrées dans le glossaire selon une périodicité fixe, typiquement toutes les semaines. Le fichier suivant demande une date de début (fixée par défaut à J-7) et une date de fin (aujourd'hui par défaut) et un nombre de colonnes (2 par défaut) pour l'affichage de la liste. Ceci n'est pas une opération à effectuer sans de bonnes connaissances en PHP!!!Comme il s'agit d'une nouvelle fonction d'administration, il faut modifier le fichier /modules/wordbook/include/functions.php et ajouter le code suivant à la ligne 226 :
echo "<li style="list-style: none; margin: 0; display: inline; "><a href="latestdays.php" style="padding: 3px 0.5em; margin-left: 3px; border: 1px solid #778; background: ".$tblColors[6]."; text-decoration: none; white-space: nowrap; ">Derniers jours</a></li>";
L'accès à un nouveau fichier nommé 'latestdays.php' est créé dans l'administration. Ensuite, il faut sauvegarder le contenu suivant dans un fichier nommé "latestdays.php" dans le dossier (répertoire) /admin du module.
<?php
/**
* Module: WordBook
* Version: v1.16
* Derniere MAJ : August 2007
* Developer: Jef aka 'anemone-clown' www.aquaportail.com
* Licence: GNU
*/
include("admin_header.php");
global $Menu, $xoopsConfig, $xoopsModuleConfig, $xoopsDB;
xoops_cp_header();
adminMenu();
$aujourdhui = date("d/m/Y");
list($jour, $mois, $annee) = explode('/', $aujourdhui);
$timestamp = mktime(0, 0, 0, $mois, $jour - 7, $annee); // par defaut : 7 jours
$fin = (!isset($_POST['fin'])) ? $aujourdhui : $_POST['fin'];
$debut = (!isset($_POST['debut'])) ? date('d/m/Y',$timestamp) : $_POST['debut'];
$nbcolumns = (!isset($_POST['nbcolumns']) && ($_POST['nbcolumns'] < 1)) ? 2 : $_POST['nbcolumns'];
list($jour, $mois, $annee) = explode('/', $debut);
$timestampdebut = mktime(0, 0, 0, $mois, $jour, $annee);
list($jour, $mois, $annee) = explode('/', $fin);
$timestampfin = mktime(0, 0, 0, $mois, $jour, $annee) + 86399;
echo "<br />date début = ".$timestampdebut." -> ".formatTimestamp($timestampdebut,"m")."
<br />date fin = ".$timestampfin." -> ".formatTimestamp($timestampfin,"m")."
<br /><br />";
// formulaire
$my_form = new XoopsThemeForm('Selection de la période', "periode", "latestdays.php");
$my_form -> addElement(new XoopsFormText("Date début :", "debut", 15, 10, $debut), true);
$my_form -> addElement(new XoopsFormText("Date fin :", "fin", 15, 10, $fin), true);
$my_form -> addElement(new XoopsFormText("Nombre de colonnes :", "nbcolumns", 5, 5, $nbcolumns), true);
$button_tray = new XoopsFormElementTray('');
$button_tray->addElement(new XoopsFormButton('', 'ok', 'OK', 'submit'));
$my_form -> addElement($button_tray);
$my_form -> display();
// Fin formulaire
$pubwords = $xoopsDB -> query( "SELECT * FROM " . $xoopsDB -> prefix( "wbentries" ) . " WHERE submit = '0' AND offline ='0' ");
$publishedwords = $xoopsDB -> getRowsNum ( $pubwords );
$result = $xoopsDB -> query( "SELECT * FROM " . $xoopsDB -> prefix( "wbentries" ) . " WHERE (datesub >= " . $timestampdebut. ") AND (datesub <= " . $timestampfin . ") AND (submit='0') AND (offline ='0') ORDER BY datesub DESC");
$nbweekwords = $xoopsDB -> getRowsNum($result);
echo '<br /><table class="outer" summary="" cellspacing="1" width="100%"><tr>';
$entetecolonne = '<td valign="top"><table><tr><th style="text-align: center; width: 100px;">Date</th><th> <b>Terme</b></th></tr>';
if (!$result) {
echo '<td><b class="head">Aucune entrée</b></td>';
}
else {
$nb = 0;
$nbt = $nbweekwords;
$division = ceil($nbweekwords / $nbcolumns);
$sos = $entetecolonne;
while($myrow = $xoopsDB -> fetchArray($result)) {
$nb++;
$nbt--;
$sos .= '<tr><td class="even" style="text-align: center;">'.formatTimestamp($myrow['datesub'],"s").'</td>';
$sos .= '<td> <b>'.$myrow['term'].'</b></td></tr>';
if (($nb == $division) && ($nbt > 0)) {
$nb = 0;
$sos .= '</table></td>'.$entetecolonne;
}
}
$sos .= '</table></td>';
echo $sos;
}
echo '</tr></table>';
echo '<br /><fieldset><legend><b>Infos</b></legend><br />
- <b>'.$nbweekwords.'</b> définitions ont été saisies durant les '. ceil(($timestampfin-$timestampdebut)/86400) .' derniers jours.<br /><br />
- Le Glossaire totalise <b>'.$publishedwords.'</b> entrées le '. date("d/m/Y") .'<br /><br /></fieldset>';
xoops_cp_footer();
?>
Le fichier créé affichera ce genre de résultats : J'ai fait ça rapidemment aujourd'hui, j'espère que c'est compréhensible pour les profanes.
Posté le : 06/08/2007 16:43
|
|
|
Re: Wordbook "evolution" - hack admin |
|
Semi pro
Inscrit: 22/02/2004 20:41
|
Merci pour ce hack. Vu que tu travailles sur wordbook, j'ai remarqué quelques bugs: 1°)Bugs Ex: Je rajoute une entrée avec le terme suivant "age de l'univers" ainsi que la définition et je valide. Je m'apercois que j'ai fait une faute d'orthographe par exemple, j'edite l'entrée mais là, je m'apercois que le terme est coupé comme ceci "age de l" surement à cause de l'aspostrophe. 2°)Bugs Ex: Je possede plusieurs entrées comme par exemple (plan, planète,..) Je vais sur une entrée où dans la definition, il y a planète mais à la place d'avoir le mot "planète" qui dirige vers sa propre entrée, j'obtiens Planètes qui dirige vers "plan". Exemple ici, je suppose que c'est à cause des accents et dans ce cas là "è". Pourtant des fois sur certaines entrées, il n'y a aucun problème comme ici
Posté le : 06/08/2007 17:50
|
|
|
Re: Wordbook "evolution" - hack admin |
|
Régulier
Inscrit: 26/02/2007 16:00
|
Citation :kraven30 a écrit: Pourtant des fois sur certaines entrées, il n'y a aucun problème comme ici La définition est vierge... tu ne risques pas d'avoir de soucis!!! Je prends note des bugs signalés, mais es-tu avec une installation Xoops 2.0.x ou Xoops 2.2 et, enfin, Php 4 ou 5 ?
Posté le : 06/08/2007 18:49
|
|
|
Re: Wordbook "evolution" - hack admin |
|
Semi pro
Inscrit: 22/02/2004 20:41
|
Version PHP=>4.4.7 Version Xoops=> 2.0.16 Citation :La définition est vierge... tu ne risques pas d'avoir de soucis!!! Comment ça vide ??? ++
Posté le : 06/08/2007 19:38
|
|
Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|