Копирование музыки у друзей в SocialEngine Excalibur (Часть 2)

13 сентября 2009

Продолжаем говорить о моде “Копирование музыки у друзей”. В предыдущей статье я рассказал, как сделать эту возможность, но недавно обнаружена недоработка в этом моде, при удалении музыки владельцем удалялась она и у всех скопировавших эту музыку.

Сейчас я расскажу, как сделать, чтобы при удалении музыки владельцем права и сама музыка копировались одному из его друзей, которые скопировали его музыку.

Здесь все просто, необходимо произвести изменения всего в одном файле.

Открыть: class_music.php

Подсказка: Данный файл находится в папке include.

Найти

music_delete($music_id)

Заменить

Подсказка: Полностью заменить функцию music_delete() начиная с function music_delete($music_id) и заканчивая return TRUE; }

function music_delete($music_id)
{
	global $database, $url, $user, $admin;
	if( $this->user_id )
	{
		$music = $database->database_fetch_assoc($database->database_query("SELECT * FROM se_music WHERE music_user_id='{$this->user_id}' && music_id='{$music_id}'"));
	}

	elseif( $admin && $admin->admin_exists )
	{
		$music = $database->database_fetch_assoc($database->database_query("SELECT * FROM se_music WHERE music_id='{$music_id}'"));
	}

	if( empty($music) )
		return FALSE;

	$music_tb = $database->database_fetch_assoc($database->database_query("SELECT owner_user_id FROM se_music WHERE music_id='{$music_id}' LIMIT 1"));
	$owner_user_id = $music_tb[owner_user_id];

	if( strlen($owner_user_id) > 0 )
	{
		if(strrchr($owner_user_id, ','))
		{
			$owner_user_id_text = explode(',', $owner_user_id);
			$owner_user_id_db = "";
			$new_user_music = "";
			foreach($owner_user_id_text as $owner_user_id)
			{
				if($new_user_music == "")
					$new_user_music = $owner_user_id;

				if($owner_user_id != $new_user_music)
					$owner_user_id_db = $owner_user_id_db . "" . $owner_user_id . ",";
			}
			$owner_user_id_db = trim(substr_replace($owner_user_id_db, "", strlen($owner_user_id_db) - 1));
		}
		else
		{
			$new_user_music = $owner_user_id;
			$owner_user_id_db = '';
		}
		$userdir_old = $url->url_userdir($music['music_user_id']);
		$music_file_old = "{$userdir_old}{$music['music_id']}.{$music['music_ext']}";
		$userdir_new = $url->url_userdir($new_user_music);
		$music_file_new = "{$userdir_new}{$music['music_id']}.{$music['music_ext']}";

		if( file_exists($music_file_old) )
		{
			copy($music_file_old, $music_file_new);
			unlink($music_file_old);
		}
		$database->database_query("UPDATE `se_music` SET `music_user_id` = '{$new_user_music}', `owner_user_id` = '{$owner_user_id_db}' WHERE `music_id` = '{$music_id}' LIMIT 1");
	}
	else
	{
		$userdir = $url->url_userdir($music['music_user_id']);
		$music_file = "{$userdir}{$music['music_id']}.{$music['music_ext']}";
		$database->database_query("DELETE FROM se_music WHERE music_id='{$music_id}' LIMIT 1");
		if( file_exists($music_file) )
			unlink($music_file);
	}
	return TRUE;
}

Данную статью Вы также можете скачать в формате doc:
скачать

Автор: Евтеев Евгений Александрович

  • Реклама сайта
  • Категории
  • Комментарии автору
    • Это очень классная идея )) С нетерпением жду!!! Ты мозг! Респект
    • традиционно - плюс за классную штуку
    • Просто хотел лично тебе выразить свою благодарность! Очень обрадовал меня, что помог!
    • Очень помог! Этот человек гений и я рад, что такие люде ещё есть!
    • Помог реализовать добавление музыки
    • За решение проблема знак вопрос квадрат у строка заголовок
    • very helped me =)
    • Спасибо за Social Engine!
    • Спасибо большое
    • вот спасибо :)
    • Красавчик)))
    • классная штука
    • superman
    • evteev, ты кудесник.
    • +1, решили проблему. Evteev, большое спасибо.
    • кул кул и ещё раз кул.
    • помог решить проблему с вкладкой с музыкой! Спасибо!
    • спасибо тебе огромное, работает!
    • СПАСИБО за мод, сэкономило мне уйму времени на создание своего.
  • Статистика