Zum Inhalt springen

Löschen von Nachrichten

Erstellt am 23. September 2008 · 1 Antwort · letzte Antwort am 23. September 2008

Tags: PHP, Datenbank, Frage

matchello ·

Hi,

das löschen der Nachrichten ist leider nicht korrekt.

function message_del ($content,$conf) {
   $where = 'hidden = 0 AND DELETED = 0 AND uid = \''.intval($this->piVars["messid"]).'\' AND to_uid = '.$GLOBALS['TSFE']->fe_user->user['uid'].$this->getPidQuery();
   $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid','tx_mmforum_pminbox',$where,'','',$limit=1);
   if ($res) {
       $val = Array('deleted' => 1);
       $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tx_mmforum_pminbox',$where,$val);
       $link = $this->pi_getPageLink($GLOBALS["TSFE"]->id,$target='',array($this->prefixId=>array('folder'=>$this->piVars['folder'])));
       $link = $this->getAbsUrl($link);
       header('Location: '.$link);
   }
   else {
       $template = $this->cObj->fileResource($conf['temp']['error_message']);
       $marker['###ERROR###'] = $this->pi_getLL('deleteError');
   }
   $content .= $this->cObj->substituteMarkerArrayCached($template, $marker);
   return $content;
}

Eigentlich müsste doch auch hier eine Unterschied nach Folder gemacht werden. Bei inbox.send ist to_uid nicht $GLOBALS['TSFE']->fe_user->user['uid'] sondern, es muss from_uid sein.

Roundtrip:

function message_del ($content,$conf) {
   $where_uid = 'to_uid='.$GLOBALS['TSFE']->fe_user->user['uid'];
   if ($this->piVars['folder'] == 'send'){
      $where_uid = 'from_uid='.$GLOBALS['TSFE']->fe_user->user['uid'];
   }
   $where = 'hidden = 0 AND DELETED = 0 AND uid = \''.intval($this->piVars["messid"]).'\' AND '.$where_uid.$this->getPidQuery();
   $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid','tx_mmforum_pminbox',$where,'','',$limit=1);
   if ($res) {
       $val = Array('deleted' => 1);
       $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tx_mmforum_pminbox',$where,$val);
       $link = $this->pi_getPageLink($GLOBALS["TSFE"]->id,$target='',array($this->prefixId=>array('folder'=>$this->piVars['folder'])));
       $link = $this->getAbsUrl($link);
       header('Location: '.$link);
   }
   else {
       $template = $this->cObj->fileResource($conf['temp']['error_message']);
       $marker['###ERROR###'] = $this->pi_getLL('deleteError');
   }
   $content .= $this->cObj->substituteMarkerArrayCached($template, $marker);
   return $content;
}

Ich hoffe, ich habe mich jetzt mal nicht vertippt.

Viele Grüße
Marcel

matchello ·

Oje, oje, oje.... Der Fehler zieht sich ja durch die komplette pi3-class.... 🙁
Also entweder überall eine solche Unterscheidung reinbauen, oder einfach aus den Anfragen "AND to_uid = '.$GLOBALS['TSFE']->fe_user->user['uid']" entfernen...

matchello schrieb

Hi,

das löschen der Nachrichten ist leider nicht korrekt.

....

Eigentlich müsste doch auch hier eine Unterschied nach Folder gemacht werden. Bei inbox.send ist to_uid nicht $GLOBALS['TSFE']->fe_user->user['uid'] sondern, es muss from_uid sein.

Roundtrip:

....

Ich hoffe, ich habe mich jetzt mal nicht vertippt.

Viele Grüße
Marcel