public function saveInto(DataObjectInterface $dataObject, $fieldList = null)
 {
     parent::saveInto($dataObject, $fieldList);
     if (!$dataObject instanceof Presentation) {
         return;
     }
     $presentation = $dataObject;
     $old_materials = $presentation->Materials()->filter('ClassName', 'PresentationLink');
     foreach ($old_materials as $o) {
         $o->Delete();
     }
     for ($i = 1; $i <= 5; $i++) {
         $field = $this->fields->fieldByName("PresentationLink[{$i}]");
         if (is_null($field)) {
             continue;
         }
         $val = $field->Value();
         if (empty($val)) {
             continue;
         }
         $presentation->Materials()->add(PresentationLink::create(array('Link' => trim($val))));
     }
 }
Beispiel #2
0
 public function saveInto(DataObjectInterface $dataObject, $fieldList = null)
 {
     parent::saveInto($dataObject, $fieldList);
     if (!$dataObject instanceof PresentationSpeaker) {
         return;
     }
     $speaker = $dataObject;
     $speaker->AreasOfExpertise()->removeAll();
     for ($i = 1; $i <= 5; $i++) {
         $field = $this->fields->fieldByName("Expertise[{$i}]");
         if (is_null($field)) {
             continue;
         }
         $val = $field->Value();
         if (empty($val)) {
             continue;
         }
         $speaker->AreasOfExpertise()->add(SpeakerExpertise::create(array('Expertise' => trim($val))));
     }
     $speaker->Languages()->removeAll();
     for ($i = 1; $i <= 5; $i++) {
         $field = $this->fields->fieldByName("Language[{$i}]");
         if (is_null($field)) {
             continue;
         }
         $val = $field->Value();
         if (empty($val)) {
             continue;
         }
         $speaker->Languages()->add(SpeakerLanguage::create(array('Language' => trim($val))));
     }
     $speaker->OtherPresentationLinks()->removeAll();
     for ($i = 1; $i <= 5; $i++) {
         $link = $this->fields->fieldByName("PresentationLink[{$i}]");
         $title = $this->fields->fieldByName("PresentationTitle[{$i}]");
         if (is_null($link)) {
             continue;
         }
         $link_val = $link->Value();
         $title_val = is_null($title) ? '' : $title->Value();
         if (empty($link_val)) {
             continue;
         }
         $speaker->OtherPresentationLinks()->add(SpeakerPresentationLink::create(array('LinkUrl' => trim($link_val), 'Title' => trim($title_val))));
     }
     $countries_2_travel = $this->fields->fieldByName('CountriesToTravel');
     if (!is_null($countries_2_travel)) {
         $speaker->TravelPreferences()->removeAll();
         $country_array = $countries_2_travel->Value();
         foreach ($country_array as $country_name) {
             $speaker->TravelPreferences()->add(SpeakerTravelPreference::create(array('Country' => $country_name)));
         }
     }
 }
 public function saveInto(DataObjectInterface $dataObject, $fieldList = null)
 {
     parent::saveInto($dataObject, $fieldList);
     if (!$dataObject instanceof Presentation) {
         return;
     }
     $presentation = $dataObject;
     $old_materials = $presentation->Materials()->filter('ClassName', 'PresentationLink');
     foreach ($old_materials as $o) {
         $o->Delete();
     }
     for ($i = 1; $i <= 5; $i++) {
         $field = $this->fields->fieldByName("PresentationLink[{$i}]");
         if (is_null($field)) {
             continue;
         }
         $val = $field->Value();
         if (empty($val)) {
             continue;
         }
         $presentation = PresentationLink::create(['Name' => trim($val), 'Link' => trim($val)]);
         $presentation->Materials()->add($presentation);
     }
     $extra_questions = $presentation->Category()->Exists() ? $presentation->Category()->ExtraQuestions() : array();
     foreach ($extra_questions as $question) {
         $field = $this->fields->fieldByName($question->Name);
         if (is_null($field)) {
             continue;
         }
         $answer_value = $field->Value();
         if (empty($answer_value)) {
             continue;
         }
         if (!($answer = $presentation->findAnswerByQuestion($question))) {
             $answer = new TrackAnswer();
         }
         if (is_array($answer_value)) {
             $answer_value = str_replace('{comma}', ',', $answer_value);
             $answer->Value = implode(',', $answer_value);
         } else {
             $answer->Value = $answer_value;
         }
         $answer->QuestionID = $question->getIdentifier();
         $answer->write();
         $presentation->ExtraAnswers()->add($answer);
     }
 }
 public function saveInto(DataObjectInterface $dataObject, $fieldList = null)
 {
     parent::saveInto($dataObject, $fieldList);
     if (!$dataObject instanceof PresentationSpeaker) {
         return;
     }
     $speaker = $dataObject;
     $expertise_csv = $this->fields->fieldByName("Expertise")->Value();
     $expertise_array = explode(',', $expertise_csv);
     $exp_ids = array();
     if ($expertise_array) {
         foreach ($expertise_array as $expertise) {
             if (empty($expertise)) {
                 continue;
             }
             $expertise = Convert::raw2sql(trim($expertise));
             if (!($anexp = $speaker->AreasOfExpertise()->find('Expertise', $expertise))) {
                 $anexp = SpeakerExpertise::create(array('Expertise' => $expertise));
             }
             $anexp->write();
             $exp_ids[] = $anexp->ID;
         }
     }
     $speaker->AreasOfExpertise()->setByIdList($exp_ids);
     $language_csv = $this->fields->fieldByName("Language")->Value();
     $language_array = explode(',', $language_csv);
     $lang_ids = array();
     if ($language_array) {
         foreach ($language_array as $language) {
             if (empty($language)) {
                 continue;
             }
             $language = Convert::raw2sql(trim($language));
             if (!($alang = $speaker->Languages()->find('Language', $language))) {
                 $alang = SpeakerLanguage::create(array('Language' => $language));
             }
             $alang->write();
             $lang_ids[] = $alang->ID;
         }
     }
     $speaker->Languages()->setByIdList($lang_ids);
     $link_ids = array();
     for ($i = 1; $i <= 5; $i++) {
         $link = $this->fields->fieldByName("PresentationLink[{$i}]");
         $title = $this->fields->fieldByName("PresentationTitle[{$i}]");
         if (is_null($link)) {
             continue;
         }
         $link_val = Convert::raw2sql(trim($link->Value()));
         if (empty($link_val)) {
             continue;
         }
         $title_val = is_null($title) ? '' : Convert::raw2sql(trim($title->Value()));
         if (!($alink = $speaker->OtherPresentationLinks()->find('LinkUrl', $link_val))) {
             $alink = SpeakerPresentationLink::create(array('LinkUrl' => $link_val, 'Title' => $title_val));
         } else {
             $alink->Title = $title_val;
         }
         $alink->write();
         $link_ids[] = $alink->ID;
     }
     $speaker->OtherPresentationLinks()->setByIdList($link_ids);
     $roles = $this->fields->fieldByName("OrganizationalRole")->Value();
     if ($roles && in_array(0, $roles)) {
         // 0 is the id for Other
         $other_role = $this->fields->fieldByName("OtherOrganizationalRole")->Value();
         $other_role = Convert::raw2sql(trim($other_role));
         $new_role = SpeakerOrganizationalRole::get()->where("Role = '{$other_role}' ")->first();
         if (!$new_role) {
             $new_role = new SpeakerOrganizationalRole(array('Role' => $other_role, 'IsDefault' => 0));
             $new_role->write();
         }
         array_pop($roles);
         $roles[] = $new_role->ID;
     }
     $speaker->OrganizationalRoles()->setByIdList($roles);
     $countries_2_travel = $this->fields->fieldByName('CountriesToTravel');
     $country_ids = array();
     if (!is_null($countries_2_travel)) {
         $country_array = $countries_2_travel->Value();
         if ($country_array) {
             foreach ($country_array as $country_name) {
                 $country_name = Convert::raw2sql(trim($country_name));
                 if (!($acountry = $speaker->TravelPreferences()->find('Country', $country_name))) {
                     $acountry = SpeakerTravelPreference::create(array('Country' => $country_name));
                 }
                 $acountry->write();
                 $country_ids[] = $acountry->ID;
             }
         }
     }
     $speaker->TravelPreferences()->setByIdList($country_ids);
 }