Копирование музыки у друзей в SocialEngine Excalibur
Копирование музыки у друзей в SocialEngine Excalibur
В этой статье поговорим о плагине “Музыка”, а именно о копировании музыки у друзей. А что тут говорить, такой возможности в плагине “Музыка” нет, так вот я покажу, как в несколько шагов реализовать такую возможность.
Сначала необходимо Добавить: еще одно поле в таблицу «se_music», где хранятся записи о добавленным песнях. Выполним sql-запрос:
ALTER TABLE `se_music` ADD `owner_user_id` text AFTER `music_user_id`
Для работы функции «is_already_music()», которая возвращает логическую ложь в том случае, если у участника нет данной песни в его коллекции, пропишем ее в класс «user».
1. Открыть: class_user.php
Подсказка: Данный файл находится в папке include.
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть. Данная часть кода находится внутри функции user_message_view ().
Добавить после:
Подсказка: Добавьте эти строки на новой строке после ранее найденных строк.
Далее уже будем работать с файлами, отвечающими за вывод и добавление музыки.
2. Открыть: class_music.php
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть. Данная часть кода находится внутри функции music_list ().
Заменить:
Подсказка: Произведите замену ранее найденных строк.
3. Открыть: browse_music.php
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Добавить:
Подсказка: Добавьте эти строки на новой строке перед ранее найденными строками.
4. Открыть: user_music.php
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Добавить:
Подсказка: Добавьте эти строки на новой строке перед ранее найденными строками.
5. Открыть: music_ajax.php
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Удалить
Подсказка: Удалите ранее найденные строки.
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Заменить:
Подсказка: Произведите замену ранее найденных строк.
6. Открыть: user_music.tpl
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Заменить:
Подсказка: Произведите замену ранее найденных строк.
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Заменить:
Подсказка: Произведите замену ранее найденных строк.
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Заменить:
Подсказка: Произведите замену ранее найденных строк.
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Заменить:
Подсказка: Произведите замену ранее найденных строк.
7. Открыть: user_music.tpl
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Заменить:
Подсказка: Произведите замену ранее найденных строк.
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Заменить:
Подсказка: Произведите замену ранее найденных строк.
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Заменить:
Подсказка: Произведите замену ранее найденных строк.
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
Заменить:
Подсказка: Произведите замену ранее найденных строк.
Открыть: class_music.php
Подсказка: Данный файл находится в папке include.
Найти:
Заменить:
Подсказка: Полностью заменить функцию music_delete() начиная с function music_delete($music_id) и заканчивая return TRUE; }
Готово! Теперь на странице «browse_music.php» напротив музыки будет показана ссылка «Копировать» в том случае, если ее нет у участника. На странице «user_music.php» можно будет удалить музыку, которую скопировали от друзей.
Автор - Autor: Евтеев Евгений Александрович
Источник
В этой статье поговорим о плагине “Музыка”, а именно о копировании музыки у друзей. А что тут говорить, такой возможности в плагине “Музыка” нет, так вот я покажу, как в несколько шагов реализовать такую возможность.
Сначала необходимо Добавить: еще одно поле в таблицу «se_music», где хранятся записи о добавленным песнях. Выполним sql-запрос:
ALTER TABLE `se_music` ADD `owner_user_id` text AFTER `music_user_id`
Для работы функции «is_already_music()», которая возвращает логическую ложь в том случае, если у участника нет данной песни в его коллекции, пропишем ее в класс «user».
1. Открыть: class_user.php
Подсказка: Данный файл находится в папке include.
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть. Данная часть кода находится внутри функции user_message_view ().
return array
(
‘collaborators’ => &$collaborators,
‘pms’ => &$pms
);
}
Добавить после:
Подсказка: Добавьте эти строки на новой строке после ранее найденных строк.
function is_already_music($music_id)
{
global $database;
$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(substr_count($owner_user_id, $this->user_info['user_id']) == 0)
return 0;
else
return 1;
return 1;
}
Далее уже будем работать с файлами, отвечающими за вывод и добавление музыки.
2. Открыть: class_music.php
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть. Данная часть кода находится внутри функции music_list ().
if( $this->user_id ) $sql .= "
WHERE
se_music.music_user_id=’{$this->user_id}’
«;
Заменить:
Подсказка: Произведите замену ранее найденных строк.
if( $this->user_id ) $sql .= "
WHERE
se_music.music_user_id=’{$this->user_id}’ OR FIND_IN_SET(’{$this->user_id}’, owner_user_id)»;
3. Открыть: browse_music.php
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
$music_object = new se_music();
Добавить:
Подсказка: Добавьте эти строки на новой строке перед ранее найденными строками.
$music_id = $_GET['music_id'];
if( $_GET['task'] == «copy» && $music_id > 0)
{
ob_end_clean();
$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 = trim($music_tb[owner_user_id]);
if(strrchr($owner_user_id, ‘,’))
{
$owner_user_id_text = explode(’,', $owner_user_id);
$owner_user_id_update = «»;
foreach($owner_user_id_text as $owner_user_id)
{
if($owner_user_id != $user->user_info['user_id'])
$owner_user_id_update = $owner_user_id_update . «» . $owner_user_id . «,»;
}
$owner_user_id_update = $owner_user_id_update . «» . $user->user_info['user_id'];
}
else
{
if($owner_user_id == $user->user_info['user_id'] || strlen($owner_user_id) == 0)
$owner_user_id_update = $user->user_info['user_id'];
if( strlen($owner_user_id) > 0 )
$owner_user_id_update = $owner_user_id . «,» . $user->user_info['user_id'];
}
$database->database_query(»UPDATE `se_music` SET `owner_user_id` = ‘{$owner_user_id_update}’ WHERE `music_id` = ‘{$music_id}’ LIMIT 1?);
}
4. Открыть: user_music.php
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
$musiclist = $music->music_list();
Добавить:
Подсказка: Добавьте эти строки на новой строке перед ранее найденными строками.
if( $task == "removesong" && $music_id > 0)
{
ob_end_clean();
$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(strrchr($owner_user_id, ‘,’))
{
$owner_user_id_text = explode(’,', $owner_user_id);
$owner_user_id_db = «»;
foreach($owner_user_id_text as $owner_user_id)
{
if($owner_user_id != $user->user_info['user_id'])
$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
{
if($owner_user_id == $user->user_info['user_id'])
$owner_user_id_text = »;
}
$database->database_query(»UPDATE `se_music` SET `owner_user_id` = ‘{$owner_user_id_db}’ WHERE `music_id` = ‘{$music_id}’ LIMIT 1?);
}
5. Открыть: music_ajax.php
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
$user_dir = $url->url_userdir($user_id);
Удалить
Подсказка: Удалите ранее найденные строки.
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
{$user_dir}
Заменить:
Подсказка: Произведите замену ранее найденных строк.
{$url->url_userdir($song[music_user_id])}
6. Открыть: user_music.tpl
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
{assign var='media_dir' value=$url->url_userdir($user->user_info.user_id)}
{section name=music_loop loop=$musiclist}
Заменить:
Подсказка: Произведите замену ранее найденных строк.
{section loop=$musiclist}
{assign var=’media_dir’ value=$url->url_userdir($musiclist[music_loop].music_user_id)}
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
<input type='checkbox' name='delete_music_{$musiclist[music_loop].music_id}' value='1' />
Заменить:
Подсказка: Произведите замену ранее найденных строк.
{if $musiclist[music_loop].music_user_id == $user->user_info.user_id}<input type='checkbox' name='delete_music_{$musiclist[music_loop].music_id}' value='1' />{/if}
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
<span class="seMusicTitleEdit"> (<a href="javascript:void(0);">{lang_print id=187}</a>)</span>
Заменить:
Подсказка: Произведите замену ранее найденных строк.
{if $musiclist[music_loop].music_user_id == $user->user_info.user_id}<span class="seMusicTitleEdit"> (<a href="javascript:void(0);">{lang_print id=187}</a>)</span>{/if}
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
<span class="seMusicDelete"><a href="javascript:void(0);" onclick="SocialEngine.Music.deleteMusic({$musiclist[music_loop].music_id});">{lang_print id=155}</a> </span>
Заменить:
Подсказка: Произведите замену ранее найденных строк.
{if $musiclist[music_loop].music_user_id == $user->user_info.user_id}
<span class=»seMusicDelete»><a href=»javascript:void(0);» onclick=»SocialEngine.Music.deleteMusic({$musiclist[music_loop].music_id});»>{lang_print id=155}</a> </span>
{else}
<span class=»seMusicDelete»><a href=» user_music.php?task=removesong&music_id={$musiclist[music_loop].music_id}»>{lang_print id=155}</a> </span>
{/if}
7. Открыть: user_music.tpl
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
{assign var='media_dir' value=$url->url_userdir($user->user_info.user_id)}
{section name=music_loop loop=$musiclist}
Заменить:
Подсказка: Произведите замену ранее найденных строк.
{section loop=$musiclist}
{assign var=’media_dir’ value=$url->url_userdir($musiclist[music_loop].music_user_id)}
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
<input type='checkbox' name='delete_music_{$musiclist[music_loop].music_id}' value='1' />
Заменить:
Подсказка: Произведите замену ранее найденных строк.
{if $musiclist[music_loop].music_user_id == $user->user_info.user_id}<input type='checkbox' name='delete_music_{$musiclist[music_loop].music_id}' value='1' />{/if}
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
<span class="seMusicTitleEdit"> (<a href="javascript:void(0);">{lang_print id=187}</a>)</span>
Заменить:
Подсказка: Произведите замену ранее найденных строк.
{if $musiclist[music_loop].music_user_id == $user->user_info.user_id}<span class="seMusicTitleEdit"> (<a href="javascript:void(0);">{lang_print id=187}</a>)</span>{/if}
Найти:
Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.
<span class="seMusicDelete"><a href="javascript:void(0);" onclick="SocialEngine.Music.deleteMusic({$musiclist[music_loop].music_id});">{lang_print id=155}</a> </span>
Заменить:
Подсказка: Произведите замену ранее найденных строк.
{if $musiclist[music_loop].music_user_id == $user->user_info.user_id}
<span class=»seMusicDelete»><a href=»javascript:void(0);» onclick=»SocialEngine.Music.deleteMusic({$musiclist[music_loop].music_id});»>{lang_print id=155}</a> </span>
{else}
<span class=»seMusicDelete»><a href=» user_music.php?task=removesong&music_id={$musiclist[music_loop].music_id}»>{lang_print id=155}</a> </span>
{/if}
Открыть: 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;
}
Готово! Теперь на странице «browse_music.php» напротив музыки будет показана ссылка «Копировать» в том случае, если ее нет у участника. На странице «user_music.php» можно будет удалить музыку, которую скопировали от друзей.
Автор - Autor: Евтеев Евгений Александрович
Источник