Advertisement
Guest User

Untitled

a guest
Aug 17th, 2014
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.33 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 $has_many = array(
  10.         'EventArtists' => 'EventUser',
  11.         'EventVenues' => 'EventUser'
  12.     );
  13.  
  14.     private static $many_many = array(
  15.         'Genres' => 'Genre'
  16.     );
  17. }
  18.  
  19.  
  20.  
  21. class EventUser extends DataObject
  22. {
  23.     private static $has_one = array(
  24.         'Event' => 'Event',
  25.         'User' => 'User'
  26.     );
  27. }
  28.  
  29.  
  30.  
  31. class EventPage_Controller extends Page_Controller
  32. {
  33.     private static $allowed_actions = array(
  34.         'EventEditForm',
  35.     );
  36.  
  37.     public function EventEditForm()
  38.     {
  39.         $title_field = TextField::create('Title', 'Title', $event->Title);
  40.  
  41.         $all_genres = Genre::get()->map('ID', 'GenreName')->toArray();
  42.         $genres_field = ListboxField::create('Genres', 'Genres', $all_genres)->setMultiple(true);
  43.  
  44.         $all_artists = User::get()->filter(
  45.             array('UserTypeID' => UserType::get()->filter(
  46.                     array('UserTypeName' => UserType::getArtistUserTypeName())
  47.                 )->first()->ID)
  48.         )->map('ID', 'FirstName')->toArray();
  49.  
  50.         $artists_field = ListboxField::create('Artists', 'Performing Artists', $all_artists)->setMultiple(true);
  51.        
  52.         $all_venues = User::get()->filter(
  53.             array('UserTypeID' => UserType::get()->filter(
  54.                     array('UserTypeName' => UserType::getVenueUserTypeName())
  55.                 )->first()->ID)
  56.         )->map('ID', 'FirstName')->toArray();
  57.  
  58.         $venues_field = ListboxField::create('Venues', 'Venues', $all_venues)->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.         $event_venues = $event->EventVenues()->column('UserID');
  67.         $venues_field->setValue($event_venues);
  68.  
  69.         $fields = new FieldList(
  70.             $title_field,
  71.             $genres_field,
  72.             $artists_field,
  73.             $venues_field
  74.         );
  75.  
  76.         $actions = new FieldList(
  77.             FormAction::create('submitEventEditForm', 'Submit')
  78.         );
  79.  
  80.         $validator = new RequiredFields(
  81.             'Title'
  82.         );
  83.  
  84.         $form = Form::create($this, 'EventEditForm', $fields, $actions, $validator);
  85.  
  86.         return $form;
  87.     }
  88.  
  89.     public function submitEventEditForm($data, $form)
  90.     {
  91.         $current_user = User::currentUser();
  92.         $event_ID = $data['ID'];
  93.  
  94.         $event = Event::get()->filter(array(
  95.             'ID' => $event_ID
  96.         ))->first();
  97.  
  98.         $form->saveInto($event);
  99.  
  100.         // Update genres
  101.         $genres = isset($data['Genres']) ? $data['Genres'] : array();
  102.  
  103.         foreach ($genres as $genre_ID) {
  104.             $event->Genres()->add($genre_ID);
  105.         }
  106.        
  107.         $event_artists = isset($data['Artists']) ? $data['Artists'] : array();
  108.  
  109.         foreach ($event_artists as $artist_ID) {
  110.             $event_user = new EventUser();
  111.  
  112.             $event_user->UserID = $artist_ID;
  113.             $event_user->EventID = $event->ID;
  114.  
  115.             $event_user->write();
  116.             $event->EventArtists()->add($event_user);
  117.         }
  118.        
  119.         $event_venues = isset($data['Venues']) ? $data['Venues'] : array();
  120.         $current_event_venues = $event->EventVenues()->column('UserID');
  121.  
  122.         foreach ($event_venues as $venue_ID) {
  123.             $event_user = new EventUser();
  124.  
  125.             $event_user->UserID = $venue_ID;
  126.             $event_user->EventID = $event->ID;
  127.  
  128.             $event_user->write();
  129.             $event->EventVenues()->add($event_user);
  130.         }
  131.  
  132.         $event->write();
  133.  
  134.         return true;
  135.     }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement