Index: openacs-4/packages/acs-admin/www/users/member-state-change-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/users/Attic/member-state-change-postgresql.xql,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/acs-admin/www/users/member-state-change-postgresql.xql 29 Apr 2001 00:47:48 -0000 1.4
+++ openacs-4/packages/acs-admin/www/users/member-state-change-postgresql.xql 13 Feb 2002 17:41:11 -0000 1.5
@@ -15,53 +15,4 @@
-
-
- select membership_rel__approve(:rel_id)
-
-
-
-
-
-
- select membership_rel__ban(:rel_id)
-
-
-
-
-
-
- select membership_rel__reject(:rel_id)
-
-
-
-
-
-
- select membership_rel__deleted(:rel_id)
-
-
-
-
-
-
- select membership_rel__unapprove(:rel_id)
-
-
-
-
-
-
- select acs_user__approve_email (:user_id)
-
-
-
-
-
-
- select acs_user__unapprove_email (:user_id)
-
-
-
-
Index: openacs-4/packages/acs-admin/www/users/member-state-change.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/users/member-state-change.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/acs-admin/www/users/member-state-change.tcl 29 Apr 2001 00:45:52 -0000 1.2
+++ openacs-4/packages/acs-admin/www/users/member-state-change.tcl 13 Feb 2002 17:41:11 -0000 1.3
@@ -17,11 +17,17 @@
return_url:onevalue
}
-if ![db_0or1row get_states "select email_verified_p email_verified_p_old, member_state member_state_old, first_names || ' ' || last_name as name, email, rel_id, rowid
-from cc_users
-where user_id = :user_id"] {
+if {![db_0or1row get_states {
+ select email_verified_p as email_verified_p_old,
+ member_state as member_state_old,
+ first_names || ' ' || last_name as name,
+ email,
+ rel_id,
+ rowid
+ from cc_users
+ where user_id = :user_id
+}]} {
# The user is not in there
-
ad_return_complaint "Invalid User" "The user is not in the system"
return
}
@@ -37,7 +43,7 @@
set action "Ban $name"
set email_message "You have been banned from [ad_system_name]."
}
- "reject" {
+ "rejected" {
set action "Reject $name"
set email_message "Your account have been rejected from [ad_system_name]."
}
@@ -67,39 +73,20 @@
return
}
-if [ catch {switch $member_state {
- "approved" {
- db_exec_plsql member_approve "
- begin membership_rel.approve( rel_id => :rel_id ); end;"
- }
- "banned" {
- db_exec_plsql member_ban "
- begin membership_rel.ban( rel_id => :rel_id ); end;"
- }
- "reject" {
- db_exec_plsql member_reject "
- begin membership_rel.reject( rel_id => :rel_id ); end;"
- }
- "deleted" {
- db_exec_plsql member_deleted "
- begin membership_rel.deleted( rel_id => :rel_id ); end;"
- }
- "needs approval" {
- db_exec_plsql member_unapprove "
- begin membership_rel.unapprove( rel_id => :rel_id ); end;"
- }
- }
- switch $email_verified_p {
- "t" {
- db_exec_plsql approve_email "
- begin acs_user.approve_email ( user_id => :user_id ); end;"
- }
- "f" {
- db_exec_plsql unapprove_email "
- begin acs_user.unapprove_email ( user_id => :user_id ); end;"
- }
- }
- } errmsg] {
+if {[catch {
+ acs_user::change_state -user_id $user_id -state $member_state
+
+ switch $email_verified_p {
+ "t" {
+ db_exec_plsql approve_email "
+ begin acs_user.approve_email ( user_id => :user_id ); end;"
+ }
+ "f" {
+ db_exec_plsql unapprove_email "
+ begin acs_user.unapprove_email ( user_id => :user_id ); end;"
+ }
+ }
+} errmsg]} {
ad_return_error "Database Update Failed" "Database update failed with the following error:
$errmsg
"
}
Index: openacs-4/packages/acs-tcl/tcl/community-core-procs-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/community-core-procs-postgresql.xql,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/acs-tcl/tcl/community-core-procs-postgresql.xql 24 Apr 2001 06:02:27 -0000 1.4
+++ openacs-4/packages/acs-tcl/tcl/community-core-procs-postgresql.xql 13 Feb 2002 17:41:11 -0000 1.5
@@ -27,5 +27,34 @@
+
+
+ select membership_rel__approve(:rel_id)
+
+
+
+
+
+ select membership_rel__ban(:rel_id)
+
+
+
+
+
+ select membership_rel__reject(:rel_id)
+
+
+
+
+
+ select membership_rel__delete(:rel_id)
+
+
+
+
+
+ select membership_rel__unapprove(:rel_id)
+
+
Index: openacs-4/packages/acs-tcl/tcl/community-core-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/community-core-procs.tcl,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/acs-tcl/tcl/community-core-procs.tcl 23 Jan 2002 05:25:21 -0000 1.4
+++ openacs-4/packages/acs-tcl/tcl/community-core-procs.tcl 13 Feb 2002 17:41:11 -0000 1.5
@@ -10,7 +10,7 @@
ad_proc -private cc_lookup_screen_name_user { screen_name } {
return [db_string user_select {
- select user_id from cc_users where upper(screen_name) = upper(:screen_name)
+ select user_id from cc_users where upper(screen_name) = upper(:screen_name)
} -default ""]
}
@@ -25,15 +25,15 @@
ad_proc -private cc_lookup_email_user { email } {
return [db_string user_select {
- select user_id from cc_users where upper(email) = upper(:email)
+ select user_id from cc_users where upper(email) = upper(:email)
} -default ""]
}
ad_proc -public cc_email_from_party { party_id } {
@return The email address of the indicated party.
} {
return [db_string email_from_party {
- select email from parties where party_id = :party_id
+ select email from parties where party_id = :party_id
} -default 0]
}
@@ -48,7 +48,7 @@
ad_proc -private cc_lookup_name_group { name } {
return [db_string group_select {
- select group_id from groups where group_name = :name
+ select group_id from groups where group_name = :name
} -default ""]
}
@@ -62,35 +62,35 @@
}
ad_proc ad_user_new {email first_names last_name password password_question password_answer {url ""} {email_verified_p "t"} {member_state "approved"} {user_id ""} } {
-
+
Creates a new user in the system. The user_id can be specified as an argument to enable double click protection.
If this procedure succeeds, returns the new user_id. Otherwise, returns 0.
} {
if { [empty_string_p $user_id] } {
- set user_id [db_nextval acs_object_id_seq]
+ set user_id [db_nextval acs_object_id_seq]
}
if { [empty_string_p $password_question] } {
- set password_question [db_null]
+ set password_question [db_null]
}
if { [empty_string_p $password_answer] } {
- set password_answer [db_null]
+ set password_answer [db_null]
}
if { [empty_string_p url] } {
- set url [db_null]
+ set url [db_null]
}
-
+
set peeraddr [ad_conn peeraddr]
set salt [sec_random_token]
set hashed_password [ns_sha1 "$password$salt"]
-
+
db_transaction {
- set user_id [db_exec_plsql user_insert {
+ set user_id [db_exec_plsql user_insert {
begin
- :1 := acs.add_user(user_id => :user_id,
+ :1 := acs.add_user(user_id => :user_id,
email => :email,
url => :url,
first_names => :first_names,
@@ -102,24 +102,126 @@
creation_ip => :peeraddr,
email_verified_p => :email_verified_p,
member_state => :member_state);
- end;
- }
- ]
-
+ end;
+ }
+ ]
+
if {[catch {
# Call the extension
acs_user_extension::user_new -user_id $user_id
} errmsg]} {
# At this point, we don't want the user addition to fail
# if some extension is screwing things up
}
-
+
} on_error {
- # we got an error. log it and signal failure.
- ns_log Error "Problem creating a new user: $errmsg"
- return 0
+ # we got an error. log it and signal failure.
+ ns_log Error "Problem creating a new user: $errmsg"
+ return 0
}
# success.
return $user_id
}
+ad_proc -public ad_user_remove {
+ -user_id:required
+} {
+ remove a user from the ACS
+} {
+ db_exec_plsql user_remove {
+ begin
+ acs.remove_user(
+ user_id => :user_id
+ );
+ end;
+ }
+}
+
+namespace eval acs_user {
+
+ ad_proc -public change_state {
+ {-user_id:required}
+ {-state:required}
+ } {
+ Change the membership state of a user.
+ } {
+ set rel_id [db_string select_rel_id {
+ select rel_id
+ from cc_users
+ where user_id = :user_id
+ } -default ""]
+
+ if {![empty_string_p $rel_id]} {
+ return
+ }
+
+ switch -exact $state {
+ "approved" {
+ db_exec_plsql member_approve {
+ begin membership_rel.approve(rel_id => :rel_id); end;
+ }
+ }
+ "banned" {
+ db_exec_plsql member_ban {
+ begin membership_rel.ban(rel_id => :rel_id); end;
+ }
+ }
+ "rejected" {
+ db_exec_plsql member_reject {
+ begin membership_rel.reject(rel_id => :rel_id); end;
+ }
+ }
+ "deleted" {
+ db_exec_plsql member_delete {
+ begin membership_rel.delete(rel_id => :rel_id); end;
+ }
+ }
+ "needs approval" {
+ db_exec_plsql member_unapprove {
+ begin membership_rel.unapprove(rel_id => :rel_id); end;
+ }
+ }
+ }
+ }
+
+ ad_proc -public approve {
+ {-user_id:required}
+ } {
+ Approve a user
+ } {
+ change_state -user_id $user_id -state "approved"
+ }
+
+ ad_proc -public ban {
+ {-user_id:required}
+ } {
+ Ban a user
+ } {
+ change_state -user_id $user_id -state "banned"
+ }
+
+ ad_proc -public reject {
+ {-user_id:required}
+ } {
+ Reject a user
+ } {
+ change_state -user_id $user_id -state "rejected"
+ }
+
+ ad_proc -public delete {
+ {-user_id:required}
+ } {
+ Delete a user
+ } {
+ change_state -user_id $user_id -state "deleted"
+ }
+
+ ad_proc -public unapprove {
+ {-user_id:required}
+ } {
+ Unapprove a user
+ } {
+ change_state -user_id $user_id -state "needs approval"
+ }
+
+}