Advertisement
Guest User

Untitled

a guest
Aug 17th, 2014
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.48 KB | None | 0 0
  1. <?php
  2.  
  3. class Event extends DataObject
  4. {
  5.     private static $db = array(
  6.         'Title' => 'Text'
  7.     );
  8.  
  9.     private static $many_many = array(
  10.         'EventArtists' => 'EventUser',
  11.         'Genres' => 'Genre'
  12.     );
  13. }
  14.  
  15.  
  16.  
  17. class EventUser extends DataObject
  18. {
  19.     private static $belongs_many_many = array(
  20.         'Events' => 'Event',
  21.         'Users' => 'User'
  22.     );
  23. }
  24.  
  25.  
  26.  
  27. class Genre extends DataObject
  28. {
  29.     private static $db = array(
  30.         'GenreName' => 'Text'
  31.     );
  32.  
  33.     private static $belongs_many_many = array(
  34.         'Events' => 'Event',
  35.         'Users' => 'User'
  36.     );
  37. }
  38.  
  39. class EventPage_Controller extends Page_Controller
  40. {
  41.     private static $allowed_actions = array(
  42.         'EventEditForm',
  43.     );
  44.  
  45.     public function EventEditForm()
  46.     {
  47.         $title_field = TextField::create('Title', 'Title', $event->Title);
  48.  
  49.         $all_genres = Genre::get()->map('ID', 'GenreName')->toArray();
  50.         $genres_field = ListboxField::create('Genres', 'Genres', $all_genres)->setMultiple(true);
  51.  
  52.         $all_artists = User::get()->filter(
  53.             array('UserTypeID' => UserType::get()->filter(
  54.                     array('UserTypeName' => UserType::getArtistUserTypeName())
  55.                 )->first()->ID)
  56.         )->map('ID', 'FirstName')->toArray();
  57.  
  58.         $artists_field = ListboxField::create('EventArtists', 'Performing Artists', $all_artists)->setMultiple(true);
  59.  
  60.         $event_genres = $event->Genres()->column('ID');
  61.         $genres_field->setValue($event_genres);
  62.  
  63.         $event_artists = $event->EventArtists()->column('ID');
  64.         $artists_field->setValue($event_artists);
  65.  
  66.         $fields = new FieldList(
  67.             $title_field,
  68.             $genres_field,
  69.             $artists_field
  70.         );
  71.  
  72.         $actions = new FieldList(
  73.             FormAction::create('submitEventEditForm', 'Submit')
  74.         );
  75.  
  76.         $validator = new RequiredFields(
  77.             'Title'
  78.         );
  79.  
  80.         $form = Form::create($this, 'EventEditForm', $fields, $actions, $validator);
  81.  
  82.         return $form;
  83.     }
  84.  
  85.     public function submitEventEditForm($data, $form)
  86.     {
  87.         $current_user = User::currentUser();
  88.         $event_ID = $data['ID'];
  89.  
  90.         $event = Event::get()->filter(array(
  91.             'ID' => $event_ID
  92.         ))->first();
  93.  
  94.         $form->saveInto($event);
  95.  
  96.         // Update genres
  97.         $genres = isset($data['Genres']) ? $data['Genres'] : array();
  98.  
  99.         foreach ($genres as $genre_ID) {
  100.             $event->Genres()->add($genre_ID);
  101.         }
  102.        
  103.         $event_artists = isset($data['EventArtists']) ? $data['EventArtists'] : array();
  104.  
  105.         foreach ($event_artists as $artist_ID) {
  106.             $event->EventArtists()->add($artist_ID);
  107.         }
  108.  
  109.         $event->write();
  110.  
  111.         return true;
  112.     }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement