Le carnet de bord du webmaster
Passez votre chemin c'est mes notes ici...
07 | 31 | 01 | 19 | 20 | 04 | 32 | 10 | 11 | 21 | 34 | 16 | 36 | 17 | 30 | 18 | 28 | 14 | 29 | 08 | 06 | 03 | 27 | 25 | 22 | 05 | 09 | 02 | 13 | 15 | 12 | 23 | 26 | 24 | 33
**** 17-05-2010
06h10 start 07h25 : ptite retouche de mon programme manitou, voici la structure de base : 3 scripts : #!/bin/bash #manitou.sh #GLOBAL export SCRIPTFOLDER="/xxx/manitou-helpers" export MSG_BADCHOICE_DEFAULT="Je ne comprends pas ce choix. Veuillez recommencer." export MSG_PLEASESELECT_DEFAULT="Faîtes votre choix puis appuyez sur Entrée" export MSG_YOUR_CHOICE="Que puis-je faire pour vous ?" export SPACING="" # SPACING="\t\t\t" export DEBUG=false export CURRENT_SUBMENU=none #INIT CURRENT_SUBMENU=none MSG= manitouintro() { "$SCRIPTFOLDER/manitou-intro.sh" } amenu="a. Download les fichiers du serveur dedibox vers le poste local (fichiers web + fichier tan.sql)" ; bmenu="b. Set Standard Defaults " ; cmenu="c. Display Directory Listing " ; dmenu="d. Payroll Menu " ; emenu=" " ; fmenu=" " ; gmenu=" " ; hmenu=" " ; imenu=" " ; jmenu=" " ; kmenu=" " ; lmenu=" " ; apick () { "$SCRIPTFOLDER/rsync-dedibox-local.sh" "opening"; } bpick () { echo kop ; } cpick () { ls -l| more ; echo Press Enter ; read DUMMY ; } dpick () { payroll.mnu ; } epick () { badchoice ; } fpick () { badchoice ; } gpick () { badchoice ; } hpick () { badchoice ; } ipick () { badchoice ; } jpick () { badchoice ; } kpick () { badchoice ; } lpick () { badchoice ; } badchoice () { MSG="$MSG_BADCHOICE_DEFAULT" ; } themenu () { echo echo -e $SPACING $MSG_YOUR_CHOICE echo echo -e $SPACING $amenu echo -e $SPACING $bmenu echo -e $SPACING $cmenu echo -e $SPACING $dmenu echo -e $SPACING $emenu echo -e $SPACING $fmenu echo -e $SPACING $gmenu echo -e $SPACING $hmenu echo -e $SPACING $imenu echo -e $SPACING $jmenu echo -e $SPACING $kmenu echo -e $SPACING $lmenu echo -e $SPACING x. Exit echo echo echo "$MSG_PLEASESELECT_DEFAULT" ; } while true do manitouintro echo "##############################################################################" echo $MSG echo "##############################################################################" themenu read answer case $answer in a|A) apick;; b|B) bpick;; c|C) cpick;; d|D) dpick;; e|E) epick;; f|F) fpick;; g|G) gpick;; h|H) hpick;; i|I) ipick;; j|J) jpick;; k|K) kpick;; l|L) lpick;; x|X) break;; *) badchoice;; esac done #!/bin/bash #manitou-helpers/manitou-intro.sh submenu00="########### #########################" submenu01="########### rsync-dedibox-local #########################" #clear echo `date` case $CURRENT_SUBMENU in "rsync-dedibox-local") submenuTitle="$submenu01" ;; *) submenuTitle="$submenu00" ;; esac echo "##############################################################################" echo "##############################################################################" echo "##############################################################################" echo "########### THE BIG MANITOU SCRIPT #########################" echo "$submenuTitle" echo "########### by ling #########################" echo "##############################################################################" echo "##############################################################################" echo "##############################################################################" exit 0 #!/bin/bash #manitou-helpers/rsync-dedibox-local #INIT CURRENT_SUBMENU="rsync-dedibox-local" MSG= #SPECIFIC - You may want to copy paste from this line to create new child scripts manitouintro() { "$SCRIPTFOLDER/manitou-intro.sh" } amenu="a. Voir les logs rsync" ; bmenu="b. Rappatrier les images et les médias du dossier de quarantaine vers le dossier de travail " ; cmenu="c. Faire la rotation du fichier sql" ; dmenu="d. " ; emenu=" " ; fmenu=" " ; gmenu=" " ; hmenu=" " ; imenu=" " ; jmenu=" " ; kmenu=" " ; lmenu=" " ; openingfunc() { MSG="rsync: Le rappatriement a bien été effectué"; } apick () { "$SCRIPTFOLDER/rsync-dedibox-local.sh"; } bpick () { echo kop ; } cpick () { ls -l| more ; echo Press Enter ; read DUMMY ; } dpick () { payroll.mnu ; } epick () { badchoice ; } fpick () { badchoice ; } gpick () { badchoice ; } hpick () { badchoice ; } ipick () { badchoice ; } jpick () { badchoice ; } kpick () { badchoice ; } lpick () { badchoice ; } badchoice () { MSG="$MSG_BADCHOICE_DEFAULT" ; } themenu () { echo echo -e $SPACING $MSG_YOUR_CHOICE echo echo -e $SPACING $amenu echo -e $SPACING $bmenu echo -e $SPACING $cmenu echo -e $SPACING $dmenu echo -e $SPACING $emenu echo -e $SPACING $fmenu echo -e $SPACING $gmenu echo -e $SPACING $hmenu echo -e $SPACING $imenu echo -e $SPACING $jmenu echo -e $SPACING $kmenu echo -e $SPACING $lmenu echo -e $SPACING x. Exit echo echo echo "$MSG_PLEASESELECT_DEFAULT" ; } # Détermination du message if [ $1 = opening ] then openingfunc fi while true do manitouintro echo "##############################################################################" echo $MSG echo "##############################################################################" themenu read answer case $answer in a|A) apick;; b|B) bpick;; c|C) cpick;; d|D) dpick;; e|E) epick;; f|F) fpick;; g|G) gpick;; h|H) hpick;; i|I) ipick;; j|J) jpick;; k|K) kpick;; l|L) lpick;; x|X) break;; *) badchoice;; esac done 08h12 : voilà, je viens de finir mon squelette de programme, du moins pour l'insant ça me convient tout à fait. maintenant, ajoutons la chair. En fait, avant, il faut que je saches comment exploiter les erreurs d'une fonction. Je sais qu'il existe exit 0, et exit 1 pour les erreurs je crois, mais je ne sais pas concrètement comment l'exploiter… 09h52 : ok, un peu en retard .. Tours annonces Donc : Navigation annonce Ajouter une quickpage nav : une petite boîte dans laquelle l'utilisateur tape directement le numéro de la page sur laquelle il souhaite se rendre. Essayons en tant que module de liste5 et en gérant les conflits d'affichage éventuels pas css : Ce truc en fait c'est une petite boîte dans laquelle un utilisateur peut mettre directement le numéro de la page qu'il veut, une sorte d'accès rapide. Ceci m'a été conseillé par un utilisateur;.. il y a quelque temps … 10h36 : ok sous firefox, google chrome. La suite : Navigation annonce : pagelink top Ajouter un pagelink au sommet de la liste des annonces, si c'est visuellement esthétique et pratique. Sinon, laisser tel quel. ok, ben testons;.. 11h03 : ouai, chui pas convaincu, ça fait un peu brouillon, et j'me dis qu'avec le quicknav en haut et le pagelink en bas, l'utilisateur a quand même une facilité de navigation. Le truc c'est que ça fait un peu brouillon, mais peut être en réduisant l'intensité de la couleur …. 11h32 : mouais, on va l'mettre quand même maintenant que c'est fait, mais pas très convaincu, ça coûte 6 bonnes lignes de css, vous mo deirez j'ai le droit de compresser mes css si chui pas content, gasp ??.., 1 point pour vous.., et quelques lignes de php. Mais vu la taille de la liste (juste 20 annonces par page), ça fait limite ridicule, j'aimerais bien avoir des avis extérieurs, mais bon j'en n'aurais pas naturellement, faudrait faire des sondages, mais pas le temps.. J'aurai peut être quelques avis quand même... Et en plus je le laisse même sur les styles grid et journal, histoire d'aller jusqu'au bout du test, la tâche de navigation est maintenant est grandement facilitée, les utilisateurs n'auront qu' à faire un mouvement de main de 1cm et une pression sur le bouton de leur souris avec le nouveau système, contre un mouvement de main de 1cm, un effort du 3ème doigt pour ceux qui ont une mouse, un autre mouvement de 1cm, et une pression pour l'ancien système. Je l'impression de contribuer au développement de la fainéantise chez les internautes, heureusement mon site n'est pas tant visité, on devrait me crucifier pour ça. La suite… Sécurité Admin : liste des fichiers de l'appli sécurité Il faudrait que je mettes également un script qui liste tous les fichiers sur le serveur, et en local, et un autre qui retourne la différence, afin que je puisses détecter les backdoors... Déjà fait avec le système des rsync, la suite … Services commerces gratuit * Mettre le service compte vendeur gratuit pour ... à réfléchir : un an, ou bien pourquoi pas pour tous les commerces qui s'inscrivent avant par exemple 2011 ... A voir... ok disons, sous réserve d'une réflexion plus poussée (celle là est instantannée), que les commerces voient l'offre : Testez le compte vendeur sans engagement gratuitement pendant 6 mois (ou un an). Inscrivez-vous avant le tant tant tant. ok, mais comme chui pas graphiste, ni commercial pour 2 sous, et que j'ai un pote qui lui cumule les 2 qualités, mais qu'il rentre que ce soir, j'appelerai mon pote ce soir pour qu'il me file un coup de main, c'est un truc qu'il faut faire bien;.. En attendant je peux avancer, … Moteur de recherche Améliorer le moteur de recherche pour qu'il trouve pizzaono 11h51 ok, voyons ce moteur de recherche;.. Putain j'ai envie d'me claquer En fait c'est Piz'zaono qu'il doit trouver mais pourquoi j'ai mis ça, je veux me faire perdre du temps ou quoi. C'est quoi l'utilité ? C'est que les gens trouvent piz'zaono en tapant pizzaono. Mais pourquoi ils tapent pas piz'zaono direct…. oui je sais j'fais mon râleur, c'est fait exprés pour pas me prendre la tête et réfléchir pendant ce tmps là à la soluce réélle, sauf que là j'ai pas trouvée tout de suite la maintenant;.. raté. Mais un bon berger s'occuppe de toutes ses brebis. Y une solution que j'utilisais dans la v4 qui consistait à créer un champ supplémentaire dans la table commerce par exemple, ce champ s'appelle genre synonyme, ou aide-recherche ou samère, et qui est parsé par le moteur de recherche en plus des autres champs, actuellement nom, adresse, nom de catégorie et nom de la commune En fait je crois que c'est clair que je vais faire ça, car ça à l'avantage de prévoir de nombreux cas de figures, si jamais un mec qui vend des voitures mais qui s'appelle automachin veut être trouver pour voiture et pour honda, parce que sa spécialité c'est honda, ou pour parebrise antigel, et bien techniquement il pourrait. Arpès le bridage viendrait de moi, car sinon tout le monde se référencerait pour tout et n'importe quoi; Certes je peux faire confiance que ce ne serait pas le cas, mais obligé de prévoir si ça arrive. Bref, bonne solution, je rajoute un champ de recherche-supplementaire, et je rajoute manuellement pizzaono, et même pizaono, pizonno, pizaonno, … Et voilà, ça m'évite de construire un bout de programme avec une intelligence artificielle capable de détecter les principales fautes et bref ,… faisons… et mangeons… Juste un truc, je devrais pas le dire peut être mais j'le dis quand même , rien à voir mais j'ai remarqué que le fait de passer les annonces en republication automatique c'est bien, ça fait un roulement, mais par contre les annonces ont toutes la même date de postage. Normal, c'est mon robot qui les a relancées, mais bon, ça fait hyper grillé, de voir les annonces postées bien régulièrement toutes les 20 minutes (il est très discipliné ce robot, je l'aime bien), de 01h00 à chaiplus quelle heure genre 3h00 du mat. Comme si il y avait eu des gens qui avaient posté des annonces à cette heure là, et tous à la même seconde… C'est pas naturel. Je vais dire à mon robot que si le temps de relance tombe entre 23h et 09h, il ajoute 12 heures, ou un truc comme ça. Et puis pour chaque annonce, il rajoute un temps symbolique supplémentaire, et aléatoire, genre entre 1 et 5 minutes. Est-ce que c'est mal de faire ça ? Ca peut être vu comme de ma gruge. Zavéka m'jeter la première pierre. Mais aussi c'est juste pour éviter que des utilisateurs s'interrogent sur le site et ils vons se dire, tiens c'est bizarre ce truc là et ils vont pas avoir confiance…, parce les robots n'inspirent pas confiance;.. Bref, ce soir , soit je ferais soit je ferais pas.. mangeons au lieu de parler là;. sch-commerce2.png J'ai mis que 255 caractères max pour le champ finalement nommé thesaurus, ça fait genre; et mysql est plus rapide sur un champ de 255 caractères que si j'avais mis du texte. La contrepartie c'est que j'ai que 255 pour l'instant, et en cas d'évolution je devrais le modifier manuellement. Faire ce choix au niveau de la conception ça traduit ma croyance que ce champ ne sera pas utilisé jusqu'à plus de 255 caractères avant un bon bout de temps. Donc autant gagner ce qu'on peut gagner en perfs… A vrai dire, j'ai déjà pensé au système où les commerçants mettent eux même leur mots clés, tags, et le fait d'être limité à 255 caractères, to my opinion is a good thing. Donc 255 ok. 12h39 ok pour la recherche sur la liste des commerces. Au passage, j'ai vu dans mon code que la partie commerce actuellement ne supportera pas telquel le passage en multivilles, une exception est gérée cradement dans le code, bref. Faisons la même chose pour le moteur de recherche de commerce dans le compte utilisateur, si il existe, me rappelle plus. 12h44 ok; J'en ai profité pour remettre iso avec la liste en prod (le moteur de recherche dans la liste dans mon compte ne cherchait pas dans la commune…) oubli de ma part… La suite;.. TAO : récompenser le fait de trouver un bug Recompenser les utilisateurs lorsqu'ils trouvent des bugs sur le site Leur donner des TAO, quand ils trouvent un bug sur le site. Ouai, marrant. Niveau utilité pas convaincu mais bon, c'est dit, on fait;.. minitodo unorderedlist : mettre une constante qui fixe le nombre de points à attribuer en cas de trouvage de bug. Mettre la constante dans la fac dans les parties comment gagner des tao et les constantes systèmes Pour la partie comment gagner des tao, faire un screenshot qui montre clairement le lien à activer quand on a trouvé un bug; Pour le reste, étant donné la fréquence à laquelle les utilisateurs devraient trouver un bug et le signaler, je peux me permettre de faire au cas par cas à la main. Pour motiver les utilisateurs à utiliser ce système je mettrais une forte récompense : l'équivalent de 100 annonces postées, ça fait 10 tao. Je mettrai 100 tao, afin que les gens soient excités de trouver un bug, (et surtout qu'ils me le signalent). Normalement, personne ne devrait trouver de bug. Ai-je besoin de préciser qu'une faute d'orthographe n'est pas un bug… je ne pense pas quand même… 12h58 musique 13h58 Tours annonces 14h28 : ok. La suite… Page d'accueil : afficher les promos commerçants promo Sur la page d'accueil au lieu de faire défiler les photos de la ville, faire défiler les promos des commerçants... Mouais, moi j'aimais bien les photos, pas grave, on les placera ailleurs… En plus ya déjà un espace pour les promos, c'est juste que pour l'instant ya aucune promo. Mais ça peut servir pour 93annonces qui a une disposition différente. Je vais développer un module qui permet de faire défiler des choses. Voyons déjà ce qui était fait, je vais certainement reexploiter une bonne partie… 14h42 Je n'aime pas celui qui est actuellement sur le site, car il n'est pas circulaire. Soit j'en redéveloppe un, ça me coutera toute la journée, et plus, soit je modifie l"gèrement celui là … Je sais pas pourquoi je me fais chier : http://www.gmarwaha.com/jquery/jcarousellite/ Je vais intégrer celui là… ;) vive le web.;. 2Kb, il a tout ce qu'il faut pour me plaire.. 15h22 : trop fastoche, choi en train de jouer avec les options, c'est que du bonheur, un bijou. Seul regret, j'ai pas encore vu de mode défilement sans arrêt, mais bon, tant pis, il a tous les autres avantages en natif. L'option vertical me donne des idées : mettre les promos qui défilent en vertical dans le compte de l'utilisateur; Mais bon pour l'instant restons terre à teere et poursuivons, je continue à tester le composant;.. 15h28 : boben voilà, j'ai fait le tour. Ce truc, c'est le plus gros gain de temps de cette journée, un truc que j'aurais jamais pu coder aussi proprement qui m'est offert. Pour ce qui est de faire défiler les promos, j'attends qu'il y ait des promos, il suffira de faire une requête avec lien., ça ne devrait pas prendre plus de 10 minutes. Bah, autant la faire tout de suite comme ça ça sera fait, mais bon, il faut que j'ajoute les promos à la main;.. grmlblblb 15h36 4 promos sont insérées, ça me fait penser que j'ai oublié de donner le compte vendeur aux commerçants qui ont acheté le compte perso Tours annonces. Je leur donnerai à chacun 100 TAO pour les récompenser de leur fidélité, sachant que le compte vendeur coute actuellement 60 TAO, en attendant qu'il devienne gratuit il faut que je fasses vite, ou plus tard sinon bref. 15h44 : Ca y est. Bon, je me le mets de côté pour l'instant, faudra quand même éventuellement juste styler les flèches de navigation;. Alors maintenant comment donner les 100 TAO à ceux qui ont une page perso, comment les reconnaître ? ah ben ils ont tous une page perso déjà. C'est bon alors pas besoin d'en savoir plus… ok, j'ai préparé la requête à lancer ce soir;.. faudrait que je les appelle après ou envoi mail on verra;.. La suite... Nouvelle rubrique patrimoine photos ville Pour les photos de la ville, créer une rubrique patrimoine où les gens peuvent mettre leur article eux même, et leurs photos.... Alors là ça sent le système de modération, hélas je l'ai toujours pas abstrait comme il faut. J'ai bien un système, mais il est complexe, et sécurisé, alors je sais pas … il me reste à peu près 10 jours pour ce mois ci.. Ca me prendra bien la journée de demain, sachant que le référencmeent et l'emploi, je préfère me prendre 3 jours sur chaque. Short le timing, short;.. Bon ok on fait le système de modération, c'est quoi déjà ? Déjà on va commencer par une douche;.. 16h32 : ok, le gros problème que je vais avoir, c'est où stocker les photos pour les articles. Déjà, combien de photos autorisées par article. 1 ? C'est peut être pas suffisant pour tous les articles. Comme j'ai fait un setionnaire de médias, autant l'exploiter. A la base, celui qui fait un article peut mettre autant de photos qu'il veut, du moment qu'il les héberge ailleurs. Le html sera permis. Soit je m'arrête là, et basta. Ca me facilite grandement la vie, mais pas celle de celui qui veut mettre un article. Ben en fait je crois que je suis bête car cela doit déjà être géré : si le gestionnaire de médias existe les photos sont directement browsables avec tinymce, donc en gros c'est bon, si un utilisateur a un gestionnaire de médias sur Tours annonces, il pourra l'utiliser, à vérifier. Après, mon framework objet n'étant actuellement plus sur pied et n'ayant hélas pas le temps de le remonter, je vais devoir coder à la main les formulaires et listes. En gros je vais me baser sur le même modèle que l'annonce pour le système de modération. J'avais pensé à une modération bcp plus libre = pas de modération ou après coup, avec un système de tampon officiel une fois que c'est validé, mais en cas de modification, le tampon doit -il rester ? la problématique, hélas revient… Et si c'est une modération complètement libre = pas de modération, alors est-ce que s'appeler patrimoine et correct, ça serait plutôt "vos articles", ou "libre à vous". En fait, je doute que des gens s'investissent dans un projet qui n'est pas le leur. Si, une fois une fille l'a fait, généreuse en fait. Bon, ben ce système je le fais pour moi en prévision de remplir moi même tout le contenu, de faire plein d'articles sur la ville. Et comme chui pas méchant je partage l'outil d'insertion d'articles avec les autres utilisateurs. Vu comme ça, pas besoin de système de modération. Pourquoi faire ? Y a rien à modérer. Si un jour ça part en couilles on verra sur le moment, en tant que webmaster du site j'ai tous les pouvoirs, je serais pas démuni face à un incident;… Bref, moins de prise de tête du coup. Y aua des articles validés, c'est à dire reconnus … ah oui tiens reconnus ! C'est les utilisateurs qui voteront, la majorité a toujours raison. Si on met 4 articles côtes à côtes les gens choisiront d'eux même ceux qu'ils préférent et n'accorderont que très peu d'importance à ceux qu'ils n'aiment pas. Donc un mec qui s'amuse à mettre de la merde sur le site, et bien les gens ne lui accorderont que peu d'intérêt, la sélection naturelle. Dire que j'ai prévu tout un système de modération pour les annonces juste pour epérer contrôler ce genre d'incidents qui ne représenent qu'une partie infime du trafic. C'est vrai qu'il y a parfois des arnaques, mais de toutes façons elles sont avec ou sans système de modération. Bref, j'arrête d'essayer de tout contrôller, développons le service sans penser au mal (avec le minimum de sécurité bien sûr; Un article je veux mettre mes photos et les disposer, j'utiliserais tinymce ou un article html déjà fait (ça passera quand même par tinymce). id catégorie texte html un utilisateur Ben voilà, je crois que j'ai mon article. ah oui, un statut qui sert à plein de trucs... 17h01 Créons la table sch-article.png 17h08 : maintenant, créons un formulaire qui nous permette de rentrer le premier article en bdd. On va placer ce fomrulaire dans mon compte > mes articles, il y aura pour commencer un lien ajouter un article. 17h28 : création de la catégorie article et de sa sous-catégorie default en prévision d'accueillir mon premier article; 17h38 : ajout des catégories article>patrimoine, article>patrimoine>general article>patrimoine>muséée afin de fournir un contenu plus consistant pour le formulaire. 17h46 : le formulaire de base est fonctionnel. Il y a des petites capuches (terme que j'invente) encore sur la liste : elle affiche toutes les catégories : default, patrimoine général et musée, il faudra filtrer default à la racine;.. ou pas. ajoutons le tinymce 17h50 : tinymce avec plugin gestionnaire de médias sont activés, kool… Passons maintenant à l'affichage de la liste des articles dans mon compte. Et c'est là que je regrette de ne plus avoir mon framework objet, mais bon, j'ai toujours mes liste5, mais j'aime moins. Faisons toutefois avec liste 5. Le plus long sera de styler l'article en liste. J'avais fait des mockobjects pour ça mais faut que je les retrouve… 18h: sport 18h50 : avant Joomla , je me suis rendu compte qe j'avais oublié la date pour un article. Du coup, j'ai mis date de création et date de modification qui correspondra à la date de la dernière modification Et enfin j'ai ajouté le champ compteur de visite sch-article2.png 18h57 : joomla 21h59 : putain j'ai eu du mal, mais bon, finalement c'est bon. Je remercie mon bout de framework qui est très léger et adaptable à tout type de configuration.. Pour l'instant je ne montre rien, c'et en préparation… héhé… Maya Divertissement 1h23 : oups, il est déjà tard.. Je dois préparer la liste des services pour mon pote… en texte brut, faisons cela …. en fait comme il faut les captures d'écran avec des événements déjà mis, des promos etc;.. ça va me prendre longtemps, commençons plutôt par la mise à jour du site… Donc il faut juste que je retire ce qui concerne les articles dans le code, c'et à dire l'accès depuis mon compte;.. ok, passons à la mise à jour alors;;. ok : nickel … 02h03 : bon ben en fait je les ferais demain, … trop fatigué.. PATCH : FAC :: id=11 En postant 1 annonce, vous gagnez automatiquement {CONST_TAO_GAIN_PAR_ANNONCE} {CONST_TAO}. Les {CONST_TAOS} sont crédités automatiquement sur votre compte {CONST_WEBSITE_TITLE_DEFAULT}. Si vous arrivez à trouver un bug sur le site, vous devez le signaler par le biais du formulaire de bug accessible depuis toutes les pages du site, en bas. Voir l'image pour localiser le lien. Si il s'avère que c'est bien un bug, vous serez récompensé de {CONST_TAO_GAIN_PAR_BUG} {CONST_TAO} ( Donc n'oubliez pas de laisser votre email ou votre pseudo ) id=44 Voici les principales constantes du système {CONST_WEBSITE_TITLE_DEFAULT}. Les constantes régissent le comportement général du site, et sont susceptibles d'évoluer au cours du temps. Par exemple, la durée de vie d'une annonce est définie par une constante système. Le nombre maximum de photos autorisées pour une annonce : {CONST_ANNONCE_MAX_PHOTOS_BY_ANNONCE} Le nombre de {CONST_TAO} gagnés pour une annonce postée : {CONST_TAO_GAIN_PAR_ANNONCE} Coût de la republication d'une annonce : {CONST_TAO_COUT_REPUBLICATION_ANNONCE} {CONST_TAO} Prix en {CONST_TAO} de l'activation d'un compte vendeur (version payante) : {CONST_TAO_COUT_ACTIVATION_COMPTE_COMMERCE} 1 Euro équivaut actuellement à {CONST_TAO_1EURO_IS_X_TAO} {CONST_TAO} Durée de vie en jours d'une annonce sur le site : {CONST_ANNONCE_LIFETIME} Nombre de {CONST_TAO} attribués à un utilisateur qui poste un commerce qui ne lui appartient pas (et qui est validé) : {CONST_COMMERCE_POST_COMMERCE_REWARD} Gain en {CONST_TAO} pour un bug trouvé : {CONST_TAO_GAIN_PAR_BUG} PATCH SQL SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; ALTER TABLE `tan`.`commerce` ADD COLUMN `thesaurus` VARCHAR(255) NOT NULL AFTER `date_creation` ; UPDATE `tan`.`commerce` SET `thesaurus` = 'pizzaono pizaono pizzaonno pizaonno' WHERE `commerce`.`id` =20; update utilisateur_tan set tao=tao+100 where id=15769; update utilisateur_tan set tao=tao+100 where id=15770; update utilisateur_tan set tao=tao+100 where id=15782; update utilisateur_tan set tao=tao+100 where id=15787; update utilisateur_tan set tao=tao+100 where id=15796; update utilisateur_tan set tao=tao+100 where id=15798; update utilisateur_tan set tao=tao+100 where id=15909; CREATE TABLE IF NOT EXISTS `tan`.`article` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `arborescence_id` INT(11) NOT NULL , `utilisateur_id` INT(11) NOT NULL , `titre` VARCHAR(255) NOT NULL , `textehtml` TEXT NOT NULL , `date_creation` DATETIME NOT NULL , `date_modification` DATETIME NOT NULL , `nb_visite` INT(11) NOT NULL , `statut` TINYINT(4) NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_article_arborescence1` (`arborescence_id` ASC) , INDEX `fk_article_utilisateur1` (`utilisateur_id` ASC) , CONSTRAINT `fk_article_arborescence1` FOREIGN KEY (`arborescence_id` ) REFERENCES `tan`.`arborescence` (`id` ) ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT `fk_article_utilisateur1` FOREIGN KEY (`utilisateur_id` ) REFERENCES `tan`.`utilisateur` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;