2010-09-22 18 views
0

Nous utilisons dotCMS 1.7a et j'ai de la difficulté à obtenir les adresses électroniques des utilisateurs dans le rôle Administrateur.Obtention d'adresses électroniques de tous les utilisateurs avec le rôle Administrateur

Ce SQL fonctionne:

select user_.emailaddress 
    from user_ 
    INNER JOIN users_roles 
    ON users_roles.userid = user_.userid 
    INNER JOIN role_ 
    ON users_roles.roleid = role_.roleid 
    where role_.name = 'Administrator'; 

Mais ce code Velocity ne:

<p>Start</p> 
    #set($found = $cmsuser.searchUsersAndUsersProxy(null, null, null, [], true, 
    ["Administrator"], true, null, 1, 0)) 
    <p>Finish</p> 
    <p>Found: $found [$found.size()].</p> 
    #set($theUsers = $found.get("users")) 
    <p>Got theUsers: $theUsers [$theUsers.size()].</p> 

La sortie du code ci-dessus est:

Start 
    Finish 
    Found: {total=22, usersProxy=[], users=[], groupNames=[], roleNames=[]} [5]. 
    Got theUsers: [] [0]. 

Qu'est-ce qui ne va pas? Toute aide sera très appréciée!

Rob :)

Répondre

0

obtenu la réponse - grâce à Paul P. :)

#set($found = $cmsuser.searchUsersAndUsersProxy(null, null, null, [], false, 
["Administrator"], true, null, 1, 1000)) 
<p>Found $found.get("users").size() Administrator users.</p> 
#set($theUsers = $found.get("users")) 
#foreach ($user in $theUsers) 
$user.fullName ($user.emailAddress)<br> 
#end 

Note 1. Javadocs pour $cmsuser.searchUsersAndUsersProxy() montrent les paramètres de cette méthode.

Remarque 2. Dans ce cas (dotCMS 1.7), l'argument pageSize arg (final int - nombre d'éléments à afficher dans la page) ne suit pas la convention dotCMS, c'est-à-dire 0 signifie vraiment 0! Normalement cela signifie "pas de limite".

Remarque 3. Le cinquième paramètre (showUserGroups) doit être false ou j'obtiendrai des doublons (comme dans une jointure complète).

0

Je ne sais pas quoi que ce soit sur ce cm, mais je pense que la vitesse n'aime pas ces paramètres que vous passez. Velocity n'a pas de concept "nul", et ces tableaux en ligne ne sont probablement pas les bienvenus non plus.

Je pense que vous devez placer ces utilisateurs du côté du serveur, puis passer prêt à afficher les objets à vélocité. C'est en quelque sorte à quoi sert un moteur de template - pour afficher les données, pas pour les récupérer.

+0

Merci pour la réponse Serg. Je vais essayer d'écrire ces paramètres d'une manière différente. –

+0

En ce qui concerne votre deuxième réflexion, dotCMS est structuré de telle sorte que la logique peut être incorporée dans des pages facilement sans "backend". Ils ont exposé les API via Velocity juste à cet effet. Leur slogan (dotcms.com) souligne facétieusement ceci: "Look Ma, aucun développeur d'applications requis." Oui en effet. Cela dit, je pense que la logique ci-dessus n'est pas si grave qu'elle doit être séparée. –

+0

C'est certainement le format accepté pour les tableaux. (http://velocity.apache.org/engine/releases/velocity-1.5/vtl-reference-guide.html) #set ($ monkey.Say = ["Non", $ my, "fault"]) –