| Class | Video |
| In: |
app/models/video.rb
|
| Parent: | ActiveRecord::Base |
Clase para los videos de la Web TV.
Nota sobre los idiomas: las columnas que determinan el idioma en el que
está disponible el video (show_in_es, show_in_eu y show_in_en) se actualizan automáticamente con un cronjob que llama a RAILS_ROOT/batch_processes/check_webtv_video_languages.sh Este proceso es necesario porque los videos se suben independientemente a través de SFTP
sin tener que pasar por la aplicación web.
Las columnas son necesarias para que por ejemplo en euskera, los listados solo contengan los videos disponibles en euskera
# File app/models/video.rb, line 117
117: def self.videos_in_dir(path)
118: Dir.glob(Video::VIDEO_PATH + path + "_e[sun].flv") + Dir.glob(Video::VIDEO_PATH + path + ".flv")
119: end
Indica si el usuario user puede ver el video. Sólo se usa en las búsquedas.
# File app/models/video.rb, line 113
113: def can_be_read_by?(user)
114: published?
115: end
Asegura que sólo hay un video destacado. Se llama desde before_update
# File app/models/video.rb, line 89
89: def check_only_one_featured
90: Video.update_all("featured='f'") if featured && featured_changed?
91: end
Determina si este video tiene imagen para preview
# File app/models/video.rb, line 81
81: def has_cover_photo?
82: File.exists?("#{Video::VIDEO_PATH}{video_path}.jpg")
83: end
Indica si el video está publicado
# File app/models/video.rb, line 28
28: def published?
29: !draft && !published_at.nil? && published_at <= Time.now
30: end
Indica si se muestra en Agencia. Sólo se usa en las búsquedas.
# File app/models/video.rb, line 104
104: def show_in_agencia
105: false
106: end
Indica si se muestra en Irekia. Sólo se usa en las búsquedas.
# File app/models/video.rb, line 95
95: def show_in_irekia
96: true
97: end
# File app/models/video.rb, line 56
56: def translated_to?(lang)
57: !videos[lang.to_sym].nil? || !videos[:common].nil?
58: end
Devuelve la imagen de preview para este video
# File app/models/video.rb, line 61
61: def video_preview_img
62: if !featured_video.nil?
63: video_preview_filename = featured_video.sub('.flv', '.jpg')
64: video_preview_file = "#{Video::VIDEO_PATH}#{video_preview_filename}"
65: video_preview_url = "#{Video::VIDEO_URL}#{video_preview_filename}"
66: unless File.exists?(video_preview_file)
67: # Si no esta la imagen nombre_es.jpg, buscamos nombre.jpg
68: preview_without_locale = video_preview_filename.sub(/_#{I18n.locale.to_sym}.jpg/, '.jpg')
69: if File.exists?("#{Video::VIDEO_PATH}#{preview_without_locale}")
70: video_preview_file = "#{Video::VIDEO_PATH}#{preview_without_locale}"
71: video_preview_url = "#{Video::VIDEO_URL}#{preview_without_locale}"
72: end
73: end
74: preview_img = File.exists?(video_preview_file) ? video_preview_url : "/images/video_preview.jpg"
75: else
76: preview_img = "/images/video_preview.jpg"
77: end
78: end
Devuelve el listado de videos disponible para este video. Puede haber varios, uno para cada idioma.
# File app/models/video.rb, line 39
39: def videos
40: videos = {}
41: if video_path.present?
42: videos_in_dir = Video.videos_in_dir(video_path)
43: Video::LANGUAGES.each do |l|
44: videos[l.to_sym] = "#{video_path}_#{l}.flv" if videos_in_dir.include?("#{Video::VIDEO_PATH}#{video_path}_#{l}.flv")
45: end
46: videos[:common] = "#{video_path}.flv" if videos_in_dir.include?("#{Video::VIDEO_PATH}#{video_path}.flv")
47: end
48: return videos
49: end