We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 21238
    • 10 Posts
    #::::::::::::::::::::::::::::::::::::::::
    #::::::::::::::::::::::::::::::::::::::::
    # Nom du snippet : MemberCheck
    # Description : Teste à quel groupe d'utilisateur appartient l'utilisateur courant et retourne un chunk si la condition est vérifiée
    # Version : 1.0
    # Créé par Ryan Thrash (vertexworks.com)
    # Optimisé Par Jason Coward (opengeek.com)
    #
    # Date : 29 Novembre 2005
    #
    # Changelog : 
    # 29 Nov 05 -- sortie de la 1ere version
    #
    #::::::::::::::::::::::::::::::::::::::::
    # Description : 
    #      Vérifie si les utilisateurs appartienent à un certain groupe et
    #    Checks to see if users belong to a certain group and 
    #      affiche le chunk spécifié si la condition est vérifiée. Effectue plusieurs
    #    displays the specified chunk if they do. Performs several
    #    tests et autorise à être utilisé plusieurs fois sur une page
    #    sanity checks and allows to be used multiple times on a page.
    #
    # Paramètres :
    #    &groups [array] (REQUIS)
    #           nom des groupes à vérifier
    #        array of webuser group-names to check against
    #
    #    &chunk [string] (REQUIS)
    #        nom du chunk à utiliser si la vérification est réussie
    #        name of the chunk to use if passes the check
    #
    #    &ph [string] (optionel)
    #        nom du placeholder à mettre plutôt que renvoyer directement un chunk
    #
    #    &debug [boolean] (optionnel | false) 
    #        active le mode de débogage pour une meilleure correction d'erreurs
    #        turn on debug mode for extra troubleshooting
    #
    # Exemple d'Utilisation :
    #
    #    [[MemberCheck? &groups=`siteadmin, registered users` &chunk=`privateSiteNav` &ph=`MemberMenu` &debug=`true`]]
    #
    #    Ce devrait placer la navigation 'members-only' stockée dans le chunk 'privateSiteNav'
    #    dans un placeholder (appelé 'MemberMenu'). Ce devrait faire ceci aussi longtemps que l'utilisateur
    #    est authentifié comme un membre et qu'il est membre du groupe 'siteadmin' ou 'registered users'.
    #    Le paramètre optionnel de débogage peut être utilisé pour afficher des messages d'erreur informatifs
    #    quand vous configurez ce snippet pour votre site. Par exemple, si le dévellopeur a
    #    malencontreusement tapé 'siteowners' pour le premier groupe, et qu'il n'existe pas, avec le mode de débogage activé,
    #    ce message d'erreur devrait être retourné: Le groupe siteowners n'a pas pu être trouvé ...
    #
    #::::::::::::::::::::::::::::::::::::::::
    
    # debug parameter
    $debug = isset($debug)? $debug: false;
    
    # check if inside manager
    if ($m = $modx->insideManager()) {
    	return ''; # don't go any further when inside manager
    }
    
    if(!isset($groups)) {
    	return $debug? '<p>Erreur: Aucun Groupe Spécifié</p>': '';
    } 
    
    if(!isset($chunk)) { return $debug? '<p>Erreur: Aucun Chunk Spécifié</p>': ''; }
    
    # turn comma-delimited list of groups into an array
    $groups = explode(',', $groups);
    
    if (!class_exists('MemberCheck')) {
    	class MemberCheck {
    		static $instance = NULL;
    		var $allGroups = NULL;
    		var $debug;
    		
    		function getInstance($debug=false) {
    			global $modx;
    			if (self::$instance == NULL) {
    				self::$instance= new MemberCheck($debug);
    			}
    			return self::$instance;
    		}
    	
    		function MemberCheck($debug=false) {
    			global $modx;
    			$this->debug= $debug;
    			if ($debug) {
    				$this->allGroups= array(); 
    				$tableName= $modx->getFullTableName('webgroup_names');
    				$sql= "SELECT name FROM $tableName";
    				if ($rs= $modx->db->query($sql)) {
    					while ($row= $modx->db->getRow($rs)) {
    						array_push($this->allGroups, stripslashes($row['name']));
    					}
    				}
    			}
    		}
    		
    		function isValidGroup($groupName) {
    			$isValid = !(array_search($groupName, $this->allGroups)===false);
    			return $isValid;
    		}
    		
    		function getMemberChunk(&$groups,$chunk) {
    			global $modx;
    			$o= '';
    			if (is_array($groups)) {
    				for ($i=0; $i<count($groups); $i++) {
    					$groups[$i]= trim($groups[$i]);
    					if ($this->debug) {
    						if (!$this->isValidGroup($groups[$i])) return "<p>Le groupe <strong>" . $groups[$i] . "</strong> n'a pas pu être trouvé...</p>";
    					}
    				}
    				
    				$check = $modx->isMemberOfWebGroup($groups);
    				
    				$chunkcheck = $modx->getChunk($chunk);
    				
    				$o.= ($check && $chunkcheck)? $chunkcheck : '';
    				if (!$chunkcheck) $o.= $this->debug? "<p>Le chunk <strong>$chunk</strong> n'a pas été trouvé...</p>": '';
    			} else {
    				$o.= "<p>Aucun noms de groupe valides n'ont été spécifiés!</p>";
    			}
    			return $o;
    		}
    	}
    }
    
    $memberCheck= MemberCheck::getInstance($debug);
    return $memberCheck->getMemberChunk($groups, $chunk);
    


    Je peux publier sur le wiki ?
      • 6726
      • 7,075 Posts
      Oui comme je disais sur l’autre fil de discussion, le wiki est là pour ça...

      Juste quelques corrections :

      "# Snippet name: MemberCheck
      # Short Desc: checks logged in groups and displays a chunk
      # Version: 1.0
      # Created By Ryan Thrash (vertexworks.com)
      # Sanitized By Jason Coward (opengeek.com)"

      devient

      "# Nom du snippet : MemberCheck
      # Description : Teste à quel groupe d’utilisateur appartient l’utilisateur courant et retourne un chunk si la condition est vérifiée
      # Version: 1.0
      # Créé par Ryan Thrash (vertexworks.com)
      # Optimisé Par Jason Coward (opengeek.com)"

      Il y a quelques petites choses à compléter, je regarderai ça quand j’aurai le temps, pour l’instant si je vois bien, il reste la doc en début de snippet aussi.
        .: COO - Commerce Guys - Community Driven Innovation :.


        MODx est l&#39;outil id
        • 33175
        • 711 Posts
        David a été plus rapide que moi smiley

        Donc, comme il le disait, le wiki est là pour ça.
        Dès que tu l’auras mis dessus et je regarderai ta traduction plus en détail.

        Merci de mettre le lien vers la page du wiki dans ce thread smiley
          Sorry for my english. I&#39;m french... My dictionary is near me, but it&#39;s only a dictionary !
          • 21238
          • 10 Posts
          ok, je publie, je ne savais pas qu’il fallait aussi traduire les commentaires.
          Maitenant c’est fait grin
            • 21238
            • 10 Posts
            Je viens d’éditer en ajoutant les commentaires que j’ai traduits
              • 6726
              • 7,075 Posts
              Ok parfait, j’y jetterai un coup d’oeil...

                .: COO - Commerce Guys - Community Driven Innovation :.


                MODx est l&#39;outil id