logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
13 visiteur(s) et 0 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 106 576 224

  • Nb. de membres 8 693
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Version future »» Geoloc

Nouveau sujet
 Geoloc#26749Répondre

2Contributeur(s)
Jireckjpb
3 Modérateur(s)
developpeurjpbJireck
Jireck Jireckicon_post
Bonjour JPB,

Juste pour savoir et confirmation, le module Géoloc est vraiment insérer de partout dans le core ?
c'est plus un module ?

Juste pour savoir je ne doute pas de l'utilité qu'ont certaines personnes.
Mais pour celle qui se foutent de la géolocalisation des membres, comment peut on supprimer "simplement" ce code afin d'alléger le code.

Merci

Jireck Jireckicon_post
pour completer l'interrogation, je vois par exemple dans le main :


#autodoc session_manage() : Mise à jour la table session
function session_manage() {
   global $NPDS_Prefix, $cookie, $REQUEST_URI, $nuke_url;

   $guest=0;
   $ip=getip();
   $username = isset($cookie[1]) ? $cookie[1] : $ip;
   if($username==$ip)
      $guest=1;
      //==> mod_geoloc
      !include!("modules/geoloc/geoloc_conf.php");
      $file_path = array(
      'https://ipapi.co/'.$ip.'/json',
      'https://api.ipdata.co/'.$ip.'?api-key='.$api_key_ipdata,
      'https://extreme-ip-lookup.com/json/'.$ip,
      'http://ip-api.com/json/'.$ip
      );
      $file = file("modules/geoloc/geoloc_conf.php");
      if(strstr($file[25],'geo_ip = 1')) {
         $ousursit='';
         global $ousursit;
         $resultat=sql_query("SELECT * FROM ".$NPDS_Prefix."ip_loc WHERE ip_ip LIKE \"$ip\"");
         $controle=sql_num_rows($resultat);
         while ($row = sql_fetch_array($resultat)) {
            $ousursit= preg_replace("#/.*?/#",'',$_SERVER['PHP_SELF']);
         }
         if($controle != 0)
            sql_query("UPDATE ".$NPDS_Prefix."ip_loc SET ip_visite= ip_visite +1 , ip_visi_pag = \"$ousursit\" WHERE ip_ip LIKE \"$ip\" ");
         else {
            $ibid=false;
            if(strstr($nuke_url,'https')) {
               if(file_contents_exist($file_path[0])) {
                  $loc = file_get_contents($file_path[0]);
                  $loc_obj = json_decode($loc);
                  if($loc_obj) {
                     if(!property_exists($loc_obj, "error")) {
                        $ibid=true;
                        if (!empty($loc_obj->country_name))
                           $pay=removeHack($loc_obj->country_name);
                        else 
                           $pay='';
                        if (!empty($loc_obj->country))
                           $codepay=removeHack($loc_obj->country);
                        else 
                           $codepay='';
                        if (!empty($loc_obj->city))
                           $vi=removeHack($loc_obj->city);
                        else
                           $vi='';
                        if (!empty($loc_obj->latitude))
                           $lat=(float)$loc_obj->latitude;
                        else
                           $lat='';
                        if (!empty($loc_obj->longitude))
                           $long=(float)$loc_obj->longitude;
                        else
                           $long='';
                        sql_query("INSERT INTO ".$NPDS_Prefix."ip_loc (ip_long, ip_lat, ip_ip, ip_country, ip_code_country, ip_city) VALUES ('$long', '$lat', '$ip', '$pay', '$codepay', '$vi')");
                        sql_query("UPDATE ".$NPDS_Prefix."ip_loc SET ip_visite= ip_visite +1, ip_visi_pag = \"$ousursit\" WHERE ip_ip LIKE \"$ip\" ");
                     }
                  }
               }
               if($ibid==false) {
                  if(file_contents_exist($file_path[1])) {
                     $loc = file_get_contents($file_path[1]);
                     $loc_obj = json_decode($loc);
                     if($loc_obj) {
                        if(!property_exists($loc_obj, "message")) {
                           $ibid=true;
                           if (!empty($loc_obj->country_name))
                              $pay=removeHack($loc_obj->country_name);
                           else 
                              $pay='';
                           if (!empty($loc_obj->country_code))
                              $codepay=removeHack($loc_obj->country_code);
                           else 
                              $codepay='';
                           if (!empty($loc_obj->city))
                              $vi=removeHack($loc_obj->city);
                           else
                              $vi='';
                           if (!empty($loc_obj->latitude))
                              $lat=(float)$loc_obj->latitude;
                           else
                              $lat='';
                           if (!empty($loc_obj->longitude))
                              $long=(float)$loc_obj->longitude;
                           else
                              $long='';
                           sql_query("INSERT INTO ".$NPDS_Prefix."ip_loc (ip_long, ip_lat, ip_ip, ip_country, ip_code_country, ip_city) VALUES ('$long', '$lat', '$ip', '$pay', '$codepay', '$vi')");
                           sql_query("UPDATE ".$NPDS_Prefix."ip_loc SET ip_visite= ip_visite +1, ip_visi_pag = \"$ousursit\" WHERE ip_ip LIKE \"$ip\" ");
                        }
                     }
                  }
                  if($ibid==false) {
                     if(file_contents_exist($file_path[2])) {
                        $loc = file_get_contents($file_path[2]);
                        $loc_obj = json_decode($loc);
                        if ($loc_obj->status=='success') {
                           $ibid=true;
                           if (!empty($loc_obj->country))
                              $pay=removeHack($loc_obj->country);
                           else 
                              $pay='';
                           if (!empty($loc_obj->countryCode))
                              $codepay=removeHack($loc_obj->countryCode);
                           else 
                              $codepay='';
                           if (!empty($loc_obj->city))
                              $vi=removeHack($loc_obj->city);
                           else
                              $vi='';
                           if (!empty($loc_obj->lat))
                              $lat=(float)$loc_obj->lat;
                           else
                              $lat='';
                           if (!empty($loc_obj->lon))
                              $long=(float)$loc_obj->lon;
                           else
                              $long='';
                           sql_query("INSERT INTO ".$NPDS_Prefix."ip_loc (ip_long, ip_lat, ip_ip, ip_country, ip_code_country, ip_city) VALUES ('$long', '$lat', '$ip', '$pay', '$codepay', '$vi')");
                           sql_query("UPDATE ".$NPDS_Prefix."ip_loc SET ip_visite= ip_visite +1, ip_visi_pag = \"$ousursit\" WHERE ip_ip LIKE \"$ip\" ");
                        }
                     }
                  }
               }
            }
            else if(strstr($nuke_url,'http')) {
               if(file_contents_exist($file_path[3])) {
                  $loc = file_get_contents($file_path[3]);
                  $loc_obj = json_decode($loc);
                  if($loc_obj) {
                     if ($loc_obj->status=='success') {
                        if (!empty($loc_obj->country))
                           $pay=removeHack($loc_obj->country);
                        else 
                           $pay='';
                        if (!empty($loc_obj->countryCode))
                           $codepay=removeHack($loc_obj->countryCode);
                        else 
                           $codepay='';
                        if (!empty($loc_obj->city))
                           $vi=removeHack($loc_obj->city);
                        else
                           $vi='';
                        if (!empty($loc_obj->lat))
                           $lat=(float)$loc_obj->lat;
                        else
                           $lat='';
                        if (!empty($loc_obj->lon))
                           $long=(float)$loc_obj->lon;
                        else
                           $long='';
                        sql_query("INSERT INTO ".$NPDS_Prefix."ip_loc (ip_long, ip_lat, ip_ip, ip_country, ip_code_country, ip_city) VALUES ('$long', '$lat', '$ip', '$pay', '$codepay', '$vi')");
                        sql_query("UPDATE ".$NPDS_Prefix."ip_loc SET ip_visite= ip_visite +1, ip_visi_pag = \"$ousursit\" WHERE ip_ip LIKE \"$ip\" ");
                     }
                  }
               }
            }
         }
      }
      //<== mod_geoloc

   $past = time()-300;
   sql_query("DELETE FROM ".$NPDS_Prefix."session WHERE time < '$past'");
   $result = sql_query("SELECT time FROM ".$NPDS_Prefix."session WHERE username='$username'");
   if ($row = sql_fetch_assoc($result)) {
      if ($row['time'] < (time()-30)) {
         sql_query("UPDATE ".$NPDS_Prefix."session SET username='$username', time='".time()."', host_addr='$ip', guest='$guest', uri='$REQUEST_URI', agent='".getenv("HTTP_USER_AGENT")."' WHERE username='$username'");
         if ($guest==0) {
            global $gmt;
            sql_query("UPDATE ".$NPDS_Prefix."users SET user_lastvisit='".(time()+(integer)$gmt*3600)."' WHERE uname='$username'");
         }
      }
   } else {
      sql_query("INSERT INTO ".$NPDS_Prefix."session (username, time, host_addr, guest, uri, agent) VALUES ('$username', '".time()."', '$ip', '$guest', '$REQUEST_URI', '".getenv("HTTP_USER_AGENT")."')");
   }
}



