Пример #1
0
 /**
  * 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();
 }