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 $many_many = array(
- 'EventArtists' => 'EventUser',
- 'Genres' => 'Genre'
- );
- }
- class EventUser extends DataObject
- {
- private static $belongs_many_many = array(
- 'Events' => 'Event',
- 'Users' => 'User'
- );
- }
- class Genre extends DataObject
- {
- private static $db = array(
- 'GenreName' => 'Text'
- );
- private static $belongs_many_many = array(
- 'Events' => 'Event',
- 'Users' => '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('EventArtists', 'Performing Artists', $all_artists)->setMultiple(true);
- $event_genres = $event->Genres()->column('ID');
- $genres_field->setValue($event_genres);
- $event_artists = $event->EventArtists()->column('ID');
- $artists_field->setValue($event_artists);
- $fields = new FieldList(
- $title_field,
- $genres_field,
- $artists_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['EventArtists']) ? $data['EventArtists'] : array();
- foreach ($event_artists as $artist_ID) {
- $event->EventArtists()->add($artist_ID);
- }
- $event->write();
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement