private function save() { $news = $this->get_news(); $news->set_name($this->form->get_value('name')); $news->set_id_cat($this->form->get_value('id_cat')->get_raw_value()); $news->set_contents($this->form->get_value('contents')); $news->set_short_contents($this->form->get_value('enable_short_contents') ? $this->form->get_value('short_contents') : ''); $news->set_picture(new Url($this->form->get_value('picture'))); $news->set_sources($this->form->get_value('sources')); if ($this->is_contributor_member()) { if ($news->get_id() === null) { $news->set_creation_date(new Date()); } $news->set_rewrited_name(Url::encode_rewrite($news->get_name())); $news->set_approbation_type(News::NOT_APPROVAL); $news->clean_start_and_end_date(); } else { $news->set_creation_date($this->form->get_value('creation_date')); $rewrited_name = $this->form->get_value('rewrited_name', ''); $rewrited_name = $this->form->get_value('personalize_rewrited_name') && !empty($rewrited_name) ? $rewrited_name : Url::encode_rewrite($news->get_name()); $news->set_rewrited_name($rewrited_name); $news->set_top_list_enabled($this->form->get_value('top_list')); $news->set_approbation_type($this->form->get_value('approbation_type')->get_raw_value()); if ($news->get_approbation_type() == News::APPROVAL_DATE) { $news->set_start_date($this->form->get_value('start_date')); if ($this->form->get_value('end_date_enable')) { $news->set_end_date($this->form->get_value('end_date')); } else { $news->clean_end_date(); } } else { $news->clean_start_and_end_date(); } } if ($news->get_id() === null) { $news->set_author_user(AppContext::get_current_user()); $id_news = NewsService::add($news); } else { $id_news = $news->get_id(); NewsService::update($news); } $this->contribution_actions($news, $id_news); NewsService::get_keywords_manager()->put_relations($id_news, $this->form->get_value('keywords')); Feed::clear_cache('news'); }