Fork me on GitHub




« 1 (2)


Re: Module Profile et Multimenu: comment afficher toutes les fiches
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Donc, pour afficher la liste de tous les utilisateurs inscrits, avec le module "profile" (pas smartprofile) inclus dans le core de xoops v2.2 il faut:

- Copier le code ci-dessous.
- Le sauvegarder sous forme d'un fichier php nommé "liste.php".
- Mettre ce fichier dans le répertoire modules/profile/


Pour afficher la liste des utilisateurs il suffit ensuite avec un lien (multimenu ou autre) de pointer sur ce fichier "liste.php"

note: si vous voulez modifier l'affichage du résultat c'est le template "profile_results.html" qu'il faut modifier.

Voici le contenu du fichier "liste.php":

Citation :

<?php

include '../../mainfile.php';
$myts =& MyTextSanitizer::getInstance();
$op = isset($_REQUEST['op']) ? $_REQUEST['op'] : "results";
$groups = $xoopsUser ? $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS);
switch ($op) {
default:
case "results":
$xoopsOption['template_main'] = "profile_results.html";
include_once XOOPS_ROOT_PATH."/header.php";

$member_handler =& xoops_gethandler('member');
// Dynamic fields
$profile_handler =& xoops_gethandler('profile');
// Get fields
$fields =& $profile_handler->loadFields();
// Get ids of fields that can be searched
$gperm_handler =& xoops_gethandler('groupperm');
$searchable_fields = $gperm_handler->getItemIds('profile_search', $groups, $xoopsModule->getVar('mid'));
$searchvars = array();

$criteria = new CriteriaCompo(new Criteria('level', 0, ">"));
$criteria->add(new Criteria('u.uname', "%", "LIKE"));
$searchvars[] = "uname";

if (isset($_REQUEST['name']) && $_REQUEST['name'] != "") {
$string = $myts->addSlashes(trim($_REQUEST['name']));
switch ($_REQUEST['name_match']) {
case XOOPS_MATCH_START:
$string .= "%";
break;

case XOOPS_MATCH_END:
$string = "%".$string;
break;

case XOOPS_MATCH_CONTAIN:
$string = "%".$string."%";
break;
}
$criteria->add(new Criteria('u.name', $string, "LIKE"));
$searchvars[] = "name";
}
if (isset($_REQUEST['email']) && $_REQUEST['email'] != "") {
$string = $myts->addSlashes(trim($_REQUEST['email']));
switch ($_REQUEST['email_match']) {
case XOOPS_MATCH_START:
$string .= "%";
break;

case XOOPS_MATCH_END:
$string = "%".$string;
break;

case XOOPS_MATCH_CONTAIN:
$string = "%".$string."%";
break;
}
$searchvars[] = "email";
$criteria->add(new Criteria('u.email', $string, "LIKE"));
$criteria->add(new Criteria('p.user_viewemail', 1));
}
$searchable_types = array('textbox',
'select',
'radio',
'yesno',
'date',
'datetime',
'timezone',
'language');

foreach (array_keys($fields) as $i) {
if (in_array($fields[$i]->getVar('fieldid'), $searchable_fields) && in_array($fields[$i]->getVar('field_type'), $searchable_types)) {
$fieldname = $fields[$i]->getVar('field_name');

if (in_array($fields[$i]->getVar('field_type'), array("select", "radio"))) {
if (isset($_REQUEST[$fieldname]) && $_REQUEST[$fieldname]) {
//If field value is sent through request and is not an empty value
switch ($fields[$i]->getVar('field_valuetype')) {
case XOBJ_DTYPE_OTHER:
case XOBJ_DTYPE_INT:
$value = array_map('intval', $_REQUEST[$fieldname]);
$searchvars[] = $fieldname;
$criteria->add(new Criteria($fieldname, "(".implode(',', $value).")", "IN"));
break;

case XOBJ_DTYPE_URL:
case XOBJ_DTYPE_TXTBOX:
case XOBJ_DTYPE_TXTAREA:
$value = array_map(array($xoopsDB, "quoteString"), $_REQUEST[$fieldname]);
$searchvars[] = $fieldname;
$criteria->add(new Criteria($fieldname, "(".implode(',', $value).")", "IN"));
break;
}
}
}
else {
switch ($fields[$i]->getVar('field_valuetype')) {
case XOBJ_DTYPE_OTHER:
case XOBJ_DTYPE_INT:

if (isset($_REQUEST[$fieldname."_larger"]) && trim($_REQUEST[$fieldname."_larger"]) != "" && $_REQUEST[$fieldname."_larger"] != "YYYY/MM/DD") {
if ($fields[$i]->getVar('field_type') == "date" || $fields[$i]->getVar('field_type') == "date") {
if (intval($_REQUEST[$fieldname."_smaller"]) < 0) { //intval() of a date string is -1
$value = strtotime($_REQUEST[$fieldname."_larger"]);
}
else {
$value = intval($_REQUEST[$fieldname."_larger"]);
}
}
else {
$value = intval($_REQUEST[$fieldname."_larger"]);
}
$search_url[] = $fieldname."_larger=".$value;
$searchvars[] = $fieldname;
$criteria->add(new Criteria($fieldname, $value, ">="));
}
if (isset($_REQUEST[$fieldname."_smaller"]) && trim($_REQUEST[$fieldname."_smaller"]) != "" && $_REQUEST[$fieldname."_smaller"] != "YYYY/MM/DD") {
if ($fields[$i]->getVar('field_type') == "date" || $fields[$i]->getVar('field_type') == "date") {
if (intval($_REQUEST[$fieldname."_smaller"]) < 0) { //intval() of a date string is -1
$value = strtotime($_REQUEST[$fieldname."_smaller"]);
}
else {
$value = intval($_REQUEST[$fieldname."_smaller"]);
}
}
else {
$value = intval($_REQUEST[$fieldname."_smaller"]);
}
$search_url[] = $fieldname."_smaller=".$value;
$searchvars[] = $fieldname;
$criteria->add(new Criteria($fieldname, $value, "<="));
}
if (isset($_REQUEST[$fieldname]) && !isset($_REQUEST[$fieldname."_smaller"]) && !isset($_REQUEST[$fieldname."_larger"])) {
if (!is_array($_REQUEST[$fieldname])) {
$value = intval($_REQUEST[$fieldname]);
$search_url[] = $fieldname."=".$value;
$criteria->add(new Criteria($fieldname, $value, "="));
}
else {
$value = array_map("intval", $_REQUEST[$fieldname]);
foreach ($value as $thisvalue) {
$search_url[] = $fieldname."[]=".$thisvalue;
}
$criteria->add(new Criteria($fieldname, "(".implode(',', $value).")", "IN"));
}

$searchvars[] = $fieldname;
}
break;

case XOBJ_DTYPE_URL:
case XOBJ_DTYPE_TXTBOX:
case XOBJ_DTYPE_TXTAREA:
if (isset($_REQUEST[$fieldname]) && $_REQUEST[$fieldname] != "") {
$value = $myts->addSlashes(trim($_REQUEST[$fieldname]));
switch ($_REQUEST[$fieldname.'_match']) {
case XOOPS_MATCH_START:
$value .= "%";
break;

case XOOPS_MATCH_END:
$value = "%".$value;
break;

case XOOPS_MATCH_CONTAIN:
$value = "%".$value."%";
break;
}
$search_url[] = $fieldname."=".$value;
$operator = "LIKE";
$criteria->add(new Criteria($fieldname, $value, $operator));
$searchvars[] = $fieldname;
}
break;
}
}
}
}

if ($searchvars == array()) {
break;
}

if ($_REQUEST['sortby'] == "name") {
$criteria->setSort("name");
}
elseif ($_REQUEST['sortby'] == "email") {
$criteria->setSort("email");
}
elseif ($_REQUEST['sortby'] == "uname") {
$criteria->setSort("uname");
}
elseif (isset($fields[$_REQUEST['sortby']])) {
$criteria->setSort($fields[$_REQUEST['sortby']]->getVar('field_name'));
}
$order = $_REQUEST['order'] == 0 ? "ASC" : "DESC";
$criteria->setOrder($order);

$limit = isset($_REQUEST['limit']) && intval($_REQUEST['limit']) > 0 ? intval($_REQUEST['limit']) : 20;
$criteria->setLimit($limit);

$start = isset($_REQUEST['start']) ? intval($_REQUEST['start']) : 0;
$criteria->setStart($start);

//Get users based on criteria
$users =& $member_handler->getUsers($criteria, true);
$total_users = $member_handler->getUserCount($criteria);

//Sort information
foreach (array_keys($users) as $k) {
$userarray["output"][] = "<a href='userinfo.php?uid=".$users[$k]->getVar('uid')."'>".$users[$k]->getVar('uname')."</a>";
$userarray["output"][] = $users[$k]->getVar('name');
$userarray["output"][] = $users[$k]->getVar('user_viewemail') == 1 ? $users[$k]->getVar('email') : "";

foreach (array_keys($fields) as $i) {
if (in_array($fields[$i]->getVar('fieldid'), $searchable_fields) && in_array($fields[$i]->getVar('field_type'), $searchable_types) && in_array($fields[$i]->getVar('field_name'), $searchvars)) {
$userarray["output"][] = $fields[$i]->getOutputValue($users[$k]);
}
}
$xoopsTpl->append('users', $userarray);
unset($userarray);
}

//Get captions
$captions[] = _PROFILE_MA_DISPLAYNAME;
$captions[] = 'NOM Prénom';
$captions[] = _PROFILE_MA_EMAIL;
foreach (array_keys($fields) as $i) {
if (in_array($fields[$i]->getVar('fieldid'), $searchable_fields) && in_array($fields[$i]->getVar('field_type'), $searchable_types) && in_array($fields[$i]->getVar('field_name'), $searchvars)) {
$captions[] = $fields[$i]->getVar('field_title');
}
}
$xoopsTpl->assign('captions', $captions);

if ($total_users > $limit) {
$search_url[] = "op=results";
$search_url[] = "order=".$order;
$search_url[] = "sortby=".$_REQUEST['sortby'];
$search_url[] = "limit=".$limit;
if (isset($search_url)) {
$args = implode("&", $search_url);
}
include_once XOOPS_ROOT_PATH."/class/pagenav.php";
$nav = new XoopsPageNav($total_users, $limit, $start, "start", $args);
$xoopsTpl->assign('nav', $nav->renderNav(5));
}
break;
}
include XOOPS_ROOT_PATH."/footer.php";
?>

