/**
  * 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));
     }
 }