public function canFrontEndEdit($member = null)
 {
     //we do this afterwards as we want to make sure that admins can edit all pages.
     if (!in_array($this->owner->class, self::$allowed_classes)) {
         return parent::canEdit($member);
     }
     if ($member instanceof Member) {
         $memberID = $member->ID;
     } else {
         if (is_numeric($member)) {
             $memberID = $member;
         } else {
             $memberID = Member::currentUserID();
         }
     }
     if ($memberID && Permission::checkMember($memberID, array("ADMIN", "SITETREE_EDIT_ALL", "SHOPADMIN"))) {
         return true;
     }
     if ($this->owner->ID) {
         if ($this->owner->CanEditType == 'LoggedInUsers') {
             return $memberID;
         } else {
             if ($this->owner->CanEditType == 'OnlyTheseUsers') {
                 $groups = DB::query("SELECT GroupID FROM SiteTree_EditorGroups WHERE SiteTreeID = {$this->owner->ID}")->column();
                 if ($memberID && count($groups) > 0) {
                     $groups = implode(',', $groups);
                     return DB::query("SELECT COUNT(*) FROM Group_Members WHERE MemberID = {$memberID} AND GroupID IN ({$groups})")->value();
                 }
             } elseif ($this->owner->ParentID) {
                 $parent = $this->owner->Parent();
                 if ($parent->exists()) {
                     return $parent->canFrontEndEdit($memberID);
                 }
             }
         }
     }
 }