/** * @param string $promo_code_type * @param int $batch_size * @return ISpeakerSummitRegistrationPromoCode */ public function getNextAvailableByType($promo_code_type, $batch_size = 10) { switch ($promo_code_type) { case ISpeakerSummitRegistrationPromoCode::TypeAccepted: if (count($this->promo_code_speaker_session_pool) === 0) { $query = new QueryObject(new SpeakerSummitRegistrationPromoCode()); $query->addAndCondition(QueryCriteria::equal('Type', $promo_code_type)); $query->addAndCondition(QueryCriteria::equal('OwnerID', 0)); $query->addAndCondition(QueryCriteria::equal('SpeakerID', 0)); $query->addAndCondition(QueryCriteria::equal('SummitID', Summit::get_active()->ID)); $query->addOrder(QueryOrder::asc('ID')); list($this->promo_code_speaker_session_pool, $count) = $this->getAll($query, 0, $batch_size); } return array_shift($this->promo_code_speaker_session_pool); break; case ISpeakerSummitRegistrationPromoCode::TypeAlternate: if (count($this->promo_code_alternate_speaker_session_pool) === 0) { $query = new QueryObject(new SpeakerSummitRegistrationPromoCode()); $query->addAndCondition(QueryCriteria::equal('Type', $promo_code_type)); $query->addAndCondition(QueryCriteria::equal('OwnerID', 0)); $query->addAndCondition(QueryCriteria::equal('SpeakerID', 0)); $query->addAndCondition(QueryCriteria::equal('SummitID', Summit::get_active()->ID)); $query->addOrder(QueryOrder::asc('ID')); list($this->promo_code_alternate_speaker_session_pool, $count) = $this->getAll($query, 0, $batch_size); } return array_shift($this->promo_code_alternate_speaker_session_pool); break; } return null; }
public function handleGetAllPresentations(SS_HTTPRequest $r) { $limit = $r->getVar('limit') ?: 50; if ($limit > 50) { $limit = 50; } $start = $r->getVar('page') ?: 0; $presentations = Member::currentUser() ? Member::currentUser()->getRandomisedPresentations() : Presentation::get()->filter(array('SummitEvent.SummitID' => Summit::get_active()->ID)); if ($r->getVar('category')) { $presentations = $presentations->filter('CategoryID', (int) $r->getVar('category')); } if ($r->getVar('keyword')) { $k = $r->getVar('keyword'); $presentations = $presentations->filterAny(array('Title:PartialMatch' => $k, 'Description:PartialMatch' => $k, 'Speakers.FirstName:PartialMatch' => $k, 'Speakers.LastName:PartialMatch' => $k)); } if ($r->getVar('voted') == "true") { $presentations = $presentations->leftJoin("PresentationVote", "PresentationVote.PresentationID = Presentation.ID")->where("IFNULL(PresentationVote.MemberID,0) = " . Member::currentUserID()); } if ($r->getVar('voted') == "false") { $presentations = $presentations->leftJoin("PresentationVote", "PresentationVote.PresentationID = Presentation.ID")->where("IFNULL(PresentationVote.MemberID,0) != " . Member::currentUserID()); } $count = $presentations->count(); $presentations = $presentations->limit($limit, $start * $limit); $data = array('results' => array(), 'has_more' => $count > $limit * ($start + 1), 'total' => $count, 'remaining' => $count - $limit * ($start + 1)); foreach ($presentations as $p) { $data['results'][] = array('id' => $p->ID, 'title' => $p->Title, 'user_vote' => $p->getUserVote() ? $p->getUserVote()->Vote : null); } return (new SS_HTTPResponse(Convert::array2json($data), 200))->addHeader('Content-Type', 'application/json'); }
/** * @return void */ public function run() { try { $init_time = time(); $processed_events = 0; $events = array(); $current_summit = Summit::get_active(); if ($current_summit) { $events = $current_summit->getSchedule(); } foreach ($events as $event) { $processed_events++; $rate_sum = 0; $rate_count = 0; foreach ($event->Feedback as $feedback) { $rate_count++; $rate_sum = $rate_sum + $feedback->Rate; } $rate_avg = $rate_count > 0 ? $rate_sum / $rate_count : 0; try { $event->setAvgRate(round($rate_avg, 2)); $event->write(true); } catch (Exception $ex) { SS_Log::log($ex, SS_Log::ERR); echo $ex->getMessage(); } } $finish_time = time() - $init_time; echo 'processed events ' . $processed_events . ' - time elapsed : ' . $finish_time . ' seconds.'; } catch (Exception $ex) { SS_Log::log($ex->getMessage(), SS_Log::ERR); } }
/** * @param IPresentationSpeaker $speaker * @return PresentationSpeakerAcceptedAnnouncementEmailSender * @throws Exception */ public function build(IPresentationSpeaker $speaker) { $summit = Summit::get_active(); $has_approved = $speaker->hasApprovedPresentations($summit->ID); $has_rejected = $speaker->hasRejectedPresentations($summit->ID); $has_alternate = $speaker->hasAlternatePresentations($summit->ID); if ($has_approved && !$has_rejected && !$has_alternate) { return new PresentationSpeakerAcceptedAnnouncementEmailSender(); } if (!$has_approved && !$has_rejected && $has_alternate) { return new PresentationSpeakerAlternateAnnouncementEmailSender(); } if (!$has_approved && $has_rejected && !$has_alternate) { return new PresentationSpeakerRejectedAnnouncementEmailSender(); } if ($has_approved && !$has_rejected && $has_alternate) { return new PresentationSpeakerAcceptedAlternateAnnouncementEmailSender(); } if ($has_approved && $has_rejected && !$has_alternate) { return new PresentationSpeakerAcceptedRejectedAnnouncementEmailSender(); } if (!$has_approved && $has_rejected && $has_alternate) { return new PresentationSpeakerAlternateRejectedAnnouncementEmailSender(); } if ($has_approved && $has_rejected && $has_alternate) { return new PresentationSpeakerAcceptedAlternateAnnouncementEmailSender(); } return null; }
/** * Check for auth tokens * @return mixed */ public function init() { parent::init(); if (!Summit::get_active()->isInDB()) { return $this->httpError(404, 'There is no active summit'); } /** * On the existing tokenauthentication system, this is a fairly trivialmatter, and I'm not so sure it's anything to navigate right now. * Thiswas implemented to provide the video upload people a simple API foradding videos. It's a very specific use c * ase, and general users shouldnot be using it. If they can and they are, then that needs to bechanged. */ $result = $this->checkAuthenticationToken(); if (!$result && !Member::currentUser()) { //check if speaker registration token is present.. $speaker_registration_token = $this->request->getVar(SpeakerRegistrationRequest::ConfirmationTokenParamName); if (!is_null($speaker_registration_token)) { $request = $this->speaker_registration_request_repository->getByConfirmationToken($speaker_registration_token); if (is_null($request) || $request->alreadyConfirmed()) { return SummitSecurity::permission_failure($this); } // redirect to register member speaker $url = Controller::join_links(Director::baseURL(), 'summit-login', 'registration'); return $this->redirect($url . '?BackURL=' . urlencode($this->request->getURL()) . '&' . SpeakerRegistrationRequest::ConfirmationTokenParamName . '=' . $speaker_registration_token); } return SummitSecurity::permission_failure($this); } $speaker = Member::currentUser()->getSpeakerProfile(); if (!$speaker) { $speaker = PresentationSpeaker::create(array('MemberID' => Member::currentUserID(), 'FirstName' => Member::currentUser()->FirstName, 'LastName' => Member::currentUser()->Surname)); $speaker->write(); } }
/** * @param IEntity $subject * @throws InvalidArgumentException * @return void */ public function send(IEntity $subject) { if (!$subject instanceof IPresentationSpeaker) { return; } $subject->registerAnnouncementEmailTypeSent(IPresentationSpeaker::AnnouncementEmailAlternate); $email = EmailFactory::getInstance()->buildEmail('*****@*****.**', $subject->getEmail()); $email->setUserTemplate('presentation-speaker-alternate-only')->populateTemplate(array('Speaker' => $subject, 'ConfirmationLink' => $subject->getSpeakerConfirmationLink(), 'ScheduleMainPageLink' => Summit::get_active()->SchedUrl, 'PromoCode' => $subject->getSummitPromoCode()->getCode()))->send(); }
protected function getPresentationFields() { $categorySource = Summit::get_active()->Categories()->map('ID', 'FormattedTitleAndDescription')->toArray(); $categorySource['other'] = '<h4 class="category-label">Other topic...</h4>'; $fields = FieldList::create()->text('Title', 'Proposed Presentation Title')->configure()->setAttribute('autofocus', 'TRUE')->end()->dropdown('Level', 'Please select the level of your presentation content')->configure()->setEmptyString('-- Select one --')->setSource(Presentation::create()->dbObject('Level')->enumValues())->end()->tinyMCEEditor('Description', 'Abstract')->configure()->setRows(20)->end()->literal('ShortDescriptionHelp', '<hr/><p>YouTube and other services limit the length of your presentation\'s description. Please provide a shorter, YouTube-friendly summary below.</p>')->literal('ShortDescriptionWordCount', '<p id="word-count"></p>')->tinyMCEEditor('ShortDescription', 'Short Description (450 Word Max)')->configure()->setRows(7)->setWordCount(450)->end()->literal('HR', '<hr/>')->optionset('CategoryID', 'What is the general topic of the presentation?')->configure()->setSource($categorySource)->end()->text('OtherTopic', 'Other topic (if one above does not match)')->configure()->displayIf('CategoryID')->isEqualTo('other')->end()->end()->literal('TagHelp', '<p>You can optionally add tags help attendees find presentations that interest them. Examples: <i>nova, ubuntu, ldap.</i></p>')->bootstrapTag('Tags', 'Presentation Tags (Optional)')->configure()->setLabelField('Tag')->setSource(Tag::get())->setPrefetch(Tag::get()->leftJoin('Presentation_Tags', 'TagID = Tag.ID')->sort('COUNT(Tag.ID)', 'DESC')->limit(10)->alterDataQuery(function ($query) { $query->groupby('Tag.ID'); }))->setFreeInput(true)->end(); return $fields; }
function up() { echo "Starting Migration Proc ...<BR>"; //check if migration already had ran ... $migration = Migration::get()->filter('Name', $this->title)->first(); $promo_code_type = isset($_REQUEST['promo_code_type']) ? intval($_REQUEST['promo_code_type']) : null; $promo_code_file = isset($_REQUEST['promo_code_file']) ? $_REQUEST['promo_code_file'] : null; if (is_null($promo_code_type)) { echo 'ERROR - promo_code_type param missing!'; exit; } if (is_null($promo_code_file)) { echo 'ERROR - promo_code_file param missing!'; exit; } $base_path = ASSETS_PATH; $file_path = $base_path . '/' . $promo_code_file; $type = explode(".", $file_path); if (!strtolower(end($type)) == 'csv') { echo 'ERROR - file hast not a csv extension!'; exit; } if (!file_exists($file_path)) { echo sprintf('ERROR - %s file does not exists!', $file_path); exit; } $reader = new CSVReader($file_path); $row = 0; do { $line = $reader->getLine(); if ($line) { ++$row; if ($row === 1) { continue; } // skip header ... switch ($promo_code_type) { case 1: $type = 'ACCEPTED'; break; case 2: $type = 'ALTERNATE'; break; } $code = new SpeakerSummitRegistrationPromoCode(); $code->Code = $line[0]; $code->Type = $type; $code->SummitID = Summit::get_active()->ID; try { $code->write(); } catch (Exception $ex) { SS_Log::log($ex->getMessage(), SS_Log::ERR); } } } while ($line); echo "Ending Migration Proc ...<BR>"; }
/** * @param $subject * @throws InvalidArgumentException * @return void */ public function send($subject) { $email_template = PermamailTemplate::get_by_identifier(SUMMIT_ATTENDEE_CREATE_MEMBERSHIP_INVITATION_EMAIL_TEMPLATE); if (is_null($email_template)) { return; } $email = EmailFactory::getInstance()->buildEmail(null, $subject); $email->setUserTemplate('summit-attendee-create-membership-invitation')->populateTemplate(array('Email' => $subject, 'Summit' => Summit::get_active()))->send(); }
/** * @param mixed $subject * @throws InvalidArgumentException * @return void */ public function send($subject) { if (!$subject instanceof IPresentationSpeaker) { return; } $summit = Summit::get_active(); $subject->registerAnnouncementEmailTypeSent(IPresentationSpeaker::AnnouncementEmailRejected, $summit->ID); $email = EmailFactory::getInstance()->buildEmail('*****@*****.**', $subject->getEmail()); $email->setUserTemplate('presentation-speaker-rejected-only')->populateTemplate(array('Speaker' => $subject))->send(); }
function trackChairCheck() { $member = Member::currentUser(); $chair = new SummitTrackChair(); if ($member) { $chair = SummitTrackChair::get()->filter(array('MemberID' => $member->ID, 'SummitID' => Summit::get_active()->ID)); } if ($chair->exists() || Permission::check('ADMIN')) { return true; } }
/** * @param $subject * @throws InvalidArgumentException * @return void */ public function send($subject) { if (!$subject instanceof ISummitAttendee) { return; } $email_template = PermamailTemplate::get_by_identifier(SUMMIT_ATTENDEE_CREATED_EMAIL_TEMPLATE); if (is_null($email_template)) { return; } $email = EmailFactory::getInstance()->buildEmail(null, $subject->getMember()->getEmail()); $email->setUserTemplate('summit-attendee-created')->populateTemplate(array('Attendee' => $subject, 'Summit' => Summit::get_active()))->send(); }
function __construct($controller, $name, $speakerHash) { $activeSummit = Summit::get_active(); $PhoneField = new TextField('OnSitePhoneNumber', 'Your Onsite Phone Number for ' . $activeSummit->Title . ':'); $RegisteredField = new CheckboxField('RegisteredForSummit', 'I have registered for the summit using the confirmation code sent in the email.'); // Speaker Hash Field $SpeakerHashField = new HiddenField('speakerHash', "speakerHash", $speakerHash); $fields = new FieldList($PhoneField, $RegisteredField, $SpeakerHashField); $submitButton = new FormAction('doSavePhoneNumber', 'Save'); $actions = new FieldList($submitButton); $validator = new RequiredFields('OnSitePhoneNumber'); parent::__construct($controller, $name, $fields, $actions, $validator); }
/** * */ public function run() { SapphireTransactionManager::getInstance()->transaction(function () { $unprocessedVideos = PresentationVideo::get()->filter(['Processed' => false])->limit(50); if (!$unprocessedVideos->exists()) { return; } $summit = Summit::get_active(); $dateUTC = $summit->convertDateFromTimeZone2UTC(SS_DateTime::now()->Rfc2822()); $dateUTCTimestamp = strtotime($dateUTC); $maxAge = SummitVideoApp::config()->abandon_unprocessed_videos_after; $ids = []; foreach ($unprocessedVideos as $video) { $age = $dateUTCTimestamp - strtotime($video->DateUploaded); if ($age > $maxAge) { SS_Log::log("Video {$video->Title} has been unprocessed for a long time. ({$age} seconds). It should be deleted.", SS_Log::WARN); continue; } $ids[] = $video->YouTubeID; } try { $response = $this->api->getVideoStatusById($ids); } catch (\Exception $e) { SS_Log::log("YouTube check for status failed" . $e->getMessage(), SS_Log::ERR); return; } $body = $response->getBody()->getContents(); $data = Convert::json2array($body); $items = $data['items']; if (empty($items)) { echo "No videos are marked as processing. Exiting.\n"; return; } foreach ($items as $item) { $currentStatus = $item['status']['uploadStatus']; if ($currentStatus == 'processed') { $video = PresentationVideo::get()->filter(['YouTubeID' => $item['id']])->first(); if (!$video) { SS_Log::log("Tried to update processing status for " . $item['id'] . " but no PresentationVideo with that YouTubeID was found.", SS_Log::WARN); continue; } $video->Processed = true; $video->write(); $this->videosUpdated++; } } echo "{$this->videosUpdated} videos updated.\n"; }); }
public function getCMSFields() { $f = new FieldList($rootTab = new TabSet("Root", $tabMain = new Tab('Main'))); $f->addFieldToTab('Root.Main', new HiddenField('OwnerID', 'OwnerID')); $f->addFieldsToTab('Root.Main', new TextField('ExternalOrderId', '#Order')); $f->addFieldsToTab('Root.Main', new TextField('ExternalAttendeeId', '#Attendee')); $f->addFieldsToTab('Root.Main', $date = new DatetimeField('TicketBoughtDate', 'Bought Date')); $date->getDateField()->setConfig('showcalendar', true); $f->addFieldsToTab('Root.Main', $date = new DatetimeField('TicketChangedDate', 'Changed Date')); $date->getDateField()->setConfig('showcalendar', true); $summit_id = $_REQUEST['SummitID']; if (empty($summit_id)) { $summit_id = $this->Owner()->exists() ? $this->Owner()->SummitID : Summit::get_active()->ID; } $f->addFieldsToTab('Root.Main', $ddl = new DropdownField('TicketTypeID', 'Ticket Type', SummitTicketType::get()->filter('SummitID', $summit_id)->map("ID", "Name"))); return $f; }
public function ExportNoticeEmails() { $speakers = Summit::get_active()->Speakers(); $filepath = $_SERVER['DOCUMENT_ROOT'] . '/assets/speaker-notifications.csv'; $fp = fopen($filepath, 'w'); $fields = array('First_Name', 'Last_Name', 'Speaker_ID', 'Member_ID', 'Email', 'Presentation_List'); fputcsv($fp, $fields); foreach ($speakers as $speaker) { $this->AssembleEmail($speaker, $fp); } fclose($fp); header("Cache-control: private"); header("Content-type: application/force-download"); header("Content-transfer-encoding: binary\n"); header("Content-disposition: attachment; filename=\"speaker-notifications.csv\""); header("Content-Length: " . filesize($filepath)); readfile($filepath); }
public function confirm() { parent::init(); $getVars = $this->request->getVars(); $hashKey = $getVars['h']; if (isset($hashKey)) { $speakerID = substr(base64_decode($hashKey), 3); } if (isset($speakerID) && is_numeric($speakerID) && ($Speaker = PresentationSpeaker::get()->byID($speakerID))) { Session::set('ConfirmSpeakerHash', $hashKey); Session::set('Speaker', $Speaker); $Speaker->Confirmed = true; $Speaker->write(); $data['FirstName'] = $Speaker->FirstName; $data['LastName'] = $Speaker->LastName; $data['Summit'] = Summit::get_active(); return $this->customise($data)->renderWith(array('SummitConfirmSpeakerPage', 'SummitPage'), $this->parent); } else { return $this->httpError(404, 'Sorry, this speaker confirmation code does not seem to be correct.'); } }
public static function addChair($member, $catgoryID) { $priorChair = SummitTrackChair::get()->filter('MemberID', $member->ID)->first(); $category = PresentationCategory::get()->byID($catgoryID); if (!$priorChair) { $chair = new self(); $chair->MemberID = $member->ID; $chair->SummitID = Summit::get_active()->ID; $chair->write(); $chair->Categories()->add($category); //Find or create the 'track-chairs' group if (!($Group = Group::get()->filter('Code', 'track-chairs')->first())) { $Group = new Group(); $Group->Code = "track-chairs"; $Group->Title = "Track Chairs"; $Group->Write(); $Member->Groups()->add($Group); } //Add member to the group $member->Groups()->add($Group); } else { $priorChair->Categories()->add($category); } }
function RandomPresentationID($Category = NULL) { $Result = NULL; $CategoryID = $Category; $currentMemberID = Member::currentUserID(); $summitID = Summit::get_active()->ID; $presentations = Presentation::get()->where("Presentation.SummitID = {$summitID}"); if ($CategoryID) { $presentations = $presentations->filter('CategoryID', $CategoryID); } if ($currentMemberID) { $presentations = $presentations->leftJoin("PresentationVote", "PresentationVote.PresentationID = Presentation.ID")->where("IFNULL(PresentationVote.MemberID,0) = " . Member::currentUserID()); } if ($presentations->count()) { $Result = $presentations->first(); } if ($Result) { return $Result->ID; } else { return 'none'; } }
public function JSONConfig() { return Convert::array2json(['baseURL' => $this->Link(), 'summitID' => Summit::get_active()->ID, 'pass_order' => SummitSelectedPresentation::config()->pass_order, 'userinfo' => ['name' => Member::currentUser()->getName(), 'email' => Member::currentUser()->Email, 'isAdmin' => Permission::check('ADMIN')]]); }
/** * Handles the form submission that creates a new speaker. * Checks for existence, and uses existing if found * * @param $data array * @param $form Form * @return SSViewer */ public function doAddSpeaker($data, $form) { $me = $data['SpeakerType'] == 'Me'; $email = $me ? Member::currentUser()->Email : $data['EmailAddress']; if (!$email) { $form->sessionMessage('Please specify an email addresss', 'bad'); return $this->redirectBack(); } $speaker = $this->getSpeaker($email); if (!$speaker) { $speaker = PresentationSpeaker::create(array('SummitID' => Summit::get_active()->ID)); if ($me) { $member = Member::currentUser(); $speaker->MemberID = $member->ID; } else { // look for the member.. $member = Member::get()->filter('Email', $email)->first(); if (!$member) { $speaker->MemberID = 0; $speaker->write(); $request = $this->getParent()->getSpeakerRegistrationRequestManager()->register($speaker, $email); $speaker->RegistrationRequestID = $request->getIdentifier(); } else { $member->addToGroupByCode('speakers'); $speaker->MemberID = $member->ID; $member->write(); } } } $speaker->Presentations()->add($this->presentation->ID); $speaker->write(); return $this->parent->redirect(Controller::join_links($this->Link(), 'speaker', $speaker->ID)); }
/** * @return mixed */ protected function validate() { $summit_id = null; if (isset($_REQUEST['SummitID'])) { $summit_id = $_REQUEST['SummitID']; } $valid = parent::validate(); if (!$valid->valid() || !$summit_id) { return $valid; } $old_one = Summit::get_active()->Categories()->relation('TrackChairs')->filter('MemberID', $this->MemberID)->first(); if (!$old_one) { return $valid->error('Already exists a track chair for this member!'); } return $valid; }
public function CurrentSummit() { $summit = Summit::get_active(); return $summit->isInDB() ? $summit : false; }
public function send($batch_size) { $batch_repository = $this->batch_repository; $batch_task_factory = $this->batch_task_factory; $speaker_repository = $this->speaker_repository; $sender_factory = $this->sender_factory; $promo_code_repository = $this->promo_code_repository; return $this->tx_manager->transaction(function () use($batch_size, $batch_repository, $speaker_repository, $batch_task_factory, $sender_factory, $promo_code_repository) { $task = $batch_repository->findByName(self::TaskName); $last_index = 0; $speakers = array(); $speakers_notified = 0; $query = new QueryObject(); $query->addAndCondition(QueryCriteria::equal('SummitID', Summit::get_active()->ID)); $query->addAndCondition(QueryCriteria::equal('AnnouncementEmailTypeSent', 'NONE')); if ($task) { $last_index = $task->lastRecordProcessed(); list($speakers, $total_size) = $speaker_repository->getAll($query, $last_index, $batch_size); if ($task->lastRecordProcessed() >= $total_size) { $task->initialize($total_size); } } else { list($speakers, $total_size) = $speaker_repository->getAll($query, $last_index, $batch_size); $task = $batch_task_factory->buildBatchTask(self::TaskName, $total_size); $batch_repository->add($task); } foreach ($speakers as $speaker) { $task->updateLastRecord(); if (!$speaker instanceof IPresentationSpeaker) { continue; } $email = $speaker->getEmail(); if (empty($email)) { continue; } if ($speaker->announcementEmailAlreadySent()) { continue; } $sender_service = $sender_factory->build($speaker); // get registration code if (is_null($sender_service)) { continue; } $code = null; if ($speaker->hasApprovedPresentations()) { $code = $promo_code_repository->getNextAvailableByType(ISpeakerSummitRegistrationPromoCode::TypeAccepted, $batch_size); if (is_null($code)) { throw new Exception('not available promo code!!!'); } } else { if ($speaker->hasAlternatePresentations()) { $code = $promo_code_repository->getNextAvailableByType(ISpeakerSummitRegistrationPromoCode::TypeAlternate, $batch_size); if (is_null($code)) { throw new Exception('not available alternate promo code!!!'); } } } if (!is_null($code)) { $speaker->registerSummitPromoCode($code); } $sender_service->send($speaker); ++$speakers_notified; } return $speakers_notified; }); }
public function handleRestoreOrders() { $activeSummit = Summit::get_active(); $SummitCategories = DataObject::get('PresentationCategory', $activeSummit->ID); foreach ($SummitCategories as $Category) { // Grab the track chairs selections for the category $SelectedPresentationList = SummitSelectedPresentationList::get()->filter(array('CategoryID' => $Category->ID)); foreach ($SelectedPresentationList as $list) { $selections = $list->SummitSelectedPresentations()->sort('Order', 'ASC'); $i = 1; foreach ($selections as $selection) { $selection->Order = $i; $selection->write(); $i++; } } } }
/** * Gets the speaker for this member in the current summit * * @param Summit $summit * @return PresentationSpeaker */ public function getCurrentSpeakerProfile($summit = null) { $summit = $summit ?: Summit::get_active(); if (!$summit) { return false; } return PresentationSpeaker::get()->filter(array('MemberID' => $this->owner->ID, 'SummitID' => $summit->ID))->first(); }
function onAfterWrite() { parent::onAfterWrite(); $summit = Summit::get_active(); //update all relationships with sponsors foreach ($this->Companies() as $company) { if (isset($_REQUEST["SponsorshipType_{$company->ID}"])) { $type = $_REQUEST["SponsorshipType_{$company->ID}"]; $sql = "UPDATE SummitSponsorPage_Companies SET SponsorshipType ='{$type}', SummitID = '{$summit->ID}' WHERE CompanyID={$company->ID} AND SummitSponsorPageID={$this->ID};"; DB::query($sql); } if (isset($_REQUEST["SubmitPageUrl_{$company->ID}"])) { $page_url = $_REQUEST["SubmitPageUrl_{$company->ID}"]; $sql = "UPDATE SummitSponsorPage_Companies SET SubmitPageUrl ='{$page_url}', SummitID = '{$summit->ID}' WHERE CompanyID={$company->ID} AND SummitSponsorPageID={$this->ID};"; DB::query($sql); } } }
/** * @param null $summit_id * @param string $role * @return ArrayList|bool */ public function AlternatePresentations($summit_id = null, $role = IPresentationSpeaker::RoleSpeaker) { $alternatePresentations = new ArrayList(); $summit = is_null($summit_id) ? Summit::get_active() : Summit::get()->byID($summit_id); if (is_null($summit)) { return false; } $presentations = $role == IPresentationSpeaker::RoleSpeaker ? $this->Presentations()->filter('SummitEvent.SummitID', $summit->ID) : Presentation::get()->filter(['SummitEvent.SummitID' => $summit->ID, 'ModeratorID' => $this->ID]); foreach ($presentations as $p) { if ($p->SelectionStatus() == IPresentation::SelectionStatus_Alternate && !$p->isPublished()) { $alternatePresentations->push($p); } } return $alternatePresentations; }
public function AppConfig() { return Convert::array2json(array('baseUrl' => Director::baseURL(), 'appPath' => 'vote-for-speakers', 'summitID' => Summit::get_active()->ID)); }
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; }