Anzeige neue PM
Armin Bartsch, Mittwoch, 11. März 2009
Zeigt die Anzahl neuer PM an
Da das mm_forum stetig weiter entwickelt wird und damit zu rechnen ist das auch bald eine PM-Anzeige integriert sein wird, binde ich die Anzeige mit dem cObject USER ein. Die Funktion ist schnell einzubinden und kann leicht erweitert werden
class tx_mmforum_pm_message
Die class tx_mmforum_pm_message enthält die funktion count_pm() mit der die Anzahl der neun (noch nicht gelesenen PM) zurückgegeben werden.
<?php
class tx_mmforum_pm_message {
function count_pm() {
global $TSFE;
if ($TSFE->fe_user->user) {
$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery( 'count(*)',
'tx_mmforum_pminbox',
'to_uid = '.$TSFE->fe_user->user['uid'].' AND read_flg = \'\' AND mess_type = 0 AND hidden=0 AND deleted=0');
$row = $GLOBALS['TYPO3_DB']->sql_fetch_row($result);
return $row[0];
}
}
}
?>
<?php
class tx_mmforum_pm_message {
function count_pm() {
if ($TSFE->fe_user->user) {
$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery( 'count(*)',
'tx_mmforum_pminbox',
'to_uid = '.$TSFE->fe_user->user['uid'].' AND read_flg = \'\' AND mess_type = 0 AND hidden=0 AND deleted=0');
$row = $GLOBALS['TYPO3_DB']->sql_fetch_row($result);
return $row[0];
}
}
}
?>
Die Klasse speichere ich als class.tx_mmforum_pm_message_p1.php.
TypoScript
Jetzt muss noch die die Datei eingebunden werden damit die Klasse und die Function zur Verfügung steht.
includeLibs.tx_mmforum_pm_message = EXT:anpassungen_t3/class.tx_mmforum_pm_message_p1.phpincludeLibs.tx_mmforum_pm_message = EXT:anpassungen_t3/class.tx_mmforum_pm_message_p1.php
Über das cObject USER wird die function count_pm aufgerufen.
40 = TEXT
40.stdWrap.cObject = USER
40.stdWrap.cObject.userFunc = tx_mmforum_pm_message->count_pm
40.wrap = <span class="abs">Sie haben | neue Nachrichten</span>
40.if.isInList = 191
40.if.value.field = uid
40 = TEXT
40.stdWrap.cObject = USER
40.stdWrap.cObject.userFunc = tx_mmforum_pm_message->count_pm
40.wrap = <span class="abs">Sie haben | neue Nachrichten</span>
40.if.isInList = 191
40.if.value.field = uid
Das Bespiel oben wurde in eine Navigation (HMENU/TMENU) eingesetzt, deswegen die if-Abfrage damit nicht bei alle Navigationspunkten die Anzahl erscheint sondern nur bei "Private Nachrichten"