added a comment section..
[sgn.git] / cgi-bin / phenome / assign_owner.pl
blob39007c9736bdc4a9fe950386762495e8f669997e
1 use strict;
2 use warnings;
4 use CXGN::Scrap::AjaxPage;
5 use CXGN::Login;
6 use CXGN::People::Person;
7 use CXGN::Feed;
9 my $dbh = CXGN::DB::Connection->new();
10 my($login_person_id,$login_user_type)=CXGN::Login->new($dbh)->verify_session();
12 if ($login_user_type eq 'curator') {
13 my $doc = CXGN::Scrap::AjaxPage->new();
14 $doc->send_http_header();
15 my ($user_info, $object_type, $object_id, $sp_person_id) = $doc->get_encoded_arguments("user_info", "object_type", "object_id", "sp_person_id");
19 #query for retreiving user information
20 if ($user_info) {
21 #print STDERR "getting user info $user_info...\n " ;
22 my $user_query = $dbh->prepare("SELECT sp_person_id, first_name, last_name, user_type FROM sgn_people.sp_person
23 WHERE (first_name ilike '%$user_info%' OR last_name ilike '%$user_info%')
24 ORDER BY last_name
25 ");
26 $user_query->execute();
28 my ($sp_person_id, $first_name, $last_name, $user_type) = $user_query->fetchrow_array();
29 my $users;
31 while($first_name){
32 $users .= "$sp_person_id*$last_name, $first_name [$user_type]|";
33 ($sp_person_id, $first_name, $last_name, $user_type) = $user_query->fetchrow_array();
36 print "$users";
40 #setting the new object owner. Only curators can do this.
41 #if the user has a 'user' account it will be updated to a 'submitter' first
42 if ($object_type && $object_id ) {
43 print STDERR "assigning owner : $object_type, $object_id .. sp_person_id = $sp_person_id ... \n";
44 my $new_user_type= CXGN::People::Person->new($dbh, $sp_person_id)->get_user_type();
46 eval{
48 if ($new_user_type eq 'user' || !$new_user_type) {
49 my $user_query = $dbh->prepare("UPDATE sgn_people.sp_person SET user_type ='submitter'
50 WHERE sp_person_id= ?");
51 $user_query->execute($sp_person_id);
53 my $query;
54 if ($object_type eq 'locus') {
55 $query = $dbh->prepare("INSERT INTO phenome.locus_owner (sp_person_id, locus_id, granted_by)
56 VALUES (?,?,?)");
57 $query->execute($sp_person_id, $object_id, $login_person_id);
59 #if the current owner of the locus is a logged-in SGN curator, do an obsolete..
60 if ($login_user_type eq 'curator') {
61 my $remove_curator_query="UPDATE phenome.locus_owner SET obsolete='t', modified_date= now()
62 WHERE locus_id=? AND sp_person_id IN (SELECT sp_person_id FROM sgn_people.sp_person WHERE user_type = 'curator')";
63 my $remove_curator_sth=$dbh->prepare($remove_curator_query);
64 $remove_curator_sth->execute($object_id);
67 }elsif ($object_type eq 'individual') {
68 $query = $dbh->prepare("UPDATE phenome.individual SET sp_person_id= ?
69 WHERE indvidual_id= ?");
70 $query->execute($sp_person_id, $object_id);
72 }else {exit() ; }
77 if ($@) {
78 warn "assigning locus owner failed! . $@";
79 my $message= "assigning locus owner failed! $@";
80 return $message;
81 #my $content = "MochiKit.Logging.logDebug(\"$message\");\n";
84 else {
85 my $subject="[New locus owner assigned] $object_type $object_id";
86 my $person= CXGN::People::Person->new($dbh, $login_person_id);
87 my $user=$person->get_first_name()." ".$person->get_last_name();
88 my $user_link = qq |http://www.sgn.cornell.edu/solpeople/personal-info.pl?sp_person_id=$login_person_id|;
89 my $locus_link = qq |http://www.sgn.cornell.edu/phenome/locus_display.pl?locus_id=$object_id|;
90 my $owner= CXGN::People::Person->new($dbh, $sp_person_id);
91 my $owner_name=$owner->get_first_name()." ".$owner->get_last_name();
92 my $owner_link = qq |http://www.sgn.cornell.edu/solpeople/personal-info.pl?sp_person_id=$sp_person_id|;
93 my $fdbk_body="curator $user ($user_link) has assigned a new owner ($owner_name, $owner_link) for $object_type $locus_link \n ";
94 CXGN::Contact::send_email($subject,$fdbk_body, 'sgn-db-curation@sgn.cornell.edu');
95 CXGN::Feed::update_feed($subject,$fdbk_body);