/** * @param PresentationSpeaker $speaker * @param Presentation $presentation * @return bool */ public function canAddSpeakerOnPresentation(PresentationSpeaker $speaker, Presentation $presentation) { $category = $presentation->Category(); $summit = $category->Summit(); if ($summit->isCallForSpeakersOpen() && $summit->isPublicCategory($category)) { $max_per_summit = intval($summit->MaxSubmissionAllowedPerUser); //zero means infinity if ($max_per_summit === 0) { $max_per_summit = PHP_INT_MAX; } $presentation_count = intval($speaker->getPublicCategoryPresentationsBySummit($summit)->count()) + intval($speaker->getPublicCategoryOwnedPresentationsBySummit($summit)->count()); return $presentation_count < $max_per_summit; } if ($summit->isPrivateCategory($category) && ($group = $summit->getPrivateGroupFor($category))) { if ($group->isSubmissionOpen()) { $max_per_group = intval($group->MaxSubmissionAllowedPerUser); //zero means infinity if ($max_per_group === 0) { $max_per_group = PHP_INT_MAX; } $group_presentation_count = intval($speaker->getPrivateCategoryPresentationsBySummit($summit, $group)->count()) + intval($speaker->getPrivateCategoryOwnedPresentationsBySummit($summit, $group)->count()); return $group_presentation_count < $max_per_group; } } return false; }
/** * @param SS_HTTPRequest $r * @return SS_HTTPResponse|void * @throws SS_HTTPResponse_Exception */ public function handleEmailSpeakers(SS_HTTPRequest $r) { if (!Member::currentUser()) { return $this->httpError(403); } $email = $r->postVar('email'); if ($email != null) { $current_user = Member::currentUser(); $toAdresses = []; $ccAddresses = ['*****@*****.**']; foreach ($this->presentation->getSpeakersAndModerators() as $s) { $toAddresses[] = $s->getEmail(); } $chairs = $this->presentation->Category()->TrackChairs()->exclude('MemberID', $current_user->ID); foreach ($chairs as $chair) { $ccAddresses[] = $chair->Member()->Email; } $subject = "Track chair {$current_user->getName()} has a question about your presentation"; $body = $email; $email = EmailFactory::getInstance()->buildEmail(null, implode(',', $toAddresses), $subject, $body); $email->setCC(implode(',', $ccAddresses)); $email->replyTo($current_user->Email); try { $email->send(); $this->presentation->addNotification(' {member} emailed the speakers '); return new SS_HTTPResponse('OK'); } catch (Exception $e) { return new SS_HTTPResponse($e->getMessage(), 400); } } return $this->httpError(400, "Invalid comment"); }