PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/application/controllers/cvideo.php

https://bitbucket.org/driesmarien/zidisweb
PHP | 298 lines | 222 code | 47 blank | 29 comment | 19 complexity | 8d35f6d8c56d614df84c43b774472cb6 MD5 | raw file
Possible License(s): MIT, LGPL-2.1
  1. <?php
  2. class Cvideo_Controller extends Base_Controller
  3. {
  4. public $restful = true;
  5. public function post_upload()
  6. {
  7. $project_id = Input::get('project_id');
  8. $project = Project::find($project_id);
  9. $truvo = $project->is_truvo;
  10. try{
  11. if($truvo){
  12. //special namings for truvo projects
  13. $filename = $project->truvo_id .'.'. File::extension(Input::get('videofileValue'));
  14. //$path = path('public').'uploads'.DS.'projects'.DS.'truvo_'.$project->truvo_id.DS.$project->truvo_id.DS.'mysite'.DS.'video';
  15. $path = path('public').'uploads'.DS.'projects'.DS.'truvo_'.$project->truvo_id.DS.$project->truvo_id.DS.'mysite'.DS.'video';
  16. }else{
  17. //default namings
  18. $filename = $project_id . '_'.Input::get('newVideoFile_id') . '_'.Input::get('videofileValue');
  19. $path = path('public').'uploads'.DS.'projects'.DS.'zidis_'.$project_id.DS.'video_'.Input::get('newVideoFile_id');
  20. }
  21. if(!is_dir($path)){
  22. mkdir($path, 0777, true);
  23. }
  24. Input::upload('videofile', $path, $filename);
  25. //echo (disk_free_space(path('public').'uploads/projects/video')/pow(1024, 3)) . ' Gb';
  26. $vimeo = IoC::resolve('vimeo-api');
  27. $vimeo_id = $vimeo->upload($path.DS.$filename);
  28. if($vimeo_id){
  29. $video = Video::find(Input::get('newVideoFile_id'));
  30. if($truvo){
  31. //Truvo projects are saved on the server for a while
  32. $video->file_path = $path.DS.$filename;
  33. }else{
  34. //Video files of non-truvo projects can immediately be deleted when they are on vimeo
  35. File::delete($path.DS.$filename);
  36. }
  37. $video->vimeo_id = $vimeo_id;
  38. $video->save();
  39. return Redirect::back()
  40. ->with_lang_message('messages.videofileadded','success');
  41. }
  42. }catch(ErrorException $e)
  43. {
  44. Log::write('error', $e);
  45. return Redirect::back()
  46. ->with_lang_message('messages.unknownerror','error');
  47. }
  48. }
  49. public function post_uploadftp()
  50. {
  51. $project_id = Input::get('project_id');
  52. $project = Project::find($project_id);
  53. $truvo = $project->is_truvo;
  54. try{
  55. $uploadedPath = path('public').'uploads'.DS.'tempVideo';
  56. $latest_ctime = 0;
  57. $latest_filename = '';
  58. $d = dir($uploadedPath);
  59. while (false !== ($entry = $d->read())) {
  60. $filepath = "{$uploadedPath}/{$entry}";
  61. // could do also other checks than just checking whether the entry is a file
  62. if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
  63. $latest_ctime = filectime($filepath);
  64. $latest_filename = $entry;
  65. }
  66. }
  67. if($truvo){
  68. //special namings for truvo projects
  69. $filename = $project->truvo_id .'.'. File::extension($latest_filename);
  70. //Old zip structure
  71. $path = path('public').'uploads'.DS.'projects'.DS.'truvo_'.$project->truvo_id.DS.$project->truvo_id.DS.'mysite'.DS.'video';
  72. //New zip structure
  73. //$path = path('public').'uploads'.DS.'projects'.DS.'truvo_'.$project->truvo_id.DS.$project->truvo_id;
  74. }else{
  75. //default namings
  76. $filename = $project_id . '_'.Input::get('videoFileFTP_id') . '_'.$latest_filename;
  77. $path = path('public').'uploads'.DS.'projects'.DS.'zidis_'.$project_id.DS.'video_'.Input::get('videoFileFTP_id');
  78. }
  79. if(!is_dir($path)){
  80. mkdir($path, 0777, true);
  81. }
  82. copy($uploadedPath.DS.$latest_filename, $path.DS.$filename);
  83. File::delete($uploadedPath.DS.$latest_filename);
  84. //echo (disk_free_space(path('public').'uploads/projects/video')/pow(1024, 3)) . ' Gb';
  85. $vimeo = IoC::resolve('vimeo-api');
  86. $vimeo_id = $vimeo->upload($path.DS.$filename);
  87. if($vimeo_id){
  88. $video = Video::find(Input::get('videoFileFTP_id'));
  89. if($truvo){
  90. //Truvo projects are saved on the server for a while
  91. $video->file_path = $path.DS.$filename;
  92. }else{
  93. //Video files of non-truvo projects can immediately be deleted when they are on vimeo
  94. File::delete($path.DS.$filename);
  95. }
  96. $video->vimeo_id = $vimeo_id;
  97. $video->save();
  98. return Redirect::back()
  99. ->with_lang_message('messages.videofileadded','success');
  100. }
  101. }catch(ErrorException $e)
  102. {
  103. Log::write('error', $e);
  104. return Redirect::back()
  105. ->with_lang_message('messages.unknownerror','error');
  106. }
  107. }
  108. public function post_uploadThumbnail()
  109. {
  110. try{
  111. $project_id = Input::get('project_id');
  112. $project = Project::find($project_id);
  113. $truvo = $project->is_truvo;
  114. if($truvo){
  115. //special namings for truvo projects
  116. $filename = $project->truvo_id .'_hd.'. File::extension(Input::get('thumbnailValue'));
  117. $extraPath = path('public').'uploads'.DS.'projects'.DS.'truvo_'.$project->truvo_id.DS.$project->truvo_id.DS.$project->truvo_id;
  118. $path = DS.'uploads'.DS.'projects'.DS.'truvo_'.$project->truvo_id.DS.$project->truvo_id.DS.'mysite'.DS.'video'.DS.'thumbnail';
  119. //Old zip structure
  120. $uploadPath = path('public').'uploads'.DS.'projects'.DS.'truvo_'.$project->truvo_id.DS.$project->truvo_id.DS.'mysite'.DS.'video'.DS.'thumbnail';
  121. //Old zip structure
  122. if(!is_dir($extraPath)){
  123. mkdir($extraPath, 0777, true);
  124. }
  125. }else{
  126. //default namings
  127. $filename = $project_id . '_thumbnail_'.Input::get('newThumbnailVideo_id') . '_'.Input::get('thumbnailValue');
  128. $uploadPath = path('public').'uploads'.DS.'projects'.DS.'zidis_'.$project->id.DS.'video_'.Input::get('newVideoFile_id');
  129. $path = DS.'uploads'.DS.'projects'.DS.'zidis_'.$project->id.DS.'video_'.Input::get('newVideoFile_id');
  130. }
  131. if(!is_dir($uploadPath)){
  132. mkdir($uploadPath, 0777, true);
  133. }
  134. Input::upload('thumbnail', $uploadPath, $filename);
  135. if($truvo){
  136. try{
  137. Resizer::open($uploadPath.DS.$filename)
  138. ->resize(100, 90, 'exact')
  139. ->save($extraPath.DS.$project->truvo_id .'_t.'. File::extension(Input::get('thumbnailValue')), 90);
  140. //copy($uploadPath.DS.$filename, $extraPath.DS.$project->truvo_id .'_t.'. File::extension(Input::get('thumbnailValue')));
  141. }catch(Exception $e){
  142. File::delete($uploadPath.DS.$filename);
  143. Log::error($e);
  144. return Redirect::back()
  145. ->with_lang_message('messages.imageresizeerror','error');
  146. }
  147. }
  148. $thumbnail = Thumbnail::create(array(
  149. 'video_id' => Input::get('newThumbnailVideo_id'),
  150. 'url' => $path.DS. $filename,
  151. 'description' => Input::get('description')
  152. ));
  153. return Redirect::back()
  154. ->with_lang_message('messages.thumbnailadded','success');
  155. }catch(ErrorException $e)
  156. {
  157. Log::write('error', $e);
  158. return Redirect::back()
  159. ->with_lang_message('messages.unknownerror','error');
  160. }
  161. }
  162. //Update name and type of video
  163. public function post_updateVideo()
  164. {
  165. $video = Video::find(Input::get('video'));
  166. $video->name = Input::get('videoname');
  167. $video->productcode_id = Input::get('productcode'.Input::get('video'));
  168. $video->language_id = Input::get('videoLanguage'.Input::get('video'));
  169. $video->save();
  170. return true;
  171. }
  172. //Remove video from a project
  173. public function post_removeVideo()
  174. {
  175. $video = Video::find(Input::get('video'));
  176. if(!$video->removeVideo()){
  177. return Redirect::back()
  178. ->with_lang_message('messages.errordeletevimeo','error');
  179. }
  180. return Redirect::back()
  181. ->with_lang_message('messages.videodeleted','success');
  182. }
  183. //Remove video from a project
  184. public function post_removeVideoFile()
  185. {
  186. $video = Video::find(Input::get('video'));
  187. if(!$video->removeVideoFile()){
  188. return Redirect::back()
  189. ->with_lang_message('messages.errordeletevimeo','error');
  190. }
  191. return Redirect::back()
  192. ->with_lang_message('messages.videodeleted','success');
  193. }
  194. //add video to a project
  195. public function post_newVideo()
  196. {
  197. $project_id = Input::get('project_id');
  198. $video = Video::create(array(
  199. 'project_id' => $project_id,
  200. 'name' => Input::get('newVideoName'),
  201. 'productcode_id' => Input::get('newVideoProductcode'),
  202. 'language_id' => Input::get('newVideoLanguage')
  203. ));
  204. return Redirect::back()
  205. ->with_lang_message('messages.videoadded','success');
  206. }
  207. //add a subtitle container, not the actual file
  208. public function post_newSub()
  209. {
  210. $video = Video::find(Input::get('newSubVideo_id'));
  211. $video->addSub(Input::get('description'));
  212. return Redirect::back()
  213. ->with_lang_message('messages.subadded','success');
  214. }
  215. //actually upload a subtitle file
  216. public function post_uploadSub()
  217. {
  218. try{
  219. $project_id = Input::get('project_id');
  220. $project = Project::find($project_id);
  221. $truvo = $project->is_truvo;
  222. $subtitle = Subtitle::find(Input::get('newSubFile_id'));
  223. if($truvo){
  224. //special namings for truvo projects
  225. $filename = 'sub-' . $project->truvo_id .'.'. File::extension(Input::get('subfileValue'));
  226. $relpath = 'uploads'.DS.'projects'.DS.'truvo_'.$project->truvo_id.DS.$project->truvo_id.DS.$filename;
  227. $path = path('public').'uploads'.DS.'projects'.DS.'truvo_'.$project->truvo_id.DS.$project->truvo_id;
  228. //$extraPath = path('public').'uploads'.DS.'projects'.DS.'truvo_'.$project->truvo_id.DS.$project->truvo_id.DS.'mysite'.DS.'video'.DS.'thumbnail';
  229. }else{
  230. //default namings
  231. $filename = $project_id . '_subtitle_'.Input::get('newSubFile_id') . '_'.Input::get('subfileValue');
  232. $relpath = 'uploads'.DS.'projects'.DS.'zidis_'.$project->id.DS.'video_'.Input::get('newVideoFile_id').DS.$filename;
  233. $path = path('public').'uploads'.DS.'projects'.DS.'zidis_'.$project->id.DS.'video_'.Input::get('newVideoFile_id');
  234. }
  235. if(!is_dir($path)){
  236. mkdir($path, 0777, true);
  237. }
  238. Input::upload('subfile', $path, $filename);
  239. $subtitle->url = $relpath;
  240. $subtitle->save();
  241. return Redirect::back()
  242. ->with_lang_message('messages.subfileadded','success');
  243. }catch(ErrorException $e)
  244. {
  245. Log::write('error', $e);
  246. return Redirect::back()
  247. ->with_lang_message('messages.unknownerror','error');
  248. }
  249. }
  250. }
  251. ?>