[Tutorial] PM Lesebestätigung für gesendete Nachrichten

Started by noex, February 28, 2006, 08:04:30 AM

Previous topic - Next topic

noex

Mit der folgenden Änderung sieht man ob die gesendete private Nachricht vom Empfänger gelesen wurde.

SMF 1.1 RC1

Suche in der Datei Sources/PersonalMessage.php nach:

Code (Suche) Select
// Get recipients (don't include bcc-recipients for your inbox, you're not supposed to know :P).
$request = db_query("
SELECT pmr.ID_PM, mem_to.ID_MEMBER AS ID_MEMBER_TO, mem_to.realName AS toName, pmr.bcc, pmr.labels, pmr.is_read
FROM {$db_prefix}pm_recipients AS pmr
LEFT JOIN {$db_prefix}members AS mem_to ON (mem_to.ID_MEMBER = pmr.ID_MEMBER)
WHERE pmr.ID_PM IN (" . implode(', ', $pms) . ")", __FILE__, __LINE__);


und ersetze den Code mit folgenden:
Code (Ersetzen) Select
// Get recipients (don't include bcc-recipients for your inbox, you're not supposed to know :P).
$request = db_query("
SELECT pmr.ID_PM, mem_to.ID_MEMBER AS ID_MEMBER_TO, mem_to.realName AS toName, pmr.bcc, pmr.labels, pmr.is_read" . ($context['folder'] == 'outbox' ? ", pmr.is_read" : '') . "
FROM {$db_prefix}pm_recipients AS pmr
LEFT JOIN {$db_prefix}members AS mem_to ON (mem_to.ID_MEMBER = pmr.ID_MEMBER)
WHERE pmr.ID_PM IN (" . implode(', ', $pms) . ")", __FILE__, __LINE__);


Suche nach:
Code (Suche) Select
while ($row = mysql_fetch_assoc($request))
{
if ($context['folder'] == 'outbox' || empty($row['bcc']))
$recipients[$row['ID_PM']][empty($row['bcc']) ? 'to' : 'bcc'][] = empty($row['ID_MEMBER_TO']) ? $txt[28] : '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER_TO'] . '">' . $row['toName'] . '</a>';


und füge diesen hinzu:
Code (Hinzufügen) Select

if($context['folder'] == 'outbox')
$recipients[$row['ID_PM']]['is_read'] = $row['is_read'];
            

Suche nun in der Datei Themes/default/PersonalMesssage.template.php nach:
Code (Suche) Select

// People it was sent directly to....
if (!empty($message['recipients']['to']))
echo implode(', ', $message['recipients']['to']);
// Otherwise, we're just going to say "some people"...
elseif ($context['folder'] != 'outbox')
echo '(', $txt['pm_undisclosed_recipients'], ')';

echo ' <b> ', $txt[30], ':</b> ', $message['time'], ' »</div>';


und füge danach folgenden Code hinzu:
Code (Hinzufügen) Select


if($context['folder'] == 'outbox')
{
echo '<br />';
foreach($message['recipients']['to'] as $person)
{
echo $person . ' hat diese Nachricht ' . ($message['recipients']['is_read'] == '1' ? 'gelesen' : 'NICHT gelesen') . '.<br />';
}
}



Original von: Oldiesmann
Deutsche Übersetzung von: noex
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

chrischan

Hi!
Kann leider das "<div style="overflow: auto; width: 100%;">', $message['body'], '</div>"
in der personalmassage.template... nicht finden  ???

gruß
chris

steinbock

Hi bei mir auch.
Ausserdem steht nach
Quotewhile ($row = mysql_fetch_assoc($request))
bei mir noch
Quote
{   
       if ($context['folder'] == 'outbox' || empty($row['bcc']))
{

und diesen Eintrag gibts zwei mal.
Hoster: Funpic.de :: MK Portal 1.1.2b :: SMF 1.1.4

noex

okay, arbeite gerade an einer aktuellen Version und korrigiere die Fehler, Lösung poste ich dann hier...
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

noex

Update: Hab die Codestellen angepasst und im ersten Post geändert. Beachtet bitte das ich einen ersetzen Befehl durch einen hinzufügen Befehl getauscht habe!

lg
noex
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

chrischan


steinbock

Hi, bei mir werden nicht alle Mails bestätigt.

Ausserdem ist dieser Teil
while ($row = mysql_fetch_assoc($request))
{
if ($context['folder'] == 'outbox' || empty($row['bcc']))
$recipients[$row['ID_PM']][empty($row['bcc']) ? 'to' : 'bcc'][] = empty($row['ID_MEMBER_TO']) ? $txt[28] : '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER_TO'] . '">' . $row['toName'] . '</a>';

doppelt vorhanden.
Muss bei beiden Stellen der Code hinzugefügt werden?

SMF 1.1 RC2
Hoster: Funpic.de :: MK Portal 1.1.2b :: SMF 1.1.4

ernomo98


V-Mann

ja würd mich auch intressieren, ich probiers gerne aus, aber zuvor wüsste ich doch gern ob schon jemand erfahrungen damit gemacht hat ;)))

NacoyaTarsk

Hab alle aufgeführten Änderungen gemacht, aber ich bekomm keine Bestätigung ob die PM gelesen wurde oder nicht. Benutzte aber auch 1.1RC2 ... sind da andere/weiterführende Änderungen zu machen damit es funktioniert?

mediman

Es gibt bereits seit längerer Zeit eine Modifikation von mir, allerdings muss dringend eine neue Lösung gefunden werden, da alle Mods davon ausgehen, dass nur ein Recipient vorhanden ist.

Ein Bild des Mods ist angehangen (RC2)

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

ernomo98


jpch

Hi Ihr,

Funktioniert das auch in SMF 1.1 RC 3 ? und ja, wo findet man den mod ?

Danke
Thanks
Pete

System:
Joomla 1.0.12 <
SMF 1.1.2
Brdige 1.1.6

Sprudel

Hallo,

ich finde die Modifikation von mediman leider auch nicht.  :(

Kann mir da jemand einen Hinweis geben wo diese Modifikation sich versteckt, das wäre sehr nett.  :)


Grüße
Sprudel

rois

Quote from: jpch on November 08, 2006, 03:54:14 AM
Hi Ihr,

Funktioniert das auch in SMF 1.1 RC 3 ? und ja, wo findet man den mod ?

Danke


Beschäftigt mich auch sehr brennend!!!
Wie muss man bei RC3 vorgehen?

Ich denke,eine gute Modification muss her,denn andere nicht so sehr bekannte Boards als das SMF,haben so etwas standard! :(

Ich finde,so etwas müsste längst implementiert sein.

ernomo98

Quote from: mediman on August 06, 2006, 10:01:59 AM
Es gibt bereits seit längerer Zeit eine Modifikation von mir, allerdings muss dringend eine neue Lösung gefunden werden, da alle Mods davon ausgehen, dass nur ein Recipient vorhanden ist.

Ein Bild des Mods ist angehangen (RC2)

mediman


mediman, hast du das auf die neue version(1.1.2) aktuallisiert? Ist eine super Funktion, kann man sehr gut brauchen.

ernomo98

weiss wirklich niemand wie das geht, oder braucht das wirklich niemand?
Danke

Jessikard

ich wäre auch brennend daran interessiert, allerdings mit einer Version, die mit smf 1.1.1 läuft

bitteeeeeeeeeeeeeeeeeeeeeeeeeeeee  :-*

acherontic

gibts mittlerweile neue infos zu diesem thema bzgl. der aktuellen version 1.1.4

Jessikard

bin auch mittlerweile auf der 1.1.4 und es wäre schön wenn es sowas gäbe

acherontic

#20
hey, es funktioniert - auch in Version 1.1.4! aber nur, wenn ihr beim schreiben einer pm das häckchen bei "Kopie im Ausgang speichern" angeklickt habt. dann könnt ihr im ordner "postausgang" sehen, ob jemand die nachricht schon gelesen hat oder nicht ...

ich hab den code (fast) genauso eingefügt, wie es noex weiter oben beschrieben hat.
- in sources/PersonalMessage.php wird der erste teil ab Zeile 482 und der zweite Teil wird zwischen die Zeilen 492 und 493 eingefügt, sodass
der Code (ab Zeile 476) so aussehen müsste
mysql_free_result($request);

if (!empty($pms))
{
// Get recipients (don't include bcc-recipients for your inbox, you're not supposed to know :P).
$request = db_query("
SELECT pmr.ID_PM, mem_to.ID_MEMBER AS ID_MEMBER_TO, mem_to.realName AS toName, pmr.bcc, pmr.labels, pmr.is_read" . ($context['folder'] == 'outbox' ? ", pmr.is_read" : '') . "
FROM {$db_prefix}pm_recipients AS pmr
LEFT JOIN {$db_prefix}members AS mem_to ON (mem_to.ID_MEMBER = pmr.ID_MEMBER)
WHERE pmr.ID_PM IN (" . implode(', ', $pms) . ")", __FILE__, __LINE__);
$context['message_labels'] = array();


und ab Zeile 490 so:

if ($context['folder'] == 'outbox' || empty($row['bcc']))
$recipients[$row['ID_PM']][empty($row['bcc']) ? 'to' : 'bcc'][] = empty($row['ID_MEMBER_TO']) ? $txt[28] : '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER_TO'] . '">' . $row['toName'] . '</a>';

if($context['folder'] == 'outbox')
$recipients[$row['ID_PM']]['is_read'] = $row['is_read'];

if ($row['ID_MEMBER_TO'] == $ID_MEMBER && $context['folder'] != 'outbox')


- in Themes/default/PersonalMesssage.template.php wird der code ab Zeile 371 eingefügt, sodass der Code (beginnend ab Zeile 359) so aussehen müsste:

// Show who the message was sent to.
echo '
<div class="smalltext">&#171; <b> ', $txt['sent_to'], ':</b> ';

// People it was sent directly to....
if (!empty($message['recipients']['to']))
echo implode(', ', $message['recipients']['to']);
// Otherwise, we're just going to say "some people"...
elseif ($context['folder'] != 'outbox')
echo '(', $txt['pm_undisclosed_recipients'], ')';

echo ' <b> ', $txt[30], ':</b> ', $message['time'], ' &#187;</div>';

if($context['folder'] == 'outbox')
{
echo '<br />';
foreach($message['recipients']['to'] as $person)
{
echo $person . ' hat diese Nachricht ' . ($message['recipients']['is_read'] == '1' ? 'gelesen' : 'NICHT gelesen') . '.<br />';
}
}

// If we're in the outbox, show who it was sent to besides the "To:" people.


Ergänzen möchte ich :
das funktioniert nur, wenn man beim Absenden einer PM auch angibt, dass eine Kopie im Postausgang gespeichert werden soll. Dann sieht man dort bei den gesendeten PM's über dem geschriebenen Text "xxxx hat diese Nachricht gelesen" bzw. "... NICHT gelesen"

Jessikard


atrsc2003

#22
hallo!

Ich habe das versucht nach zu vollziehen und bekomme folgende Fehlermeldung :
-----------------------------------------------------
Parse error: syntax error, unexpected T_STRING in /is/htdocs/wp1072687_2XYCC92U7J/quasselbox/Sources/PersonalMessage.php on line 489
------------------------------------------------------

Andreas


B-S-G

Hallo,

nette Sache, funktioniert soweit auch.

Problem: Sobald der Empfänger auf die PM antwortet (egal ob 'antworten' oder 'zitieren'), wandert der Status wieder auf "Nicht gelesen".

Ist das bei euch auch so (V. 1.1.5)?

atrsc2003

Quote from: atrsc2003 on April 20, 2008, 11:06:10 AM
hallo!

Ich habe das versucht nach zu vollziehen und bekomme folgende Fehlermeldung :
-----------------------------------------------------
Parse error: syntax error, unexpected T_STRING in /is/htdocs/wp1072687_2XYCC92U7J/quasselbox/Sources/PersonalMessage.php on line 489
------------------------------------------------------

Andreas



Hallo!

Habe den Fehler gefunden.....da ich den zu suchenden String wohl irgendwie nicht hatte konnte der auch nicht ersetzt werden. Scheint also Super einwandfrei zu funktionierten. Herzliches danke!:-)

Andreas

B-S-G

Quote from: B-S-G on May 15, 2008, 02:11:38 AM
Problem: Sobald der Empfänger auf die PM antwortet (egal ob 'antworten' oder 'zitieren'), wandert der Status wieder auf "Nicht gelesen".

Hat dazu noch jemand eine Idee?  ???

halfmoon

Hallo Zusammen,

ich habe das gleiche Problem, Nachrichten werden in den Status "NICHT gelesen" versetzt sobald eine
Antowert oder Zitat erfolgt.

Änderungen habe ich laut der ersten How To durchgeführt.

Ich verwende SMF 1.1.5

Hoffe es kann jemand helfen und weis eine Lösung oder einen Ansatz.

Gruss HalfMoon


Quote from: B-S-G on May 19, 2008, 06:41:19 AM
Quote from: B-S-G on May 15, 2008, 02:11:38 AM
Problem: Sobald der Empfänger auf die PM antwortet (egal ob 'antworten' oder 'zitieren'), wandert der Status wieder auf "Nicht gelesen".

Hat dazu noch jemand eine Idee?  ???

Nachtfalke

Also DAS möchte ich auch haben  8)

Ich benutze SMF 1.1.5

Gibt es da schon ne gut funktionierende Lösung???

Gruß, Thorsten
>>> Tanja Gräff, Studentin aus Trier, wird seit 14 Monaten vermisst | http://www.findet-tanjagraeff.de <<<

Jessikard

 :( wir haben auch das Problem mit dem Status, dass der wieder auf ungelesen geht - help please

joker

Gibt es eine aktuellere version zu diesem MOD oder paßt sie auch zu 1.1.8?
joker ;-)

dieter4

Probiere es mal lokal aus. Vllt funktioniert es noch in 1.1.8.

daGroove

funktioniert bei mir einwandfrei mit 1.1.8... bis auf das problem das gelesene messages bei antwort wieder als ungelesen erscheinen... was allerdings nicht auf einen bug dieser modifikation zurück zu führen ist...

ergo das ding macht unter 1.1.8 genau das was es machen soll :) ob einem das ergebnis dann gefällt ist halt geschmacksache...

mir recihts erstmal  8)
wer zum teufel bin ich und wenn ja wieviele?

Shorti25


Nightwish76

Funktioniert das auch mit SMF 2.0.1 bzw. gibt es vielleicht sogar eine Mod (Paket) dafür?

Advertisement: