/*   -*- coding: utf-8 -*-  */
/*
           WicriStatistiquesSite.c

 */

#include <stdio.h>     /* for printf */
#include <stdlib.h>    /* for exit */
#include <getopt.h>
#include "SxmlNode.h"
#include "Buffer.h"

int main()
{
  SxmlNode *apiNode ;
  SxmlNode *queryNode;
  SxmlNode *statNode;

  Buffer *bufPrint;
 
  char *pagesStr;
  char *articlesStr;
  char *editsStr;
  char *imagesStr;

  int pagesNum;
  int articlesNum;
  int editsNum;
  int imagesNum;

  int cumulPages;
  int cumulArticles;
  int cumulEdits;
  int cumulImages;
  int nWikis;

  bufPrint=NewBuffer();

  printf("Cette page introduit les [[Wicri:Statistiques|statistiques]] volumétriques du réseau Wicri au ");
  printf(BufferFrenchDateOfTheDay());
  printf(".\n");
  printf("__TOC__\n");
  printf("==Statistiques par wiki==\n");

  printf ("{| class=\"wikitable sortable\" \n");
  printf ("|-  \n");
  printf ("!Wiki\n");
  printf ("!Pages\n");
  printf ("!Articles significatifs\n");
  printf ("!Modifications\n");
  printf ("!Fichiers (images...)\n");
  printf ("|-  \n");

   cumulPages=0;
   cumulArticles=0;
   cumulEdits=0;
   cumulImages=0;
   nWikis=0;

  while ((apiNode=SxmlInputGetDocumentElement()))
    {
       queryNode=SxmlGetFirstChildByTagName(apiNode, "query"); 
       if (!queryNode)continue;

       statNode= SxmlGetFirstChildByTagName(queryNode, "statistics");
       if (!statNode)continue;

       pagesStr=SxmlGetAttribute(statNode,"pages");
       articlesStr=SxmlGetAttribute(statNode,"articles");
       editsStr=SxmlGetAttribute(statNode,"edits");
       imagesStr=SxmlGetAttribute(statNode,"images");


       printf ("|%s\n", SxmlInputRecordKey);
       printf ("|{{formatnum:%s}}\n", pagesStr);
       printf ("|{{formatnum:%s}}\n", articlesStr);
       printf ("|{{formatnum:%s}}\n", editsStr); 
       printf ("|{{formatnum:%s}}\n", imagesStr);
       printf ("|-  \n");



       pagesNum=    atoi(pagesStr);
       articlesNum= atoi(articlesStr);
       editsNum=    atoi(editsStr);    
       imagesNum=   atoi(imagesStr);

       cumulPages+=pagesNum;
       cumulArticles+=articlesNum;
       cumulEdits+=editsNum;
       cumulImages+=imagesNum;
       nWikis++;

    };
   printf ("|}\n");

   printf("==Statistiques cumulées==\n");
   printf ("{| class=\"wikitable\" \n");
   printf ("|-  \n");
   printf ("!Wikis<br/>(nombre)\n");
   printf ("!Pages\n");
   printf ("!Articles\n");
   printf ("!Modifications\n");
   printf ("!Fichiers\n");
   printf ("|-  \n");

   printf ("|{{formatnum:%d}}\n", nWikis);
   printf ("|{{formatnum:%d}}\n", cumulPages);
   printf ("|{{formatnum:%d}}\n", cumulArticles);
   printf ("|{{formatnum:%d}}\n", cumulEdits);
   printf ("|{{formatnum:%d}}\n", cumulImages);
   printf ("|-  \n");
   printf ("|}\n");

  printf("==Voir aussi==\n");
  printf(";Sur ce wiki:\n");
  printf("* [[Wicri:Statistiques/2020/ ... / .. |état précédent ( ... )]]\n");
  printf("<!-- \n");
  printf("* [[Wicri:Statistiques/2020/ ... / .. |état suivant ( ... )]]\n");
  printf("-->\n");

  printf("<!-- page précédente\n");
  BufferStrcpy(bufPrint, "* [[Wicri:Statistiques/");
  BufferAppendDirDateOfTheDay(bufPrint);
  BufferStrcat(bufPrint, "|état suivant (..  ");
  BufferAppendFrenchMonthOfTheDay(bufPrint);
  BufferStrcat(bufPrint," ");
  BufferAppendYearOfTheDay(bufPrint);;
  BufferStrcat(bufPrint,")]]\n");
  printf(BufferString(bufPrint));
  printf("-->\n");

  printf("<!-- page d'accueil\n");
  printf("* [[Wicri:Statistiques/");
  printf(BufferDirFrenchDateOfTheDay());
  printf("]]\n");

}
