From 72124632e6045cca3a516b6dd45a945a89db3432 Mon Sep 17 00:00:00 2001 From: tamplan Date: Sun, 29 Jan 2012 15:59:49 +0100 Subject: [PATCH] Download movies and/or episodes works now --- application/controllers/files.php | 64 ++++++++++ application/helpers/my_download_helper.php | 120 ++++++++++++++++++ application/models/video/episodes_model.php | 39 +++--- application/models/video/movies_model.php | 2 +- .../views/content/video/episodes/view.php | 5 + .../views/content/video/movies/view.php | 5 + .../views/includes/buttons/download.php | 5 +- assets/scripts/download.js | 9 ++ 8 files changed, 230 insertions(+), 19 deletions(-) create mode 100644 application/controllers/files.php create mode 100644 application/helpers/my_download_helper.php create mode 100644 assets/scripts/download.js diff --git a/application/controllers/files.php b/application/controllers/files.php new file mode 100644 index 0000000..a3225b9 --- /dev/null +++ b/application/controllers/files.php @@ -0,0 +1,64 @@ +load->model('video/actors_model'); + $this->load->model('video/countries_model'); + $this->load->model('video/episodes_model'); + $this->load->model('video/video_files_model'); + $this->load->model('video/genres_model'); + $this->load->model('video/movies_model'); + $this->load->model('video/video_paths_model'); + $this->load->model('xbmc/sources_model'); + $this->load->model('video/sets_model'); + $this->load->model('video/studios_model'); + $this->load->model('video/tvshows_model'); + } + + /** + * Demande à télécharger un film ou un épisode + */ + public function ajax_download() + { + // L'utilisateur connecté peut télécharger des vidéos ? + if ($this->session->userdata('can_download_video')) + { + // Champ concerné par la modification + list($type, $id) = explode('_', $this->uri->segments[3]); + + switch($type) + { + case 'movie': + $files = $this->movies_model->get($id, FALSE); + $filename = $files[0]->filename; + $path = str_replace($files[0]->source->client_path, $files[0]->source->server_path, $files[0]->path); + break; + + case 'episode': + $files = $this->episodes_model->get($id, FALSE); + $filename = $files[0]->filename; + $path = str_replace($files[0]->source->client_path, $files[0]->source->server_path, $files[0]->path); + break; + } + + // Chargement de la focntion 'force_download' + $this->load->helper('MY_download'); + + // Force le téléchargement du fichier + force_download($filename, $path.$filename); + } + + // Sortie avec téléchargement de fichier ou pas + die(); + } + +} + +/* End of file files.php */ +/* Location: ./system/application/controllers/files.php */ diff --git a/application/helpers/my_download_helper.php b/application/helpers/my_download_helper.php new file mode 100644 index 0000000..3a1761e --- /dev/null +++ b/application/helpers/my_download_helper.php @@ -0,0 +1,120 @@ +{$this->_db_group_name}->select($fields) ->from('episodeview') ->order_by('idShow', 'ASC') ->order_by('season_number', 'ASC') ->order_by('episode_number', 'ASC') - ->where_in('idEpisode', $episode_id) + ->where_in('idEpisode', $idEpisode) ->get() ->result(); } @@ -125,7 +128,7 @@ function get($episode_id) { $results = $this->{$this->_db_group_name}->select($fields) ->from('episodeview') - ->where('idEpisode', $episode_id) + ->where('idEpisode', $idEpisode) ->get() ->result(); } @@ -178,17 +181,21 @@ function get($episode_id) else $episode->runtime = $this->lang->line('media_no_runtime'); - $episode->poster_url = $result->poster_url; - $episode->tvshow_id = $result->idShow; - $episode->tvshow_name = $result->strTitle; - $episode->season_number = $result->season_number; - $episode->episode_number = $result->episode_number; + // Consulation de la page détaillée d'un épisode ? + if ($for_view) + { + $episode->poster_url = $result->poster_url; + $episode->tvshow_id = $result->idShow; + $episode->tvshow_name = $result->strTitle; + $episode->season_number = $result->season_number; + $episode->episode_number = $result->episode_number; - $episode->poster = $this->xbmc_lib->get_episode_poster($episode); + $episode->poster = $this->xbmc_lib->get_episode_poster($episode); - $episode->writers = $this->_CI->actors_model->get_writers_for_episode($episode->id); - $episode->directors = $this->_CI->actors_model->get_directors_for_episode($episode->id); - $episode->actors = $this->_CI->actors_model->get_actors_for_episode($episode->id); + $episode->writers = $this->_CI->actors_model->get_writers_for_episode($episode->id); + $episode->directors = $this->_CI->actors_model->get_directors_for_episode($episode->id); + $episode->actors = $this->_CI->actors_model->get_actors_for_episode($episode->id); + } // Ajoût de l'épisode dans un tableau pour retour $episodes[] = $episode; @@ -199,7 +206,7 @@ function get($episode_id) $episodes = array(); } - // On retourne le(s) film(s) trouvé(s) ou NULL + // On retourne le ou les épisode(s) trouvé(s) ou un tableau vide return $episodes; } diff --git a/application/models/video/movies_model.php b/application/models/video/movies_model.php index 5e47084..12aa32c 100644 --- a/application/models/video/movies_model.php +++ b/application/models/video/movies_model.php @@ -804,7 +804,7 @@ function get_all($limit = NULL, $offset = NULL) } // On récupère enfin les films - $movies = $this->movies_model->get($idsMovie); + $movies = $this->get($idsMovie); } else { diff --git a/application/views/content/video/episodes/view.php b/application/views/content/video/episodes/view.php index e98c977..1747e18 100644 --- a/application/views/content/video/episodes/view.php +++ b/application/views/content/video/episodes/view.php @@ -1,6 +1,7 @@ @@ -9,6 +10,10 @@ +session->userdata('can_download_video')): ?> + + +
diff --git a/application/views/content/video/movies/view.php b/application/views/content/video/movies/view.php index 5bbad49..e812c24 100644 --- a/application/views/content/video/movies/view.php +++ b/application/views/content/video/movies/view.php @@ -9,6 +9,7 @@ +session->userdata('can_download_video')): ?> + + + session->userdata('can_change_images')) { diff --git a/application/views/includes/buttons/download.php b/application/views/includes/buttons/download.php index 579cff4..497f660 100644 --- a/application/views/includes/buttons/download.php +++ b/application/views/includes/buttons/download.php @@ -1,3 +1,4 @@ \ No newline at end of file + lang->line('btn_download'); ?> + + \ No newline at end of file diff --git a/assets/scripts/download.js b/assets/scripts/download.js new file mode 100644 index 0000000..f4ba556 --- /dev/null +++ b/assets/scripts/download.js @@ -0,0 +1,9 @@ +jQuery(document).ready(function() { + + // Attache le téléchargement d'un film ou d'un épisode + $("#download-button").click(function(){ + $("#download_frame").attr("src",site_url+"files/download/"+media_id); + return false; + }); + +});