Pourquoi ne pas le simplifier avec des fichiers mis dans le repertoire module/geoloc ?

Genre pour le fichier mainfile et la fonction session_manage



#autodoc session_manage() : Mise à jour la table session
function session_manage() {
   global $NPDS_Prefix, $cookie, $REQUEST_URI, $nuke_url;

   $guest=0;
   $ip=getip();
   $username = isset($cookie[1]) ? $cookie[1] : $ip;
   if($username==$ip)
      $guest=1;
      if (geoloc == $actif){
           !include!("modules/geoloc/geoloc_Core.php");
           geoloc-session();
      }     

   $past = time()-300;
   sql_query("DELETE FROM ".$NPDS_Prefix."session WHERE time < '$past'");
   $result = sql_query("SELECT time FROM ".$NPDS_Prefix."session WHERE username='$username'");
   if ($row = sql_fetch_assoc($result)) {
      if ($row['time'] < (time()-30)) {
         sql_query("UPDATE ".$NPDS_Prefix."session SET username='$username', time='".time()."', host_addr='$ip', guest='$guest', uri='$REQUEST_URI', agent='".getenv("HTTP_USER_AGENT")."' WHERE username='$username'");
         if ($guest==0) {
            global $gmt;
            sql_query("UPDATE ".$NPDS_Prefix."users SET user_lastvisit='".(time()+(integer)$gmt*3600)."' WHERE uname='$username'");
         }
      }
   } else {
      sql_query("INSERT INTO ".$NPDS_Prefix."session (username, time, host_addr, guest, uri, agent) VALUES ('$username', '".time()."', '$ip', '$guest', '$REQUEST_URI', '".getenv("HTTP_USER_AGENT")."')");
   }
}



