summaryrefslogtreecommitdiffstats
path: root/lib/flag.php
diff options
context:
space:
mode:
authorKarl 'vollmerk' Vollmer <vollmer@ampache.org>2005-06-09 16:34:40 +0000
committerKarl 'vollmerk' Vollmer <vollmer@ampache.org>2005-06-09 16:34:40 +0000
commitbcad40a05ab2dc2a341a3227e30b96668bce4500 (patch)
tree6fca27588d53a1b24705bd2834e9e643bb729bd1 /lib/flag.php
downloadampache-bcad40a05ab2dc2a341a3227e30b96668bce4500.tar.gz
ampache-bcad40a05ab2dc2a341a3227e30b96668bce4500.tar.bz2
ampache-bcad40a05ab2dc2a341a3227e30b96668bce4500.zip
New Import
Diffstat (limited to 'lib/flag.php')
-rw-r--r--lib/flag.php348
1 files changed, 348 insertions, 0 deletions
diff --git a/lib/flag.php b/lib/flag.php
new file mode 100644
index 00000000..01b3ba9f
--- /dev/null
+++ b/lib/flag.php
@@ -0,0 +1,348 @@
+<?php
+/*
+
+ Copyright (c) 2004 Ampache.org
+ All rights reserved.
+
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+*/
+
+//
+//
+
+function add_to_edit_queue($flags=0)
+{
+ $oldflags = 0;
+ if(empty($flags)) $flags = 0;
+ if($_SESSION['edit_queue'])
+ {
+ $oldflags = $_SESSION['edit_queue'];
+ if(!is_array($oldflags)) $oldflags = array($oldflags);
+ }
+
+ if(!is_array($flags))
+ {
+ if($flags !== 0) $flags = array($flags);
+ }
+
+ if(is_array($flags))
+ {
+ if(is_array($oldflags)) $new_array = array_merge($flags, $oldflags);
+ else $new_array = $flags;
+ }
+ elseif (is_array($oldflags)) $new_array = $oldflags;
+
+ if(count($new_array))
+ {
+ $_SESSION['edit_queue'] = $new_array;
+ return count($new_array);
+ }
+ else
+ {
+ unset($_SESSION['edit_queue']);
+ return 0;
+ }
+}
+
+function show_edit_flagged($flag=0)
+{
+ if(empty($flag)||$flag === 0)
+ {
+ $flag = array_pop($_SESSION['edit_queue']);
+ }
+ $flaginfo = get_flag($flag);
+ if($flaginfo['type'] === 'badid3')
+ {
+ show_edit_badid3($flaginfo['song'],$flag);
+ }
+ else
+ {
+ echo "I don't know how to edit already edited songs yet: $flag.<br />";
+ }
+}
+
+function show_edit_badid3($songid,$flagid)
+{
+ $song = get_song_info($songid);
+ require(conf('prefix')."/templates/song_edit.inc");
+}
+
+function get_flag($id)
+{
+ if(!is_array($id)) $id = array($id);
+ $results = array();
+ $newid = array_pop($id);
+ $sql = "SELECT flagged.id,user.username,type,song,date,comment" .
+ " FROM flagged,user WHERE flagged.user = user.id AND (flagged.song = '$newid'";
+ foreach($id as $num)
+ {
+ $sql .= " OR flagged.song = '$num'";
+ }
+ $sql .= ")";
+ $result = mysql_query($sql, dbh());
+ while ($row = mysql_fetch_array($result))
+ {
+ $results[] = $row;
+ }
+ if(count($results) == 1) return $results[0];
+ else return $results;
+}
+
+
+function get_flagged_songs($user = 0)
+{
+ $sql = "SELECT flagged.id,user.username,type,song,date,comment" .
+ " FROM flagged,user WHERE flagged.user = user.id AND flagged.type <> 'notify' AND flagged.type <> 'done'";
+
+ // If the user is not an admin, they can only see songs they've flagged
+ if($user)
+ {
+ if($_SESSION['userdata']['access'] === 'admin')
+ {
+ $sql .= " AND user.id = '$user'";
+ }
+ else
+ {
+ $sql .= " AND user.id = '".$_SESSION['userdata']['id']."'";
+ }
+ }
+
+ $sql .= " ORDER BY date";
+ $result = mysql_query($sql, dbh());
+
+ $arr = array();
+
+ while ($flag = mysql_fetch_array($result))
+ {
+ $arr[] = $flag;
+ }
+ return $arr;
+}
+
+function show_flagged_songs($flags)
+{
+ require_once(conf('prefix').'/templates/list_flagged.inc');
+}
+
+function accept_new_tags($flags)
+{
+ if(!is_array($flags)) $flags = array($flags);
+ foreach($flags as $flag)
+ {
+ copy_updated_tag($flag);
+ }
+ set_flag_value($flags, 'setid3');
+}
+
+
+function reject_new_tags($flags)
+{
+ if(!is_array($flags)) $flags = array($flags);
+ $oldflags = $flags;
+ $flag = array_pop($flags);
+ $sql = "DELETE FROM flagged_songs WHERE song = '$flag'";
+
+ foreach($flags as $flag)
+ {
+ $sql .= " OR song = '$flag'";
+ }
+ $result = mysql_query($sql, dbh());
+ $user = $_SESSION['userdata']['username'];
+ set_flag_value($oldflags, 'notify', "Tag changes rejected by $user");
+}
+
+function set_flag_value($flags, $val, $comment = '')
+{
+ if(!is_array($flags)) $flags = array($flags);
+ $user = $_SESSION['userdata']['id'];
+/* $flagid = array_pop($flags);*/
+ $dbh = dbh();
+ foreach($flags as $flagid)
+ {
+ $sql = "REPLACE INTO flagged (type,song,comment,user,date)".
+ " VALUES ('$val','$flagid','$comment','$user','".time()."')";
+ $result = mysql_query($sql, $dbh);
+ }
+ return $result;
+}
+
+function copy_updated_tag($flag)
+{
+ $flagdata = get_flag($flag);
+ $sql = "SELECT * FROM flagged_song WHERE song = '".$flagdata['song']."'";
+ $result = mysql_query($sql, dbh());
+ $newtag = mysql_fetch_array($result);
+
+ if($newtag['new_artist'])
+ {
+ $newtag['artist'] = insert_artist($newtag['new_artist']);
+ }
+ if($newtag['new_album'])
+ {
+ $newtag['album'] = insert_album($newtag['new_album']);
+ }
+
+ $sql = "UPDATE song SET ".
+ "title = '".$newtag['title']."',".
+ "artist = '".$newtag['artist']."',".
+ "album = '".$newtag['album']."',".
+ "track = '".$newtag['track']."',".
+ "genre = '".$newtag['genre']."',".
+ "year = '".$newtag['year']."' ".
+ "WHERE song.id = '".$newtag['song']."'";
+ $result = mysql_query($sql, dbh());
+ if($result)
+ {
+ $sql2 = "DELETE FROM flagged_song WHERE song='".$flagdata['song']."'";
+ $result2 = mysql_query($sql2, dbh());
+ }
+ return ($result && $result2);
+
+}
+
+function update_flags($songs)
+{
+ $accepted = array();
+ $rejected = array();
+ $newflags = array();
+ foreach($songs as $song)
+ {
+ $accept = scrub_in($_REQUEST[$song.'_accept']);
+ if($accept === 'accept') $accepted[] = $song;
+ elseif ($accept === 'reject') $rejected[] = $song;
+ else
+ {
+ $newflag = scrub_in($_REQUEST[$song.'_newflag']);
+ $newflags[$song] = $newflag;
+ }
+ }
+
+ if(count($accepted))
+ {
+ accept_new_tags($accepted);
+ }
+ if(count($rejected))
+ {
+ reject_new_tags($rejected);
+ }
+ if(count($newflags))
+ {
+ foreach($newflags as $flag=>$type)
+ {
+ set_flag_value($flag, $type);
+ }
+ }
+
+}
+
+
+function update_song_info($song)
+{
+ $user = $_SESSION['userdata'];
+
+ $title = scrub_in($_REQUEST['title']);
+ $track = scrub_in($_REQUEST['track']);
+ $genre = scrub_in($_REQUEST['genre']);
+ $year = scrub_in($_REQUEST['year']);
+
+ if(isset($_REQUEST['update_id3']))
+ $update_id3 = 1;
+
+ if(isset($_REQUEST['new_artist']) && $_REQUEST['new_artist'] !== '')
+ {
+ $create_artist = 1;
+ $artist = scrub_in($_REQUEST['new_artist']);
+ }
+ else
+ $artist = scrub_in($_REQUEST['artist']);
+
+ if(isset($_REQUEST['new_album']) && $_REQUEST['new_album'] !== '')
+ {
+ $create_album = 1;
+ $album = scrub_in($_REQUEST['new_album']);
+ }
+ else
+ $album = scrub_in($_REQUEST['album']);
+
+ if(is_array($_REQUEST['genre'])) {
+ $genre = $genre[0];
+ }
+
+ if($user['access'] == 'admin')
+ // Update the file directly
+ {
+ if($create_artist)
+ {
+ $artist = insert_artist($artist);
+ }
+ if($create_album)
+ {
+ $album = insert_album($album);
+ }
+ // Escape data (prevent " or ' snafu's)
+ $title = sql_escape($title);
+ $artist = sql_escape($artist);
+ $album = sql_escape($album);
+ $genre = sql_escape($genre);
+ $year = sql_escape($year);
+
+ $sql = "UPDATE song SET" .
+ " title = '$title'," .
+ " track = '$track'," .
+ " genre = '$genre'," .
+ " year = '$year'," .
+ " artist = '$artist',".
+ " album = '$album'," .
+ " update_time = '".time()."'" .
+ " WHERE id = '$song' LIMIT 1";
+ $result = mysql_query($sql, dbh() );
+ if($result && $update_id3 )
+ {
+ //Add to flagged table so we can fix the id3 tags
+ $date = time();
+ $sql = "REPLACE INTO flagged SET " .
+ " type = 'setid3', song = '$song', date = '$date', user = '".$user['id']."'";
+ $result = mysql_query($sql, dbh());
+ }
+ }
+
+ else
+ // Stick in the flagged_songs table to be updated by an admin
+ {
+ if($create_artist) $artist_field = 'new_artist';
+ else $artist_field = 'artist';
+
+ if($create_album) $album_field = 'new_album';
+ else $album_field = 'album';
+
+ $sql = "INSERT INTO flagged_song(song,title,track,genre,year,$artist_field,$album_field,update_time) " .
+ "VALUES ('$song','$title','$track','$genre','$year','$artist','$album','".time()."')";
+ $result = mysql_query($sql, dbh() );
+
+ if($result && $update_id3 )
+ {
+ //Add to flagged table so we can fix the id3 tags
+ $date = time();
+ $sql = "REPLACE INTO flagged SET " .
+ " type = 'newid3', song = '$song', date = '$date', user = '".$user['id']."'";
+ $result = mysql_query($sql, dbh());
+ }
+ echo "Thanks for helping to keep the catalog up to date. Someone will review your changes, and you will be notified on the main page when they're approved.";
+
+ }
+}
+