Advertisement
vitnet

tracks

Apr 13th, 2025 (edited)
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.37 KB | None | 0 0
  1.  
  2.     // Обработка xfields
  3.     $xfieldsid = $added_time;
  4.     $xfieldsaction = "init";
  5.     include ENGINE_DIR . '/inc/xfields.php';
  6.  
  7.     // Загрузка MP3 файла
  8.     $mp3Data = handleFileUpload(
  9.         'f_music',
  10.         'files/mp3/tracks/',
  11.         ['mp3'],
  12.         $config['max_file_size'],
  13.         $title,
  14.         $added_time
  15.     );
  16.    
  17.     if (!$mp3Data['success']) {
  18.         msg("error", $lang['addnews_error'], $mp3Data['message'], "javascript:history.go(-1)");
  19.     }
  20.  
  21.     // Загрузка обложки
  22.     $coverData = handleFileUpload(
  23.         'cv_music',
  24.         'files/cover/tracks/',
  25.         ['jpg'],
  26.         $config['max_file_size'],
  27.         $title,
  28.         $added_time
  29.     );
  30.    
  31.     if (!$coverData['success']) {
  32.         msg("error", $lang['addnews_error'], $coverData['message'], "javascript:history.go(-1)");
  33.     }
  34.  
  35.     // Получение информации о MP3
  36.     if (!empty($mp3Data['file_path'])) {
  37.         include ENGINE_DIR . '/classes/muz/id3v2.class.php';
  38.         $audio = new id3v2();
  39.         $audio->GetInfo($mp3Data['file_path']);
  40.         $id3v1 = $audio->id3v1Info;
  41.         $mpegInfo = $audio->mpegInfo;
  42.        
  43.         $muz_beats = $parse->remove($mpegInfo['Bitrate']);
  44.         $muz_ggc = $parse->remove($mpegInfo['SamplingRate']);
  45.         $muz_lenght = $parse->remove($mpegInfo['PlayTime']);
  46.     }
  47.  
  48.     // Сохранение данных в базу
  49.     saveToDatabase(
  50.         $member_id,
  51.         $title,
  52.         $short_story,
  53.         $full_story,
  54.         $filecontents,
  55.         $metatags,
  56.         $alt_name,
  57.         $allow_comm,
  58.         $approve,
  59.         $allow_main,
  60.         $news_fixed,
  61.         $allow_br,
  62.         $catalog_url,
  63.         $allow_rating,
  64.         $add_vote,
  65.         $disable_index,
  66.         $group_regel,
  67.         $vote_title,
  68.         $frage,
  69.         $vote_body,
  70.         $allow_m_vote,
  71.         $expires,
  72.         $expires_action,
  73.         $mp3Data,
  74.         $coverData,
  75.         $muz_beats,
  76.         $muz_ggc,
  77.         $muz_lenght,
  78.         $muz_file_cat
  79.     );
  80.  
  81.     // Логирование и очистка кеша
  82.     $db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) VALUES ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '1', '{$title}')");
  83.     clear_cache(['news_', 'related_', 'tagscloud_', 'archives_', 'calendar_', 'topnews_', 'rss']);
  84.  
  85.     msg("info", $lang['addnews_ok'], $lang['addnews_ok_1'] . " \"" . stripslashes(stripslashes($title)) . "\" " . $lang['addnews_ok_2']);
  86.  
  87. /**
  88.  * Обрабатывает загрузку файла на сервер
  89.  */
  90. function handleFileUpload($fieldName, $targetDir, $allowedTypes, $maxSizeMb, $title, $added_time) {
  91.     global $parse;
  92.    
  93.     $result = [
  94.         'success' => false,
  95.         'message' => '',
  96.         'file_name' => '',
  97.         'file_path' => '',
  98.         'file_size' => 0
  99.     ];
  100.  
  101.     if (empty($title)) {
  102.         $result['message'] = 'Заполните поле "Название"';
  103.         return $result;
  104.     }
  105.  
  106.     if (!isset($_FILES[$fieldName]) || $_FILES[$fieldName]['error'] !== UPLOAD_ERR_OK) {
  107.         $result['message'] = 'Файл не был загружен';
  108.         return $result;
  109.     }
  110.  
  111.     // Проверка и создание директории
  112.     if (!is_dir(ROOT_DIR . "/" . $targetDir)) {
  113.         @mkdir(ROOT_DIR . "/" . $targetDir, 0777, true);
  114.         @chmod(ROOT_DIR . "/" . $targetDir, 0777);
  115.     }
  116.  
  117.     $fileName = $_FILES[$fieldName]['name'];
  118.     $fileParts = explode('.', $fileName);
  119.     $fileExt = strtolower(end($fileParts));
  120.  
  121.     if (!in_array($fileExt, $allowedTypes)) {
  122.         $result['message'] = 'Недопустимый формат файла. Разрешены: ' . implode(', ', $allowedTypes);
  123.         return $result;
  124.     }
  125.  
  126.     // Проверка размера файла
  127.     $fileSizeKb = filesize($_FILES[$fieldName]['tmp_name']) / 1024;
  128.     $maxSizeKb = $maxSizeMb * 1024;
  129.    
  130.     if ($fileSizeKb > $maxSizeKb) {
  131.         $result['message'] = "Размер файла превышает {$maxSizeMb} Mb";
  132.         return $result;
  133.     }
  134.  
  135.     // Генерация имени файла
  136.     $translitName = totranslit($title);
  137.     $newFileName = $added_time . "-" . $translitName . '.' . $fileExt;
  138.     $fullFilePath = ROOT_DIR . '/' . $targetDir . $newFileName;
  139.  
  140.     if (!@move_uploaded_file($_FILES[$fieldName]['tmp_name'], $fullFilePath)) {
  141.         $result['message'] = 'Ошибка при сохранении файла';
  142.         return $result;
  143.     }
  144.  
  145.     $result['success'] = true;
  146.     $result['file_name'] = $newFileName;
  147.     $result['file_path'] = $fullFilePath;
  148.     $result['file_size'] = filesize($fullFilePath);
  149.    
  150.     return $result;
  151. }
  152.  
  153. /**
  154.  * Сохраняет все данные в базу данных
  155.  */
  156. function saveToDatabase(
  157.     $member_id,
  158.     $title,
  159.     $short_story,
  160.     $full_story,
  161.     $filecontents,
  162.     $metatags,
  163.     $alt_name,
  164.     $allow_comm,
  165.     $approve,
  166.     $allow_main,
  167.     $news_fixed,
  168.     $allow_br,
  169.     $catalog_url,
  170.     $allow_rating,
  171.     $add_vote,
  172.     $disable_index,
  173.     $group_regel,
  174.     $vote_title,
  175.     $frage,
  176.     $vote_body,
  177.     $allow_m_vote,
  178.     $expires,
  179.     $expires_action,
  180.     $mp3Data,
  181.     $coverData,
  182.     $muz_beats,
  183.     $muz_ggc,
  184.     $muz_lenght,
  185.     $muz_file_cat
  186. ) {
  187.     global $db, $thistime, $_TIME, $_IP, $_POST;
  188.  
  189.     // Основная запись новости
  190.     $db->query("INSERT INTO " . PREFIX . "_post (
  191.        date, autor, short_story, full_story, xfields, title, descr, keywords,
  192.        alt_name, allow_comm, approve, allow_main, fixed, allow_br, symbol, tags,
  193.        metatitle, muz_ssilka, cover_ssilka, muz_razmer, muz_beats, muz_ggc,
  194.        muz_lenght, muz_dcount
  195.    ) VALUES (
  196.        '$thistime', '{$member_id['name']}', '$short_story', '$full_story',
  197.        '$filecontents', '$title', '{$metatags['description']}', '{$metatags['keywords']}',
  198.        '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed',
  199.        '$allow_br', '$catalog_url', '{$_POST['tags']}', '{$metatags['title']}',
  200.        'tracks/{$mp3Data['file_name']}', 'tracks/{$coverData['file_name']}',
  201.        '{$mp3Data['file_size']}', '$muz_beats', '$muz_ggc', '$muz_lenght', '0'
  202.    )");
  203.  
  204.     $row = $db->insert_id();
  205.  
  206.     // Дополнительные данные новости
  207.     $db->query("INSERT INTO " . PREFIX . "_post_extras (
  208.        news_id, allow_rate, votes, disable_index, access, user_id
  209.    ) VALUES(
  210.        '{$row}', '{$allow_rating}', '{$add_vote}', '{$disable_index}',
  211.        '{$group_regel}', '{$member_id['user_id']}'
  212.    )");
  213.  
  214.     // Голосование
  215.     if ($add_vote) {
  216.         $db->query("INSERT INTO " . PREFIX . "_poll (
  217.            news_id, title, frage, body, votes, multiple, answer
  218.        ) VALUES(
  219.            '{$row}', '$vote_title', '$frage', '$vote_body', 0, '$allow_m_vote', ''
  220.        )");
  221.     }
  222.  
  223.     // Истекающие новости
  224.     if ($expires) {
  225.         $expires_action = intval($_POST['expires_action']);
  226.         $db->query("INSERT INTO " . PREFIX . "_post_log (
  227.            news_id, expires, action
  228.        ) VALUES(
  229.            '{$row}', '$expires', '$expires_action'
  230.        )");
  231.     }
  232.  
  233.     // Теги
  234.     if (!empty($_POST['tags']) && $approve) {
  235.         $tags = [];
  236.         $_POST['tags'] = explode(",", $_POST['tags']);
  237.  
  238.         foreach ($_POST['tags'] as $value) {
  239.             $tags[] = "('" . $row . "', '" . trim($value) . "')";
  240.         }
  241.  
  242.         $tags = implode(", ", $tags);
  243.         $db->query("INSERT INTO " . PREFIX . "_tags (news_id, tag) VALUES " . $tags);
  244.     }
  245.  
  246.     // Файлы
  247.     if (!empty($mp3Data['file_name'])) {
  248.         $db->query("INSERT INTO " . PREFIX . "_files (
  249.            news_id, name, onserver, author, date, muz_razmer
  250.        ) VALUES (
  251.            '{$row}', '" . $title . " [BeatBass.Ru].mp3',
  252.            '{$muz_file_cat['alt_name']}/{$mp3Data['file_name']}',
  253.            '" . $member_id['name'] . "', '" . time() . "',
  254.            '{$mp3Data['file_size']}'
  255.        )");
  256.     }
  257.  
  258.     // Обложки
  259.     if (!empty($coverData['file_name'])) {
  260.         $db->query("INSERT INTO " . PREFIX . "_cover (
  261.            news_id, onserver
  262.        ) VALUES (
  263.            '{$row}', '{$muz_file_cat['alt_name']}/{$coverData['file_name']}'
  264.        )");
  265.     }
  266.  
  267.     return $row;
  268. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement