/**
  * 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.";
 }
Exemplo n.º 7
0
         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
Exemplo n.º 8
0
 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);
 }
Exemplo n.º 9
0
 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();
     }
 }
Exemplo n.º 17
0
 /**
  * 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;
 }
Exemplo n.º 18
0
 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.';
     }
 }
Exemplo n.º 19
0
 /**
  * @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;
 }
Exemplo n.º 20
0
 /**
  * @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();
 }