/**
  * @return ShareToken
  */
 protected function getNewShareToken()
 {
     if (!$this->owner->ShareTokenSalt) {
         $this->owner->ShareTokenSalt = $this->getNewToken();
         $this->owner->write();
     }
     $found = null;
     $token = null;
     $tries = 1;
     $limit = 5;
     while (!$found && $tries++ < $limit) {
         $token = $this->getNewToken();
         $found = ShareToken::get()->filter(array("Token" => $token, "PageID" => $this->owner->ID))->first();
     }
     $config = Config::inst()->forClass('ShareDraftContentSiteTreeExtension');
     $validForDays = $config->valid_for_days;
     $token = ShareToken::create(array("Token" => $token, "ValidForDays" => $validForDays, "PageID" => $this->owner->ID));
     $token->write();
     return $token;
 }