4nadressbook will nicht so recht

Begonnen von Roberturix, 04 März 2007, 08:54:53

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 2 Gäste betrachten dieses Thema.

Roberturix

Ich hab mir das Adressbuch von www.warp-speed.de installiert, soweit so gut.
Die minimalen Anpassungen (DBprefix, Sprachdateien) und Datenimport waren überhaupt kein Problem.
Es funktioniert auch einwandfrei - prinzipiell - seltsamer weise nicht bei allen Usern.
Ich konnte noch nicht so ganz erfassen ob es Gemeinsamkeiten oder Situationen gibt in denen es vorkommt.
Fakt ist, ein Superadmin hat uneingeschränkten Zugriff auf das Modul, ein anderer bekommt keine Inhalte angezeigt.

Ich bekomme bei der "erweiterten Suche" als erste Fehlermeldung:
Notice: Undefined variable: author_arr in /home/httpd/vhosts/teutatesnet.de/httpdocs/portal/modules/4nadressbook/index.php on line 79
danach wird das Abfrageformular angezeigt, allerdings ohne Inhalt.

Ich vermute mal die Ursache liegt hier:

    if(is_array($author_arr)){
            $author_arr = array_unique($author_arr);
            $uids = implode(",", $author_arr);
            $res_auth = sql_query("select name,uname,uid from ".$prefix."_users where uid in(".$uids.")", $dbi);
            while(list($name, $uname, $uid) = sql_fetch_array($res_auth, $dbi)){
                    if(empty($name)) $name = $uname;
                    $options_str .= "<option value=\"".$uid."\">".$name;
            }
    }


Hat jemand ne Idee dazu?

jubilee

ZitatIch bekomme bei der "erweiterten Suche" als erste Fehlermeldung:
Notice: Undefined variable: author_arr
Hat jemand ne Idee dazu?

Es ist davon auszugehen, das das Array zu diesem Zeitpunkt nicht definiert ist.
Hier dürfte ein Problem mit dem Programmablauf oder der Übergabe von Werten vorliegen.

Roberturix

Der Programmablauf ist ja soweit i.O., denn bei mir funktioniert er ja, auch die Übergabe der Daten ist i.O. denn ich bekomme eine Ausgabe.
Die Frage ist, warum bekommen Andere keine Ausgabe?

Ich selber habe am Code nichts verändert.
In der Standard Suchmaske wird gar kein Fehler gemeldet, aber die Shortcut-Buchstaben sind nicht anklickbar, haben also keine Daten erhalten auf die sie verlinken können.
Scheint also ein Userabhängiges-Werteübergabe-Problem zu sein.
Aber wie finde ich die Ursache?

jubilee

ZitatDer Programmablauf ist ja soweit i.O., denn bei mir funktioniert er ja, auch die Übergabe der Daten ist i.O.
Dann liegt ja kein Fehler vor und wir haben uns alle geirrt .....

Roberturix

Zitat von: jubilee am 04 März 2007, 10:50:38
Dann liegt ja kein Fehler vor und wir haben uns alle geirrt .....
nenene... so einfach ist es leider nicht...
Scheint also ein Userabhängiges-Werteübergabe-Problem zu sein. !!!
Aber wie finde ich die Ursache?

Roberturix

Hat sich erledigt....  :mad2:
Der Fehler war die Portierung aller Einträge als "Privat".
Als "Public" kann sie nun jeder abrufen.

Jetzt bräuchte ich nur noch Schreibrechte für jeden angemeldeten User, ohne ihnen Adminrechte geben zu müssen. Lässt das Pragma das überhaupt zu?


Roberturix

Ich weiß nicht in wieweit das die Sicherheitsrichtlinien von pragma gefährdet, daher möchte ich Eure Meinung dazu wissen.
Die Schreibrechte werden vergeben, wenn die if(is_admin) Abfrage positiv verläuft - stimmt's soweit?
Wenn ich nun alle if(is_admin) durch if(is_user) ersetze, sollten doch alle angemeldeten User "Adminzugriff" auf das Modul bekommen.
Oder weiß wer ne bessere Lösung?

lemming

kann man sich das adressbuch irgendwo mal ansehen damit man sich was drunter vorstellen kann?

gruß
greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*


Roberturix

So ich hab mal die Änderung IS_ADMIN --> IS_USER durchgeführt.
Auf den ersten Blick funktioniert das auch....
Ich habe aber das Gefühl das die Kompatibilität zu pragmaMx nicht ganz passt.

Sollten die enthaltenen Variablen pragma-konform übersetzt werden?
Gibt es denn jemand der das Adressbuch auch laufen hat und gerne ein paar Anpassung daran hätte?

Roberturix

OK, hab mich geirrt, es funktioniert alles wie es soll.
Jeder User kann durch die Modifikation Einträge anlegen und ändern, aber nur seine eigenen Einträge.
Durch den nicht mehr vorhandenen ECHTEN Admin, kann dieser nun auch nur noch seine eigenen Einträge ändern.
Kann mir bitte jemand behilflich sein den Code abzuändern?
Das Original:

if (is_user($admin) || $userinfo[0]==$a_b[author]) {
                            echo "<p align=\"right\">[ <a href=\"modules.php?name=$module_name&file=admin&op=address_book_text_edit&tid=$a_b[tid]\">"._EDIT."</a> ]</p>";
                        }


Die Änderung soll bewirken das der EDIT-Link nur dann gezeigt wird wenn der User tatsächlich dem Author entspricht. Aktuell wird er immer angezeigt, wenn der User angemeldet ist.

JoergK

ZurZeit fragst Di ja ab, ob es sich im einen (registrierten) User oder den Autor handelt, daher wird der Link jedem (registrierten) User angezeigt.

Änder einfach das
<?php

if (is_user($admin) || $userinfo[0]==$a_b[author]) {

?>


in das
<?php

if (is_user($admin) && $userinfo[0]==$a_b[author]) {

?>


Somit wird der Link nur noch angezeigt, wenn es sich um einen (registrierten) User und den Autor handelt.
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

Roberturix

Merci.... funktioniert :BD:
Wenn ich in diesem Fall USER ODER ADMIN berechtigen möchte,
        if (is_admin($admin)) {
  echo "<br><center>[ <a href=\"modules.php?name=".$module_name."&file=admin&op=address_book\">"._A_BADMIN."</a> ]</center>";
        } else {
        }


muss das dann
        if (is_admin || is_user($admin)) {
  echo "<br><center>[ <a href=\"modules.php?name=".$module_name."&file=admin&op=address_book\">"._A_BADMIN."</a> ]</center>";
        } else {
        }

heißen?

JoergK

Zitat von: Roberturix am 08 März 2007, 20:47:07
...
Wenn ich in diesem Fall USER ODER ADMIN berechtigen möchte,
...

Fast richtig:

<?php

if (is_admin($admin) || is_user($admin)) {

?>


Und damit nen Admin den Link zum Ändern auch zu sehen bekommt (wenn der denn alles ändern können soll), die if-clause noch so erweitern:

<?php

if ((is_user($admin) && $userinfo[0]==$a_b[author]) || is_admin($admin)) {

?>


Noch nen kleinen Tip:
Benutz statt der Funktionsaufrufe zur User- bzw. Adminprüfung doch einfach die dafür vorgesehenen Globalvariablen:

statt is_user() nimmste MX_IS_USER
statt is_admin() nimmste MX_IS_ADMIN

Damit wird der Code (noch) übersichtlicher.  ;)
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody