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