Fork me on GitHub

Rapport de message :*
 

Re: Module Profile et Multimenu: comment afficher toutes les fiches

Titre du sujet : Re: Module Profile et Multimenu: comment afficher toutes les fiches
par lionhell sur 09/02/2007 12:56:19

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";
?>

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

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