/** * Run the task * @param SS_HTTPRequest $request */ public function index() { $list = Presentation::get()->filter(array('Progress' => 0)); $count = $list->count(); $list->removeAll(); $this->writeOut("Deleted {$count} presentations"); }
public function handleManagePresentation(SS_HTTPRequest $r) { if ($presentation = Presentation::get()->byID($r->param('ID'))) { $request = PresentationAPI_PresentationRequest::create($presentation, $this); return $request->handleRequest($r, DataModel::inst()); } return $this->httpError(404, "Presentation " . $r->param('ID') . " not found"); }
/** * @param SS_HTTPRequest $r * @return $this */ public function handleIndex(SS_HTTPRequest $r) { // No one should be able to deep link to the presentation other than priviledged users if ($r->param('Action') === 'presentation' && is_numeric($r->param('ID'))) { $presentation = Presentation::get()->byID($r->param('ID')); if (!$presentation) { return $this->httpError(404); } if (!$presentation->canEdit()) { return $this->redirect($this->Link()); } } return $this; }
/** * Returns true if the user is a speaker in a given presentation * @param boolean */ public function IsSpeaker($presentation = null) { if ($presentation === null) { return Presentation::get()->relation('Speakers')->find('MemberID', $this->owner->ID); } if (is_numeric($presentation)) { $p = Presentation::get()->byID($presentation); } else { if ($presentation instanceof Presentation) { $p = $presentation; } } if ($p) { return $p->Speakers()->find('MemberID', $this->owner->ID); } }
/** * @param int $summit_id * @param int $page * @param int $page_size * @param array $order * @return array */ public function getUnpublishedBySummitAndTrackList($summit_id, $track_list = null, $search_term = null, $page = 1, $page_size = 10, $order = null) { if (is_null($order)) { $order = array('SummitEvent.Created' => 'ASC'); } $filter = array('SummitID' => $summit_id, 'Published' => 0); $track_filter = ''; if (!empty($track_list)) { $track_filter = " AND SummitSelectedPresentationList.ID = {$track_list} "; } $where_clause = " SummitEvent.Title IS NOT NULL AND SummitEvent.Title <>'' "; if ($search_term) { $where_clause .= "AND (SummitEvent.Title LIKE '%{$search_term}%' OR SummitEvent.Description LIKE '%{$search_term}%'"; $where_clause .= " OR PresentationSpeaker.FirstName LIKE '%{$search_term}%' OR PresentationSpeaker.LastName LIKE '%{$search_term}%'"; $where_clause .= " OR CONCAT(PresentationSpeaker.FirstName,' ',PresentationSpeaker.LastName) LIKE '%{$search_term}%' ) "; } $list = Presentation::get()->filter($filter)->where($where_clause)->leftJoin('Presentation_Speakers', 'Presentation_Speakers.PresentationID = Presentation.ID')->leftJoin('PresentationSpeaker', 'Presentation_Speakers.PresentationSpeakerID = PresentationSpeaker.ID')->innerJoin('SummitSelectedPresentation', 'SummitSelectedPresentation.PresentationID = Presentation.ID')->innerJoin('SummitSelectedPresentationList', "SummitSelectedPresentation.SummitSelectedPresentationListID = SummitSelectedPresentationList.ID AND (ListType = 'Group') {$track_filter}")->sort("TRIM({$order})"); $count = intval($list->count()); $offset = ($page - 1) * $page_size; $data = $list->limit($page_size, $offset); return array($page, $page_size, $count, $data); }
public function run($request) { $summit_id = intval($request->requestVar('SummitID')); if ($summit_id <= 0) { throw new RuntimeException("invalid summit id"); } $summit = Summit::get()->byID($summit_id); if (is_null($summit)) { throw new RuntimeException("invalid summit"); } $count = 0; $presentations = Presentation::get()->filter(array('SummitID' => $summit_id, 'TypeID' => 0))->where(" Title IS NOT NULL AND Title <>'' "); Summit::seedBasicEventTypes($summit_id); $type = SummitEventType::get()->filter(array('Type' => 'Presentation', 'SummitID' => $summit_id))->first(); if (is_null($type)) { throw new RuntimeException("invalid event type"); } foreach ($presentations as $p) { $p->TypeID = $type->ID; $p->write(); ++$count; } echo "Fixed {$count} presentations."; }
return; } $company_id = $item->ID; $event = new SummitEntityEvent(); $event->EntityClassName = 'SponsorFromEvent'; $event->EntityID = $company_id; $event->Type = 'DELETE'; $event->OwnerID = Member::currentUserID(); $event->SummitID = $summit_event->SummitID; $event->Metadata = json_encode(array('event_id' => $event_id)); $event->write(); } if ($item instanceof PresentationSpeaker && $list->getJoinTable() === 'Presentation_Speakers') { // removed speaker from presentation $presentation_id = intval($list->getForeignID()); $presentation = Presentation::get()->byID($presentation_id); if (is_null($presentation)) { return; } $speaker_id = $item->ID; $event = new SummitEntityEvent(); $event->EntityClassName = 'SpeakerFromPresentation'; $event->EntityID = $speaker_id; $event->Type = 'DELETE'; $event->OwnerID = Member::currentUserID(); $event->SummitID = $presentation->SummitID; $event->Metadata = json_encode(array('event_id' => $presentation_id)); $event->write(); } if ($item instanceof SummitType && $list->getJoinTable() === 'SummitEvent_AllowedSummitTypes') { // removed summit type from event
public function handleReorderList(SS_HTTPRequest $r) { $sortOrder = $r->postVar('sort_order'); $listID = $r->postVar('list_id'); $list = SummitSelectedPresentationList::get()->byId($listID); if (!$list->memberCanEdit()) { return new SS_HTTPResponse(null, 403); } if (is_array($sortOrder)) { foreach ($sortOrder as $key => $id) { $selection = SummitSelectedPresentation::get()->filter(array('PresentationID' => $id, 'SummitSelectedPresentationListID' => $listID)); // Add the selection if it's new if (!$selection->exists()) { $presentation = Presentation::get()->byId($id); if ($presentation->exists() && $presentation->CategoryID == $list->CategoryID) { $s = new SummitSelectedPresentation(); $s->SummitSelectedPresentationListID = $listID; $s->PresentationID = $presentation->ID; $s->MemberID = Member::currentUserID(); $s->Order = $key + 1; $s->write(); } } // Adjust the order if not if ($selection->exists()) { $s = $selection->first(); $s->Order = $key + 1; $s->write(); } } } return new SS_HTTPResponse(null, 200); }
public function MyPresentations($summit_id = null) { $summit = is_null($summit_id) ? Summit::get_active() : Summit::get()->byID($summit_id); if (is_null($summit)) { return false; } return Presentation::get()->filter(array('CreatorID' => $this->MemberID, 'SummitID' => $summit->ID)); }
public function hasEventsPublished() { foreach ($this->Categories() as $category) { $published_events = Presentation::get()->filter(["SummitID" => $this->SummitID, "Published" => 1, "CategoryID" => $category->ID])->count(); if ($published_events) { return true; } } return false; }
/** * @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 hasEventsPublished() { return Presentation::get()->filter(["SummitID" => $this->SummitID, "Published" => 1, "CategoryID" => $this->ID])->count() > 0; }
/** * @param int $track_id * @param int $page * @param int $page_size * @return IPresentation[] */ public function getByCategoryPaged($track_id, $page, $page_size) { $offset = ($page - 1) * $page_size; return Presentation::get()->filter('CategoryID', $track_id)->limit($page_size, $offset); }
/** * @param SS_HTTPRequest $r * @return mixed */ public function handlePresentation(SS_HTTPRequest $r) { $presentationID = $this->request->param("ID"); // make sure there's a presentation by that id $presentation = Presentation::get()->byID($presentationID); // pull the speaker from the session and make sure they are a speaker for this presentation $speakerID = Session::get('UploadMedia.SpeakerID'); if ($presentation && $speakerID && $presentation->Speakers()->find('ID', $speakerID)) { $request = PresentationSlideSubmissionController_PresentationRequest::create($this, $presentation); return $request->handleRequest($r, DataModel::inst()); } return $this->customise(['HasError' => true]); }
/** * @param $presentation_id * @param PresentationSpeaker $speaker * @return bool */ public function canEditPresentation($presentation_id, PresentationSpeaker $speaker) { $presentation = Presentation::get()->byID($presentation_id); if (is_null($presentation) || !$presentation->canEdit()) { return false; } $summit = $presentation->Summit(); if (!$summit->Active) { return false; } $category = $presentation->Category(); if ($summit->isCallForSpeakersOpen() && $summit->isPublicCategory($category)) { return true; } // check member private categories groups if ($speaker->Member()->exists() && ($groups = $this->getPrivateCategoryGroupsFor($speaker->Member(), $summit))) { foreach ($groups as $g) { if (!$g->hasCategory($category)) { continue; } if (!$g->isSubmissionOpen()) { continue; } return true; } } //check if we have presentations for the current summit that are private categories foreach ($speaker->Presentations() as $presentation) { $category = $presentation->Category(); if (!$summit->isPrivateCategory($category)) { continue; } $group = $summit->getPrivateGroupFor($category); if (is_null($group)) { continue; } if (!$group->isSubmissionOpen()) { continue; } return true; } return false; }
/** * Reverses the migration */ public function doDown() { foreach (Presentation::get()->filter('Legacy', true) as $p) { $p->Speakers()->setByIdList(array()); foreach ($p->Materials()->filter('ClassName', 'PresentationVideo') as $material) { echo "Deleted video # " . $material->ID . $this->br(); $material->delete(); } echo "Deleted presentation # " . $p->ID . $this->br(); $p->delete(); } if (!Presentation::get()->filter('Legacy', true)->exists()) { echo "Deleted all legacy presentations" . $this->br(); } else { echo "*** FAIL: Did not delete all legacy presentations" . $this->br(); } foreach (PresentationSpeaker::get()->filter('Notes', '[LEGACY]') as $speaker) { $speaker->delete(); } if (!PresentationSpeaker::get()->filter('Notes', '[LEGACY]')->exists()) { echo "Deleted all legacy speakers" . $this->br(); } else { echo "*** FAIL: Did not delete all legacy speakers" . $this->br(); } Summit::get()->filter('Title', ['San Diego', 'Portland', 'Atlanta'])->removeAll(); if (!Summit::get()->filter('Title', ['San Diego', 'Portland', 'Atlanta'])->exists()) { echo "Deleted legacy summits" . $this->br(); } else { echo "*** FAIL: Did not delete legacy summits" . $this->br(); } }
/** * A helper method that sniffs the request for a number of parameters * that could contain the presentation ID * * @return Presentation */ protected function getPresentationFromRequest() { $presentation = false; if ($this->request->param('ID')) { $presentation = Presentation::get()->byID($this->request->param('ID')); } if (!$presentation && $this->request->requestVar('PresentationID')) { $presentation = Presentation::get()->byID($this->request->requestVar('PresentationID')); } return $presentation; }
function SaveRating() { if (!Member::currentUserID()) { return Security::permissionFailure($this); } $rating = ''; $TalkID = ''; if (isset($_GET['rating']) && is_numeric($_GET['rating'])) { $rating = $_GET['rating']; } if (isset($_GET['id']) && is_numeric($_GET['id'])) { $presentationID = $_GET['id']; } $Member = member::currentUser(); $validRatings = array(-1, 0, 1, 2, 3); if ($Member && isset($rating) && in_array((int) $rating, $validRatings, true) && $presentationID) { $previousVote = PresentationVote::get()->filter(array('PresentationID' => $presentationID, 'MemberID' => $Member->ID))->first(); $presentation = Presentation::get()->byID($presentationID); $CategoryID = Session::get('CategoryID'); if (!$previousVote) { $vote = new PresentationVote(); $vote->PresentationID = $presentationID; $vote->Vote = $rating; $vote->IP = $this->ClientIP(); $vote->MemberID = $Member->ID; $vote->write(); $this->redirectBack(); } else { $previousVote->Vote = $rating; $previousVote->IP = $this->ClientIP(); $previousVote->write(); $this->redirectBack(); } } else { return 'no rating saved.'; } }
/** * @param $event_id * @return SummitEvent * @throws Exception */ public function getEventFromSchedule($event_id) { $event = $this->Events()->filter(array('Published' => 1, 'ID' => $event_id))->first(); if ($event->ClassName == 'Presentation') { $event = Presentation::get()->byID($event_id); } return $event; }
/** * @param SS_HTTPRequest $r * @return SS_HTTPResponse * @throws ValidationException * @throws null */ public function handleReorderList(SS_HTTPRequest $r) { $vars = Convert::json2array($r->getBody()); $idList = $vars['order']; $listID = $vars['list_id']; $collection = $vars['collection']; $list = SummitSelectedPresentationList::get()->byId($listID); if (!$list->memberCanEdit()) { return $this->httpError(403, 'You cannot edit this list'); } $isTeam = $list->ListType === 'Group'; // Remove any presentations that are not in the list SummitSelectedPresentation::get()->filter(['SummitSelectedPresentationListID' => $listID, 'Collection' => $collection])->exclude(['PresentationID' => array_values($idList)])->removeAll(); if (is_array($idList)) { foreach ($idList as $order => $id) { $attributes = ['PresentationID' => $id, 'SummitSelectedPresentationListID' => $listID, 'Collection' => $collection]; $selection = SummitSelectedPresentation::get()->filter($attributes)->first(); if (!$selection) { $selection = SummitSelectedPresentation::create($attributes); if ($isTeam) { $presentation = Presentation::get()->byID($id); if ($presentation) { $presentation->addNotification('{member} added this presentation to the team list'); } } } $selection->Order = $order + 1; $selection->write(); } } return $this->ok(); }