PageRenderTime 77ms CodeModel.GetById 8ms RepoModel.GetById 1ms app.codeStats 0ms

/app/Http/Controllers/VideoController.php

https://gitlab.com/macitsimsek/fastsubtitle
PHP | 644 lines | 586 code | 50 blank | 8 comment | 55 complexity | 31fe87e227db4a9754223fbadddf2f99 MD5 | raw file
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Alaouy\Youtube\Facades\Youtube;
  4. use App\Functions;
  5. use App\People;
  6. use App\VideoComment;
  7. use App\VideoFollower;
  8. use App\VideoPeople;
  9. use App\VideoProperty;
  10. use App\Activity;
  11. use App\User;
  12. use Carbon\Carbon;
  13. use Illuminate\Http\Request;
  14. use Illuminate\Support\Facades\Cookie;
  15. use Illuminate\Support\Facades\DB;
  16. use Illuminate\Support\Facades\Session;
  17. use Illuminate\Support\Facades\Validator;
  18. use Illuminate\Support\Facades\Input;
  19. use Stichoza\GoogleTranslate\TranslateClient;
  20. class VideoController extends Controller{
  21. public function getFromImdb(Request $request){
  22. $sorgu = $request['sorgu'];
  23. $sorgu = str_replace(" ", "+", $sorgu);
  24. $page = file_get_contents('http://www.imdb.com/find?q='.$sorgu);
  25. $parcala = ('@<tr class="(.*?)"> <td class="primary_photo"> <a href="(.*?)" ><img src="(.*?)" /></a> </td> <td class="result_text"> <a href="(.*?)" >(.*?)</a>(.*?)</td> </tr>@');
  26. preg_match_all($parcala,$page,$cikti);
  27. $sonucdizi = $cikti[5];
  28. $linkdizi = $cikti[2];
  29. $turdizi = $cikti[6];
  30. for ($i=0; $i < count($sonucdizi); $i++) {
  31. echo '<div class="radio m-b-15">
  32. <label>
  33. <input type="radio" name="radios1" value="'.explode("?",trim($linkdizi[$i]))[0].'">
  34. <i class="input-helper"></i>
  35. '.trim($sonucdizi[$i]).' '.strip_tags($turdizi[$i]).'
  36. </label>
  37. </div>';
  38. }
  39. if(count($sonucdizi)>0)
  40. echo '<button type="button" onclick="getVideo()" class="btn btn-primary btn-block waves-effect" id="btnImdb">'.trans('controllerTranslations.choose_and_next').'<span class="md md-arrow-forward"></span></button>';
  41. }
  42. public function getFromFS(Request $request){
  43. $input = $request['sorgu'];
  44. $input = strtolower($input);
  45. $words = array();
  46. $video = VideoProperty::select('videoID','name','type');
  47. $videos= $video->get();
  48. foreach($videos as $items){
  49. $videoName = strtolower($items['name']);
  50. $lev = self::lev($input,$videoName);
  51. if($lev<=(strlen($input)*0.5)){
  52. $helperArray = array();
  53. array_push($helperArray, $items['name']);
  54. array_push($helperArray, $lev);
  55. array_push($helperArray, $items['type']);
  56. array_push($helperArray, $items['videoID']);
  57. array_push($words, $helperArray);
  58. }
  59. }
  60. if(count($words)!=0)
  61. {
  62. $cikti = self::dizi_sirala($words,1,'asort');
  63. $lenght=10;
  64. if (count($cikti)<$lenght)
  65. {
  66. $lenght = count($cikti);
  67. }
  68. for ($i=0; $i < $lenght; $i++) {
  69. echo '<div class="radio m-b-15">
  70. <label>
  71. <input type="radio" name="radios2" value="'.url('video/'.\App\Functions::beGoodSeo(stripslashes($cikti[$i][0])).'/'.$cikti[$i][3]).'">
  72. <i class="input-helper"></i>
  73. '.$cikti[$i][0].' ('.$cikti[$i][2].')
  74. </label>
  75. </div>';
  76. }
  77. echo '<button type="button" class="btn btn-primary btn-block waves-effect" id="btnHa" onclick="goToVideo()">
  78. '.trans('controllerTranslations.choose_and_next').'
  79. <span class="md md-arrow-forward"></span></button>';
  80. }
  81. }
  82. private function dizi_sirala($dizi,$ref,$fonk){
  83. $son=array();
  84. for($a=0;$a<count($dizi);$a++){
  85. $tampon[$a]=$dizi[$a][$ref];
  86. }
  87. $fonk($tampon);
  88. foreach($tampon as $key=>$data){
  89. $son[]=$dizi[$key];
  90. }
  91. return $son;
  92. }
  93. private function lev($s,$t) {
  94. $m = strlen($s);
  95. $n = strlen($t);
  96. for($i=0;$i<=$m;$i++) $d[$i][0] = $i;
  97. for($j=0;$j<=$n;$j++) $d[0][$j] = $j;
  98. for($i=1;$i<=$m;$i++) {
  99. for($j=1;$j<=$n;$j++) {
  100. $c = ($s[$i-1] == $t[$j-1])?0:1;
  101. $d[$i][$j] = min($d[$i-1][$j]+1,$d[$i][$j-1]+1,$d[$i-1][$j-1]+$c);
  102. }
  103. }
  104. return $d[$m][$n];
  105. }
  106. public function getPageHtml(Request $request){
  107. $input = $request['search'];
  108. $page = file_get_contents($input);
  109. return $page;
  110. }
  111. public function getIMDB(Request $request){
  112. $input = $request['search'];
  113. $name =\GuzzleHttp\json_decode(file_get_contents('http://imdb.wemakesites.net/api/tt0234215?api_key=a9a4aa47-9dc3-428c-ac9e-546a4778aed9'),true);
  114. return $name['data']['cast'];
  115. return \GuzzleHttp\json_decode(file_get_contents('https://tr.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&formatversion=2&titles='.$name),true)['query']['pages'][0]['extract'];
  116. }
  117. public function getWiki(Request $request){
  118. $input = $request['search'];
  119. $input = str_replace(' ','+',$input);
  120. $name = \GuzzleHttp\json_decode(file_get_contents('https://en.wikipedia.org/w/api.php?action=query&list=search&utf8=&formatversion=2&format=json&srsearch='.$input),true);
  121. foreach ($name['query']['search'] as $perName){
  122. $name = str_replace(' ','+',$perName['title']);
  123. if($name==$input){
  124. $content = \GuzzleHttp\json_decode(file_get_contents('https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&formatversion=2&titles='.$name),true)['query']['pages'][0]['extract'];
  125. $tr = new TranslateClient('en','tr');
  126. $googleTranslation = $tr->translate($content);
  127. return $googleTranslation;
  128. }
  129. }
  130. $name = \GuzzleHttp\json_decode(file_get_contents('https://tr.wikipedia.org/w/api.php?action=query&list=search&utf8=&formatversion=2&format=json&srsearch='.$input),true);
  131. foreach ($name['query']['search'] as $perName){
  132. $name = str_replace(' ','+',$perName['title']);
  133. if($name==$input){
  134. return \GuzzleHttp\json_decode(file_get_contents('https://tr.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&formatversion=2&titles='.$name),true)['query']['pages'][0]['extract'];
  135. }
  136. }
  137. }
  138. public function getWikiwithPictures(Request $request){
  139. $input = $request['search'];
  140. $input = str_replace(' ','+',$input);
  141. $name = \GuzzleHttp\json_decode(file_get_contents('https://tr.wikipedia.org/w/api.php?action=query&list=search&utf8=&formatversion=2&format=json&srsearch='.$input),true);
  142. $name = str_replace(' ','+',$name['query']['search'][0]['title']);
  143. if($name!=$input){ return "false";}
  144. $info = \GuzzleHttp\json_decode(file_get_contents('https://tr.wikipedia.org/w/api.php?format=json&action=query&prop=extracts|pageimages&exintro=&explaintext=&formatversion=2&pithumbsize=250&titles='.$name),true);
  145. return ['abstract'=>isset($info['query']['pages'][0]['extract'])?$info['query']['pages'][0]['extract']:'','picture'=>isset($info['query']['pages'][0]['thumbnail']['source'])?$info['query']['pages'][0]['thumbnail']['source']:'backend/img/empty.jpg'];
  146. }
  147. public function getOnlyWikiPictures(Request $request){
  148. $input = $request['search'];
  149. $input = str_replace(' ','+',$input);
  150. $name = \GuzzleHttp\json_decode(file_get_contents('https://en.wikipedia.org/w/api.php?action=query&list=search&utf8=&formatversion=2&format=json&srsearch='.$input),true);
  151. $name = str_replace(' ','+',$name['query']['search'][0]['title']);
  152. if($name!=$input){ return "false";}
  153. $info = \GuzzleHttp\json_decode(file_get_contents('https://en.wikipedia.org/w/api.php?format=json&action=query&prop=pageimages&formatversion=2&pithumbsize=250&titles='.$name),true);
  154. return ['picture'=>isset($info['query']['pages'][0]['thumbnail']['source'])?$info['query']['pages'][0]['thumbnail']['source']:'backend/img/empty.jpg'];
  155. }
  156. public function getIMDBPictures(Request $request){
  157. $input = $request['search'];
  158. $input = str_replace(' ','+',$input);
  159. $imdbID = "";
  160. $name = \GuzzleHttp\json_decode(file_get_contents('http://imdb.wemakesites.net/api/search?api_key=a9a4aa47-9dc3-428c-ac9e-546a4778aed9&q='.$input),true);
  161. foreach ($name['data']['results']['names'] as $perName){
  162. $name = str_replace(' ','+',$perName['title']);
  163. if($name==$input){
  164. $imdbID=$perName['id'];
  165. break;
  166. }
  167. }
  168. if($imdbID==""){ return "false";}
  169. $result = \GuzzleHttp\json_decode(file_get_contents('http://imdb.wemakesites.net/api/'.$imdbID.'?api_key=a9a4aa47-9dc3-428c-ac9e-546a4778aed9'),true);
  170. return ['picture'=>$result['data']['image']];
  171. }
  172. public function getTrailer(Request $request){
  173. $videoName = $request['sorgu'];
  174. $input = $videoName." trailer";
  175. $results = Youtube::searchVideos($input,4);
  176. foreach ($results as $index=>$video){
  177. $links[$index]['id']=$video->id->videoId;
  178. $links[$index]['title'] = Youtube::getVideoInfo([$video->id->videoId])[0]->snippet->title;
  179. }
  180. return self::trailerPush($videoName,$links);
  181. }
  182. public function searchIMDB(Request $request){
  183. $input = $request['search'];
  184. $where = $request['where'];
  185. $ready = str_replace(' ','+',$input);
  186. $name = \GuzzleHttp\json_decode(file_get_contents('http://imdb.wemakesites.net/api/search?api_key=a9a4aa47-9dc3-428c-ac9e-546a4778aed9&q='.$ready),true);
  187. if(!isset($name['data']['results'][$where])) return [false];
  188. foreach ($name['data']['results'][$where] as $perName){
  189. if($perName['title']==$input){
  190. return \GuzzleHttp\json_decode(file_get_contents('http://imdb.wemakesites.net/api/'.$perName['id'].'?api_key=a9a4aa47-9dc3-428c-ac9e-546a4778aed9'),true)['data']['filmography'];
  191. }
  192. }
  193. return [false];
  194. }
  195. public function searchIMDBwithID(Request $request){
  196. $input = $request['search'];
  197. $imdbID = str_replace(' ','+',$input);
  198. $result = \GuzzleHttp\json_decode(file_get_contents('http://imdb.wemakesites.net/api/'.$imdbID.'?api_key=a9a4aa47-9dc3-428c-ac9e-546a4778aed9'),true);
  199. return $result['data'];
  200. }
  201. public function trailerPush($name,$links){
  202. if(count($links)>0){
  203. echo '
  204. <div class="card-header">
  205. <h2>Trailer Seçiniz</h2>
  206. </div>
  207. <div class="col-sm-12">';
  208. for ($i=0; $i < 4; $i++)
  209. {
  210. echo '
  211. <div class="col-sm-3">
  212. <div class="card">
  213. <button class="btn bgm-red btn-block waves-effect" onclick="$(\'#trailer\').val(\'https://www.youtube.com/embed/'.$links[$i]['id'].'\')"><i class="md md-add"></i></button>
  214. <div class="embed-responsive embed-responsive-16by9">
  215. <iframe class="embed-responsive-item" src="https://www.youtube.com/embed/'.$links[$i]['id'].'" frameborder="0" allowfullscreen></iframe>
  216. </div>
  217. <div class="card-header ch-alt">'.$links[$i]['title'].'
  218. </div>
  219. </div>
  220. </div>';
  221. }
  222. echo '</div>';
  223. }
  224. else
  225. {
  226. $found = trans('controllerTranslations.trailer_not_found');
  227. echo '<button class="btn bgm-orange notfound" onclick="getTrailer('.$name.')">'.$found.'</button>';
  228. }
  229. }
  230. public function videoSearch(Request $request){
  231. $videoImagePath = 'backend/videoImages/';
  232. $videoName =$request->input('name');
  233. $lastvideos = VideoProperty::select('videoID', 'name', 'type', 'turkishName', 'imdbPoint', 'abstract', 'picture')
  234. ->where('name', 'like', '%' . $videoName . '%')
  235. ->orWhere('turkishName', 'like', '%' . $videoName . '%')
  236. ->orWhere('turkishName', 'like', '%' . $videoName . '%')
  237. ->orWhere('abstract', 'like', '%' . $videoName . '%')
  238. ->orderBy('videoID', 'DESC')
  239. ->paginate(10);
  240. return view('backend.video.lastVideos',['title'=>trans('pageTranslations.serie_movie_name_search'),'lastVideos'=>$lastvideos,'videoImagePath'=>$videoImagePath]);
  241. }
  242. public function addVideo(Request $request){
  243. $peoples = $request['video']['People'];
  244. foreach($peoples as $people){
  245. $pValues = array(
  246. 'personName' => $people['name'],
  247. 'personPicture' => $people['personPicture'],
  248. 'content' => $people['content']
  249. );
  250. $pValidator = Validator::make($pValues, People::$rules);
  251. if ($pValidator->fails()) {
  252. // hataları değişkene atadık
  253. $messages = $pValidator->errors()->all();
  254. // hataları döndük
  255. return $messages;
  256. }
  257. }
  258. $ifexits = VideoProperty::where(['type'=>$request['video']['Type'],'name'=>$request['video']['Name']])->first();
  259. if(!$ifexits){
  260. $values = array(
  261. 'type' => $request['video']['Type'],
  262. 'name' => $request['video']['Name'],
  263. 'turkishName' => $request['video']['TurkishName'],
  264. 'kind' => $request['video']['Kind'],
  265. 'imdbPoint' => $request['video']['ImdbPoint'],
  266. 'duration' => $request['video']['Duration'],
  267. 'country' => $request['video']['Country'],
  268. 'dateVision' => $request['video']['VisionDate'],
  269. 'abstract' => $request['video']['Abstract'],
  270. 'trailer' => $request['video']['Trailer'],
  271. 'picture' => $request['video']['Picture']
  272. );
  273. $validator = Validator::make($values, VideoProperty::$rules);
  274. if ($validator->fails()) {
  275. // hataları değişkene atadık
  276. $messages = $validator->errors()->all();
  277. // hataları döndük
  278. return $messages;
  279. } else {
  280. // doğrulama başarılıysa
  281. // user modeli yarat ve deÄŸerleri gir
  282. try{
  283. $video = new VideoProperty();
  284. $video->type = Functions::addSlashAndRemoveTags($values['type']);
  285. $video->name = Functions::addSlashAndRemoveTags($values['name']);
  286. $video->turkishName = Functions::addSlashAndRemoveTags($values['turkishName']);
  287. $video->kind = Functions::addSlashAndRemoveTags($values['kind']);
  288. $video->imdbPoint = Functions::addSlashAndRemoveTags($values['imdbPoint']);
  289. $video->duration = Functions::addSlashAndRemoveTags($values['duration']);
  290. $video->country = Functions::addSlashAndRemoveTags($values['country']);
  291. $video->dateVision = Functions::addSlashAndRemoveTags($values['dateVision']);
  292. $video->abstract = Functions::addSlashAndRemoveTags($values['abstract']);
  293. $video->trailer = Functions::addSlashAndRemoveTags($values['trailer']);
  294. $video->picture = Functions::addSlashAndRemoveTags(Functions::downloadPicture($values['picture'], $values['name'], 'videoImages'));
  295. $video->view = rand(9,20);
  296. // veritabanı kaydı ilk veri eklemesi gerçekleşti burdaki video id aktivitede ve peoplevideoda kullanılacak
  297. $video->save();
  298. $users = User::where(['username' => Session::get('user')]);
  299. $datas = $users->first();
  300. if ($datas) {
  301. $users->update(['ipAdress' => $request->ip()]);
  302. $activity = new Activity([
  303. 'userID' => $datas['userID'],
  304. 'committedID' => $video->videoID,
  305. 'activityName' => 'add_video',
  306. 'activityDate' => Carbon::now()]);
  307. $activity->save();
  308. foreach($peoples as $people){
  309. $findPeople = People::where(['personName' => $people['name']]);
  310. $datasPeople = $findPeople->first();
  311. $peopleID = 0;
  312. if ($datasPeople) {
  313. $peopleID = $datasPeople['personID'];
  314. }else{
  315. $peopleDB = new People([
  316. 'personName' => Functions::addSlashAndRemoveTags($people['name']),
  317. 'personPicture' => Functions::addSlashAndRemoveTags(Functions::downloadPicture($people['personPicture'], $people['name'], 'peopleImages')),
  318. 'content' => Functions::addSlashAndRemoveTags($people['content'])
  319. ]);
  320. $peopleDB->save();
  321. $peopleID = $peopleDB->personID;
  322. }
  323. $activity = new Activity([
  324. 'userID' => $datas['userID'],
  325. 'committedID' => $peopleID,
  326. 'activityName' => 'add_people',
  327. 'activityDate' => Carbon::now()]);
  328. $activity->save();
  329. $peopleVideo = new VideoPeople([
  330. 'videoID' => $video->videoID,
  331. 'personID' => $peopleID,
  332. 'job' => Functions::addSlashAndRemoveTags($people['job']),
  333. 'rol' => Functions::addSlashAndRemoveTags($people['rol'])
  334. ]);
  335. $peopleVideo->save();
  336. }
  337. return "true-".$video->videoID;
  338. } else {
  339. return trans('controllerTranslations.user_not_found');
  340. }
  341. }
  342. catch(\Exception $e){
  343. // do task when error
  344. return $e->getMessage(); // mesajları at
  345. }
  346. }
  347. }else{
  348. return trans('controllerTranslations.video_already_added');
  349. }
  350. }
  351. public function videoFind()
  352. {
  353. if(session('user')){
  354. return view('backend.video.addVideo');
  355. }else{
  356. return redirect('/user/login');
  357. }
  358. }
  359. public function videoEdit($videoName,$videoID){
  360. $videoImagePath = 'backend/videoImages/';
  361. if($videoName!=null && $videoID!=null) {
  362. $users = User::where(['username' => Session::get('user')])->first();
  363. if ($users) {
  364. $videos = VideoProperty::findOrFail($videoID);
  365. $title = $videos->name;
  366. return view('backend.video.editVideo',compact('videos','title','videoImagePath'));
  367. }else{
  368. $title = trans('pageTranslations.user_login');
  369. $page = 'login';
  370. $response = trans('controllerTranslations.please_login');
  371. return view('backend.user.login',['page'=>$page,'title'=>$title,'response'=>$response]);
  372. }
  373. }else{
  374. return redirect('/');
  375. }
  376. }
  377. public function showVideo($videoName,$videoID=null){
  378. $videoImagePath = 'backend/videoImages/';
  379. $profilImagePath = 'backend/img/profile-pics/';
  380. if($videoName=='last' && $videoID==null){
  381. $lastvideos = VideoProperty::select('videoID', 'name', 'type', 'turkishName', 'imdbPoint', 'abstract', 'picture')
  382. ->orderBy('videoID', 'DESC')
  383. ->paginate(10);
  384. return view('backend.video.lastVideos',['title'=>trans('pageTranslations.last_added_series_movies'),'lastVideos'=>$lastvideos,'videoImagePath'=>$videoImagePath]);
  385. }elseif($videoName=='last' && $videoID!=null) {
  386. return redirect('/');
  387. }else{
  388. $validator = Validator::make(
  389. ['videoId' => $videoID],
  390. ['videoId' => 'required|numeric|digits_between:1,10']);
  391. if($validator->fails()){
  392. return redirect('/');
  393. }else{
  394. $video = VideoProperty::find($videoID);
  395. if ($video) {
  396. $people = DB::table('people')
  397. ->join('videopeople', 'videopeople.personID', '=', 'people.personID')
  398. ->select('people.personID', 'people.personName', 'people.personPicture', 'videopeople.rol', 'videopeople.job')
  399. ->where('videopeople.videoID','=',$videoID)
  400. ->orderBy('videopeople.job', 'DESC')
  401. ->paginate(12, ['*'], 'page_cast');;
  402. $subtitles = DB::table('videoproperties')
  403. ->join('subtitleready', 'subtitleready.videoID', '=', 'videoproperties.videoID')
  404. ->join('users', 'users.userID', '=', 'subtitleready.uploaderID')
  405. ->select('users.username', 'subtitleready.subtitleReadyID','subtitleready.created_at','subtitleready.downloads',
  406. 'subtitleready.season', 'subtitleready.part', 'subtitleready.srtPath',
  407. 'subtitleready.language')
  408. ->where('videoproperties.videoID','=',$videoID)
  409. ->orderBy('subtitleready.season', 'DESC')
  410. ->orderBy('subtitleready.part', 'DESC')
  411. ->paginate(10, ['*'], 'page_subtitle');
  412. $comments = DB::table('videocomments')
  413. ->join('users', 'users.userID', '=', 'videocomments.commenterID')
  414. ->select('users.username', 'users.profilePicture', 'videocomments.comment',
  415. 'videocomments.like', 'videocomments.unlike','videocomments.created_at')
  416. ->where('videocomments.videoID','=',$videoID)
  417. ->orderBy('videocomments.commentID', 'DESC')
  418. ->paginate(10, ['*'], 'page_comment');
  419. $lastVideos = VideoProperty::select('videoID', 'name', 'view', 'picture')
  420. ->orderBy(DB::raw('RAND()'))
  421. ->where('view','<',50)
  422. ->limit(5)
  423. ->get();
  424. $popularSeries = VideoProperty::select('videoID', 'name', 'view', 'picture')
  425. ->where('type','serie')
  426. ->orderBy('view', 'DESC')
  427. ->limit(5)
  428. ->get();
  429. $popularMovies = VideoProperty::select('videoID', 'name', 'view', 'picture')
  430. ->where('type','movie')
  431. ->orderBy('view', 'DESC')
  432. ->limit(5)
  433. ->get();
  434. $popularAnimes = VideoProperty::select('videoID', 'name', 'view', 'picture')
  435. ->where('type','anime')
  436. ->orderBy('view', 'DESC')
  437. ->limit(5)
  438. ->get();
  439. if(!Cookie::has('video-'.$videoID)){
  440. $view = view('backend.video.video',[
  441. 'videoProperties' => $video,
  442. 'title' => $video['name'],
  443. 'people' => $people,
  444. 'subtitles' => $subtitles,
  445. 'videoImagePath' => $this->videoImagePath,
  446. 'comments' => $comments,
  447. 'profilImagePath' => $this->profilImagePath,
  448. 'lastVideos' => $lastVideos,
  449. 'popularSeries' => $popularSeries,
  450. 'popularMovies' => $popularMovies,
  451. 'popularAnimes' => $popularAnimes]);
  452. $cookie = Cookie::make('video-'.$videoID, '1', 60*24);
  453. $video->view++;
  454. $video->save();
  455. return response()->make($view)->withCookie($cookie);
  456. }else{
  457. return view('backend.video.video',[
  458. 'videoProperties' => $video,
  459. 'title' => $video['name'],
  460. 'people' => $people,
  461. 'subtitles' => $subtitles,
  462. 'videoImagePath' => $this->videoImagePath,
  463. 'comments' => $comments,
  464. 'profilImagePath' => $this->profilImagePath,
  465. 'lastVideos' => $lastVideos,
  466. 'popularSeries' => $popularSeries,
  467. 'popularMovies' => $popularMovies,
  468. 'popularAnimes' => $popularAnimes]);
  469. }
  470. }else{
  471. return redirect('/');
  472. }
  473. }
  474. }
  475. }
  476. public function update($videoID,Request $request){
  477. $users = User::where(['username' => Session::get('user')]);
  478. $datas = $users->first();
  479. if ($datas) {
  480. $ifexits = VideoProperty::where(['type'=>Input::get('type'),'name'=>Input::get('name')])->whereNotIn('videoID', [$videoID])->first();
  481. if(!$ifexits){
  482. $validator = Validator::make(Input::all(),
  483. array(
  484. 'type' => 'required',
  485. 'name' => 'required|max:255',
  486. 'turkishName' => 'required|max:255',
  487. 'kind' => 'required|max:255',
  488. 'imdbPoint' => 'required|max:10',
  489. 'duration' => 'required|numeric|digits_between:1,10',
  490. 'country' => 'required|max:255',
  491. 'dateVision' => array('required', 'date_format:"Y"',"digits:4"),
  492. 'abstract' => 'required',
  493. 'trailer' => 'required|url',
  494. 'picture' => 'required'
  495. ));
  496. if($validator->fails())return redirect()->back()->withErrors($validator->errors()->all());
  497. $videos = VideoProperty::findOrFail($videoID);
  498. if($videos){
  499. if(Input::get('picture')!=$videos->picture){
  500. $validatorUrl =Validator::make(Input::only(['picture']),
  501. [ 'picture' => 'required|url'
  502. ]);
  503. if($validatorUrl->fails()) return redirect()->back()->withErrors($validatorUrl->errors()->all());
  504. $newPictureLink=Functions::downloadPicture(Input::get('picture'),Input::get('name'),'videoImages');
  505. Input::merge(array('picture' => $newPictureLink));
  506. }
  507. $videos->fill(Input::all());
  508. if(!$videos->isDirty()) return redirect('/video/' . Functions::beGoodSeo($videos->name) . '/' . $videos->videoID);
  509. $videos->save();
  510. $users->update(['ipAdress' => $request->ip()]);
  511. $activity = new Activity([
  512. 'userID' => $datas['userID'],
  513. 'committedID' => $videos->videoID,
  514. 'activityName' => 'update_video',
  515. 'activityDate' => Carbon::now()]);
  516. $activity->save();
  517. return redirect('/video/' . Functions::beGoodSeo($videos->name) . '/' . $videos->videoID);
  518. }else{
  519. return redirect('/');
  520. }
  521. }else{
  522. return redirect()->back()->withErrors([trans('controllerTranslations.video_already_added')]);
  523. }
  524. }else{
  525. $title = trans('pageTranslations.user_login');
  526. $page = 'login';
  527. $response = trans('controllerTranslations.please_login');
  528. return view('backend.user.login',['page'=>$page,'title'=>$title,'response'=>$response]);
  529. }
  530. }
  531. public function commentAdd($videoID,Request $request){
  532. $validator = Validator::make(Input::all(),['comment'=>'required']);
  533. $user = User::where(['username'=>Session::get('user')])->first();
  534. if(!$user){
  535. $title = trans('pageTranslations.user_login');
  536. $page = 'login';
  537. $response = trans('controllerTranslations.please_login');
  538. return view('backend.user.login',['page'=>$page,'title'=>$title,'response'=>$response]);
  539. }
  540. if($validator->fails()){
  541. return redirect()->back()
  542. ->withErrors([
  543. 'result' => 'danger',
  544. 'for' => 'video',
  545. 'message' => $validator->errors()->all()]);
  546. }
  547. else{
  548. $newComment = new VideoComment();
  549. $newComment->commenterID=$user->userID;
  550. $newComment->videoID=$videoID;
  551. $newComment->comment=Functions::addSlashAndRemoveTags($request['comment']);
  552. $newComment->save();
  553. return redirect()->back();
  554. }
  555. }
  556. public function videoFollow($videoName,$videoID){
  557. $validator = Validator::make(
  558. ['videoId' => $videoID],
  559. ['videoId' => 'required|numeric|digits_between:1,10']);
  560. if($validator->fails()) {
  561. return redirect('/');
  562. }else{
  563. if(session('user')){
  564. $user = User::where(['username'=>Session::get('user')])->first();
  565. $video = VideoProperty::find($videoID);
  566. if(!$user || !$video) return redirect('/');
  567. $videoFollowExists = DB::table('videofollowers')->where(['followerID'=>$user->userID,'videoID'=>$videoID])->get();
  568. if(!$videoFollowExists){
  569. $videoFollower = new VideoFollower();
  570. $videoFollower->followerID=$user->userID;
  571. $videoFollower->videoID=$videoID;
  572. if($videoFollower->save()){
  573. $activity = new Activity([
  574. 'userID' => $user->userID,
  575. 'committedID' => $videoID,
  576. 'activityName' => 'video_follow',
  577. 'activityDate' => Carbon::now()]);
  578. if($activity->save()){
  579. return redirect()->back()
  580. ->withErrors(['result'=>'success','for'=>'video','message'=>trans('controllerTranslations.successfully_added_followed')]);
  581. }else{
  582. return redirect('/');
  583. }
  584. }
  585. }else{
  586. return redirect()->back()
  587. ->withErrors(['result'=>'danger','for'=>'video','message'=>trans('controllerTranslations.you_are_already_follower')]);
  588. }
  589. }else{
  590. return redirect('/user/login');
  591. }
  592. }
  593. }
  594. }