Tadashi Okoshi
slash****@users*****
2005年 6月 26日 (日) 23:20:40 JST
Index: affelio/lib/Affelio/SNS/FriendManager.pm diff -u affelio/lib/Affelio/SNS/FriendManager.pm:1.4 affelio/lib/Affelio/SNS/FriendManager.pm:1.5 --- affelio/lib/Affelio/SNS/FriendManager.pm:1.4 Sun Jun 26 21:10:42 2005 +++ affelio/lib/Affelio/SNS/FriendManager.pm Sun Jun 26 23:20:39 2005 @@ -4,7 +4,7 @@ # http://affelio.jp/ (Japan) # http://affelio.jp/ (USA and other area) # -# $Id: FriendManager.pm,v 1.4 2005/06/26 12:10:42 slash5234 Exp $ +# $Id: FriendManager.pm,v 1.5 2005/06/26 14:20:39 slash5234 Exp $ package Affelio::SNS::FriendManager; { @@ -17,6 +17,7 @@ use Affelio::misc::CGIError; use Affelio::misc::Debug qw(debug_print); use Affelio::misc::Time; + use Affelio::misc::DBroutines qw(db_value_replace); ######################################################################## #Constructor @@ -161,14 +162,38 @@ ######################################################################## sub remove_friend{ #void my $self = shift; - my $af_id = shift; #arg(1) uid (int) - + my $uid = shift; #arg(1) uid (int) my $af = $self->{af}; - #$af_id = $af->{db}->quote($af_id); - - #XXX - #Not implemented yet. + Affelio::misc::Debug::debug_print("FM::remove_friend:start."); + + #Remove entry(uid) from AFuser_CORE_friends + my $q1 = "DELETE FROM AFuser_CORE_friends WHERE uid = $uid"; + my $s1 = $af->{db}->prepare($q1) or die $af->{db}->errstr; + $s1->execute() or die $af->{db}->errstr; + undef($q1); + undef($s1); + Affelio::misc::Debug::debug_print("FM::remove_friend:\t removed entry($uid) from F1 DB"); + + #Remove uid from friends of others in AFuser_CORE_friends + db_value_replace($af->{db}, + "AFuser_CORE_friends", + "uid", + "f2list", + ",$uid," , + ",," , + ); + Affelio::misc::Debug::debug_print("FM::remove_friend:\t removed entry($uid) from other's F2list in F1 DB"); + + #Remove uid from friends of others in AFuser_CORE_friendsfriends + db_value_replace($af->{db}, + "AFuser_CORE_friendsfriends", + "uid", + "f1list", + ",$uid," , + ",," , + ); + Affelio::misc::Debug::debug_print("FM::remove_friend:\t removed entry($uid) from other's F1list in F2 DB"); } @@ -558,68 +583,6 @@ $sth->execute or die $af->{db}->errstr; } - sub db_value_replace{ - my $db = shift; - my $dbname = shift; - my $key_col = shift; - my $target_col = shift; - my $old = shift; - my $new = shift; - - Affelio::misc::Debug::debug_print("FM::db_replace: start."); - ###################################### - #Retrieve data - ###################################### - my $q1 = "SELECT $key_col, $target_col FROM $dbname"; - - Affelio::misc::Debug::debug_print("FM::db_replace: [$q1]"); - - my $s1 = $db->prepare($q1); - if($@){ - Affelio::misc::Debug::debug_print("FM::db_replace:".$db->errstr); - die $db->errstr; - } - - $s1->execute(); - if($@){ - Affelio::misc::Debug::debug_print("FM::db_replace:".$db->errstr); - die $db->errstr; - } - - ###################################### - #Distill each line, replace, and store - ###################################### - Affelio::misc::Debug::debug_print("FM::db_replace: distilling..."); - my $key_data; - my $target_data; - my $target_data_new; - while( ($key_data, $target_data) = $s1->fetchrow_array){ - $target_data_new = $target_data; - $old =~ s/\-/\\\-/g; - $target_data_new =~ s/$old/$new/g; - - Affelio::misc::Debug::debug_print("FM::db_replace: [$key_data] [$target_data]->[$target_data_new]"); - - my $q2 = "update $dbname set $target_col = '$target_data_new' where $key_col = $key_data"; - Affelio::misc::Debug::debug_print("FM::db_replace: [$q2]"); - - my $s2 = $db->prepare($q2); - if($@){ - Affelio::misc::Debug::debug_print("FM::db_replace:".$db->errstr); - die $db->errstr; - } - - $s2->execute(); - if($@){ - Affelio::misc::Debug::debug_print("FM::db_replace:".$db->errstr); - die $db->errstr; - } - - } - - Affelio::misc::Debug::debug_print("FM::db_replace: end."); - } - ########################################################################