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)))); } }
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); }