2011-03-28 14:21:28 +00:00
< ?
authorize ();
if ( ! check_perms ( 'torrents_edit' )) { error ( 403 ); }
$ArtistID = $_POST [ 'artistid' ];
$Redirect = $_POST [ 'redirect' ];
2012-06-02 08:00:16 +00:00
$AliasName = normalise_artist_name ( $_POST [ 'name' ]);
$DBAliasName = db_string ( $AliasName );
2011-05-18 08:00:14 +00:00
if ( ! $Redirect ) { $Redirect = 0 ; }
2011-03-28 14:21:28 +00:00
2011-06-03 08:00:07 +00:00
if ( ! is_number ( $ArtistID ) || ! ( $Redirect === 0 || is_number ( $Redirect )) || ! $ArtistID ) {
2011-03-28 14:21:28 +00:00
error ( 0 );
}
if ( $AliasName == '' ) {
2012-06-16 08:00:18 +00:00
error ( 'Blank artist name.' );
2011-03-28 14:21:28 +00:00
}
/*
* In the case of foo , who released an album before changing his name to bar and releasing another
* the field shared to make them appear on the same artist page is the ArtistID
* 1. For a normal artist , there ' ll be one entry , with the ArtistID , the same name as the artist and a 0 redirect
* 2. For Celine Dion ( C<EFBFBD> line Dion ), there ' s two , same ArtistID , diff Names , one has a redirect to the alias of the first
* 3. For foo , there ' s two , same ArtistID , diff names , no redirect
*/
2012-06-16 08:00:18 +00:00
$DB -> query ( " SELECT AliasID, ArtistID, Name, Redirect FROM artists_alias WHERE Name = ' " . $DBAliasName . " ' " );
2012-05-18 13:35:17 +00:00
if ( $DB -> record_count ()) {
2012-06-16 08:00:18 +00:00
while ( list ( $CloneAliasID , $CloneArtistID , $CloneAliasName , $CloneRedirect ) = $DB -> next_record ( MYSQLI_NUM , false )) {
2012-05-18 13:35:17 +00:00
if ( ! strcasecmp ( $CloneAliasName , $AliasName )) {
break ;
}
}
if ( $CloneAliasID ) {
2012-06-16 08:00:18 +00:00
if ( $ArtistID == $CloneArtistID && $Redirect == 0 ) {
if ( $CloneRedirect != 0 ) {
$DB -> query ( " UPDATE artists_alias SET ArtistID=' " . $ArtistID . " ', Redirect=0 WHERE AliasID=' " . $CloneAliasID . " ' " );
write_log ( " Redirection for the alias $CloneAliasID ( $DBAliasName ) for the artist $ArtistID was removed by user $LoggedUser[ID] ( $LoggedUser[Username] ) " );
} else {
error ( 'No changes were made as the target alias did not redirect anywhere.' );
}
2012-05-18 13:35:17 +00:00
} else {
error ( 'An alias by that name already exists <a href="artist.php?id=' . $CloneArtistID . '">here</a>. You can try renaming that artist to this one.' );
}
2011-03-28 14:21:28 +00:00
}
}
2012-05-18 13:35:17 +00:00
if ( ! $CloneAliasID ) {
2012-06-17 08:00:18 +00:00
if ( $Redirect ) {
$DB -> query ( " SELECT ArtistID, Redirect FROM artists_alias WHERE AliasID = $Redirect " );
if ( ! $DB -> record_count ()) {
error ( 'Cannot redirect to a nonexistent artist alias.' );
}
list ( $FoundArtistID , $FoundRedirect ) = $DB -> next_record ();
if ( $ArtistID != $FoundArtistID ) {
error ( 'Redirection must target an alias for the current artist.' );
}
if ( $FoundRedirect != 0 ) {
$Redirect = $FoundRedirect ;
}
2012-06-16 08:00:18 +00:00
}
2012-05-18 13:35:17 +00:00
$DB -> query ( " INSERT INTO artists_alias(ArtistID, Name, Redirect, UserID)
VALUES
2012-06-02 08:00:16 +00:00
( " . $ArtistID . " , '".$DBAliasName."' , " . $Redirect . " , " . $LoggedUser['ID'] . " ) " );
2012-05-18 13:35:17 +00:00
$AliasID = $DB -> inserted_id ();
2011-03-28 14:21:28 +00:00
2012-06-16 08:00:18 +00:00
$DB -> query ( " SELECT Name FROM artists_group WHERE ArtistID = " . $ArtistID );
list ( $ArtistName ) = $DB -> next_record ( MYSQLI_NUM , false );
2011-03-28 14:21:28 +00:00
2012-06-16 08:00:18 +00:00
write_log ( " The alias " . $AliasID . " ( " . $DBAliasName . " ) was added to the artist " . $ArtistID . " ( " . db_string ( $ArtistName ) . " ) by user " . $LoggedUser [ 'ID' ] . " ( " . $LoggedUser [ 'Username' ] . " ) " );
2012-05-18 13:35:17 +00:00
}
2011-03-28 14:21:28 +00:00
header ( 'Location: ' . $_SERVER [ 'HTTP_REFERER' ]);
?>