Hallo nochmal,
das Problem hat mir keine Ruhe gelassen und ich habe es jetzt FAST.
PHP-Code:
$GLOBALS['TL_DCA']['tl_member']['list']['operations']['toggle']['button_callback'] = array('tl_attendanceMember', 'toggleIcon');
PHP-Code:
public function al_memberDisable($varAktiv, $dc)
{
$this->toggleAttendance ($varAktiv, $dc->id);
return $varAktiv;
}
/**
* Overwritten function tl_member.toggleIcon(...)
*/
public function toggleIcon($row, $href, $label, $title, $icon, $attributes)
{
$this->toggleAttendance ($row['disable'], $row['id']);
return parent::toggleIcon($row, $href, $label, $title, $icon, $attributes);
}
private function toggleAttendance ($inaktiv, $memberId)
{
if ($inaktiv)
{
$objUser = $this->Database->prepare("DELETE FROM tl_attendance WHERE m_id=?")
->execute($memberId);
}
else
{
// User-ID holen
$result = Database::getInstance()->prepare('SELECT id FROM tl_member WHERE id=?')->execute($memberId);;
$members = $result->fetchAllAssoc();
// Events-IDs holen
$result = Database::getInstance()->prepare('SELECT id FROM tl_calendar_events ORDER BY id')->execute();
$events = $result->fetchAllAssoc();
// Beides in tl_attendance eintragen
foreach ($members as $member)
{
$arrNewData['m_id'] = $member['id'];
foreach ($events as $event)
{
$arrNewData['e_id'] = $event['id'];
$objData = $this->Database->prepare("INSERT IGNORE INTO tl_attendance %s")->set($arrNewData)->execute();
}
}
}
}
Wenn ich nun über Editieren ein Mitglied Deaktiviere, werden die Einträge in tl_attendance gelöscht. Alles gut!
Wenn ich über den toggler das Mitglied deaktiviere, wird der disable-Wert richtig gesetzt, aber die Einträge nicht aus der Tabelle tl_attendance gelöscht. Wenn ich nun aber die Mitglieder-Seite im BE (Übersicht) neulade, werden die Einträge korrekt gelöscht.
Woran liegt das noch?
Besten Dank,
Sebi
Lesezeichen