diff --git a/classes/class_lastfm.php b/classes/class_lastfm.php new file mode 100644 index 00000000..c59fa114 --- /dev/null +++ b/classes/class_lastfm.php @@ -0,0 +1,36 @@ +get_value('artist_events_'.$ArtistID); + if(empty($ArtistEvents)) { + $ArtistEvents = self::lastfm_request("artist.getEvents", array("artist" => $Artist, "limit" => $Limit)); + $Cache->cache_value('artist_events_'.$ArtistID, $ArtistEvents, 432000); + } + return $ArtistEvents; + } + + private static function lastfm_request($Method, $Args) { + $Url = LASTFM_API_URL.$Method; + if(is_array($Args)) { + foreach ($Args as $Key => $Value) { + $Url .= "&".$Key."=".urlencode($Value); + } + $Url .= "&format=json&api_key=".LASTFM_KEY; + + $Curl=curl_init(); + curl_setopt($Curl,CURLOPT_HEADER,0); + curl_setopt($Curl,CURLOPT_CONNECTTIMEOUT,30); + curl_setopt($Curl,CURLOPT_RETURNTRANSFER,1); + curl_setopt($Curl,CURLOPT_URL,$Url); + $Return=curl_exec($Curl); + curl_close($Curl); + return json_decode($Return, true); + } + } +} + + \ No newline at end of file diff --git a/classes/class_torrent_form.php b/classes/class_torrent_form.php index 2c873c19..26a62477 100644 --- a/classes/class_torrent_form.php +++ b/classes/class_torrent_form.php @@ -420,7 +420,7 @@ function show() { - + Bitrate [+] [-] + + + + + Multi Format Uploader + + + + NewTorrent) { ?> Vanity House: diff --git a/classes/class_votes.php b/classes/class_votes.php index a8015463..ef4e53c5 100644 --- a/classes/class_votes.php +++ b/classes/class_votes.php @@ -1,4 +1,4 @@ -">[View history] [Info] [Comments] + + [Concerts] + [Delete]
full_format($Body)?>
+ query("SELECT CEIL((SELECT COUNT(ID)+1 FROM artist_comments AS ac WHERE ac.ArtistID='".db_string($ArtistID)."')/".TORRENT_COMMENTS_PER_PAGE.") AS Pages"); + if (!$ArtistID) { + error(404); + } + + $DB->query("SELECT CEIL((SELECT COUNT(ID)+1 FROM artist_comments AS ac WHERE ac.ArtistID='" . db_string($ArtistID) . "')/" . TORRENT_COMMENTS_PER_PAGE . ") AS Pages"); list($Pages) = $DB->next_record(); - + $DB->query("INSERT INTO artist_comments (ArtistID,AuthorID,AddedTime,Body) VALUES ( - '".db_string($ArtistID)."', '".db_string($LoggedUser['ID'])."','".sqltime()."','".db_string($_POST['body'])."')"); - $PostID=$DB->inserted_id(); - - $CatalogueID = floor((TORRENT_COMMENTS_PER_PAGE*$Pages-TORRENT_COMMENTS_PER_PAGE)/THREAD_CATALOGUE); - $Cache->begin_transaction('artist_comments_'.$ArtistID.'_catalogue_'.$CatalogueID); + '" . db_string($ArtistID) . "', '" . db_string($LoggedUser['ID']) . "','" . sqltime() . "','" . db_string($_POST['body']) . "')"); + $PostID = $DB->inserted_id(); + + $CatalogueID = floor((TORRENT_COMMENTS_PER_PAGE * $Pages - TORRENT_COMMENTS_PER_PAGE) / THREAD_CATALOGUE); + $Cache->begin_transaction('artist_comments_' . $ArtistID . '_catalogue_' . $CatalogueID); $Post = array( - 'ID'=>$PostID, - 'AuthorID'=>$LoggedUser['ID'], - 'AddedTime'=>sqltime(), - 'Body'=>$_POST['body'], - 'EditedUserID'=>0, - 'EditedTime'=>'0000-00-00 00:00:00', - 'Username'=>'' - ); + 'ID' => $PostID, + 'AuthorID' => $LoggedUser['ID'], + 'AddedTime' => sqltime(), + 'Body' => $_POST['body'], + 'EditedUserID' => 0, + 'EditedTime' => '0000-00-00 00:00:00', + 'Username' => '' + ); $Cache->insert('', $Post); $Cache->commit_transaction(0); - $Cache->increment('artist_comments_'.$ArtistID); - - header('Location: artist.php?id='.$ArtistID.'&page='.$Pages); + $Cache->increment('artist_comments_' . $ArtistID); + + header('Location: artist.php?id=' . $ArtistID . '&page=' . $Pages); break; case 'warn' : - include(SERVER_ROOT.'/sections/artist/warn.php'); - break; - case 'take_warn' : - include(SERVER_ROOT.'/sections/artist/take_warn.php'); - break; - - - - default: + include(SERVER_ROOT . '/sections/artist/warn.php'); + break; + case 'take_warn' : + include(SERVER_ROOT . '/sections/artist/take_warn.php'); + break; + case 'concert_thread': + include(SERVER_ROOT . '/sections/artist/concert_thread.php'); + break; + case 'take_concert_thread': + include(SERVER_ROOT . '/sections/artist/take_concert_thread.php'); + break; + default: error(0); } -} elseif(!empty($_GET['action'])) { - switch ($_GET['action']) { +} elseif (!empty($_GET['action'])) { + switch ($_GET['action']) { case 'get_post': - if (!$_GET['post'] || !is_number($_GET['post'])) { error(0); } - $DB->query("SELECT Body FROM artist_comments WHERE ID='".db_string($_GET['post'])."'"); + if (!$_GET['post'] || !is_number($_GET['post'])) { + error(0); + } + $DB->query("SELECT Body FROM artist_comments WHERE ID='" . db_string($_GET['post']) . "'"); list($Body) = $DB->next_record(MYSQLI_NUM); echo trim($Body); break; - + case 'delete_comment': authorize(); - + // Quick SQL injection check - if (!$_GET['postid'] || !is_number($_GET['postid'])) { error(0); } - + if (!$_GET['postid'] || !is_number($_GET['postid'])) { + error(0); + } + // Make sure they are moderators - if (!check_perms('site_moderate_forums')) { error(403); } - + if (!check_perms('site_moderate_forums')) { + error(403); + } + // Get topicid, forumid, number of pages $DB->query("SELECT ArtistID, - CEIL(COUNT(ac.ID)/".TORRENT_COMMENTS_PER_PAGE.") AS Pages, - CEIL(SUM(IF(ac.ID<=".$_GET['postid'].",1,0))/".TORRENT_COMMENTS_PER_PAGE.") AS Page + CEIL(COUNT(ac.ID)/" . TORRENT_COMMENTS_PER_PAGE . ") AS Pages, + CEIL(SUM(IF(ac.ID<=" . $_GET['postid'] . ",1,0))/" . TORRENT_COMMENTS_PER_PAGE . ") AS Page FROM artist_comments AS ac - WHERE ac.ArtistID=(SELECT ArtistID FROM artist_comments WHERE ID=".$_GET['postid'].") + WHERE ac.ArtistID=(SELECT ArtistID FROM artist_comments WHERE ID=" . $_GET['postid'] . ") GROUP BY ac.ArtistID"); - list($ArtistID,$Pages,$Page)=$DB->next_record(); - + list($ArtistID, $Pages, $Page) = $DB->next_record(); + // $Pages = number of pages in the thread // $Page = which page the post is on // These are set for cache clearing. - - $DB->query("DELETE FROM artist_comments WHERE ID='".db_string($_GET['postid'])."'"); - + + $DB->query("DELETE FROM artist_comments WHERE ID='" . db_string($_GET['postid']) . "'"); + //We need to clear all subsequential catalogues as they've all been bumped with the absence of this post - $ThisCatalogue = floor((TORRENT_COMMENTS_PER_PAGE*$Page-TORRENT_COMMENTS_PER_PAGE)/THREAD_CATALOGUE); - $LastCatalogue = floor((TORRENT_COMMENTS_PER_PAGE*$Pages-TORRENT_COMMENTS_PER_PAGE)/THREAD_CATALOGUE); - for($i=$ThisCatalogue;$i<=$LastCatalogue;$i++) { - $Cache->delete('artist_comments_'.$ArtistID.'_catalogue_'.$i); + $ThisCatalogue = floor((TORRENT_COMMENTS_PER_PAGE * $Page - TORRENT_COMMENTS_PER_PAGE) / THREAD_CATALOGUE); + $LastCatalogue = floor((TORRENT_COMMENTS_PER_PAGE * $Pages - TORRENT_COMMENTS_PER_PAGE) / THREAD_CATALOGUE); + for ($i = $ThisCatalogue; $i <= $LastCatalogue; $i++) { + $Cache->delete('artist_comments_' . $ArtistID . '_catalogue_' . $i); } - + // Delete thread info cache (eg. number of pages) - $Cache->delete('artist_comments_'.$ArtistID); - + $Cache->delete('artist_comments_' . $ArtistID); + break; - + case 'takeedit_post': authorize(); - include(SERVER_ROOT.'/classes/class_text.php'); // Text formatting class + include(SERVER_ROOT . '/classes/class_text.php'); // Text formatting class $Text = new TEXT; - + // Quick SQL injection check - if(!$_POST['post'] || !is_number($_POST['post'])) { error(0); } - + if (!$_POST['post'] || !is_number($_POST['post'])) { + error(0); + } + // Mainly $DB->query("SELECT ac.Body, @@ -146,111 +158,116 @@ ac.ArtistID, ac.AddedTime FROM artist_comments AS ac - WHERE ac.ID='".db_string($_POST['post'])."'"); - list($OldBody, $AuthorID,$ArtistID,$AddedTime)=$DB->next_record(); - - $DB->query("SELECT ceil(COUNT(ID) / ".TORRENT_COMMENTS_PER_PAGE.") AS Page FROM artist_comments WHERE ArtistID = $ArtistID AND ID <= $_POST[post]"); + WHERE ac.ID='" . db_string($_POST['post']) . "'"); + list($OldBody, $AuthorID, $ArtistID, $AddedTime) = $DB->next_record(); + + $DB->query("SELECT ceil(COUNT(ID) / " . TORRENT_COMMENTS_PER_PAGE . ") AS Page FROM artist_comments WHERE ArtistID = $ArtistID AND ID <= $_POST[post]"); list($Page) = $DB->next_record(); - - if ($LoggedUser['ID']!=$AuthorID && !check_perms('site_moderate_forums')) { error(404); } - if ($DB->record_count()==0) { error(404); } - + + if ($LoggedUser['ID'] != $AuthorID && !check_perms('site_moderate_forums')) { + error(404); + } + if ($DB->record_count() == 0) { + error(404); + } + // Perform the update $DB->query("UPDATE artist_comments SET - Body = '".db_string($_POST['body'])."', - EditedUserID = '".db_string($LoggedUser['ID'])."', - EditedTime = '".sqltime()."' - WHERE ID='".db_string($_POST['post'])."'"); - + Body = '" . db_string($_POST['body']) . "', + EditedUserID = '" . db_string($LoggedUser['ID']) . "', + EditedTime = '" . sqltime() . "' + WHERE ID='" . db_string($_POST['post']) . "'"); + // Update the cache - $CatalogueID = floor((TORRENT_COMMENTS_PER_PAGE*$Page-TORRENT_COMMENTS_PER_PAGE)/THREAD_CATALOGUE); - $Cache->begin_transaction('artist_comments_'.$ArtistID.'_catalogue_'.$CatalogueID); - + $CatalogueID = floor((TORRENT_COMMENTS_PER_PAGE * $Page - TORRENT_COMMENTS_PER_PAGE) / THREAD_CATALOGUE); + $Cache->begin_transaction('artist_comments_' . $ArtistID . '_catalogue_' . $CatalogueID); + $Cache->update_row($_POST['key'], array( - 'ID'=>$_POST['post'], - 'AuthorID'=>$AuthorID, - 'AddedTime'=>$AddedTime, - 'Body'=>$_POST['body'], - 'EditedUserID'=>db_string($LoggedUser['ID']), - 'EditedTime'=>sqltime(), - 'Username'=>$LoggedUser['Username'] + 'ID' => $_POST['post'], + 'AuthorID' => $AuthorID, + 'AddedTime' => $AddedTime, + 'Body' => $_POST['body'], + 'EditedUserID' => db_string($LoggedUser['ID']), + 'EditedTime' => sqltime(), + 'Username' => $LoggedUser['Username'] )); $Cache->commit_transaction(0); - + $DB->query("INSERT INTO comments_edits (Page, PostID, EditUser, EditTime, Body) - VALUES ('artist', ".db_string($_POST['post']).", ".db_string($LoggedUser['ID']).", '".sqltime()."', '".db_string($OldBody)."')"); - + VALUES ('artist', " . db_string($_POST['post']) . ", " . db_string($LoggedUser['ID']) . ", '" . sqltime() . "', '" . db_string($OldBody) . "')"); + // This gets sent to the browser, which echoes it in place of the old body echo $Text->full_format($_POST['body']); break; - + case 'edit': - require(SERVER_ROOT.'/sections/artist/edit.php'); + require(SERVER_ROOT . '/sections/artist/edit.php'); break; case 'delete': - require(SERVER_ROOT.'/sections/artist/delete.php'); + require(SERVER_ROOT . '/sections/artist/delete.php'); break; case 'revert': - require(SERVER_ROOT.'/sections/artist/takeedit.php'); + require(SERVER_ROOT . '/sections/artist/takeedit.php'); break; case 'history': - require(SERVER_ROOT.'/sections/artist/history.php'); + require(SERVER_ROOT . '/sections/artist/history.php'); break; case 'vote_similar': - require(SERVER_ROOT.'/sections/artist/vote_similar.php'); + require(SERVER_ROOT . '/sections/artist/vote_similar.php'); break; case 'delete_similar': - require(SERVER_ROOT.'/sections/artist/delete_similar.php'); + require(SERVER_ROOT . '/sections/artist/delete_similar.php'); break; case 'similar': - require(SERVER_ROOT.'/sections/artist/similar.php'); + require(SERVER_ROOT . '/sections/artist/similar.php'); break; case 'similar_bg': - require(SERVER_ROOT.'/sections/artist/similar_bg.php'); + require(SERVER_ROOT . '/sections/artist/similar_bg.php'); break; case 'notify': - require(SERVER_ROOT.'/sections/artist/notify.php'); + require(SERVER_ROOT . '/sections/artist/notify.php'); break; case 'notifyremove': - require(SERVER_ROOT.'/sections/artist/notifyremove.php'); + require(SERVER_ROOT . '/sections/artist/notifyremove.php'); break; case 'delete_alias': - require(SERVER_ROOT.'/sections/artist/delete_alias.php'); + require(SERVER_ROOT . '/sections/artist/delete_alias.php'); break; case 'change_artistid': - require(SERVER_ROOT.'/sections/artist/change_artistid.php'); + require(SERVER_ROOT . '/sections/artist/change_artistid.php'); break; default: error(0); + break; } } else { - if(!empty($_GET['id'])) { - - include (SERVER_ROOT.'/sections/artist/artist.php'); - + if (!empty($_GET['id'])) { + + include (SERVER_ROOT . '/sections/artist/artist.php'); + } elseif (!empty($_GET['artistname'])) { $NameSearch = str_replace('\\', '\\\\', trim($_GET['artistname'])); - $DB->query("SELECT ArtistID, Name FROM artists_alias WHERE Name LIKE '".db_string($NameSearch)."'"); - if($DB->record_count() == 0) { - if(isset($LoggedUser['SearchType']) && $LoggedUser['SearchType']) { - header('Location: torrents.php?action=advanced&artistname='.urlencode($_GET['artistname'])); + $DB->query("SELECT ArtistID, Name FROM artists_alias WHERE Name LIKE '" . db_string($NameSearch) . "'"); + if ($DB->record_count() == 0) { + if (isset($LoggedUser['SearchType']) && $LoggedUser['SearchType']) { + header('Location: torrents.php?action=advanced&artistname=' . urlencode($_GET['artistname'])); } else { - header('Location: torrents.php?searchstr='.urlencode($_GET['artistname'])); + header('Location: torrents.php?searchstr=' . urlencode($_GET['artistname'])); } die(); } list($FirstID, $Name) = $DB->next_record(MYSQLI_NUM, false); - if($DB->record_count() == 1 || !strcasecmp($Name,$NameSearch)) { - header('Location: artist.php?id='.$FirstID); + if ($DB->record_count() == 1 || !strcasecmp($Name, $NameSearch)) { + header('Location: artist.php?id=' . $FirstID); die(); } - while(list($ID, $Name) = $DB->next_record(MYSQLI_NUM, false)) { - if(!strcasecmp($Name,$NameSearch)) { - header('Location: artist.php?id='.$ID); + while (list($ID, $Name) = $DB->next_record(MYSQLI_NUM, false)) { + if (!strcasecmp($Name, $NameSearch)) { + header('Location: artist.php?id=' . $ID); die(); } } - header('Location: artist.php?id='.$FirstID); + header('Location: artist.php?id=' . $FirstID); die(); } else { header('Location: torrents.php'); diff --git a/sections/forums/functions.php b/sections/forums/functions.php index 34cad3c6..ca8bc5cd 100644 --- a/sections/forums/functions.php +++ b/sections/forums/functions.php @@ -56,3 +56,30 @@ function check_forumperm($ForumID, $Perm = 'Read') { } return true; } + +// Function to get basic information on a forum +// Uses class CACHE +function get_forum_info($ForumID) { + global $DB, $Cache; + $Forum = $Cache->get_value('ForumInfo_'.$ForumID); + if(!$Forum) { + $DB->query("SELECT + Name, + MinClassRead, + MinClassWrite, + MinClassCreate, + COUNT(forums_topics.ID) AS Topics + FROM forums + LEFT JOIN forums_topics ON forums_topics.ForumID=forums.ID + WHERE forums.ID='$ForumID' + GROUP BY ForumID"); + if($DB->record_count() == 0) { + return false; + } + // Makes an array, with $Forum['Name'], etc. + $Forum = $DB->next_record(MYSQLI_ASSOC); + + $Cache->cache_value('ForumInfo_'.$ForumID, $Forum, 86400); // Cache for a day + } + return $Forum; +} \ No newline at end of file diff --git a/sections/forums/index.php b/sections/forums/index.php index 98ad0013..f8389eb9 100644 --- a/sections/forums/index.php +++ b/sections/forums/index.php @@ -151,29 +151,3 @@ require(SERVER_ROOT.'/sections/forums/main.php'); } -// Function to get basic information on a forum -// Uses class CACHE -function get_forum_info($ForumID) { - global $DB, $Cache; - $Forum = $Cache->get_value('ForumInfo_'.$ForumID); - if(!$Forum) { - $DB->query("SELECT - Name, - MinClassRead, - MinClassWrite, - MinClassCreate, - COUNT(forums_topics.ID) AS Topics - FROM forums - LEFT JOIN forums_topics ON forums_topics.ForumID=forums.ID - WHERE forums.ID='$ForumID' - GROUP BY ForumID"); - if($DB->record_count() == 0) { - return false; - } - // Makes an array, with $Forum['Name'], etc. - $Forum = $DB->next_record(MYSQLI_ASSOC); - - $Cache->cache_value('ForumInfo_'.$ForumID, $Forum, 86400); // Cache for a day - } - return $Forum; -} diff --git a/sections/forums/newthread.php b/sections/forums/newthread.php index 225381cb..c4944990 100644 --- a/sections/forums/newthread.php +++ b/sections/forums/newthread.php @@ -149,9 +149,11 @@ function RemoveAnswerField() { /> - - - +
+ + + +
diff --git a/sections/torrents/details.php b/sections/torrents/details.php index 007d1582..3f341b85 100644 --- a/sections/torrents/details.php +++ b/sections/torrents/details.php @@ -133,11 +133,11 @@ function compare($X, $Y){ ?>
Artists - [Edit]' : ''?> + [Edit]' : ''?>