Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Event extends DataObject
- {
- private static $db = array(
- 'Title' => 'Text'
- );
- private static $has_many = array(
- 'EventArtists' => 'EventUser',
- 'EventVenues' => 'EventUser'
- );
- private static $many_many = array(
- 'Genres' => 'Genre'
- );
- }
- class EventUser extends DataObject
- {
- private static $has_one = array(
- 'Event' => 'Event',
- 'User' => 'User'
- );
- }
- class EventPage_Controller extends Page_Controller
- {
- private static $allowed_actions = array(
- 'EventEditForm',
- );
- public function EventEditForm()
- {
- $title_field = TextField::create('Title', 'Title', $event->Title);
- $all_genres = Genre::get()->map('ID', 'GenreName')->toArray();
- $genres_field = ListboxField::create('Genres', 'Genres', $all_genres)->setMultiple(true);
- $all_artists = User::get()->filter(
- array('UserTypeID' => UserType::get()->filter(
- array('UserTypeName' => UserType::getArtistUserTypeName())
- )->first()->ID)
- )->map('ID', 'FirstName')->toArray();
- $artists_field = ListboxField::create('Artists', 'Performing Artists', $all_artists)->setMultiple(true);
- $all_venues = User::get()->filter(
- array('UserTypeID' => UserType::get()->filter(
- array('UserTypeName' => UserType::getVenueUserTypeName())
- )->first()->ID)
- )->map('ID', 'FirstName')->toArray();
- $venues_field = ListboxField::create('Venues', 'Venues', $all_venues)->setMultiple(true);
- $event_genres = $event->Genres()->column('ID');
- $genres_field->setValue($event_genres);
- $event_artists = $event->EventArtists()->column('ID');
- $artists_field->setValue($event_artists);
- $event_venues = $event->EventVenues()->column('UserID');
- $venues_field->setValue($event_venues);
- $fields = new FieldList(
- $title_field,
- $genres_field,
- $artists_field,
- $venues_field
- );
- $actions = new FieldList(
- FormAction::create('submitEventEditForm', 'Submit')
- );
- $validator = new RequiredFields(
- 'Title'
- );
- $form = Form::create($this, 'EventEditForm', $fields, $actions, $validator);
- return $form;
- }
- public function submitEventEditForm($data, $form)
- {
- $current_user = User::currentUser();
- $event_ID = $data['ID'];
- $event = Event::get()->filter(array(
- 'ID' => $event_ID
- ))->first();
- $form->saveInto($event);
- // Update genres
- $genres = isset($data['Genres']) ? $data['Genres'] : array();
- foreach ($genres as $genre_ID) {
- $event->Genres()->add($genre_ID);
- }
- $event_artists = isset($data['Artists']) ? $data['Artists'] : array();
- foreach ($event_artists as $artist_ID) {
- $event_user = new EventUser();
- $event_user->UserID = $artist_ID;
- $event_user->EventID = $event->ID;
- $event_user->write();
- $event->EventArtists()->add($event_user);
- }
- $event_venues = isset($data['Venues']) ? $data['Venues'] : array();
- $current_event_venues = $event->EventVenues()->column('UserID');
- foreach ($event_venues as $venue_ID) {
- $event_user = new EventUser();
- $event_user->UserID = $venue_ID;
- $event_user->EventID = $event->ID;
- $event_user->write();
- $event->EventVenues()->add($event_user);
- }
- $event->write();
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement