Hallo @all,
die Accountdaten habe ich umfangreich erweitert ('mx_userfunctions_options.php') und die Bildschirmanzeigen entsprechend angepasst. Das funktioniert und ist fertig, bis auf das Thema 'Mehrere Bilder im Account', wozu es jedoch ein separates Posting gibt.
Entsprechend der Aufgabenstellung habe ich auch die Mitgliederliste (Modul 'Members_List') angepasst. Einerseits das Aussehen verändert, andererseits aber auch die verwendeten Daten (Datenbankfelder) verändert. So wird z. B. nicht mehr das Feld 'uname' verwendet, sondern ein neu in der Datenbanktabelle dafür angelegtes Feld. Überwiegend klappt das auch, die Anzeige stimmt und auch die (ebenfalls modifizierte) Sortierung funktioniert.
Lediglich der Link aus der Liste zum ausgesuchten Mitglied funktioniert nicht. Hier wird immer noch mit 'uname' gearbeitet, obwohl ich alle entsprechenden Stellen im Skript angepasst habe und nirgendwo noch ein 'uname' vorhanden ist.
Warum wird trotzdem noch 'uname' verwendet ? Wer kann mir den richtigen Tipp geben ?
Ich hänge mal den jetzigen Stand der 'index.php' aus dem Modul an und sage schon mal 'Vielen Dank' für jeden konstruktiven Hinweis.
Gruß
Wolfgang
<?php
/**
* This file is part of
* pragmaMx - Web Content Management System.
* Copyright by pragmaMx Developer Team - http://www.pragmamx.org
*
* pragmaMx is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* $Revision: 1.15.6.7 $
* $Author: tora60 $
* $Date: 2010/11/21 18:13:27 $
*
* this file based on:
* php-nuke Web Portal System - http://phpnuke.org/
* Thatware - http://thatware.org/
*
* Based on MyPHPortal Modified MembersList
* Some code taken from MemberList coded by Paul Joseph Thompson
* of www.slug.okstate.edu
* In memoriam of Members List War ;)
*/
defined('mxMainFileLoaded') or die('access denied');
$module_name = basename(dirname(__FILE__));
mxGetLangfile($module_name);
$index = 0; // Rechte Bloecke? 0 = nein, 1 = ja
$letter = 'all'; // Standardauswahl
$sortby = 'user_sortieren'; // Standardsortierung
$pagesize = 25; // Anzahl der Zeilen in der Liste
define('MX_ML_IMAGEPATH', PMX_MODULES_PATH . $module_name . '/images/');
define('IMG_EDIT' , mxCreateImage(MX_ML_IMAGEPATH . 'edit.gif', 'edit', array('title' => _EDIT)));
define('IMG_DELE', mxCreateImage(MX_ML_IMAGEPATH . 'delete.gif', 'delete', array('title' => _DELETE)));
$memlistletters = array ('all', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'other');
if (isset($_GET['letter'])) {
$letter = (in_array($_GET['letter'], $memlistletters)) ? $_GET['letter'] : $letter;
}
if (isset($_GET['sortby'])) {
$memlistsortbys = array('user_sortieren', 'user_from', 'user_occ');
$sortby = (in_array($_GET['sortby'], $memlistsortbys)) ? $_GET['sortby'] : $sortby;
unset($memlistsortbys);
}
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
function alpha()
{
/* Creates the list of letters and makes them a link. */
global $sortby, $module_name, $memlistletters, $letter;
$num = count($memlistletters) - 1;
echo "<center>[ ";
$counter = 0;
foreach ($memlistletters as $ltr) {
$ltr_v = mltransletter($ltr);
if ($ltr == $letter) {
$ltr_v = '<b class="current">' . $ltr_v . '</b>';
}
echo '<a href="modules.php?name=' . $module_name . '&letter=' . $ltr . '&sortby=' . $sortby . '">' . $ltr_v . '</a>';
if ($counter == round($num / 2)) {
echo " ]<br />[ ";
} else if ($counter != $num) {
echo " | ";
}
$counter++;
}
echo " ]</center><br />";
}
function SortLinks($letter) // Makes order by links..
{
global $sortby, $module_name;
echo "<center>"; // Start of HTML
echo _SORTBY . " [ ";
if ($sortby == "user_sortieren" OR !$sortby) {
echo _Lp_FIRMA . " | ";
} else {
echo "<a href=\"modules.php?name=" . $module_name . "&letter=$letter&sortby=user_sortieren\">" . _Lp_FIRMA . "</a> | ";
}
if ($sortby == "user_occ") {
echo _Lp_BRANCHE . " | ";
} else {
echo "<a href=\"modules.php?name=" . $module_name . "&letter=$letter&sortby=user_occ\">" . _Lp_BRANCHE . "</a> | ";
}
if ($sortby == "user_from") {
echo _Lp_ORT . " | ";
} else {
echo "<a href=\"modules.php?name=" . $module_name . "&letter=$letter&sortby=user_from\">" . _Lp_ORT . "</a>";
}
echo " ]</center>"; // end of HTML
}
function mltransletter($ltr)
{
if ($ltr == 'all') {
return _MEMALL;
}
if ($ltr == 'other') {
return _MEMOTHER;
}
return $ltr;
}
$pagetitle = _MEMBERSLIST;
include("header.php");
title(_MEMBERSLIST);
/* This is the header section that displays the last registered and who's logged in and whatnot */
$result = sql_query("select user_sortieren from {$user_prefix}_users WHERE user_stat=1 order by uid DESC limit 0,1");
list($lastuser) = sql_fetch_row($result);
list($numrows) = sql_fetch_row(sql_query("select count(uid) from {$user_prefix}_users WHERE user_stat=1"));
OpenTable();
echo '<center>' . _Lp_GREETINGS . ' ' . mxCreateUserprofileLink($lastuser) . '</center><br />';
if (MX_IS_USER || MX_IS_ADMIN) {
$member_online_num = 0;
$past = time() - MX_SETINACTIVE_MINS ;
$result2 = sql_query("SELECT user_sortieren FROM {$user_prefix}_users
WHERE ((user_lastvisit >= " . $past . ") AND (user_stat=1) AND (user_lastmod<>'logout'))
ORDER BY user_sortieren");
while (list($username) = sql_fetch_row($result2)) {
$list[] = mxCreateUserprofileLink($username);
$member_online_num++;
}
$who_online = (isset($list)) ? implode(" - ", $list) : "";
echo "<center>" . _WEHAVE . " <b>" . $numrows . "</b> " . _Lp_MREGISTERED . " <b>" . $member_online_num . "</b> " . _Lp_MREGONLINE . "</center><br />";
if ($member_online_num) {
OpenTable2();
echo "<center><b>" . _Lp_ONLINEREG . " </b><br /><br />" . $who_online . "</center>";
CloseTable2();
echo '<br />';
}
} else {
echo "<center>" . _WEHAVE . " <b>$numrows</b> " . _Lp_REGSOFAR . "</center><br /><br />";
}
alpha();
SortLinks($letter);
$min = $pagesize * ($page - 1); // This is where we start our record set from
$max = $pagesize; // This is how many rows to select
/* All my SQL stuff. DO NOT ALTER ANYTHING UNLESS YOU KNOW WHAT YOU ARE DOING */
/* This is a totaly crap code, any help to re-code this functions will be very appreciated */
/* Need to be database independent */
$count = "SELECT COUNT(uid) AS total FROM {$user_prefix}_users "; // Count all the users in the db..
$select = "SELECT uid, user_sortieren, user_gewerbe, user_occ, user_from FROM {$user_prefix}_users "; //select our data
$where = "where user_sortieren <> 'Anonymous' AND user_stat=1 ";
if (($letter != 'other') && ($letter != 'all')) { // are we listing all or "other" ?
$where .= "AND user_sortieren LIKE '" . $letter . "%' ";
} else if ($letter == 'other') { // But other is numbers ?
$where .= "AND user_sortieren REGEXP '^\[1-9]' ";
}
$sort = "order by $sortby"; //sorty by .....
$limit = " ASC LIMIT " . $min . ", " . $max; // we only want rows $min to $max
/* due to how this works, i need the total number of users per
letter group, then we can hack of the ones we want to view */
$count_result = sql_query($count . $where);
list($num_rows_per_order) = sql_fetch_row($count_result);
/* This is where we get our limit'd result set. */
$result = sql_query($select . $where . $sort . $limit); # or die(); // Now lets do it !!
/* Crap code ends here */
echo '<br />';
echo "<table width=\"100%\" border=\"0\" cellspacing=\"1\" class=\"full list\"><tr>";
echo "<th>" . _Lp_FIRMA . "</th>";
echo "<th>" . _Lp_GEWERBE . "</th>";
echo "<th>" . _Lp_BRANCHE . "</th>";
echo "<th>" . _Lp_ORT . "</th>";
$cols = 4;
if (MX_IS_ADMIN) {
$cols++;
echo "<th>" . _FUNCTIONS . "</th>";
}
echo "</tr>";
$num_users = sql_num_rows($result); //number of users per sorted and limit query
if ($num_rows_per_order > 0) {
$dclass = '';
while ($theuser = sql_fetch_array($result)) {
$dclass = ($dclass != 'alternate-a') ? 'alternate-a' : 'alternate-b';
echo '<tr class="' . $dclass . '"><td>' . mxCreateUserprofileLink($theuser['user_sortieren']) . ' </td>';
echo "<td>" . $theuser['user_gewerbe'] . " </td>";
echo "<td>" . $theuser['user_occ'] . " </td>";
echo "<td>" . $theuser['user_from'] . " </td>";
if (MX_IS_ADMIN) {
echo "
<td align=\"center\">
<a href=\"admin.php?chng_uid=$theuser[uid]&op=modifyUser\">" . IMG_EDIT . "</a>
<a href=\"admin.php?op=delUser&chng_uid=$theuser[uid]\">" . IMG_DELE . "</a>
</td>";
}
echo "</tr>";
}
} else { // you have no members on this letter, hahaha
echo "<tr><td class=\"alternate\" colspan=\"$cols\" align=\"center\"><br />";
echo "<b>" . _Lp_NOMEMBERS . " "" . mltransletter($letter) . ""</b>";
echo "<br /><br /></td></tr>";
}
echo "</table>";
if ($num_rows_per_order > 0) {
echo "<table class=\"full\" cellspacing=\"0\" cellpadding=\"6\" border=\"0\"><tr>";
if ($num_rows_per_order > $pagesize) {
$total_pages = ceil($num_rows_per_order / $pagesize); // How many pages are we dealing with here ??
$prev_page = $page - 1;
if ($prev_page > 0) {
echo "<td align='left' width='15%'><a href='modules.php?name=" . $module_name . "&letter=$letter&sortby=$sortby&page=$prev_page'>";
echo mxCreateImage(PMX_IMAGE_PATH . 'previous.png', _PREVIOUS, array('title' => _PREVIOUS . ' (' . $prev_page . ')'));
echo "</a></td>";
} else {
echo "<td width='15%'> </td>";
}
echo "<td align='center' width='70%' class='tiny'>";
echo "$num_rows_per_order " . _Lp_USERSFOUND . " <b>"" . mltransletter($letter) . ""</b> ($total_pages " . _PAGES . ", $num_users " . _Lp_USERSSHOWN . ")";
echo "</td>";
$next_page = $page + 1;
if ($next_page <= $total_pages) {
echo "<td align='right' width='15%'><a href='modules.php?name=" . $module_name . "&letter=$letter&sortby=$sortby&page=$next_page'>";
echo mxCreateImage(PMX_IMAGE_PATH . 'next.png', _NEXTPAGE, array('title' => _NEXTPAGE . ' (' . $next_page . ')'));
echo "</a></td>";
} else {
echo "<td width='15%'> </td></tr>";
}
/* Added a numbered page list, only shows up to 50 pages. */
echo "<tr><td colspan=\"3\" align=\"center\" class=\"tiny\">";
echo " [ ";
for($n = 1; $n < $total_pages; $n++) {
if ($n == $page) {
echo "<b>$n</b>";
} else {
echo "<a href=\"modules.php?name=" . $module_name . "&letter=$letter&sortby=$sortby&page=$n\">$n</a>";
}
if ($n >= 50) { // if more than 50 pages are required, break it at 50.
$break = true;
break;
} else { // guess not.
echo " | ";
}
}
if (!isset($break)) { // are we sopposed to break ?
if ($n == $page) {
echo "<b>$n</b>";
} else {
echo "<a href=\"modules.php?name=" . $module_name . "&letter=$letter&sortby=$sortby&page=$total_pages\">$n</a>";
}
}
echo " ] ";
echo "</td></tr>";
/* This is where it ends */
} else { // or we dont have any users..
echo "<td align='center' class=\"tiny\">";
echo "$num_rows_per_order " . _Lp_USERSFOUND . " "" . mltransletter($letter) . """;
echo "</td></tr>";
}
echo "</table>";
}
CloseTable();
include("footer.php");
?>
Ich habe in der index.php die Funktion mxCreateUserprofileLink, die wird bei mir in der mx_api.php (include/) ab Zeile 2099 erstellt. Dort wird dann auch der Link generiert mit der uname!
Zeile 2129: return '<a href="modules.php?name=Userinfo&uname=' . urlencode($uname) . '"' . $title . ' rel="nofollow"' . $option . '>' . $text . $linktagclose;
Hallo anmShinichi,
das ist genau die richtige Stelle. Jetzt klappt es.
Vielen Dank
Gruß
Wolfgang