Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
|
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
|