<?php 
  
/*
------------------------------------------------
AlphaCMS - универсальный движок для вашего сайта
E-mail администрации проекта: adm@alpha-cms.ru
Официальный сайт поддержки: alpha-cms.ru
Руководитель проекта: adm (ID 1)
------------------------------------------------
*/
  
FOREACH (ARRAY('config', 'connect', 'users') AS $connect) {
  
  INCLUDE_ONCE ("../../system/connections/global/$connect.php"); 
  
}

ACCESS('users');

IF (ISSET($_FILES['file']) && AJAX() == TRUE){
  
  IF (GET('type') == 'blogs'){
    
    $ts = "BLOGS";
  
  }ELSEIF (GET('type') == 'news'){
    
    $ts = "NEWS";
  
  }ELSEIF (GET('type') == 'forum'){
    
    $ts = "FORUM";
  
  }ELSE{
    
    $ts = "COMMENTS";
  
  }
  
  //Максимальный размер для выгрузки
  $MaxFileSize = CONFIG('MAXFILESIZE');
  
  //Разрешенные форматы для выгрузки
  $AllowFileExtension = ARRAY('mp4', 'avi', '3gp', 'flv');
  
  //Оригинальное название видео
  $FileNameExp = $_FILES['file']['name'];
  
  //Оригинальное название видео без расширения
  $FileName = TEXT_PROCESSING(PREG_REPLACE('#\.[^\.]*$#', NULL, $FileNameExp));
  
  //Расширение видео
  $Exp = STRTOLOWER(PREG_REPLACE('#^.*\.#', NULL, $FileNameExp));
  
  //Временный файл
  $TempName = $_FILES['file']['tmp_name'];
  
  //Папка куда будут загружаться видео
  $UploadDir = ROOT."/files/upload/videos/source/";
  
  //Проверка расширения видео
  $FileExtension = PATHINFO(STRTOLOWER($FileNameExp), PATHINFO_EXTENSION);
  
  //Принудительно устанавливаем права 777 на папку
  @CHMOD($UploadDir, 0777); 
  
  $err_data = 0;
  
  IF (DB::GET_COLUMN("SELECT COUNT(*) FROM `ATTACHMENTS` WHERE `".$ts."` = '1' AND `USER_ID` = '".$user['ID']."' AND `ACT` = '0' LIMIT 1") >= 3){
    
    $error = "Нельзя прикреплять более 3 файлов к 1 объекту";
    $err_data = 1;
    
  }
  
  //Настройки видео
  $videos_settings = @PARSE_INI_FILE(ROOT."/system/config/videos.ini", FALSE);
  
  IF (DB::GET_COLUMN("SELECT COUNT(*) FROM `VIDEOS` WHERE `USER_ID` = '".$user['ID']."'") >= $videos_settings['VIDEOS_LIMIT']){

    $error = "Вы исчерпали лимит на добавление видео";
    $err_data = 1;
    
  }
  
  IF (CONFIG('FILE_ACCESS') == 0) {
    
    $error = "Выгрузка файлов на сайте приостановлена администрацией";
    $err_data = 1;
  
  }
  
  IF (!IN_ARRAY($FileExtension, $AllowFileExtension)) {
    
    $error = "Неверный формат видео";
    $err_data = 1;
  
  }
  
  //Проверка размера видео
  IF (FILESIZE($TempName) > $MaxFileSize) {
    
    $error = "Размер загружаемого видео превышает установленные ограничения";
    $err_data = 1;
  
  }
  
  IF (STR($FileName) < 1) {
    
    $error = "Имя загружаемого видео не должно быть менее 1 символа";
    $err_data = 1;
  
  }

  IF (STR($FileName) > 200) {
    
    $error = "Имя загружаемого видео не должно быть более 200 символов";
    $err_data = 1;
  
  }
  
  IF ($err_data == 1){
    
    ECHO "<div class='file-upload-progress' style='color: red;'><i class='fa fa-exclamation-triangle fa-fw'></i> ".LG($error)."</div>";
  
  }ELSE{
    
    $dir = DB::GET_STRING("SELECT `ID` FROM `VIDEOS_DIR` WHERE `USER_ID` = '".$user['ID']."' AND `NAME` = 'Вложения' AND `PRIVATE` = '3' LIMIT 1"); 
    
    $ID = DB::GET_ADD("INSERT INTO `VIDEOS` (`NAME`, `USER_ID`, `EXT`, `SIZE`, `TIME`, `ID_DIR`) VALUES ('".$FileName."', '".$user['ID']."', '".$Exp."', '".FILESIZE($TempName)."', '".TIME()."', '".$dir['ID']."')");
    
    //Сохраняем видео если все хорошо
    $CopyFile = COPY($TempName, "".$UploadDir."".$ID.".".$Exp."");
    
    IF (!$CopyFile) {
      
      ECHO "<div class='file-upload-progress' style='color: red;'><i class='fa fa-exclamation-triangle fa-fw'></i> ".LG('Неизвестная ошибка')."</div>";
    
    }ELSE{
      
      /*
      ---------------------------
      Получаем длительность видео
      ---------------------------
      */
      
      $d = FFMPEG::DURATION(ROOT.'/files/upload/videos/source/'.$ID.'.'.$Exp.'');
      
      DB::GET_SET("UPDATE `VIDEOS` SET `DURATION` = '".$d."' WHERE `ID` = '".$ID."' LIMIT 1");
      
      /*
      ---------------------
      Делаем скриншот кадра
      ---------------------
      */
      
      FFMPEG::SCREEN(ROOT.'/files/upload/videos/source/'.$ID.'.'.$Exp.'', ROOT.'/files/upload/videos/screen/'.$ID.'.jpg', '00:00:02');
      
      IF (IS_FILE(ROOT.'/files/upload/videos/screen/'.$ID.'.jpg')){
        
        CROP_IMAGE(ROOT.'/files/upload/videos/screen/'.$ID.'.jpg', ROOT.'/files/upload/videos/screen/240x240/'.$ID.'.jpg', 240, 240);
        
      }
      
      /*--------------------------*/
      
      IF (DB::GET_COLUMN("SELECT COUNT(*) FROM `VIDEOS_SHOW` WHERE `VIDEO_ID` = '".$ID."' AND `USER_ID` = '".$user['ID']."' AND `TYPE` = 'atcom' LIMIT 1") == 0){
        
        DB::GET_ADD("INSERT INTO `VIDEOS_SHOW` (`USER_ID`, `VIDEO_ID`, `TYPE`) VALUES ('".$user['ID']."', '".$ID."', 'atcom')");
      
      }
      
      IF (GET('type') == 'blogs'){
        
        $ts = "BLOGS";
      
      }ELSEIF (GET('type') == 'news'){
        
        $ts = "NEWS";
      
      }ELSE{
        
        $ts = "COMMENTS";
      
      }
      
      DB::GET_ADD("INSERT INTO `ATTACHMENTS` (`USER_ID`, `OBJECT_ID`, `TYPE`, `TIME`, `".$ts."`, `ID_POST`) VALUES ('".$user['ID']."', '".$ID."', 'videos', '".TIME()."', '1', '0')");
      
      //Отправляем запрос на обновление листа если успешно
      $url = BASE64_DECODE(GET('url')); 
      
      ?>
      <script>
      var data = "<?=$url?>";
      
      var toLoad = data+' #atcom-upgrade';
      
      open_modal = 0;
      
      $("#atcom-upgrade").load(toLoad); 
      
      $("#at_comment").removeClass("open");
      
      setTimeout( function(){	
        
        $("#at_comment").parents(".overlay").removeClass("open");
      
      }, 5);
      
      $('#upload-atcom-show').html('');
      
      </script>  
      <?
    
    }
  
  }
  
}ELSE{
  
  REDIRECT('/index');

}
 
?>