Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : None 
Index du Forum » » Version future » » Geoloc  
AuteurGeoloc
Jireck
8218       

Jireck
  Posté : 04-01-2021 14:02

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


  Profil  www  Citation   
Jireck
8218       

Jireck
  Posté : 04-01-2021 14:13

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,& nbsp;$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/ge oloc_conf.php");
      if(strstr($file[25],'geo_ip = 1 ')) {
         $ousursit='';
         global $ousursit;
         $resultat=sql_query("SE LECT * FROM ".$NPDS_Prefix."ip_loc WHERE ip_ip LI KE \"$ip\"");
         $controle=sql_num_rows( $resultat);
         while ($row =  sql_fetch_array($resultat)) {
            $ousu rsit= preg_replace("#/.*?/#",'',$_SERVER['PHP_SELF']);
         }
         if($controle !=&nb sp;0)
            sql_q uery("UPDATE ".$NPDS_Prefix."ip_loc SET ip_visite= ip_visit e +1 , ip_visi_pag = \"$ousursit\" WHERE ip_ ip LIKE \"$ip\" ");
         else {
            $ibid =false;
            if(st rstr($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,& nbsp;"error")) {
              ;           $ibid=true;
              ;           if (!em pty($loc_obj->country_name))
              ;               $pay=removeHack($loc_obj->country_name);
              ;           else  < br />              ;               $pay='';
              ;           if (!em pty($loc_obj->country))
              ;               $codepay=removeHack($loc_obj->country);
              ;           else  < br />              ;               $codepay='';
              ;           if (!em pty($loc_obj->city))
              ;               $vi=removeHack($loc_obj->city);
              ;           else
              ;               $vi='';
              ;           if (!em pty($loc_obj->latitude))
              ;               $lat=(float)$loc_obj->latitude;
              ;           else
              ;               $lat='';
              ;           if (!em pty($loc_obj->longitude))
              ;               $long=(float)$loc_obj->longitude;
              ;           else
              ;               $long='';
              ;           sql_query("I NSERT INTO ".$NPDS_Prefix."ip_loc (ip_long, ip_lat, ip _ip, ip_country, ip_code_country, ip_city) VALUES ('$l ong', '$lat', '$ip', '$pay', '$codepay', '$vi')");
              ;           sql_query("U PDATE ".$NPDS_Prefix."ip_loc SET ip_visite= ip_visite  +1, ip_visi_pag = \"$ousursit\" WHERE ip_ip LIKE& nbsp;\"$ip\" ");
              ;        }
              ;     }
              ;  }
              ;  if($ibid==false) {
              ;     if(file_contents_exist($file_path[1])) {
              ;        $loc = file_get_cont ents($file_path[1]);
              ;        $loc_obj = json_deco de($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,&nb sp;ip_lat, ip_ip, ip_country, ip_code_country, ip_city)&nbs p;VALUES ('$long', '$lat', '$ip', '$pay', '$codepay',& nbsp;'$vi')");
              ;               sql_query("UPDATE ".$NPDS_Prefix."ip_loc SET ip_visite=&nb sp;ip_visite +1, ip_visi_pag = \"$ousursit\" WHERE&nbs p;ip_ip LIKE \"$ip\" ");
              ;           }
              ;        }
              ;     }
              ;     if($ibid==false) {
              ;        if(file_contents_exist($file_p ath[2])) {
              ;           $loc =& nbsp;file_get_contents($file_path[2]);
              ;           $loc_obj&nbs p;= json_decode($loc);
              ;           if ($lo c_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,&nb sp;ip_lat, ip_ip, ip_country, ip_code_country, ip_city)&nbs p;VALUES ('$long', '$lat', '$ip', '$pay', '$codepay',& nbsp;'$vi')");
              ;               sql_query("UPDATE ".$NPDS_Prefix."ip_loc SET ip_visite=&nb sp;ip_visite +1, ip_visi_pag = \"$ousursit\" WHERE&nbs p;ip_ip LIKE \"$ip\" ");
              ;           }
              ;        }
              ;     }
              ;  }
            }
            else& nbsp;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 (!em pty($loc_obj->country))
              ;               $pay=removeHack($loc_obj->country);
              ;           else  < br />              ;               $pay='';
              ;           if (!em pty($loc_obj->countryCode))
              ;               $codepay=removeHack($loc_obj->countryCode);
              ;           else  < br />              ;               $codepay='';
              ;           if (!em pty($loc_obj->city))
              ;               $vi=removeHack($loc_obj->city);
              ;           else
              ;               $vi='';
              ;           if (!em pty($loc_obj->lat))
              ;               $lat=(float)$loc_obj->lat;
              ;           else
              ;               $lat='';
              ;           if (!em pty($loc_obj->lon))
              ;               $long=(float)$loc_obj->lon;
              ;           else
              ;               $long='';
              ;           sql_query("I NSERT INTO ".$NPDS_Prefix."ip_loc (ip_long, ip_lat, ip _ip, ip_country, ip_code_country, ip_city) VALUES ('$l ong', '$lat', '$ip', '$pay', '$codepay', '$vi')");
              ;           sql_query("U PDATE ".$NPDS_Prefix."ip_loc SET ip_visite= ip_visite  +1, ip_visi_pag = \"$ousursit\" WHERE ip_ip LIKE& nbsp;\"$ip\" ");
              ;        }
              ;     }
              ;  }
            }
         }
      }
      //<== mod_geoloc

   $past = time()-300;
   sql_query("DELETE FROM ".$NPDS_Prefix."session&nb sp;WHERE time < '$past'");
   $result = sql_query("SELECT time FROM&n bsp;".$NPDS_Prefix."session WHERE username='$username'");
   if ($row = sql_fetch_assoc($result)) {
      if ($row['time'] < (tim e()-30)) {
         sql_query("UPDATE  ".$NPDS_Prefix."session SET username='$username', time='".time() ."', host_addr='$ip', guest='$guest', uri='$REQUEST_URI', a gent='".getenv("HTTP_USER_AGENT")."' WHERE username='$username'");
         if ($guest==0)&nbs p;{
            globa l $gmt;
            sql_q uery("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',&nbs p;'$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,& nbsp;$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-sess ion();
      }     

   $past = time()-300;
   sql_query("DELETE FROM ".$NPDS_Prefix."session&nb sp;WHERE time < '$past'");
   $result = sql_query("SELECT time FROM&n bsp;".$NPDS_Prefix."session WHERE username='$username'");
   if ($row = sql_fetch_assoc($result)) {
      if ($row['time'] < (tim e()-30)) {
         sql_query("UPDATE  ".$NPDS_Prefix."session SET username='$username', time='".time() ."', host_addr='$ip', guest='$guest', uri='$REQUEST_URI', a gent='".getenv("HTTP_USER_AGENT")."' WHERE username='$username'");
         if ($guest==0)&nbs p;{
            globa l $gmt;
            sql_q uery("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',&nbs p;'$guest', '$REQUEST_URI', '".getenv("HTTP_USER_AGENT")."')");
   }
}



Ce qui rendrait le code plus propre et indépendant du module

  Profil  www  Citation   
jpb
2299       
 

jpb
  Posté : 04-01-2021 19:28

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 ...) ...

  Profil  www  Citation   
Jireck
8218       

Jireck
  Posté : 04-01-2021 21:22

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.


  Profil  www  Citation   
jpb
2299       
 

jpb
  Posté : 05-01-2021 11:48

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 ...

  Profil  www  Citation   
Jireck
8218       

Jireck
  Posté : 05-01-2021 15:32

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

  Profil  www  Citation   
Jireck
8218       

Jireck
  Posté : 08-01-2021 15:38

sujet clos je pense ..

  Profil  www  Citation   
  
Sauter à :

Temps : 0.033 seconde(s)