code: protected function checkAccessToElement($id, $root, $blnIsPid=false)
  	{
  		if ($blnIsPid)
  		{
  			$objCalendar = $this->Database->prepare("SELECT a.id, n.id AS nid FROM tl_calendar_events n, tl_calendar a WHERE n.id=? AND n.pid=a.id")
  										  ->limit(1)
  										  ->execute($id);
  		}
  		else
  		{
  			$objCalendar = $this->Database->prepare("SELECT a.id, n.id AS nid FROM tl_content c, tl_calendar_events n, tl_calendar a WHERE c.id=? AND c.pid=n.id AND n.pid=a.id")
  										  ->limit(1)
  										  ->execute($id);
  		}
  
  		// Invalid ID
  		if ($objCalendar->numRows < 1)
  		{
  			throw new Contao\CoreBundle\Exception\AccessDeniedException('Invalid event content element ID ' . $id . '.');
  		}
  
  		// The calendar is not mounted
  		if (!\in_array($objCalendar->id, $root))
  		{
  			throw new Contao\CoreBundle\Exception\AccessDeniedException('Not enough permissions to modify article ID ' . $objCalendar->nid . ' in calendar ID ' . $objCalendar->id . '.');
  		}
  	}
docs: Check access to a particular content element
  
  @param integer $id
  @param array   $root
  @param boolean $blnIsPid
  
  @throws Contao\CoreBundle\Exception\AccessDeniedException