Posté le : 09/02/2007 12:56

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
merci pour le partage

ps : ha ben je pouvais le chercher longtemps ce module ! je n'utilise pas du tout les versions 2.2

Posté le : 09/02/2007 13:02
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Régulier
Inscrit: 06/06/2004 21:24
De Paris
Messages: 245
Bonjour je serais intéressé par cette fonction sous xoops 2.4.4 et le dernier profile 1.57 malheureusement cela ne semble pas fonctionner..

j'obtiens les erreurs suivantes :

Citation :

This page cannot be displayed due to an internal error.

You can provide the following information to the administrators of this site to help them solve the problem:

Error: Class XoopsProfileHandler does not exist
Handler Name: profile
Backtrace:
/include/functions.php (50)
/modules/profile/result.php (16)
Aucun Tout Erreur(s) (2) Deprécié(s) (0) Requête(s) (46) Bloc(s) (6) Extra (2) Temporisation(5)
Erreur(s)
Inconnu: Assigning the return value of new by reference is deprecated dans le fichier /modules/extcal/class/ExtcalPersistableObjectHandler.php - ligne 53
Erreur(s): Class XoopsProfileHandler does not exist
Handler Name: profile dans le fichier /include/functions.php - ligne 50


Si une ame charitable peut m'aider, je lui en serait bien reconnaissante merci d'avance

Posté le : 19/03/2010 00:42
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Régulier
Inscrit: 06/06/2004 21:24
De Paris
Messages: 245
ptit up

Posté le : 20/03/2010 10:23
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Régulier
Inscrit: 06/06/2004 21:24
De Paris
Messages: 245
aller je retente un petit up, merci

Posté le : 23/03/2010 10:51
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Supporter Xoops
Inscrit: 09/01/2005 13:37
De Breizh
Messages: 16972
Bonjour,

ce code était pour les versions 2.2.x de xoops, et n'est plus adapté aux versions actuelles
Mais je crois qu'il existe une solution à traîner sur le forum, à toi d'utiliser la recherche
--> http://www.google.fr/search?hl=fr&sou ... =f&aqi=&aql=&oq=&gs_rfai=

@+

Posté le : 23/03/2010 11:54

La connaissance s'accroît quand on la partage ...
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
« 1 (2)



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

96 Personne(s) en ligne (76 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 96 | Plus ...