/** * Saves one media metadata * */ public function save() { // Clear the cache Cache()->clear_cache(); // Standard data; $data = array(); // Standard fields $fields = $this->db->list_fields('media'); foreach ($fields as $field) { if ($this->input->post($field) !== FALSE) { $data[$field] = htmlentities($this->input->post($field), ENT_QUOTES, 'utf-8'); } } // Lang data $lang_data = array(); $fields = $this->db->list_fields('media_lang'); foreach (Settings::get_languages() as $language) { foreach ($fields as $field) { if ($this->input->post($field . '_' . $language['lang']) !== FALSE) { $lang_data[$language['lang']][$field] = htmlentities($this->input->post($field . '_' . $language['lang']), ENT_QUOTES, 'utf-8'); } } } // Event $event_data = array('base' => $data, 'lang' => $lang_data); $event_received = Event::fire('Media.save.before', $event_data); $event_received = array_pop($event_received); if (!empty($event_received['base']) && !empty($event_received['lang'])) { $data = $event_received['base']; $lang_data = $event_received['lang']; } // Database save $id_media = $this->media_model->save($data, $lang_data); // Event $event_data = array('base' => $data, 'lang' => $lang_data); Event::fire('Media.save.success', $event_data); // Save extend fields data $this->extend_field_model->save_data('media', $id_media, $_POST); // Save parent context data $this->media_model->save_context_data($_POST); $media = $this->media_model->get($id_media, Settings::get_lang('default')); // Delete picture thumbnails if ($media['type'] == 'picture') { $this->medias->delete_thumbs($media); } if ($id_media !== FALSE) { // Success Message $this->callback = array(array('fn' => 'mediaManager.loadMediaList', 'args' => $media['type']), array('fn' => 'ION.notification', 'args' => array('success', lang('ionize_message_media_data_saved')))); } else { Event::fire('Media.save.error'); // Error Message $this->callback[] = array('fn' => 'ION.notification', 'args' => array('error', lang('ionize_message_media_data_not_saved'))); } $this->response(); }