Вход Регистрация
Файл: audio/handler/upload.php
Строк: 107
<?php

if (!empty($_FILES['file']))
{
    
$dir HOME.'/files/audio/'.$user_id;
    if (!
is_dir($dir)) mkdir(HOME.'/files/audio/'.$user_id,0777);

    
$file_name $_FILES['file']['name'];
    
$file_size $_FILES['file']['size'];
    if (
$file_size 1024 || $file_size >= 1024 30000$err true;
    if(!
preg_match("/.mp3/i"$file_name)) $err true;
    if (
$err == false)
    {

        
$media = new ffmpeg_movie($_FILES['file']['tmp_name']);
        
$name $media->getTitle();
        
$artist $media->getArtist();
        
$bitrate $media->getBitRate();
        if (
intval($media->getDuration())>3599$duration intval($media->getDuration()/3600).":".date('s',fmod($media->getDuration()/60,60)).":".date('s',fmod($media->getDuration(),3600));
elseif (
intval($media->getDuration())>59$duration intval($media->getDuration()/60).":".date('s',fmod($media->getDuration(),60));
else 
$duration intval($media->getDuration());
        
        if (
mb_check_encoding($name'UTF-8')) {}
        elseif (
mb_check_encoding($name'windows-1251')) $name iconv("windows-1251""UTF-8"$name);
        elseif (
mb_check_encoding($name'KOI8-R')) $name iconv("KOI8-R""UTF-8"$name);
        if (
mb_check_encoding($artist'UTF-8')) {}
        elseif (
mb_check_encoding($artist'windows-1251')) $artist iconv("windows-1251""UTF-8"$artist);
        elseif (
mb_check_encoding($artist'KOI8-R')) $artist iconv("KOI8-R""UTF-8"$artist);
        
        if (empty(
$artist)) $artist 'Track'.($user['count_audio']+1);
        if (empty(
$name)) $name time();
        if (empty(
$bitrate)) $err true;

        
$file_name preg_replace ("/[^a-zA-Z0-9-_.]/",""retranslit($file_name));
        if(!
preg_match("#^([a-zA-ZА-Яа-я0-9-_.s])+$#ui"$file_name)) die('error');

        if (
$err == false && copy($_FILES['file']['tmp_name'], HOME.'/files/audio/'.$user_id.'/'.$file_name) == true)
        {
            
mysql_query("UPDATE `users` SET count_audio=count_audio+1 WHERE `id` = '".$user_id."'");
            
mysql_query("INSERT INTO `audio` SET `artist` = '".check($artist)."', `name` = '".check($name)."', `file` = '".check($file_name)."', `duration` = '".$duration."', `dir` = '".$user_id."', `time` = '".time()."'");
            
$track_id mysql_insert_id();
            
            if (
mysql_result(mysql_query("SELECT COUNT(`id`) FROM `audioplaylist` WHERE `user_id` = '".$user_id."' LIMIT 1"),0) == falsemysql_query("INSERT INTO `audioplaylist` SET `user_id` = '".$user_id."', `tracks` = '|".$track_id."|', `count` = 1");
            else
            {
                
$arr_pl mysql_fetch_array(mysql_query("SELECT * FROM `audioplaylist` WHERE `user_id` = '".$user_id."' LIMIT 1"));
                if (!
in_array($track_idexplode("||"substr($arr_pl['tracks'], 1, -1)))) mysql_query("UPDATE `audioplaylist` SET `tracks` = '|".$track_id."|".$arr_pl['tracks']."', count=count+1 WHERE `user_id` = '".$user_id."'");
            }
            if (
$ajax_query == true) exit;
        }
    }
}

?>
<script type="text/javascript">
$(function(){
    $('#form').on('submit', function(e){
    e.preventDefault();
    var $that = $(this),
        formData = new FormData($that.get(0));
    $.ajax({
      url: $that.attr('action'),
      type: $that.attr('method'),
      contentType: false,
      processData: false,
      data: formData,
      dataType: 'json',
      xhr: function(){
            var xhr = $.ajaxSettings.xhr(); // получаем объект XMLHttpRequest
        xhr.upload.addEventListener('progress', function(evt){ // добавляем обработчик события progress (onprogress)
         $('#notifications').html('<?echo '<p>'.lang('Загрузка...','Завантаження аудіо').'</p>';?><progress id="progressbar" value="0" max="100"></progress>').show();
        var progressBar = $('#progressbar');
         if(evt.lengthComputable) { // если известно количество байт
            // высчитываем процент загруженного
            var percentComplete = Math.ceil(evt.loaded / evt.total * 100);
            // устанавливаем значение в атрибут value тега <progress>
            // и это же значение альтернативным текстом для браузеров, не поддерживающих <progress>
            progressBar.val(percentComplete).text(percentComplete + '%');
                if(percentComplete == 100)
                {
                    $('#notifications').hide();
                    Page.Go($that.attr('action')+'&r=<?echo time();?>');
                }
          }
        }, false);
        return xhr;
      },
      success: function(json){
        if(json){
          $that.after(json);
        }
      }
    });
  });
});
</script>
Онлайн: 0
Реклама