/** * Overloading ManyManyList removeByID Rather Then remove() as That Just Calls removeByID() * Remove the given item from this list. * Note that for a ManyManyList, the item is never actually deleted, only the join table is affected * @param $itemID The item it */ public function removeByID($itemID) { parent::removeByID($itemID); // Get Item Object Itself Based on $itemID $dl = new DataList($this->dataClass); // Must Include Table Prefix To Prevent "Column 'ID' in where clause is ambiguous" Error $item = $dl->where("\"" . $this->dataClass . "\".\"ID\" = '" . $itemID . "'")->first(); $this->onUnlink($item); }
/** * Overload {@link ManyManyList::removeByID()} so we can log * when a Member is removed from a Group. */ public function removeByID($itemID) { parent::removeByID($itemID); if ($this->getJoinTable() == 'Group_Members') { $currentMember = \Member::currentUser(); if (!($currentMember && $currentMember->exists())) { return; } $member = \Member::get()->byId($itemID); $group = \Group::get()->byId($this->getForeignID()); if (!$group) { return; } if (!$member) { return; } $this->getAuditLogger()->info(sprintf('"%s" (ID: %s) removed Member "%s" (ID: %s) from Group "%s" (ID: %s)', $currentMember->Email ?: $currentMember->Title, $currentMember->ID, $member->Email ?: $member->Title, $member->ID, $group->Title, $group->ID)); } }