Forum OpenACS Q&A: i cant change member state to user.

Collapse
Posted by Dayra Munoz on
My name is Dayra from panama.

I have installed OpenACS4.0 on Linux 7.2 and AOLServer 3.2 and
PostgreSQL 7.3.1

I cant change member state of one user (approved user to deleted user)

By example:  i want to delete user "Min chen" where account user
is "mailto:amandach@hotmail.com";  i do the following:

In the section "Users" of OpenACS(http://my.domain.com:8000/acs-
admin/users/complex-search?target=one:8000/acs-admin/users/), i do
clic to the link:  http://my.domain.com:8000/acs-admin/users/complex-
search?target=one:8000/acs-admin/users/complex-search?target=one(show
n_users field),
where appears the section "Complete User Search" and all users
created.

I do clic in link "Min Chen (mailto:amandach@hotmail.com)" and appears the
page browser http://my.domain.com:8000/acs-admin/users/one?
user_id=2567&user%5fid%5ffrom%5fsearch=2567&first%5fnames%5ffrom%
5fsearch=Min&last%5fname%5ffrom%5fsearch=Chen&email%5ffrom%
5fsearch=amandach%40hotmail%2ecom&target=one

Now, when i do clic in the link delete of "Member state: approved
(ban | delete | require email verification)
Administrative Actions
" of this user, OpenACS show the message "Done", where it said that
the user was deleted, but i return to the page:
http://my.domain.com:8000/acs-admin/users/index.tcl, OpenACS dont
change member state of approved to deleted, OpenACS show user how if
the account dont delete.

Now in the member-state-change.tcl file, i see that it called a
procedure called "acs_user::change_state -user_id $user_id -state
$member_state", where it supposed change the member state to user.

This is the section where acs_user::change_state -user_id $user_id -
state $member_state procedure is used.

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:
  <pre>$errmsg</pre>"
}

Inside the procedure acs_user::change_state -user_id $user_id -state
$member_state, it called one function called  membership_rel.delete,
where below show it:

"deleted" {
  db_exec_plsql member_delete {
  begin membership_rel.delete(rel_id => :rel_id); end;
}
"
but in PostgreSQL Database, it same function is
called "membership_rel__delete". the membership_rel.delete procuedure
does not exist in my database (Postgresql 7.3.1)

How i do for that OpenACS can change member state user, if the
function call is not same.

Somebody Help me? Thanks for listen me.

Collapse
Posted by Yonatan Feldman on
it should be calling using the following XQL:
    <fullquery name="acs_user::change_state.member_delete">
        <querytext>
            select membership_rel__delete(:rel_id)
        </querytext>
    </fullquery>
from the community-core-procs-postgresql.xql file.
Collapse
Posted by Dayra Munoz on
Hi Jonathan:

In the community-core-procs-postgresql.xql, YES appears this XQL, but OpenACS call it xql automatically?  I have called this xql from member-change-states.tcl?

The situation is that OpenACs dont change to member state deleted, the users

help me please.

Collapse
Posted by Dayra Munoz on
Jonatan:

I found that the procedure "acs_user::change_state" appears in the community-core-proces.tcl file.  I changed the follow instruction:

}
            "deleted" {
                db_exec_plsql member_delete {
                    begin membership_rel.delete(rel_id => :rel_id); end;
                }

to this,

}
            "deleted" {
                db_exec_plsql member_delete {
                    begin membership_rel__delete(rel_id => :rel_id); end;
                }

but it is not worked.  I have compile this file?  How i compile it?

By