public function getSpeakerConfirmationLink() { $confirmation_page = SummitConfirmSpeakerPage::get()->filter('SummitID', Summit::get_active()->ID)->first(); if (!$confirmation_page) { throw new Exception('Confirmation Speaker Page not set on current summit!'); } $url = $confirmation_page->getAbsoluteLiveLink(false); $url = $url . 'confirm?h=' . $this->getSpeakerConfirmHash(); return $url; }
/** * Resets the confirmation request if exists and its not confirmed yet * otherwise exception * @param int $summit_id * @return string * @throws Exception * @throws ValidationException * @throws null */ public function resetConfirmationLink($summit_id) { $confirmation_page = SummitConfirmSpeakerPage::get()->filter('SummitID', intval($summit_id))->first(); if (!$confirmation_page) { throw new NotFoundEntityException('Confirmation Speaker Page not set on current summit!'); } $url = $confirmation_page->getAbsoluteLiveLink(false); $request = PresentationSpeakerSummitAssistanceConfirmationRequest::get()->filter(['SummitID' => intval($summit_id), 'SpeakerID' => $this->ID])->first(); if (is_null($request)) { throw new EntityValidationException('there is not valid request!'); } if ($request->alreadyConfirmed()) { throw new EntityValidationException('request already confirmed!'); } $token = null; $already_exists = false; do { $token = $request->generateConfirmationToken(); $already_exists = intval(PresentationSpeakerSummitAssistanceConfirmationRequest::get()->filter(['SummitID' => intval($summit_id), 'SpeakerID:ExactMatch:not' => $this->ID, 'ConfirmationHash' => PresentationSpeakerSummitAssistanceConfirmationRequest::HashConfirmationToken($token)])->count()) > 1; } while ($already_exists); $request->write(); return $url . 'confirm?t=' . base64_encode($token); }