Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Обработка xfields
- $xfieldsid = $added_time;
- $xfieldsaction = "init";
- include ENGINE_DIR . '/inc/xfields.php';
- // Загрузка MP3 файла
- $mp3Data = handleFileUpload(
- 'f_music',
- 'files/mp3/tracks/',
- ['mp3'],
- $config['max_file_size'],
- $title,
- $added_time
- );
- if (!$mp3Data['success']) {
- msg("error", $lang['addnews_error'], $mp3Data['message'], "javascript:history.go(-1)");
- }
- // Загрузка обложки
- $coverData = handleFileUpload(
- 'cv_music',
- 'files/cover/tracks/',
- ['jpg'],
- $config['max_file_size'],
- $title,
- $added_time
- );
- if (!$coverData['success']) {
- msg("error", $lang['addnews_error'], $coverData['message'], "javascript:history.go(-1)");
- }
- // Получение информации о MP3
- if (!empty($mp3Data['file_path'])) {
- include ENGINE_DIR . '/classes/muz/id3v2.class.php';
- $audio = new id3v2();
- $audio->GetInfo($mp3Data['file_path']);
- $id3v1 = $audio->id3v1Info;
- $mpegInfo = $audio->mpegInfo;
- $muz_beats = $parse->remove($mpegInfo['Bitrate']);
- $muz_ggc = $parse->remove($mpegInfo['SamplingRate']);
- $muz_lenght = $parse->remove($mpegInfo['PlayTime']);
- }
- // Сохранение данных в базу
- saveToDatabase(
- $member_id,
- $title,
- $short_story,
- $full_story,
- $filecontents,
- $metatags,
- $alt_name,
- $allow_comm,
- $approve,
- $allow_main,
- $news_fixed,
- $allow_br,
- $catalog_url,
- $allow_rating,
- $add_vote,
- $disable_index,
- $group_regel,
- $vote_title,
- $frage,
- $vote_body,
- $allow_m_vote,
- $expires,
- $expires_action,
- $mp3Data,
- $coverData,
- $muz_beats,
- $muz_ggc,
- $muz_lenght,
- $muz_file_cat
- );
- // Логирование и очистка кеша
- $db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) VALUES ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '1', '{$title}')");
- clear_cache(['news_', 'related_', 'tagscloud_', 'archives_', 'calendar_', 'topnews_', 'rss']);
- msg("info", $lang['addnews_ok'], $lang['addnews_ok_1'] . " \"" . stripslashes(stripslashes($title)) . "\" " . $lang['addnews_ok_2']);
- /**
- * Обрабатывает загрузку файла на сервер
- */
- function handleFileUpload($fieldName, $targetDir, $allowedTypes, $maxSizeMb, $title, $added_time) {
- global $parse;
- $result = [
- 'success' => false,
- 'message' => '',
- 'file_name' => '',
- 'file_path' => '',
- 'file_size' => 0
- ];
- if (empty($title)) {
- $result['message'] = 'Заполните поле "Название"';
- return $result;
- }
- if (!isset($_FILES[$fieldName]) || $_FILES[$fieldName]['error'] !== UPLOAD_ERR_OK) {
- $result['message'] = 'Файл не был загружен';
- return $result;
- }
- // Проверка и создание директории
- if (!is_dir(ROOT_DIR . "/" . $targetDir)) {
- @mkdir(ROOT_DIR . "/" . $targetDir, 0777, true);
- @chmod(ROOT_DIR . "/" . $targetDir, 0777);
- }
- $fileName = $_FILES[$fieldName]['name'];
- $fileParts = explode('.', $fileName);
- $fileExt = strtolower(end($fileParts));
- if (!in_array($fileExt, $allowedTypes)) {
- $result['message'] = 'Недопустимый формат файла. Разрешены: ' . implode(', ', $allowedTypes);
- return $result;
- }
- // Проверка размера файла
- $fileSizeKb = filesize($_FILES[$fieldName]['tmp_name']) / 1024;
- $maxSizeKb = $maxSizeMb * 1024;
- if ($fileSizeKb > $maxSizeKb) {
- $result['message'] = "Размер файла превышает {$maxSizeMb} Mb";
- return $result;
- }
- // Генерация имени файла
- $translitName = totranslit($title);
- $newFileName = $added_time . "-" . $translitName . '.' . $fileExt;
- $fullFilePath = ROOT_DIR . '/' . $targetDir . $newFileName;
- if (!@move_uploaded_file($_FILES[$fieldName]['tmp_name'], $fullFilePath)) {
- $result['message'] = 'Ошибка при сохранении файла';
- return $result;
- }
- $result['success'] = true;
- $result['file_name'] = $newFileName;
- $result['file_path'] = $fullFilePath;
- $result['file_size'] = filesize($fullFilePath);
- return $result;
- }
- /**
- * Сохраняет все данные в базу данных
- */
- function saveToDatabase(
- $member_id,
- $title,
- $short_story,
- $full_story,
- $filecontents,
- $metatags,
- $alt_name,
- $allow_comm,
- $approve,
- $allow_main,
- $news_fixed,
- $allow_br,
- $catalog_url,
- $allow_rating,
- $add_vote,
- $disable_index,
- $group_regel,
- $vote_title,
- $frage,
- $vote_body,
- $allow_m_vote,
- $expires,
- $expires_action,
- $mp3Data,
- $coverData,
- $muz_beats,
- $muz_ggc,
- $muz_lenght,
- $muz_file_cat
- ) {
- global $db, $thistime, $_TIME, $_IP, $_POST;
- // Основная запись новости
- $db->query("INSERT INTO " . PREFIX . "_post (
- date, autor, short_story, full_story, xfields, title, descr, keywords,
- alt_name, allow_comm, approve, allow_main, fixed, allow_br, symbol, tags,
- metatitle, muz_ssilka, cover_ssilka, muz_razmer, muz_beats, muz_ggc,
- muz_lenght, muz_dcount
- ) VALUES (
- '$thistime', '{$member_id['name']}', '$short_story', '$full_story',
- '$filecontents', '$title', '{$metatags['description']}', '{$metatags['keywords']}',
- '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed',
- '$allow_br', '$catalog_url', '{$_POST['tags']}', '{$metatags['title']}',
- 'tracks/{$mp3Data['file_name']}', 'tracks/{$coverData['file_name']}',
- '{$mp3Data['file_size']}', '$muz_beats', '$muz_ggc', '$muz_lenght', '0'
- )");
- $row = $db->insert_id();
- // Дополнительные данные новости
- $db->query("INSERT INTO " . PREFIX . "_post_extras (
- news_id, allow_rate, votes, disable_index, access, user_id
- ) VALUES(
- '{$row}', '{$allow_rating}', '{$add_vote}', '{$disable_index}',
- '{$group_regel}', '{$member_id['user_id']}'
- )");
- // Голосование
- if ($add_vote) {
- $db->query("INSERT INTO " . PREFIX . "_poll (
- news_id, title, frage, body, votes, multiple, answer
- ) VALUES(
- '{$row}', '$vote_title', '$frage', '$vote_body', 0, '$allow_m_vote', ''
- )");
- }
- // Истекающие новости
- if ($expires) {
- $expires_action = intval($_POST['expires_action']);
- $db->query("INSERT INTO " . PREFIX . "_post_log (
- news_id, expires, action
- ) VALUES(
- '{$row}', '$expires', '$expires_action'
- )");
- }
- // Теги
- if (!empty($_POST['tags']) && $approve) {
- $tags = [];
- $_POST['tags'] = explode(",", $_POST['tags']);
- foreach ($_POST['tags'] as $value) {
- $tags[] = "('" . $row . "', '" . trim($value) . "')";
- }
- $tags = implode(", ", $tags);
- $db->query("INSERT INTO " . PREFIX . "_tags (news_id, tag) VALUES " . $tags);
- }
- // Файлы
- if (!empty($mp3Data['file_name'])) {
- $db->query("INSERT INTO " . PREFIX . "_files (
- news_id, name, onserver, author, date, muz_razmer
- ) VALUES (
- '{$row}', '" . $title . " [BeatBass.Ru].mp3',
- '{$muz_file_cat['alt_name']}/{$mp3Data['file_name']}',
- '" . $member_id['name'] . "', '" . time() . "',
- '{$mp3Data['file_size']}'
- )");
- }
- // Обложки
- if (!empty($coverData['file_name'])) {
- $db->query("INSERT INTO " . PREFIX . "_cover (
- news_id, onserver
- ) VALUES (
- '{$row}', '{$muz_file_cat['alt_name']}/{$coverData['file_name']}'
- )");
- }
- return $row;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement