summaryrefslogtreecommitdiff
path: root/music.php
diff options
context:
space:
mode:
Diffstat (limited to 'music.php')
-rw-r--r--music.php370
1 files changed, 370 insertions, 0 deletions
diff --git a/music.php b/music.php
new file mode 100644
index 0000000..acd4165
--- /dev/null
+++ b/music.php
@@ -0,0 +1,370 @@
+<?php
+
+require_once 'config.php';
+require_once 'connect.php';
+
+class Tag
+{
+ public $uid;
+ public $name;
+}
+
+class Album
+{
+ public $uid;
+ public $name;
+}
+
+class Music
+{
+ public $uid; // unique id
+ public $path; // 路径
+ public $title; // 标题名
+ public $time; // 创建时间
+ public $cover; // 封面
+ public $project; // 封面
+ public $array_tags; // 标签名
+ public $array_albums; // 从属的专辑
+}
+
+function fetch_tag_by_id($uid)
+{
+ $result = execute_sql("SELECT * FROM " . Config::$tb_tags . " where id=" . $uid);
+ while($row = mysqli_fetch_assoc($result)){
+ $tag = new Tag;
+ $tag->uid = $uid;
+ $tag->name = $row['name'];
+ return $tag;
+ }
+ return null;
+}
+
+function fetch_tag_by_name($name)
+{
+ $result = execute_sql("SELECT * FROM " . Config::$tb_tags . " where name='" . $name . "'");
+ if($result == NULL || $result->num_rows == 0)
+ return null;
+ $arr = array();
+ while($row = mysqli_fetch_assoc($result)){
+ $tag = new Tag;
+ $tag->uid = $row['id'];
+ $tag->name = $row['name'];
+ array_push($arr, $tag);
+ }
+ return $arr;
+}
+
+function fetch_all_tags() {
+ $sql = "SELECT * FROM ". Config::$tb_tags;
+ $result = execute_sql($sql);
+ $arr = array();
+ while($row = mysqli_fetch_assoc($result)){
+ $tag = new Tag;
+ $tag->uid = $row['id'];
+ $tag->name = $row['name'];
+ array_push($arr, $tag);
+ }
+ return $arr;
+}
+
+function fetch_album_by_id($uid)
+{
+ $result = execute_sql("SELECT * FROM " . Config::$tb_album . " where id=" . $uid);
+ while($row = mysqli_fetch_assoc($result)){
+ $album = new Album;
+ $album->uid = $uid;
+ $album->name = $row['name'];
+ return $album;
+ }
+ return null;
+}
+
+function fetch_album_by_name($name)
+{
+ $result = execute_sql("SELECT * FROM " . Config::$tb_album . " where name='" . $name . "'");
+ if($result == NULL || $result->num_rows == 0)
+ return null;
+ $arr = array();
+ while($row = mysqli_fetch_assoc($result)){
+ $album = new Album;
+ $album->uid = $row['id'];
+ $album->name = $row['name'];
+ array_push($arr, $album);
+ }
+ return $arr;
+}
+
+function insert_tag($name)
+{
+ execute_sql("INSERT INTO " . Config::$tb_tags . " (name) values('" . $name . "')");
+}
+
+function insert_album($name)
+{
+ execute_sql("INSERT INTO " . Config::$tb_album . " (name) values('" . $name . "')");
+}
+
+function add_unique_tag($name) {
+ $arr = fetch_tag_by_name($name);
+ if($arr == null || count($arr) == 0) {
+ insert_tag($name);
+ $arr = fetch_tag_by_name($name);
+ }
+ return $arr[0];
+}
+
+function add_unique_album($name) {
+ $arr = fetch_album_by_name($name);
+ if($arr == null || count($arr) == 0) {
+ insert_album($name);
+ $arr = fetch_album_by_name($name);
+ }
+ return $arr[0];
+}
+
+// 获得某个音乐的tags
+function fetch_music_tags($uid) {
+ $sql = "SELECT * FROM " . Config::$tb_music_tag . ' WHERE music_id=' . $uid;
+ $result = execute_sql($sql);
+ if($result == NULL || $result->num_rows == 0)
+ return null;
+ $arr = array();
+ while($row = mysqli_fetch_assoc($result)){
+ $tagId = $row['tag_id'];
+ $tag = fetch_tag_by_id($tagId);
+ array_push($arr, $tag);
+ }
+ return $arr;
+}
+
+// 获得某个音乐从属的专辑
+function fetch_music_albums ($uid){
+ $sql = "SELECT * FROM " . Config::$tb_album_music . ' WHERE music_id=' . $uid;
+ $result = execute_sql($sql);
+ if($result == NULL || $result->num_rows == 0)
+ return null;
+ $arr = array();
+ while($row = mysqli_fetch_assoc($result)){
+ $albumId = $row['album_id'];
+ $album = fetch_album_by_id($albumId);
+ array_push($arr, $album);
+ }
+ return $arr;
+}
+
+function fetch_music_by_id($uid) {
+ $sql = "SELECT * FROM " . Config::$tb_music . " WHERE id=" . $uid;
+ $result = execute_sql($sql);
+ if($result == NULL || $result->num_rows == 0)
+ {
+ return null;
+ }
+ while($row = mysqli_fetch_assoc($result)){
+ $music = new Music();
+ $music->uid = $row['id'];
+ $music->path = $row['path'];
+ $music->cover = $row['cover'];
+ $music->project = $row['project'];
+ $music->title = $row['title'];
+ $music->time = $row['time'];
+ $music->array_tags = fetch_music_tags($music->uid);
+ $music->array_albums = fetch_music_albums($music->uid);
+ return $music;
+ }
+}
+
+// 从第from个记录开始的count个
+function fetch_range_music($from=0, $count=100) {
+ $sql = "SELECT id FROM " . Config::$tb_music . " ORDER BY time DESC LIMIT " . $from . ", " . $count ;
+ $result = execute_sql($sql);
+ if($result == NULL || $result->num_rows == 0)
+ {
+ return null;
+ }
+ $arr = array();
+ while($row = mysqli_fetch_assoc($result)){
+ $id = $row['id'];
+ $music = fetch_music_by_id($id);
+ array_push($arr, $music);
+ }
+
+ return $arr;
+}
+
+//搜索
+
+function fetch_musics_by_name($name, $from=0, $count=100) {
+ $sql = "SELECT id FROM " . Config::$tb_music . " WHERE title LIKE '%" . $name . "%' ORDER BY time DESC LIMIT " . $from . ", " . $count;
+ $result = execute_sql($sql);
+ if($result == null || $result->num_rows == 0)
+ return ;
+ $arr = array();
+ while($row = mysqli_fetch_assoc($result)){
+ $music_id = $row['id'];
+ $music = fetch_music_by_id($music_id);
+ array_push($arr, $music);
+ }
+ return $arr;
+}
+
+function fetch_musics_by_tag($tag_id, $from=0, $count=100) {
+ $sql = "SELECT music_id FROM " . Config::$tb_music_tag . " WHERE tag_id=" . $tag_id ;//. " ORDER BY time DESC LIMIT " . $from . ", " . $count;
+ $result = execute_sql($sql);
+ if($result == null || $result->num_rows == 0)
+ return ;
+ $arr = array();
+ while($row = mysqli_fetch_assoc($result)){
+ $music_id = $row['music_id'];
+ $music = fetch_music_by_id($music_id);
+ array_push($arr, $music);
+ }
+ return $arr;
+}
+
+function fetch_musics_by_album($album_id, $from=0, $count=100) {
+ $sql = "SELECT music_id FROM " . Config::$tb_album_music . " WHERE album_id=" . $album_id . " ORDER BY time DESC LIMIT " . $from . ", " . $count;
+ $result = execute_sql($sql);
+ if($result == null || $result->num_rows == 0)
+ return ;
+ $arr = array();
+ while($row = mysqli_fetch_assoc($result)){
+ $music_id = $row['music_id'];
+ $music = fetch_music_by_id($music_id);
+ array_push($arr, $music);
+ }
+ return $arr;
+}
+
+function add_unique_music_tag( $music_id, $tag_id )
+{
+ $result = execute_sql("SELECT * FROM " . Config::$tb_music_tag . " where music_id=" . $music_id . " and tag_id=" . $tag_id );
+ if($result == NULL || $result->num_rows == 0)
+ {
+ execute_sql("INSERT INTO " . Config::$tb_music_tag . " (music_id, tag_id) values (" . $music_id . ", " . $tag_id . ")");
+ }
+}
+
+function add_unique_music_album( $music_id, $album_id )
+{
+ $result = execute_sql("SELECT * FROM " . Config::$tb_album_music . " where music_id=" . $music_id . " and album_id=" . $album_id );
+ if($result == NULL || $result->num_rows == 0)
+ {
+ execute_sql("INSERT INTO " . Config::$tb_album_music . " (music_id, album_id) values (" . $music_id . ", " . $album_id . ")");
+ }
+}
+
+function get_last_id() {
+ $result = execute_sql("select @@IDENTITY");
+ while($row = mysqli_fetch_assoc($result)){
+ println($row);
+ }
+}
+
+// 提交上来的表单中构建music
+function get_music_from_post()
+{
+ $music = new Music;
+
+ $music_file = $_FILES["musicFile"];
+ $cover_image = $_FILES["coverImage"];
+ $music_proj = $_FILES["musicProj"];
+
+ if(is_upload_notempty($music_file)) {
+ $res_music = upload_file(Config::$music_upload_dir, $music_file);
+ if($res_music[0] == 0)
+ return null;
+ $music->path = $res_music[1];
+ }
+ else // 必须有音乐文件
+ {
+ return null;
+ }
+
+ if(is_upload_notempty($cover_image)) {
+ $res_cover = upload_file(Config::$cover_upload_dir, $cover_image);
+ if($res_cover[0] == 0)
+ return null;
+ $music->cover = $res_cover[1];
+ }
+
+ if(is_upload_notempty($music_proj)) {
+ $res_proj = upload_file(Config::$project_upload_dir, $music_proj);
+ if($res_proj[0] == 0)
+ return null;
+ $music->project = $res_proj[1];
+ }
+
+
+ if($_POST["tags"] != null && $_POST["tags"] != "")
+ $tags_name = explode(',', $_POST["tags"]);
+
+ if($_POST["albums"] != null && $_POST["albums"] != "")
+ $albums_id = explode(',', $_POST["albums"]);
+
+ $music->array_tags = array();
+ if($tags_name != null && count($tags_name) > 0) {
+ foreach($tags_name as $tag_name){
+ $tag = add_unique_tag($tag_name);
+ array_push($music->array_tags, $tag);
+ }
+ }
+
+ $music->array_albums = array();
+ if($albums_id != null && count($albums_id) > 0) {
+ foreach($albums_id as $album_id){
+ $album = fetch_album_by_id($album_id);
+ if($album == null)
+ continue;
+ array_push($music->array_albums, $album);
+ }
+ }
+
+ $music->time = time();
+
+ $music->title = html_escape_string($_POST["title"]);
+
+ $music->uid = -1; // 未插入数据库
+
+ //println($music);
+
+ return $music;
+}
+
+// 将music写入数据库(插入或更新)
+function write_music_to_db($music) {
+ if ($music == null )
+ return ;
+
+ if($music->uid == -1){// 插入新的
+
+ $sql = "INSERT INTO " . Config::$tb_music . " (path, title, time, cover, project) values (" .
+ "'". $music->path . "',".
+ "'". $music->title . "',".
+ $music->time . ",".
+ "'". $music->cover . "',".
+ "'". $music->project . "'".
+ ")" ;
+ //println($sql);
+ execute_sql($sql);
+
+ $id = get_last_insert_id();
+
+ foreach($music->array_tags as $tag){
+ add_unique_music_tag($id, $tag->uid);
+ }
+
+ foreach($music->array_albums as $album){
+ add_unique_music_album($id, $album->uid);
+ }
+
+ }
+ else // 更新
+ {
+
+
+
+ }
+
+}
+
+?> \ No newline at end of file