Benutzerverwaltung und Plugin comments

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
bigbear
Regular
Posts: 6
Joined: Wed May 07, 2008 12:19 am

Benutzerverwaltung und Plugin comments

Post by bigbear »

Hallo,

Ich möchte meinen Blog bislang per .htaccess gesicherten Blog an eine breitere Leserschaft anpassen und dazu die bisherigen Leser über Benutzerkonten und Leserechten für bestimmte Artikel ausstatten.
Funktioniert auch tadellos.

Nun möchte ich aber das Plugin serendipity_plugin_comments benutzen, weil ich es sehr praktisch finde. Dabei werden von dem Plugin aber die Rechte des jeweilig angemeldeten Benutzers ignoriert und auch Kommentare zu Einträgen angezeigt, die er nicht Lesen kann.

Gibt es dazu eine Lösung?
Gibt es eine Möglichkeit, das Plugin um die gewünschte Funktion zu erweitern?

Viele Grüße
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Benutzerverwaltung und Plugin comments

Post by garvinhicking »

Hi!

Es ist leider für die SQL-Abfrage nicht so trivial, dort die Teile einzubauen damit die Userrechte ausgelesen werden können. Machbar wäre das, ich kann Dir da auf die Schnelle aber leider nicht helfen. Kommentare sind im Gegensatzu zu den Artikeln nicht geschützt, daher würde ich evtl. vielleicht dieses Seitenleistenplugin für Nicht-Eingeloggte Autoren komplett verstecken? (über das serendipity_event_sidebarhider Plugin)

Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
bigbear
Regular
Posts: 6
Joined: Wed May 07, 2008 12:19 am

Re: Benutzerverwaltung und Plugin comments

Post by bigbear »

Hi,

Danke für den Tipp mit dem Verstecken.

Ich habe sowieso den direkten Link zum Kommentar nicht mitangezeigt, also kann man den Kommentar auch nicht lesen. (Außer man kann da irgendwie anders darauf schließen)

Hmmm, ich hätte gerne mehrere Benutzergruppen angelegt, die voneinander so wenig wie möglich mitbekommen sollen.

zB. Blog für Freunde, Urlaubsposts für Familie, Posts für alle, Einträge für Fußballclub usw.

Klar wissen alle, zB. über die Tag-Wolke, oder das Statistik-Plugin dass "mehr" hinter dem Blog ist, aber bei den Kommentaren werden auch die Titel zu den Einträgen angezeigt....

Grüße
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Benutzerverwaltung und Plugin comments

Post by garvinhicking »

Hi!

Ich habe da mal auf die schnelle was probiert - guck mal ob du mit diesem neuen plugin:

http://svn.berlios.de/viewcvs/*checkout ... ision=2586

das erreichen kannst. Einfach über deine jetzige serendipity_plugin_comments.php schreiben, das plugin in s9y konfigurieren und Categories auf "login" stellen im Dropdown.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
SirSydom
Regular
Posts: 12
Joined: Thu Nov 23, 2006 12:32 pm

Re: Benutzerverwaltung und Plugin comments

Post by SirSydom »

Hallo Garvin,

um jetzt zu erklären warum ich für Bigbear antworte:
wir arbeiten beide an dem Thema und sind an einer Lösung interessiert.

Ich habe deine Lösung ausprobiert, mit dem Ergebnis dass bei nicht-eingeloggtem User trotzdem Kommentare von Beiträgen erscheinen, die nicht öffentlich sind (entryproperties ep_access = member und ep_access_groups = ;x;y;z;)

Ich hab das Plugin ergänzt und es funktioniert.
1:n Beziehung als Text in value zu Speichern machts zwar nicht einfach und elegant, aber es geht.

Code: Select all

$viewtype = '';
        if ($this->get_config('viewmode') == 'comments') {
            $viewtype .= ' AND c.type = \'NORMAL\'';
        } elseif ($this->get_config('viewmode') == 'trackbacks') {
            $viewtype .= ' AND c.type = \'TRACKBACK\'';
        }
        
        $q = 'SELECT g.groupid AS groups
		      FROM _authors AS a, _authorgroups AS g
              WHERE a.username = \'' . $_SESSION['serendipityUser'] . '\'
              AND a.authorid = g.authorid';
        
        $sql = serendipity_db_query($q);
        
        $str = '';
        if ($sql && is_array($sql))
        {
            foreach($sql AS $key => $row)
            {
	            $str .= 'p.value LIKE \'%;' . $row['groups'] . ';%\' OR ';
            }
        }
        if($str != '')
        {
        	$groupperm = 'OR (p.property = \'ep_access_groups\' AND (' . substr($str, 0, -4) . '))';
        }
        else
        	$groupperm = '';

        $q = 'SELECT    c.body              AS comment,
                        c.timestamp         AS stamp,
                        c.author            AS user,
                        e.title             AS subject,
                        e.timestamp         AS entrystamp,
                        e.id                AS entry_id,
                        c.id                AS comment_id,
                        c.type              AS comment_type,
                        c.url               AS comment_url,
                        c.title             AS comment_title,
                        c.email             AS comment_email
                FROM    '.$serendipity['dbPrefix'].'comments AS c,
                        '.$serendipity['dbPrefix'].'entries  AS e,
                        '.$serendipity['dbPrefix'].'entryproperties AS p
               WHERE    e.id = c.entry_id
                 AND    c.entry_id = p.entryid
                 AND    NOT (c.type = \'TRACKBACK\' AND c.author = \'' . serendipity_db_escape_string($serendipity['blogTitle']) . '\' AND c.title != \'\')
                 AND    e.isdraft = \'false\'
                 AND    c.status = \'approved\'
                        ' . $viewtype . '
                 AND    ((p.property = \'ep_access\' AND p.value = \'public\') ' . $groupperm . ')
            ORDER BY    c.timestamp DESC
            LIMIT ' . $max_entries;
        $sql = serendipity_db_query($q);
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Benutzerverwaltung und Plugin comments

Post by garvinhicking »

Hi!

Danke für die Mithilfe. Dein grundsätzlicher Ansatz ist schon richtig, und ich habe gesehen dass ich bisher nur auf Kategorie-Ebene das neue implementiert habe.

Besser wäre es, das was Du hartkodiert gesetzt hast, über das ursprüngliche Plugin zu routen. Das würde gehen wenn Du direkt unter der Zeile serendipity_ACL_SQL($cond, true); in meinem ursprünglichen Patch folgendes einsetzt:

Code: Select all

        serendipity_plugin_api::hook_event('frontend_fetchentries', $cond, array('source' => 'entries'));
Das setzt die notwendigen Bedingungen dann in $cond['and'] ein, und dürfte im Endeffekt in einer ähnlichen Query wie deiner jetzigen resultieren.

Wenn Du das testen könntest wäre es toll, dann könnte ich das Plugin auch offiziell so modifizieren.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
SirSydom
Regular
Posts: 12
Joined: Thu Nov 23, 2006 12:32 pm

Re: Benutzerverwaltung und Plugin comments

Post by SirSydom »

Morgen,

funktioniert leider nicht.
$cond bleibt wie es ist.
Post Reply