Ce qui rendrait le code plus propre et indépendant du module
jpb jpbicon_post
Yo
oui geoloc est un module du core (car il permet d'avoir un support de géolocalisation qui peut et pourrait être utilisé dans le core et dans les modules ...) actuellement dans le core il sert aux membres, aux ip visiteurs, au module du core session log, aux IP des posts forums ... et très récemment dans le module npds_galerie ... enfin bref

oui pour le déplacement du code session_manage() du mainfile on en avait déjà parlé je ne suis pas contre faudra le faire (comme on l'a déjà fait justement dans topicadmin par exemple ...) ...
Jireck Jireckicon_post
Pour être totalement honnête j'aime pas ce module qui ne sert à rien pour ma part, je précise.

c'est une version amélioré de ce qui existait déjà.
ce qui me dérange le plus c'est qu'il s'insinue de partout sans prendre en compte la volonté de certains webmasters. je parle de personne comme moi, donc que quelques uns.
je vais donné des exemples :
un site sans membre
un site sans galerie
un site avec des membres mais connu
un intranet, etc ...

ce que je tente d'expliquer, c'est que c'est pas parce que c'est un bon module qu'il doit aller partout.

il faut toujours ce dire : est ce que c'est vital pour tous les cas de fonctionnement oui ok on met , non et bien on met des options comme un module.

pour reprendre l'exemple ci-dessus, on rajoute 200 lignes 4 requetes SQL et du temps de traitement, pour dans mon cas rien.

je donne mon avis pour que ce "module" soit un module ajoutable / supprimable / customisable.
bref ma conception de code propre et modulable.

Jpb, cela est purement mon avis qui n'engage que moi et ma vision et donc mon avis critique et ne remet pas en cause tout le travail énorme que tu as fait.

j'ai souvent des divergences de point de vue par rapport aux gens qui s'expriment / s'exprimaient ici. mais bon restons ouvert à l'echange et à la critique positive :

- Good job et bravo encore.

jpb jpbicon_post
bof ...
Autant je suis d'accord avec ta remarque sur le code du mainfile pour le reste je ne te suis vraiment pas !

Si tu n'as pas besoin des fonctions proposées par ce module alors ne t'en sert pas ...

Les exemples que tu donnes ne sont pas uniquement valable pour les fonctions de geoloc mais toutes les autres fonctions du core ...
tu prends l'exemple d'un site sans membres (sans communauté donc)
est ce que pour cela il faut mettre en module toutes les fonctions du core relatif à la gestion de communauté (messages privé, forum, commentaires, themes ...etc...etc ...etc...etc ) pour moi ca n'a guère de sens ...

"
je donne mon avis pour que ce "module" soit un module ajoutable / supprimable / customisable.
bref ma conception de code propre et modulable.
"
<== non comme je te l'ai déjà écrit ce n'est pas un module lambda car outre sa fonction originelle (géolocalisation de la communauté que tu es libre d'utiliser ou pas) il apporte au core un support de géolocalisation, tout comme sform apporte un support pour la création de formulaire, file manager, comments, upload ... etc ... etc
et donc comme tout ces modules du core de facto ils ont forcément une empreinte dans le code du core contrairement à un module lambda qui lui ne devrait pas en avoir (la je suis d'accord avec toi)...

Donc ce que tu peux remettre en question c'est l'utilité pour un cms d'avoir un support pour la géolocalisation ?..

Je préfère me baser sur un concept simple : un cms qui peut le plus peut le moins !
Libre à chaque webmaster de se servir ou pas des possibilités ...
Jireck Jireckicon_post
Je comprends très bien tes arguments et je vais essayer d'expliquer un peu mieux ce qui me choque au vue de tes réponses :

Pour Géoloc, je ne met pas le mot module dedans.
il faut différencier les fonctions Core et les fonctions modules.

Fonction core sont utilisé par le core tout le temps comme dans IPBan, ou autre
Les fonctions modules sont des fonctions "optionnelles" qui peuvent etre activé / désactivé ou supprimé sans impact sur le fonctionnement du CMS.

Donc, comme je l'écris aussi souvent, c'est un problème de structure et d'appellation.

Concernant Géoloc pour faire le point complet, il faut pour moi avoir :
1) Avoir un fichier à la racine du site ou dans le répertoire Lib avec les fonctions utilisées par le core
2) Avoir des fichiers dans le répertoire module/Géoloc avec la structure standard des modules (qui permet par exemple la localisation des membres via une carte, etc ...).

3) Avoir dans tous les fichiers du core ou d'un autre module nécessitant l'inclusion optionnel de la geolocation via un if option_affiche_xxx à mettre comme pour le module galerie ou pour les membres, etc ...

Et là, tu auras, de mon point de vue, différencier correctement un module de fonction core et la possibilité d'activer/désactiver les fonctions dont le webmaster se sert ou pas.

J'espère avoir été claire, ... pas sur.
et quand je dis que je ne l'aime pas ce "module" c'est du à ce que je viens d'expliquer, c'est tout.

je pense que faire la différenciation correct entre module / core / theme et une bonne structuration rationnelle des répertoires, doit être La base, et même à l'intérieur du core une structure doit être parlante et cohérente.

cela permet ensuite comme déjà écris, de pouvoir updater les différents composants sans impacté le fonctionnement global (genre microservice).

Je te remercie pour ton retour toujours top.
au plaisir de te lire
Jireck Jireckicon_post
sujet clos je pense ..